PageSourceSearch

https://www.zanzu.de/typo3temp/assets/compressed/merged-72ef5f57bb…112271d11ca43aefb7a8ff9a3fb14.js?1789379638

js zanzu.de collected 2026-10-02 03:05:25 UTC 275,959 bytes, 6,063 lines download raw bytes

1
vendor: 15,088 bytes, lines 2-3
2/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */
3!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}
vendor: 4,356 bytes, line 3
3:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(B," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[S]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];
vendor: 10,068 bytes, line 3
3if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split("").sort(D).join("")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[":"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(D(this,e||[],!1))},not:function(e){return this.pushStack(D(this,e||[],!0))},is:function(e){return!!D(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var j,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[["notify","progress",S.Callbacks("memory"),S.Callbacks("memory"),2],["resolve","done",S.Callbacks("once memory"),S.Callbacks("once memory"),0,"resolved"],["reject","fail",S.Callbacks("once memory"),S.Callbacks("once memory"),1,"rejected"]],i="pe
vendor: 8,547 bytes, line 3
3nding",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),S.ready()}S.fn.ready=function(e){return F.then(e)["catch"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===S.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,"")},u=s(),l=n&&n[3]||(S.cssNumber[t]?"":"px"),c=e.nodeType&&(S.cssNumber[t]||"px"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone
vendor: 51,417 bytes, line 3
3=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",y.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^key/,we=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Te=/^([^.]*)(?:\.(.+)|)/;function Ce(){return!0}function Ee(){return!1}function Se(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function ke(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)ke(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Ee;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Ae(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,Ce)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=Te.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=Te.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=S.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Ae(t,"click",Ce),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Ae(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ce:Ee,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Ee,isPropagationStopped:Ee,isImmediatePropagationStopped:Ee,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ce,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ce,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ce,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&be.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&we.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Ae(this,e,Se),!1},trigger:function(){return Ae(this,e),!0},delegateType:t}}),S.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),S.fn.extend({on:function(e,t,n,r){return ke(this,e,t,n,r)},one:function(e,t,n,r){return ke(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Ee),this.each(function(){S.event.remove(this,e,n,t)})}});var Ne=/<script|<style|<link/i,De=/checked\s*(?:[^=]|=\s*.checked.)/i,je=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function Pe(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&De.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Pe(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,"script"),Le)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,He),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&S.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(je,""),u,l))}return n}function Re(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Oe(o[r],a[r]);else Oe(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Re(this,e,!0)},remove:function(e){return Re(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Pe(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||qe(this,e).appendChild(e)})},prepend:function(){return Pe(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=qe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Pe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Pe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ne.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Pe(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Me=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Ie=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},We=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Fe=new RegExp(ne.join("|"),"i");function Be(e,t,n){var r,i,o,a,s=e.style;return(n=n||Ie(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Me.test(a)&&Fe.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function $e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement("div"),l=E.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement("table"),t=E.createElement("tr"),n=E.createElement("div"),e.style.cssText="position:absolute;left:-11111px",t.style.height="1px",n.style.height="9px",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=3<parseInt(r.height),re.removeChild(e)),a}}))}();var _e=["Webkit","Moz","ms"],ze=E.createElement("div").style,Ue={};function Xe(e){var t=S.cssProps[e]||Ue[e];return t||(e in ze?e:Ue[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=_e.length;while(n--)if((e=_e[n]+t)in ze)return e}(e)||e)}var Ve=/^(none|table(?!-c[ea]).+)/,Ge=/^--/,Ye={position:"absolute",visibility:"hidden",display:"block"},Qe={letterSpacing:"0",fontWeight:"400"};function Je(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Ke(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=S.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=S.css(e,"border"+ne[a]+"Width",!0,i))):(u+=S.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=S.css(e,"border"+ne[a]+"Width",!0,i):s+=S.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Ze(e,t,n){var r=Ie(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=Be(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Me.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Ke(e,t,n||(i?"border":"content"),o,r,a)+"px"}function et(e,t,n,r,i){return new et.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Be(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Ge.test(t),l=e.style;if(u||(t=Xe(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Ge.test(t)||(t=Xe(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Be(e,t,r)),"normal"===i&&t in Qe&&(i=Qe[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ve.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Ze(e,u,n):We(e,Ye,function(){return Ze(e,u,n)})},set:function(e,t,n){var r,i=Ie(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Ke(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Ke(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=S.css(e,u)),Je(0,t,s)}}}),S.cssHooks.marginLeft=$e(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Be(e,"marginLeft"))||e.getBoundingClientRect().left-We(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),S.each({margin:"",padding:"",border:"Width"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(S.cssHooks[i+o].set=Je)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Ie(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=et).prototype={constructor:et,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=et.propHooks[this.prop];return e&&e.get?e.get(this):et.propHooks._default.get(this)},run:function(e){var t,n=et.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):et.propHooks._default.set(this),this}}).init.prototype=et.prototype,(et.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[Xe(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=et.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},S.fx=et.prototype.init,S.fx.step={};var tt,nt,rt,it,ot=/^(?:toggle|show|hide)$/,at=/queueHooks$/;function st(){nt&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(st):C.setTimeout(st,S.fx.interval),S.fx.tick())}function ut(){return C.setTimeout(function(){tt=void 0}),tt=Date.now()}function lt(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ct(e,t,n){for(var r,i=(ft.tweeners[t]||[]).concat(ft.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ft(o,e,t){var n,a,r=0,i=ft.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=tt||ut(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),originalProperties:e,originalOptions:t,startTime:tt||ut(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=ft.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ct,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}S.Animation=S.extend(ft,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],ft.tweeners[n]=ft.tweeners[n]||[],ft.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,"fxshow");for(r in n.queue||(null==(a=S._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],ot.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,"display")),"none"===(c=S.css(e,"display"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=S.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===S.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Y.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)S.style(e,r,d[r])})),u=ct(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?ft.prefilters.unshift(e):ft.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&"object"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=ft(this,S.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&at.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each(["toggle","show","hide"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(lt(r,!0),e,t,n)}}),S.each({slideDown:lt("show"),slideUp:lt("hide"),slideToggle:lt("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(tt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),tt=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){nt||(nt=!0,st())},S.fx.stop=function(){nt=null},S.fx.speeds={slow:600,fast:200,_default:400},S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},rt=E.createElement("input"),it=E.createElement("select").appendChild(E.createElement("option")),rt.type="checkbox",y.checkOn=""!==rt.value,y.optSelected=it.selected,(rt=E.createElement("input")).value="t",rt.type="radio",y.radioValue="t"===rt.value;var pt,dt=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?pt:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),pt={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),function(e,t){var a=dt[t]||S.find.attr;dt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=dt[o],dt[o]=r,r=null!=a(e,t,n)?o:null,dt[o]=i),r}});var ht=/^(?:input|select|textarea|button)$/i,gt=/^(?:a|area)$/i;function vt(e){return(e.match(P)||[]).join(" ")}function yt(e){return e.getAttribute&&e.getAttribute("class")||""}function mt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):ht.test(e.nodeName)||gt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,yt(this)))});if((e=mt(t)).length)while(n=this[u++])if(i=yt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,yt(this)))});if(!arguments.length)return this.attr("class","");if((e=mt(t)).length)while(n=this[u++])if(i=yt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,yt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=mt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=yt(this))&&Y.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+vt(yt(n))+" ").indexOf(t))return!0;return!1}});var xt=/\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?"":e+""})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(xt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:vt(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var bt=/^(?:focusinfocus|focusoutblur)$/,wt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!bt.test(d+S.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[S.expando]?e:new S.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,bt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,wt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,wt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var Tt=C.location,Ct={guid:Date.now()},Et=/\?/;S.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||S.error("Invalid XML: "+e),t};var St=/\[\]$/,kt=/\r?\n/g,At=/^(?:submit|button|image|reset|file)$/i,Nt=/^(?:input|select|textarea|keygen)/i;function Dt(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||St.test(n)?i(n,t):Dt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)Dt(n+"["+t+"]",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)Dt(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&Nt.test(this.nodeName)&&!At.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(kt,"\r\n")}}):{name:t.name,value:n.replace(kt,"\r\n")}}).get()}});var jt=/%20/g,qt=/#.*$/,Lt=/([?&])_=[^&]*/,Ht=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ot=/^(?:GET|HEAD)$/,Pt=/^\/\//,Rt={},Mt={},It="*/".concat("*"),Wt=E.createElement("a");function Ft(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Bt(t,i,o,a){var s={},u=t===Mt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function $t(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Wt.href=Tt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Tt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Tt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":It,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?$t($t(e,S.ajaxSettings),t):$t(S.ajaxSettings,e)},ajaxPrefilter:Ft(Rt),ajaxTransport:Ft(Mt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Ht.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Tt.href)+"").replace(Pt,Tt.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(P)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Wt.protocol+"//"+Wt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Bt(Rt,v,t,T),h)return T;for(i in(g=S.event&&v.global)&&0==S.active++&&S.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Ot.test(v.type),f=v.url.replace(qt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(jt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Et.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Lt,"$1"),o=(Et.test(f)?"&":"?")+"_="+Ct.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader("If-Modified-Since",S.lastModified[f]),S.etag[f]&&T.setRequestHeader("If-None-Match",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+It+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Bt(Mt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray("script",v.dataTypes)&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(S.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(S.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--S.active||S.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var _t={0:200,1223:204},zt=S.ajaxSettings.xhr();y.cors=!!zt&&"withCredentials"in zt,y.ajax=zt=!!zt,S.ajaxTransport(function(i){var o,a;if(y.cors||zt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(_t[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),S.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=vt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&S.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?S("<div>").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Gt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?"":(e+"").replace(Gt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Yt=C.jQuery,Qt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Qt),e&&C.jQuery===S&&(C.jQuery=Yt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});
4
5/**
6 * jQuery Once Plugin v1.2
7 * http://plugins.jquery.com/project/once
8 *
9 * Dual licensed under the MIT and GPL licenses:
10 *   http://www.opensource.org/licenses/mit-license.php
11 *   http://www.gnu.org/licenses/gpl.html
12 */
13
14(function ($) {
15    var cache = {}, uuid = 0;
16
17    /**
18     * Filters elements by whether they have not yet been processed.
19     *
20     * @param id
21     *   (Optional) If this is a string, then it will be used as the CSS class
22     *   name that is applied to the elements for determining whether it has
23     *   already been processed. The elements will get a class in the form of
24     *   "id-processed".
25     *
26     *   If the id parameter is a function, it will be passed off to the fn
27     *   parameter and the id will become a unique identifier, represented as a
28     *   number.
29     *
30     *   When the id is neither a string or a function, it becomes a unique
31     *   identifier, depicted as a number. The element's class will then be
32     *   represented in the form of "jquery-once-#-processed".
33     *
34     *   Take note that the id must be valid for usage as an element's class name.
35     * @param fn
36     *   (Optional) If given, this function will be called for each element that
37     *   has not yet been processed. The function's return value follows the same
38     *   logic as $.each(). Returning true will continue to the next matched
39     *   element in the set, while returning false will entirely break the
40     *   iteration.
41     */
42    $.fn.once = function (id, fn) {
43        if (typeof id != 'string') {
44            // Generate a numeric ID if the id passed can't be used as a CSS class.
45            if (!(id in cache)) {
46                cache[id] = ++uuid;
47            }
48            // When the fn parameter is not passed, we interpret it from the id.
49            if (!fn) {
50                fn = id;
51            }
52            id = 'jquery-once-' + cache[id];
53        }
54        // Remove elements from the set that have already been processed.
55        var name = id + '-processed';
56        var elements = this.not('.' + name).addClass(name);
57
58        return $.isFunction(fn) ? elements.each(fn) : elements;
59    };
60
61    /**
62     * Filters elements that have been processed once already.
63     *
64     * @param id
65     *   A required string representing the name of the class which should be used
66     *   when filtering the elements. This only filters elements that have already
67     *   been processed by the once function. The id should be the same id that
68     *   was originally passed to the once() function.
69     * @param fn
70     *   (Optional) If given, this function will be called for each element that
71     *   has not yet been processed. The function's return value follows the same
72     *   logic as $.each(). Returning true will continue to the next matched
73     *   element in the set, while returning false will entirely break the
74     *   iteration.
75     */
76    $.fn.removeOnce = function (id, fn) {
77        var name = id + '-processed';
78        var elements = this.filter('.' + name).removeClass(name);
79
80        return $.isFunction(fn) ? elements.each(fn) : elements;
81    };
82})(jQuery);
83;
84
85var Drupal = Drupal || { 'settings': {}, 'behaviors': {}, 'locale': {} };
86
87var $ = jQuery;
88
89(function ($) {
90
91    /**
92     * Override jQuery.fn.init to guard against XSS attacks.
93     *
94     * See http://bugs.jquery.com/ticket/9521
95     */
96    var jquery_init = $.fn.init;
97    $.fn.init = function (selector, context, rootjQuery) {
98        // If the string contains a "#" before a "<", treat it as invalid HTML.
99        if (selector && typeof selector === 'string') {
100            var hash_position = selector.indexOf('#');
101            if (hash_position >= 0) {
102                var bracket_position = selector.indexOf('<');
103                if (bracket_position > hash_position) {
104                    throw 'Syntax error, unrecognized expression: ' + selector;
105                }
106            }
107        }
108        return jquery_init.call(this, selector, context, rootjQuery);
109    };
110    $.fn.init.prototype = jquery_init.prototype;
111
112    /**
113     * Attach all registered behaviors to a page element.
114     *
115     * Behaviors are event-triggered actions that attach to page elements, enhancing
116     * default non-JavaScript UIs. Behaviors are registered in the Drupal.behaviors
117     * object using the method 'attach' and optionally also 'detach' as follows:
118     * @code
119     *    Drupal.behaviors.behaviorName = {
120     *      attach: function (context, settings) {
121     *        ...
122     *      },
123     *      detach: function (context, settings, trigger) {
124     *        ...
125     *      }
126     *    };
127     * @endcode
128     *
129     * Drupal.attachBehaviors is added below to the jQuery ready event and so
130     * runs on initial page load. Developers implementing AHAH/Ajax in their
131     * solutions should also call this function after new page content has been
132     * loaded, feeding in an element to be processed, in order to attach all
133     * behaviors to the new content.
134     *
135     * Behaviors should use
136     * @code
137     *   $(selector).once('behavior-name', function () {
138     *     ...
139     *   });
140     * @endcode
141     * to ensure the behavior is attached only once to a given element. (Doing so
142     * enables the reprocessing of given elements, which may be needed on occasion
143     * despite the ability to limit behavior attachment to a particular element.)
144     *
145     * @param context
146     *   An element to attach behaviors to. If none is given, the document element
147     *   is used.
148     * @param settings
149     *   An object containing settings for the current context. If none given, the
150     *   global Drupal.settings object is used.
151     */
152    Drupal.attachBehaviors = function (context, settings) {
153        context = context || document;
154        settings = settings || Drupal.settings;
155        // Execute all of them.
156        $.each(Drupal.behaviors, function () {
157            if ($.isFunction(this.attach)) {
158                this.attach(context, settings);
159            }
160        });
161    };
162
163    /**
164     * Detach registered behaviors from a page element.
165     *
166     * Developers implementing AHAH/Ajax in their solutions should call this
167     * function before page content is about to be removed, feeding in an element
168     * to be processed, in order to allow special behaviors to detach from the
169     * content.
170     *
171     * Such implementations should look for the class name that was added in their
172     * corresponding Drupal.behaviors.behaviorName.attach implementation, i.e.
173     * behaviorName-processed, to ensure the behavior is detached only from
174     * previously processed elements.
175     *
176     * @param context
177     *   An element to detach behaviors from. If none is given, the document element
178     *   is used.
179     * @param settings
180     *   An object containing settings for the current context. If none given, the
181     *   global Drupal.settings object is used.
182     * @param trigger
183     *   A string containing what's causing the behaviors to be detached. The
184     *   possible triggers are:
185     *   - unload: (default) The context element is being removed from the DOM.
186     *   - move: The element is about to be moved within the DOM (for example,
187     *     during a tabledrag row swap). After the move is completed,
188     *     Drupal.attachBehaviors() is called, so that the behavior can undo
189     *     whatever it did in response to the move. Many behaviors won't need to
190     *     do anything simply in response to the element being moved, but because
191     *     IFRAME elements reload their "src" when being moved within the DOM,
192     *     behaviors bound to IFRAME elements (like WYSIWYG editors) may need to
193     *     take some action.
194     *   - serialize: When an Ajax form is submitted, this is called with the
195     *     form as the context. This provides every behavior within the form an
196     *     opportunity to ensure that the field elements have correct content
197     *     in them before the form is serialized. The canonical use-case is so
198     *     that WYSIWYG editors can update the hidden textarea to which they are
199     *     bound.
200     *
201     * @see Drupal.attachBehaviors
202     */
203    Drupal.detachBehaviors = function (context, settings, trigger) {
204        context = context || document;
205        settings = settings || Drupal.settings;
206        trigger = trigger || 'unload';
207        // Execute all of them.
208        $.each(Drupal.behaviors, function () {
209            if ($.isFunction(this.detach)) {
210                this.detach(context, settings, trigger);
211            }
212        });
213    };
214
215    /**
216     * Encode special characters in a plain-text string for display as HTML.
217     *
218     * @ingroup sanitization
219     */
220    Drupal.checkPlain = function (str) {
221        var character, regex,
222            replace = { '&': '&amp;', '"': '&quot;', '<': '&lt;', '>': '&gt;' };
223        str = String(str);
224        for (character in replace) {
225            if (replace.hasOwnProperty(character)) {
226                regex = new RegExp(character, 'g');
227                str = str.replace(regex, replace[character]);
228            }
229        }
230        return str;
231    };
232
233    /**
234     * Replace placeholders with sanitized values in a string.
235     *
236     * @param str
237     *   A string with placeholders.
238     * @param args
239     *   An object of replacements pairs to make. Incidences of any key in this
240     *   array are replaced with the corresponding value. Based on the first
241     *   character of the key, the value is escaped and/or themed:
242     *    - !variable: inserted as is
243     *    - @variable: escape plain text to HTML (Drupal.checkPlain)
244     *    - %variable: escape text and theme as a placeholder for user-submitted
245     *      content (checkPlain + Drupal.theme('placeholder'))
246     *
247     * @see Drupal.t()
248     * @ingroup sanitization
249     */
250    Drupal.formatString = function(str, args) {
251        // Transform arguments before inserting them.
252        for (var key in args) {
253            switch (key.charAt(0)) {
254                // Escaped only.
255                case '@':
256                    args[key] = Drupal.checkPlain(args[key]);
257                    break;
258                // Pass-through.
259                case '!':
260                    break;
261                // Escaped and placeholder.
262                case '%':
263                default:
264                    args[key] = Drupal.theme('placeholder', args[key]);
265                    break;
266            }
267            str = str.replace(key, args[key]);
268        }
269        return str;
270    };
271
272    /**
273     * Translate strings to the page language or a given language.
274     *
275     * See the documentation of the server-side t() function for further details.
276     *
277     * @param str
278     *   A string containing the English string to translate.
279     * @param args
280     *   An object of replacements pairs to make after translation. Incidences
281     *   of any key in this array are replaced with the corresponding value.
282     *   See Drupal.formatString().
283     *
284     * @param options
285     *   - 'context' (defaults to the empty context): The context the source string
286     *     belongs to.
287     *
288     * @return
289     *   The translated string.
290     */
291    Drupal.t = function (str, args, options) {
292        options = options || {};
293        options.context = options.context || '';
294
295        // Fetch the localized version of the string.
296        if (Drupal.locale.strings && Drupal.locale.strings[options.context] && Drupal.locale.strings[options.context][str]) {
297            str = Drupal.locale.strings[options.context][str];
298        }
299
300        if (args) {
301            str = Drupal.formatString(str, args);
302        }
303        return str;
304    };
305
306    /**
307     * Format a string containing a count of items.
308     *
309     * This function ensures that the string is pluralized correctly. Since Drupal.t() is
310     * called by this function, make sure not to pass already-localized strings to it.
311     *
312     * See the documentation of the server-side format_plural() function for further details.
313     *
314     * @param count
315     *   The item count to display.
316     * @param singular
317     *   The string for the singular case. Please make sure it is clear this is
318     *   singular, to ease translation (e.g. use "1 new comment" instead of "1 new").
319     *   Do not use @count in the singular string.
320     * @param plural
321     *   The string for the plural case. Please make sure it is clear this is plural,
322     *   to ease translation. Use @count in place of the item count, as in "@count
323     *   new comments".
324     * @param args
325     *   An object of replacements pairs to make after translation. Incidences
326     *   of any key in this array are replaced with the corresponding value.
327     *   See Drupal.formatString().
328     *   Note that you do not need to include @count in this array.
329     *   This replacement is done automatically for the plural case.
330     * @param options
331     *   The options to pass to the Drupal.t() function.
332     * @return
333     *   A translated string.
334     */
335    Drupal.formatPlural = function (count, singular, plural, args, options) {
336        var args = args || {};
337        args['@count'] = count;
338        // Determine the index of the plural form.
339        var index = Drupal.locale.pluralFormula ? Drupal.locale.pluralFormula(args['@count']) : ((args['@count'] == 1) ? 0 : 1);
340
341        if (index == 0) {
342            return Drupal.t(singular, args, options);
343        }
344        else if (index == 1) {
345            return Drupal.t(plural, args, options);
346        }
347        else {
348            args['@count[' + index + ']'] = args['@count'];
349            delete args['@count'];
350            return Drupal.t(plural.replace('@count', '@count[' + index + ']'), args, options);
351        }
352    };
353
354    /**
355     * Returns the passed in URL as an absolute URL.
356     *
357     * @param url
358     *   The URL string to be normalized to an absolute URL.
359     *
360     * @return
361     *   The normalized, absolute URL.
362     *
363     * @see https://github.com/angular/angular.js/blob/v1.4.4/src/ng/urlUtils.js
364     * @see https://grack.com/blog/2009/11/17/absolutizing-url-in-javascript
365     * @see https://github.com/jquery/jquery-ui/blob/1.11.4/ui/tabs.js#L53
366     */
367    Drupal.absoluteUrl = function (url) {
368        var urlParsingNode = document.createElement('a');
369
370        // Decode the URL first; this is required by IE <= 6. Decoding non-UTF-8
371        // strings may throw an exception.
372        try {
373            url = decodeURIComponent(url);
374        } catch (e) {}
375
376        urlParsingNode.setAttribute('href', url);
377
378        // IE <= 7 normalizes the URL when assigned to the anchor node similar to
379        // the other browsers.
380        return urlParsingNode.cloneNode(false).href;
381    };
382
383    /**
384     * Returns true if the URL is within Drupal's base path.
385     *
386     * @param url
387     *   The URL string to be tested.
388     *
389     * @return
390     *   Boolean true if local.
391     *
392     * @see https://github.com/jquery/jquery-ui/blob/1.11.4/ui/tabs.js#L58
393     */
394    Drupal.urlIsLocal = function (url) {
395        // Always use browser-derived absolute URLs in the comparison, to avoid
396        // attempts to break out of the base path using directory traversal.
397        var absoluteUrl = Drupal.absoluteUrl(url);
398        var protocol = location.protocol;
399
400        // Consider URLs that match this site's base URL but use HTTPS instead of HTTP
401        // as local as well.
402        if (protocol === 'http:' && absoluteUrl.indexOf('https:') === 0) {
403            protocol = 'https:';
404        }
405        var baseUrl = protocol + '//' + location.host + Drupal.settings.basePath.slice(0, -1);
406
407        // Decoding non-UTF-8 strings may throw an exception.
408        try {
409            absoluteUrl = decodeURIComponent(absoluteUrl);
410        } catch (e) {}
411        try {
412            baseUrl = decodeURIComponent(baseUrl);
413        } catch (e) {}
414
415        // The given URL matches the site's base URL, or has a path under the site's
416        // base URL.
417        return absoluteUrl === baseUrl || absoluteUrl.indexOf(baseUrl + '/') === 0;
418    };
419
420    /**
421     * Generate the themed representation of a Drupal object.
422     *
423     * All requests for themed output must go through this function. It examines
424     * the request and routes it to the appropriate theme function. If the current
425     * theme does not provide an override function, the generic theme function is
426     * called.
427     *
428     * For example, to retrieve the HTML for text that should be emphasized and
429     * displayed as a placeholder inside a sentence, call
430     * Drupal.theme('placeholder', text).
431     *
432     * @param func
433     *   The name of the theme function to call.
434     * @param ...
435     *   Additional arguments to pass along to the theme function.
436     * @return
437     *   Any data the theme function returns. This could be a plain HTML string,
438     *   but also a complex object.
439     */
440    Drupal.theme = function (func) {
441        var args = Array.prototype.slice.apply(arguments, [1]);
442
443        return (Drupal.theme[func] || Drupal.theme.prototype[func]).apply(this, args);
444    };
445
446    /**
447     * Freeze the current body height (as minimum height). Used to prevent
448     * unnecessary upwards scrolling when doing DOM manipulations.
449     */
450    Drupal.freezeHeight = function () {
451        Drupal.unfreezeHeight();
452        $('<div id="freeze-height"></div>').css({
453            position: 'absolute',
454            top: '0px',
455            left: '0px',
456            width: '1px',
457            height: $('body').css('height')
458        }).appendTo('body');
459    };
460
461    /**
462     * Unfreeze the body height.
463     */
464    Drupal.unfreezeHeight = function () {
465        $('#freeze-height').remove();
466    };
467
468    /**
469     * Encodes a Drupal path for use in a URL.
470     *
471     * For aesthetic reasons slashes are not escaped.
472     */
473    Drupal.encodePath = function (item, uri) {
474        uri = uri || location.href;
475        return encodeURIComponent(item).replace(/%2F/g, '/');
476    };
477
478    /**
479     * Get the text selection in a textarea.
480     */
481    Drupal.getSelection = function (element) {
482        if (typeof element.selectionStart != 'number' && document.selection) {
483            // The current selection.
484            var range1 = document.selection.createRange();
485            var range2 = range1.duplicate();
486            // Select all text.
487            range2.moveToElementText(element);
488            // Now move 'dummy' end point to end point of original range.
489            range2.setEndPoint('EndToEnd', range1);
490            // Now we can calculate start and end points.
491            var start = range2.text.length - range1.text.length;
492            var end = start + range1.text.length;
493            return { 'start': start, 'end': end };
494        }
495        return { 'start': element.selectionStart, 'end': element.selectionEnd };
496    };
497
498    /**
499     * Add a global variable which determines if the window is being unloaded.
500     *
501     * This is primarily used by Drupal.displayAjaxError().
502     */
503    Drupal.beforeUnloadCalled = false;
504    $(window).bind('beforeunload pagehide', function () {
505        Drupal.beforeUnloadCalled = true;
506    });
507
508    /**
509     * Displays a JavaScript error from an Ajax response when appropriate to do so.
510     */
511    Drupal.displayAjaxError = function (message) {
512        // Skip displaying the message if the user deliberately aborted (for example,
513        // by reloading the page or navigating to a different page) while the Ajax
514        // request was still ongoing. See, for example, the discussion at
515        // http://stackoverflow.com/questions/699941/handle-ajax-error-when-a-user-clicks-refresh.
516        if (!Drupal.beforeUnloadCalled) {
517            alert(message);
518        }
519    };
520
521    /**
522     * Build an error message from an Ajax response.
523     */
524    Drupal.ajaxError = function (xmlhttp, uri, customMessage) {
525        var statusCode, statusText, pathText, responseText, readyStateText, message;
526        if (xmlhttp.status) {
527            statusCode = "\n" + Drupal.t("An AJAX HTTP error occurred.") +  "\n" + Drupal.t("HTTP Result Code: !status", {'!status': xmlhttp.status});
528        }
529        else {
530            statusCode = "\n" + Drupal.t("An AJAX HTTP request terminated abnormally.");
531        }
532        statusCode += "\n" + Drupal.t("Debugging information follows.");
533        pathText = "\n" + Drupal.t("Path: !uri", {'!uri': uri} );
534        statusText = '';
535        // In some cases, when statusCode == 0, xmlhttp.statusText may not be defined.
536        // Unfortunately, testing for it with typeof, etc, doesn't seem to catch that
537        // and the test causes an exception. So we need to catch the exception here.
538        try {
539            statusText = "\n" + Drupal.t("StatusText: !statusText", {'!statusText': $.trim(xmlhttp.statusText)});
540        }
541        catch (e) {}
542
543        responseText = '';
544        // Again, we don't have a way to know for sure whether accessing
545        // xmlhttp.responseText is going to throw an exception. So we'll catch it.
546        try {
547            responseText = "\n" + Drupal.t("ResponseText: !responseText", {'!responseText': $.trim(xmlhttp.responseText) } );
548        } catch (e) {}
549
550        // Make the responseText more readable by stripping HTML tags and newlines.
551        responseText = responseText.replace(/<("[^"]*"|'[^']*'|[^'">])*>/gi,"");
552        responseText = responseText.replace(/[\n]+\s+/g,"\n");
553
554        // We don't need readyState except for status == 0.
555        readyStateText = xmlhttp.status == 0 ? ("\n" + Drupal.t("ReadyState: !readyState", {'!readyState': xmlhttp.readyState})) : "";
556
557        // Additional message beyond what the xmlhttp object provides.
558        customMessage = customMessage ? ("\n" + Drupal.t("CustomMessage: !customMessage", {'!customMessage': customMessage})) : "";
559
560        message = statusCode + pathText + statusText + customMessage + responseText + readyStateText;
561        return message;
562    };
563
564// Class indicating that JS is enabled; used for styling purpose.
565    $('html').addClass('js');
566
567// 'js enabled' cookie.
568    document.cookie = 'has_js=1; path=/; secure=true; SameSite=Strict';
569
570    /**
571     * Additions to jQuery.support.
572     */
573    $(function () {
574        /**
575         * Boolean indicating whether or not position:fixed is supported.
576         */
577        if (jQuery.support.positionFixed === undefined) {
578            var el = $('<div style="position:fixed; top:10px" />').appendTo(document.body);
579            jQuery.support.positionFixed = el[0].offsetTop === 10;
580            el.remove();
581        }
582    });
583
584//Attach all behaviors.
585    $(function () {
586        Drupal.attachBehaviors(document, Drupal.settings);
587    });
588
589    /**
590     * The default themes.
591     */
592    Drupal.theme.prototype = {
593
594        /**
595         * Formats text for emphasized display in a placeholder inside a sentence.
596         *
597         * @param str
598         *   The text to format (plain-text).
599         * @return
600         *   The formatted text (html).
601         */
602        placeholder: function (str) {
603            return '<em class="placeholder">' + Drupal.checkPlain(str) + '</em>';
604        }
605    };
606
607})(jQuery);
608;
609
610/*jslint browser: true */ /*global jQuery: true */
611
612/**
613 * jQuery Cookie plugin
614 *
615 * Copyright (c) 2010 Klaus Hartl (stilbuero.de)
616 * Dual licensed under the MIT and GPL licenses:
617 * http://www.opensource.org/licenses/mit-license.php
618 * http://www.gnu.org/licenses/gpl.html
619 *
620 */
621
622// TODO JsDoc
623
624/**
625 * Create a cookie with the given key and value and other optional parameters.
626 *
627 * @example $.cookie('the_cookie', 'the_value');
628 * @desc Set the value of a cookie.
629 * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
630 * @desc Create a cookie with all available options.
631 * @example $.cookie('the_cookie', 'the_value');
632 * @desc Create a session cookie.
633 * @example $.cookie('the_cookie', null);
634 * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
635 *       used when the cookie was set.
636 *
637 * @param String key The key of the cookie.
638 * @param String value The value of the cookie.
639 * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
640 * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
641 *                             If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
642 *                             If set to null or omitted, the cookie will be a session cookie and will not be retained
643 *                             when the the browser exits.
644 * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
645 * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
646 * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
647 *                        require a secure protocol (like HTTPS).
648 * @type undefined
649 *
650 * @name $.cookie
651 * @cat Plugins/Cookie
652 * @author Klaus Hartl/[email protected]
653 */
654
655/**
656 * Get the value of a cookie with the given key.
657 *
658 * @example $.cookie('the_cookie');
659 * @desc Get the value of a cookie.
660 *
661 * @param String key The key of the cookie.
662 * @return The value of the cookie.
663 * @type String
664 *
665 * @name $.cookie
666 * @cat Plugins/Cookie
667 * @author Klaus Hartl/[email protected]
668 */
669jQuery.cookie = function (key, value, options) {
670
671    // key and value given, set cookie...
672    if (arguments.length > 1 && (value === null || typeof value !== "object")) {
673        options = jQuery.extend({}, options);
674
675        if (value === null) {
676            options.expires = -1;
677        }
678
679        if (typeof options.expires === 'number') {
680            var days = options.expires, t = options.expires = new Date();
681            t.setDate(t.getDate() + days);
682        }
683
684        return (document.cookie = [
685            encodeURIComponent(key), '=',
686            options.raw ? String(value) : encodeURIComponent(String(value)),
687            options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
688            options.path ? '; path=' + options.path : '',
689            options.domain ? '; domain=' + options.domain : '',
690            options.secure ? '; secure' : ''
691        ].join(''));
692    }
693
694    // key and possibly options given, get cookie...
695    options = value || {};
696    var result, decode = options.raw ? function (s) { return s; } : decodeURIComponent;
697    return (result = new RegExp('(?:^|; )' + encodeURIComponent(key) + '=([^;]*)').exec(document.cookie)) ? decode(result[1]) : null;
698};
699;
700(function ($) {
701
702    Drupal.extlink = Drupal.extlink || {};
703
704    Drupal.extlink.attach = function (context, settings) {
705        if (!settings.hasOwnProperty('extlink')) {
706            return;
707        }
708
709        // Strip the host name down, removing ports, subdomains, or www.
710        var pattern = /^(([^\/:]+?\.)*)([^\.:]{4,})((\.[a-z]{1,4})*)(:[0-9]{1,5})?$/;
711        var host = window.location.host.replace(pattern, '$3$4');
712        var subdomain = window.location.host.replace(pattern, '$1');
713
714        // Determine what subdomains are considered internal.
715        var subdomains;
716        if (settings.extlink.extSubdomains) {
717            subdomains = "([^/]*\\.)?";
718        }
719        else if (subdomain == 'www.' || subdomain == '') {
720            subdomains = "(www\\.)?";
721        }
722        else {
723            subdomains = subdomain.replace(".", "\\.");
724        }
725
726        // Build regular expressions that define an internal link.
727        var internal_link = new RegExp("^https?://" + subdomains + host, "i");
728
729        // Extra internal link matching.
730        var extInclude = false;
731        if (settings.extlink.extInclude) {
732            extInclude = new RegExp(settings.extlink.extInclude.replace(/\\/, '\\'), "i");
733        }
734
735        // Extra external link matching.
736        var extExclude = false;
737        if (settings.extlink.extExclude) {
738            extExclude = new RegExp(settings.extlink.extExclude.replace(/\\/, '\\'), "i");
739        }
740
741        // Extra external link CSS selector exclusion.
742        var extCssExclude = false;
743        if (settings.extlink.extCssExclude) {
744            extCssExclude = settings.extlink.extCssExclude;
745        }
746
747        // Extra external link CSS selector explicit.
748        var extCssExplicit = false;
749        if (settings.extlink.extCssExplicit) {
750            extCssExplicit = settings.extlink.extCssExplicit;
751        }
752
753        // Find all links which are NOT internal and begin with http as opposed
754        // to ftp://, javascript:, etc. other kinds of links.
755        // When operating on the 'this' variable, the host has been appended to
756        // all links by the browser, even local ones.
757        // In jQuery 1.1 and higher, we'd use a filter method here, but it is not
758        // available in jQuery 1.0 (Drupal 5 default).
759        var external_links = new Array();
760        var mailto_links = new Array();
761        $("a:not(." + settings.extlink.extClass + ", ." + settings.extlink.mailtoClass + "), area:not(." + settings.extlink.extClass + ", ." + settings.extlink.mailtoClass + ")", context).each(function(el) {
762            try {
763                var url = this.href.toLowerCase();
764                if (url.indexOf('http') == 0
765                    && ((!url.match(internal_link) && !(extExclude && url.match(extExclude))) || (extInclude && url.match(extInclude)))
766                    && !(extCssExclude && $(this).parents(extCssExclude).length > 0)
767                    && !(extCssExplicit && $(this).parents(extCssExplicit).length < 1)) {
768                    external_links.push(this);
769                }
770                // Do not include area tags with begin with mailto: (this prohibits
771                // icons from being added to image-maps).
772                else if (this.tagName != 'AREA'
773                    && url.indexOf('mailto:') == 0
774                    && !(extCssExclude && $(this).parents(extCssExclude).length > 0)
775                    && !(extCssExplicit && $(this).parents(extCssExplicit).length < 1)) {
776                    mailto_links.push(this);
777                }
778            }
779                // IE7 throws errors often when dealing with irregular links, such as:
780                // <a href="node/10"></a> Empty tags.
781                // <a href="http://user:[email protected]">example</a> User:pass syntax.
782            catch (error) {
783                return false;
784            }
785        });
786
787        if (settings.extlink.extClass) {
788            Drupal.extlink.applyClassAndSpan(external_links, settings.extlink.extClass);
789        }
790
791        if (settings.extlink.mailtoClass) {
792            Drupal.extlink.applyClassAndSpan(mailto_links, settings.extlink.mailtoClass);
793        }
794
795        if (settings.extlink.extTarget) {
796            // Apply the target attribute to all links.
797            $(external_links).attr('target', settings.extlink.extTarget);
798        }
799
800        Drupal.extlink = Drupal.extlink || {};
801
802        // Set up default click function for the external links popup. This should be
803        // overridden by modules wanting to alter the popup.
804        Drupal.extlink.popupClickHandler = Drupal.extlink.popupClickHandler || function() {
805                if (settings.extlink.extAlert) {
806                    return confirm(settings.extlink.extAlertText);
807                }
808            }
809
810        $(external_links).click(function(e) {
811            return Drupal.extlink.popupClickHandler(e);
812        });
813    };
814
815    /**
816     * Apply a class and a trailing <span> to all links not containing images.
817     *
818     * @param links
819     *   An array of DOM elements representing the links.
820     * @param class_name
821     *   The class to apply to the links.
822     */
823    Drupal.extlink.applyClassAndSpan = function (links, class_name) {
824        var $links_to_process;
825        if (Drupal.settings.extlink.extImgClass){
826            $links_to_process = $(links);
827        }
828        else {
829            var links_with_images = $(links).find('img').parents('a');
830            $links_to_process = $(links).not(links_with_images);
831        }
832        $links_to_process.addClass(class_name);
833        var i;
834        var length = $links_to_process.length;
835        for (i = 0; i < length; i++) {
836            var $link = $($links_to_process[i]);
837            if ($link.css('display') == 'inline' || $link.css('display') == 'inline-block') {
838                if (class_name == Drupal.settings.extlink.mailtoClass) {
839                    $link.append('<span class="' + class_name + '"><span class="element-invisible"> ' + Drupal.settings.extlink.mailtoLabel + '</span></span>');
840                }
841                else {
842                    $link.append('<span class="' + class_name + '"><span class="element-invisible"> ' + Drupal.settings.extlink.extLabel + '</span></span>');
843                }
844            }
845        }
846    };
847
848    Drupal.behaviors.extlink = Drupal.behaviors.extlink || {};
849    Drupal.behaviors.extlink.attach = function (context, settings) {
850        // Backwards compatibility, for the benefit of modules overriding extlink
851        // functionality by defining an "extlinkAttach" global function.
852        if (typeof extlinkAttach === 'function') {
853            extlinkAttach(context);
854        }
855        else {
856            Drupal.extlink.attach(context, settings);
857        }
858    };
859
860})(jQuery);
861;
862const readspeakerLanguages = {
863  'ar': {
864    'dictionary.readMore': 'قراءة المزيد',
865    'readspeaker.pause': 'استراحة'
866  },
867  'bg': {
868    'dictionary.readMore': 'Прочетете повече',
869    'readspeaker.pause': 'Пробив'
870  },
871  'de': {
872    'dictionary.readMore': 'Mehr lesen',
873    'readspeaker.pause': 'Pause'
874  },
875  'es': {
876    'dictionary.readMore': 'Leer más',
877    'readspeaker.pause': 'Pausa'
878  },
879  'en': {
880    'dictionary.readMore': 'Read more',
881    'readspeaker.pause': 'Pause'
882  },
883  'fa': {
884    'dictionary.readMore': 'خواندن مطالب بیشتر',
885    'readspeaker.pause': 'مکث'
886  },
887  'fr': {
888    'dictionary.readMore': 'Pour en savoir plus',
889    'readspeaker.pause': 'Pause'
890  },
891  'nl': {
892    'dictionary.readMore': 'Lees meer',
893    'readspeaker.pause': 'Pauze'
894  },
895  'pl': {
896    'dictionary.readMore': 'Czytaj dalej',
897    'readspeaker.pause': 'Przerwa'
898  },
899  'ro': {
900    'dictionary.readMore': 'Citiți mai mult',
901    'readspeaker.pause': 'Pauză'
902  },
903  'ru': {
904    'dictionary.readMore': 'Подробнее',
905    'readspeaker.pause': 'Пауза'
906  },
907  'sq': {
908    'dictionary.readMore': 'Lexoni më shumë',
909    'readspeaker.pause': 'Pauzë'
910  },
911  'tr': {
912    'dictionary.readMore': 'Read More',
913    'readspeaker.pause': 'Mola'
914  },
915  'uk': {
916    'dictionary.readMore': 'Прочитати більше',
917    'readspeaker.pause': 'Пауза'
918  },
919}
920var currentLanguage = document.documentElement.lang;
921var langreadmore = readspeakerLanguages[currentLanguage]['dictionary.readMore'] ?? 'Read more';
922var langpause = readspeakerLanguages[currentLanguage]['readspeaker.pause'] ?? 'Pause';
923
924var delay = (function () {
925  var timer = 0;
926  return function (callback, ms) {
927    clearTimeout(timer);
928    timer = setTimeout(callback, ms);
929  };
930})();
931
932jQuery(document).ready(function () {
933  /*
934   * Save selected language to cookie
935   */
936  var $languageSwitcher = jQuery(
937    ".landingspage-language-switcher, .language-switch .available-languages"
938  );
939
940  if ($languageSwitcher.length) {
941    $languageSwitcher.find("a[data-lang-code]").on("click", function (event) {
942      event.preventDefault();
943      var elem = jQuery(this),
944        langCode = elem.data("lang-code");
945
946      if (langCode !== "" && langCode.match(/^([a-zA-Z]{2})$/gi)) {
947        jQuery.cookie("selectedLanguage", langCode, {
948          expires: 7,
949            secure: true,
950          path: "/",
951        });
952      }
953
954      if (elem[0].href) {
955        window.location.href = elem[0].href;
956      }
957    });
958  }
959
960  /*
961   * Search autocomplete
962   */
963  var searchSuggestRequestTimer = null;
964  var currentRequest = null;
965
966  /* TODO axel
967    jQuery('#edit-input.header-search')
968        .on('input', function() {
969            var val = jQuery(this).val();
970
971            if (val.length >= 3) {
972                var uri = jQuery('#ajax-search-uri').data('url');
973
974                searchSuggestRequestTimer = setTimeout(function() {
975                    currentRequest = jQuery.ajax({
976                        url: uri+'?no_cache=1&tx_kesearch_pi1%5Bsword%5D='+val,
977                        beforeSend : function() {
978                            if (currentRequest != null) {
979                                currentRequest.abort();
980                            }
981                        },
982                    }).done(function(data){
983                        jQuery('#autocomplete').remove();
984                        jQuery('.form-item.form-type-textfield.header-search-wrapper').prepend(data);
985                    });
986                }, 200);
987            }
988        })
989        .on('keydown', function () {
990            clearTimeout(searchSuggestRequestTimer);
991        });
992
993
994     */
995});
996
997Drupal.locale = {
998  strings: { "": { "Read more": "Mehr lesen", Menu: "Men\u00fc" } },
999};
1000/*!
1001 Colorbox 1.5.14
1002 license: MIT
1003 http://www.jacklmoore.com/colorbox
1004 */
1005(function ($, document, window) {
1006  var // Default settings object.
1007    // See http://jacklmoore.com/colorbox for details.
1008    defaults = {
1009      // data sources
1010      html: false,
1011      photo: false,
1012      iframe: false,
1013      inline: false,
1014
1015      // behavior and appearance
1016      transition: "elastic",
1017      speed: 300,
1018      fadeOut: 300,
1019      width: false,
1020      initialWidth: "600",
1021      innerWidth: false,
1022      maxWidth: false,
1023      height: false,
1024      initialHeight: "450",
1025      innerHeight: false,
1026      maxHeight: false,
1027      scalePhotos: true,
1028      scrolling: true,
1029      opacity: 0.9,
1030      preloading: true,
1031      className: false,
1032      overlayClose: true,
1033      escKey: true,
1034      arrowKey: true,
1035      top: false,
1036      bottom: false,
1037      left: false,
1038      right: false,
1039      fixed: false,
1040      data: undefined,
1041      closeButton: true,
1042      fastIframe: true,
1043      open: false,
1044      reposition: true,
1045      loop: true,
1046      slideshow: false,
1047      slideshowAuto: true,
1048      slideshowSpeed: 2500,
1049      slideshowStart: "start slideshow",
1050      slideshowStop: "stop slideshow",
1051      photoRegex: /\.(gif|png|jp(e|g|eg)|bmp|ico|webp|jxr|svg)((#|\?).*)?$/i,
1052
1053      // alternate image paths for high-res displays
1054      retinaImage: false,
1055      retinaUrl: false,
1056      retinaSuffix: "@2x.$1",
1057
1058      // internationalization
1059      current: "image {current} of {total}",
1060      previous: "previous",
1061      next: "next",
1062      close: "close",
1063      xhrError: "This content failed to load.",
1064      imgError: "This image failed to load.",
1065
1066      // accessbility
1067      returnFocus: true,
1068      trapFocus: true,
1069
1070      // callbacks
1071      onOpen: false,
1072      onLoad: false,
1073      onComplete: false,
1074      onCleanup: false,
vendor: 9,670 bytes, lines 1075-1441
1075      onClosed: false,
1076
1077      rel: function () {
1078        return this.rel;
1079      },
1080      href: function () {
1081        // using this.href would give the absolute url, when the href may have been inteded as a selector (e.g. '#container')
1082        return $(this).attr("href");
1083      },
1084      title: function () {
1085        return this.title;
1086      },
1087    },
1088    // Abstracting the HTML and event identifiers for easy rebranding
1089    colorbox = "colorbox",
1090    prefix = "cbox",
1091    boxElement = prefix + "Element",
1092    // Events
1093    event_open = prefix + "_open",
1094    event_load = prefix + "_load",
1095    event_complete = prefix + "_complete",
1096    event_cleanup = prefix + "_cleanup",
1097    event_closed = prefix + "_closed",
1098    event_purge = prefix + "_purge",
1099    // Cached jQuery Object Variables
1100    $overlay,
1101    $box,
1102    $wrap,
1103    $content,
1104    $topBorder,
1105    $leftBorder,
1106    $rightBorder,
1107    $bottomBorder,
1108    $related,
1109    $window,
1110    $loaded,
1111    $loadingBay,
1112    $loadingOverlay,
1113    $title,
1114    $current,
1115    $slideshow,
1116    $next,
1117    $prev,
1118    $close,
1119    $groupControls,
1120    $events = $("<a/>"), // $({}) would be prefered, but there is an issue with jQuery 1.4.2
1121    // Variables for cached values or use across multiple functions
1122    settings,
1123    interfaceHeight,
1124    interfaceWidth,
1125    loadedHeight,
1126    loadedWidth,
1127    index,
1128    photo,
1129    open,
1130    active,
1131    closing,
1132    loadingTimer,
1133    publicMethod,
1134    div = "div",
1135    requests = 0,
1136    previousCSS = {},
1137    init;
1138
1139  // ****************
1140  // HELPER FUNCTIONS
1141  // ****************
1142
1143  // Convenience function for creating new jQuery objects
1144  function $tag(tag, id, css) {
1145    var element = document.createElement(tag);
1146
1147    if (id) {
1148      element.id = prefix + id;
1149    }
1150
1151    if (css) {
1152      element.style.cssText = css;
1153    }
1154
1155    return $(element);
1156  }
1157
1158  // Get the window height using innerHeight when available to avoid an issue with iOS
1159  // http://bugs.jquery.com/ticket/6724
1160  function winheight() {
1161    return window.innerHeight ? window.innerHeight : $(window).height();
1162  }
1163
1164  function Settings(element, options) {
1165    if (options !== Object(options)) {
1166      options = {};
1167    }
1168
1169    this.cache = {};
1170    this.el = element;
1171
1172    this.value = function (key) {
1173      var dataAttr;
1174
1175      if (this.cache[key] === undefined) {
1176        dataAttr = $(this.el).attr("data-cbox-" + key);
1177
1178        if (dataAttr !== undefined) {
1179          this.cache[key] = dataAttr;
1180        } else if (options[key] !== undefined) {
1181          this.cache[key] = options[key];
1182        } else if (defaults[key] !== undefined) {
1183          this.cache[key] = defaults[key];
1184        }
1185      }
1186
1187      return this.cache[key];
1188    };
1189
1190    this.get = function (key) {
1191      var value = this.value(key);
1192      return $.isFunction(value) ? value.call(this.el, this) : value;
1193    };
1194  }
1195
1196  // Determine the next and previous members in a group.
1197  function getIndex(increment) {
1198    var max = $related.length,
1199      newIndex = (index + increment) % max;
1200
1201    return newIndex < 0 ? max + newIndex : newIndex;
1202  }
1203
1204  // Convert '%' and 'px' values to integers
1205  function setSize(size, dimension) {
1206    return Math.round(
1207      (/%/.test(size)
1208        ? (dimension === "x" ? $window.width() : winheight()) / 100
1209        : 1) * parseInt(size, 10)
1210    );
1211  }
1212
1213  // Checks an href to see if it is a photo.
1214  // There is a force photo option (photo: true) for hrefs that cannot be matched by the regex.
1215  function isImage(settings, url) {
1216    return settings.get("photo") || settings.get("photoRegex").test(url);
1217  }
1218
1219  function retinaUrl(settings, url) {
1220    return settings.get("retinaUrl") && window.devicePixelRatio > 1
1221      ? url.replace(settings.get("photoRegex"), settings.get("retinaSuffix"))
1222      : url;
1223  }
1224
1225  function trapFocus(e) {
1226    if (
1227      "contains" in $box[0] &&
1228      !$box[0].contains(e.target) &&
1229      e.target !== $overlay[0]
1230    ) {
1231      e.stopPropagation();
1232      $box.focus();
1233    }
1234  }
1235
1236  function setClass(str) {
1237    if (setClass.str !== str) {
1238      $box.add($overlay).removeClass(setClass.str).addClass(str);
1239      setClass.str = str;
1240    }
1241  }
1242
1243  function getRelated(rel) {
1244    index = 0;
1245
1246    if (rel && rel !== false && rel !== "nofollow") {
1247      $related = $("." + boxElement).filter(function () {
1248        var options = $.data(this, colorbox);
1249        var settings = new Settings(this, options);
1250        return settings.get("rel") === rel;
1251      });
1252      index = $related.index(settings.el);
1253
1254      // Check direct calls to Colorbox.
1255      if (index === -1) {
1256        $related = $related.add(settings.el);
1257        index = $related.length - 1;
1258      }
1259    } else {
1260      $related = $(settings.el);
1261    }
1262  }
1263
1264  function trigger(event) {
1265    // for external use
1266    $(document).trigger(event);
1267    // for internal use
1268    $events.triggerHandler(event);
1269  }
1270
1271  var slideshow = (function () {
1272    var active,
1273      className = prefix + "Slideshow_",
1274      click = "click." + prefix,
1275      timeOut;
1276
1277    function clear() {
1278      clearTimeout(timeOut);
1279    }
1280
1281    function set() {
1282      if (settings.get("loop") || $related[index + 1]) {
1283        clear();
1284        timeOut = setTimeout(publicMethod.next, settings.get("slideshowSpeed"));
1285      }
1286    }
1287
1288    function start() {
1289      $slideshow
1290        .html(settings.get("slideshowStop"))
1291        .unbind(click)
1292        .one(click, stop);
1293
1294      $events.bind(event_complete, set).bind(event_load, clear);
1295
1296      $box.removeClass(className + "off").addClass(className + "on");
1297    }
1298
1299    function stop() {
1300      clear();
1301
1302      $events.unbind(event_complete, set).unbind(event_load, clear);
1303
1304      $slideshow
1305        .html(settings.get("slideshowStart"))
1306        .unbind(click)
1307        .one(click, function () {
1308          publicMethod.next();
1309          start();
1310        });
1311
1312      $box.removeClass(className + "on").addClass(className + "off");
1313    }
1314
1315    function reset() {
1316      active = false;
1317      $slideshow.hide();
1318      clear();
1319      $events.unbind(event_complete, set).unbind(event_load, clear);
1320      $box.removeClass(className + "off " + className + "on");
1321    }
1322
1323    return function () {
1324      if (active) {
1325        if (!settings.get("slideshow")) {
1326          $events.unbind(event_cleanup, reset);
1327          reset();
1328        }
1329      } else {
1330        if (settings.get("slideshow") && $related[1]) {
1331          active = true;
1332          $events.one(event_cleanup, reset);
1333          if (settings.get("slideshowAuto")) {
1334            start();
1335          } else {
1336            stop();
1337          }
1338          $slideshow.show();
1339        }
1340      }
1341    };
1342  })();
1343
1344  function launch(element) {
1345    var options;
1346
1347    if (!closing) {
1348      options = $(element).data(colorbox);
1349
1350      settings = new Settings(element, options);
1351
1352      getRelated(settings.get("rel"));
1353
1354      if (!open) {
1355        open = active = true; // Prevents the page-change action from queuing up if the visitor holds down the left or right keys.
1356
1357        setClass(settings.get("className"));
1358
1359        // Show colorbox so the sizes can be calculated in older versions of jQuery
1360        $box.css({ visibility: "hidden", display: "block", opacity: "" });
1361
1362        $loaded = $tag(
1363          div,
1364          "LoadedContent",
1365          "width:0; height:0; overflow:hidden; visibility:hidden"
1366        );
1367        $content.css({ width: "", height: "" }).append($loaded);
1368
1369        // Cache values needed for size calculations
1370        interfaceHeight =
1371          $topBorder.height() +
1372          $bottomBorder.height() +
1373          $content.outerHeight(true) -
1374          $content.height();
1375        interfaceWidth =
1376          $leftBorder.width() +
1377          $rightBorder.width() +
1378          $content.outerWidth(true) -
1379          $content.width();
1380        loadedHeight = $loaded.outerHeight(true);
1381        loadedWidth = $loaded.outerWidth(true);
1382
1383        // Opens inital empty Colorbox prior to content being loaded.
1384        var initialWidth = setSize(settings.get("initialWidth"), "x");
1385        var initialHeight = setSize(settings.get("initialHeight"), "y");
1386        var maxWidth = settings.get("maxWidth");
1387        var maxHeight = settings.get("maxHeight");
1388
1389        settings.w =
1390          (maxWidth !== false
1391            ? Math.min(initialWidth, setSize(maxWidth, "x"))
1392            : initialWidth) -
1393          loadedWidth -
1394          interfaceWidth;
1395        settings.h =
1396          (maxHeight !== false
1397            ? Math.min(initialHeight, setSize(maxHeight, "y"))
1398            : initialHeight) -
1399          loadedHeight -
1400          interfaceHeight;
1401
1402        $loaded.css({ width: "", height: settings.h });
1403        publicMethod.position();
1404
1405        trigger(event_open);
1406        settings.get("onOpen");
1407
1408        $groupControls.add($title).hide();
1409
1410        $box.focus();
1411
1412        if (settings.get("trapFocus")) {
1413          // Confine focus to the modal
1414          // Uses event capturing that is not supported in IE8-
1415          if (document.addEventListener) {
1416            document.addEventListener("focus", trapFocus, true);
1417
1418            $events.one(event_closed, function () {
1419              document.removeEventListener("focus", trapFocus, true);
1420            });
1421          }
1422        }
1423
1424        // Return focus on closing
1425        if (settings.get("returnFocus")) {
1426          $events.one(event_closed, function () {
1427            $(settings.el).focus();
1428          });
1429        }
1430      }
1431
1432      var opacity = parseFloat(settings.get("opacity"));
1433      $overlay
1434        .css({
1435          opacity: opacity === opacity ? opacity : "",
1436          cursor: settings.get("overlayClose") ? "pointer" : "",
1437          visibility: "visible",
1438        })
1439        .show();
1440
1441      if (settings.get("closeButton")) {
1442        $close.html(settings.get("close")).appendTo($content);
1443      } else {
1444        $close.appendTo("<div/>"); // replace with .detach() when dropping jQuery < 1.4
1445      }
1446
1447      load();
1448    }
1449  }
1450
1451  // Colorbox's markup needs to be added to the DOM prior to being called
1452  // so that the browser will go ahead and load the CSS background images.
1453  function appendHTML() {
1454    if (!$box) {
1455      init = false;
1456      $window = $(window);
1457      $box = $tag(div)
1458        .attr({
1459          id: colorbox,
1460          class: $.support.opacity === false ? prefix + "IE" : "", // class for optional IE8 & lower targeted CSS.
1461          role: "dialog",
1462          tabindex: "-1",
1463        })
1464        .hide();
1465      $overlay = $tag(div, "Overlay").hide();
1466      $loadingOverlay = $([
1467        $tag(div, "LoadingOverlay")[0],
1468        $tag(div, "LoadingGraphic")[0],
1469      ]);
1470      $wrap = $tag(div, "Wrapper");
1471      $content = $tag(div, "Content").append(
1472        ($title = $tag(div, "Title")),
1473        ($current = $tag(div, "Current")),
1474        ($prev = $('<button type="button"/>').attr({
1475          id: prefix + "Previous",
1476          "aria-label": "vorheriges Bild",
1477        })),
1478        ($next = $('<button type="button"/>').attr({
1479          id: prefix + "Next",
1480          "aria-label": "nächstes Bild",
1481        })),
1482        ($slideshow = $tag("button", "Slideshow")),
1483        $loadingOverlay
1484      );
1485
1486      $close = $('<button type="button"/>').attr({
1487        id: prefix + "Close",
1488        "aria-label": "vergrößerte Ansicht schließen",
1489      });
1490
1491      $wrap
1492        .append(
1493          // The 3x3 Grid that makes up Colorbox
1494          $tag(div).append(
1495            $tag(div, "TopLeft"),
1496            ($topBorder = $tag(div, "TopCenter")),
1497            $tag(div, "TopRight")
1498          ),
1499          $tag(div, false, "clear:left").append(
1500            ($leftBorder = $tag(div, "MiddleLeft")),
1501            $content,
1502            ($rightBorder = $tag(div, "MiddleRight"))
1503          ),
1504          $tag(div, false, "clear:left").append(
1505            $tag(div, "BottomLeft"),
1506            ($bottomBorder = $tag(div, "BottomCenter")),
1507            $tag(div, "BottomRight")
1508          )
1509        )
1510        .find("div div")
1511        .css({ float: "left" });
1512
1513      $loadingBay = $tag(
1514        div,
1515        false,
1516        "position:absolute; width:9999px; visibility:hidden; display:none; max-width:none;"
1517      );
1518
1519      $groupControls = $next.add($prev).add($current).add($slideshow);
1520    }
1521    if (document.body && !$box.parent().length) {
1522      $(document.body).append($overlay, $box.append($wrap, $loadingBay));
1523    }
1524  }
1525
1526  // Add Colorbox's event bindings
1527  function addBindings() {
1528    function clickHandler(e) {
1529      // ignore non-left-mouse-clicks and clicks modified with ctrl / command, shift, or alt.
1530      // See: http://jacklmoore.com/notes/click-events/
1531      if (!(e.which > 1 || e.shiftKey || e.altKey || e.metaKey || e.ctrlKey)) {
1532        e.preventDefault();
1533        launch(this);
1534      }
1535    }
1536
1537    if ($box) {
1538      if (!init) {
1539        init = true;
1540
1541        // Anonymous functions here keep the public method from being cached, thereby allowing them to be redefined on the fly.
1542        $next.click(function () {
1543          publicMethod.next();
1544        });
1545        $prev.click(function () {
1546          publicMethod.prev();
1547        });
1548        $close.click(function () {
1549          publicMethod.close();
1550        });
1551        $overlay.click(function () {
1552          if (settings.get("overlayClose")) {
1553            publicMethod.close();
1554          }
1555        });
1556
1557        // Key Bindings
1558        $(document).bind("keydown." + prefix, function (e) {
1559          var key = e.keyCode;
1560          if (open && settings.get("escKey") && key === 27) {
1561            e.preventDefault();
1562            publicMethod.close();
1563          }
1564          if (open && settings.get("arrowKey") && $related[1] && !e.altKey) {
1565            if (key === 37) {
1566              e.preventDefault();
1567              $prev.click();
1568            } else if (key === 39) {
1569              e.preventDefault();
1570              $next.click();
1571            }
1572          }
1573        });
1574
1575        if ($.isFunction($.fn.on)) {
1576          // For jQuery 1.7+
1577          $(document).on("click." + prefix, "." + boxElement, clickHandler);
1578        } /*else {
1579                    // For jQuery 1.3.x -> 1.6.x
1580                    // This code is never reached in jQuery 1.9, so do not contact me about 'live' being removed.
1581                    // This is not here for jQuery 1.9, it's here for legacy users.
1582                    $('.'+boxElement).live('click.'+prefix, clickHandler);
1583                }*/
1584      }
1585      return true;
1586    }
1587    return false;
vendor: 16,995 bytes, lines 1588-2193
1588  }
1589
1590  // Don't do anything if Colorbox already exists.
1591  if ($[colorbox]) {
1592    return;
1593  }
1594
1595  // Append the HTML when the DOM loads
1596  $(appendHTML);
1597
1598  // ****************
1599  // PUBLIC FUNCTIONS
1600  // Usage format: $.colorbox.close();
1601  // Usage from within an iframe: parent.jQuery.colorbox.close();
1602  // ****************
1603
1604  publicMethod = $.fn[colorbox] = $[colorbox] = function (options, callback) {
1605    var settings;
1606    var $obj = this;
1607
1608    options = options || {};
1609
1610    if ($.isFunction($obj)) {
1611      // assume a call to $.colorbox
1612      $obj = $("<a/>");
1613      options.open = true;
1614    } else if (!$obj[0]) {
1615      // colorbox being applied to empty collection
1616      return $obj;
1617    }
1618
1619    if (!$obj[0]) {
1620      // colorbox being applied to empty collection
1621      return $obj;
1622    }
1623
1624    appendHTML();
1625
1626    if (addBindings()) {
1627      if (callback) {
1628        options.onComplete = callback;
1629      }
1630
1631      $obj
1632        .each(function () {
1633          var old = $.data(this, colorbox) || {};
1634          $.data(this, colorbox, $.extend(old, options));
1635        })
1636        .addClass(boxElement);
1637
1638      settings = new Settings($obj[0], options);
1639
1640      if (settings.get("open")) {
1641        launch($obj[0]);
1642      }
1643    }
1644
1645    return $obj;
1646  };
1647
1648  publicMethod.position = function (speed, loadedCallback) {
1649    var css,
1650      top = 0,
1651      left = 0,
1652      offset = $box.offset(),
1653      scrollTop,
1654      scrollLeft;
1655
1656    $window.unbind("resize." + prefix);
1657
1658    // remove the modal so that it doesn't influence the document width/height
1659    $box.css({ top: -9e4, left: -9e4 });
1660
1661    scrollTop = $window.scrollTop();
1662    scrollLeft = $window.scrollLeft();
1663
1664    if (settings.get("fixed")) {
1665      offset.top -= scrollTop;
1666      offset.left -= scrollLeft;
1667      $box.css({ position: "fixed" });
1668    } else {
1669      top = scrollTop;
1670      left = scrollLeft;
1671      $box.css({ position: "absolute" });
1672    }
1673
1674    // keeps the top and left positions within the browser's viewport.
1675    if (settings.get("right") !== false) {
1676      left += Math.max(
1677        $window.width() -
1678          settings.w -
1679          loadedWidth -
1680          interfaceWidth -
1681          setSize(settings.get("right"), "x"),
1682        0
1683      );
1684    } else if (settings.get("left") !== false) {
1685      left += setSize(settings.get("left"), "x");
1686    } else {
1687      left += Math.round(
1688        Math.max(
1689          $window.width() - settings.w - loadedWidth - interfaceWidth,
1690          0
1691        ) / 2
1692      );
1693    }
1694
1695    if (settings.get("bottom") !== false) {
1696      top += Math.max(
1697        winheight() -
1698          settings.h -
1699          loadedHeight -
1700          interfaceHeight -
1701          setSize(settings.get("bottom"), "y"),
1702        0
1703      );
1704    } else if (settings.get("top") !== false) {
1705      top += setSize(settings.get("top"), "y");
1706    } else {
1707      top += Math.round(
1708        Math.max(winheight() - settings.h - loadedHeight - interfaceHeight, 0) /
1709          2
1710      );
1711    }
1712
1713    $box.css({ top: offset.top, left: offset.left, visibility: "visible" });
1714
1715    // this gives the wrapper plenty of breathing room so it's floated contents can move around smoothly,
1716    // but it has to be shrank down around the size of div#colorbox when it's done.  If not,
1717    // it can invoke an obscure IE bug when using iframes.
1718    $wrap[0].style.width = $wrap[0].style.height = "9999px";
1719
1720    function modalDimensions() {
1721      $topBorder[0].style.width = $bottomBorder[0].style.width = $content[0].style.width =
1722        parseInt($box[0].style.width, 10) - interfaceWidth + "px";
1723      $content[0].style.height = $leftBorder[0].style.height = $rightBorder[0].style.height =
1724        parseInt($box[0].style.height, 10) - interfaceHeight + "px";
1725    }
1726
1727    css = {
1728      width: settings.w + loadedWidth + interfaceWidth,
1729      height: settings.h + loadedHeight + interfaceHeight,
1730      top: top,
1731      left: left,
1732    };
1733
1734    // setting the speed to 0 if the content hasn't changed size or position
1735    if (speed) {
1736      var tempSpeed = 0;
1737      $.each(css, function (i) {
1738        if (css[i] !== previousCSS[i]) {
1739          tempSpeed = speed;
1740          return;
1741        }
1742      });
1743      speed = tempSpeed;
1744    }
1745
1746    previousCSS = css;
1747
1748    if (!speed) {
1749      $box.css(css);
1750    }
1751
1752    $box.dequeue().animate(css, {
1753      duration: speed || 0,
1754      complete: function () {
1755        modalDimensions();
1756
1757        active = false;
1758
1759        // shrink the wrapper down to exactly the size of colorbox to avoid a bug in IE's iframe implementation.
1760        $wrap[0].style.width = settings.w + loadedWidth + interfaceWidth + "px";
1761        $wrap[0].style.height =
1762          settings.h + loadedHeight + interfaceHeight + "px";
1763
1764        if (settings.get("reposition")) {
1765          setTimeout(function () {
1766            // small delay before binding onresize due to an IE8 bug.
1767            $window.bind("resize." + prefix, publicMethod.position);
1768          }, 1);
1769        }
1770
1771        if ($.isFunction(loadedCallback)) {
1772          loadedCallback();
1773        }
1774      },
1775      step: modalDimensions,
1776    });
1777  };
1778
1779  publicMethod.resize = function (options) {
1780    var scrolltop;
1781
1782    if (open) {
1783      options = options || {};
1784
1785      if (options.width) {
1786        settings.w = setSize(options.width, "x") - loadedWidth - interfaceWidth;
1787      }
1788
1789      if (options.innerWidth) {
1790        settings.w = setSize(options.innerWidth, "x");
1791      }
1792
1793      $loaded.css({ width: settings.w });
1794
1795      if (options.height) {
1796        settings.h =
1797          setSize(options.height, "y") - loadedHeight - interfaceHeight;
1798      }
1799
1800      if (options.innerHeight) {
1801        settings.h = setSize(options.innerHeight, "y");
1802      }
1803
1804      if (!options.innerHeight && !options.height) {
1805        scrolltop = $loaded.scrollTop();
1806        $loaded.css({ height: "auto" });
1807        settings.h = $loaded.height();
1808      }
1809
1810      $loaded.css({ height: settings.h });
1811
1812      if (scrolltop) {
1813        $loaded.scrollTop(scrolltop);
1814      }
1815
1816      publicMethod.position(
1817        settings.get("transition") === "none" ? 0 : settings.get("speed")
1818      );
1819    }
1820  };
1821
1822  publicMethod.prep = function (object) {
1823    if (!open) {
1824      return;
1825    }
1826
1827    var callback,
1828      speed = settings.get("transition") === "none" ? 0 : settings.get("speed");
1829
1830    $loaded.remove();
1831
1832    $loaded = $tag(div, "LoadedContent").append(object);
1833
1834    function getWidth() {
1835      settings.w = settings.w || $loaded.width();
1836      settings.w =
1837        settings.mw && settings.mw < settings.w ? settings.mw : settings.w;
1838      return settings.w;
1839    }
1840    function getHeight() {
1841      settings.h = settings.h || $loaded.height();
1842      settings.h =
1843        settings.mh && settings.mh < settings.h ? settings.mh : settings.h;
1844      return settings.h;
1845    }
1846
1847    $loaded
1848      .hide()
1849      .appendTo($loadingBay.show()) // content has to be appended to the DOM for accurate size calculations.
1850      .css({
1851        width: getWidth(),
1852        overflow: settings.get("scrolling") ? "auto" : "hidden",
1853      })
1854      .css({ height: getHeight() }) // sets the height independently from the width in case the new width influences the value of height.
1855      .prependTo($content);
1856
1857    $loadingBay.hide();
1858
1859    // floating the IMG removes the bottom line-height and fixed a problem where IE miscalculates the width of the parent element as 100% of the document width.
1860
1861    $(photo).css({ float: "none" });
1862
1863    setClass(settings.get("className"));
1864
1865    callback = function () {
1866      var total = $related.length,
1867        iframe,
1868        complete;
1869
1870      if (!open) {
1871        return;
1872      }
1873
1874      function removeFilter() {
1875        // Needed for IE8 in versions of jQuery prior to 1.7.2
1876        if ($.support.opacity === false) {
1877          $box[0].style.removeAttribute("filter");
1878        }
1879      }
1880
1881      complete = function () {
1882        clearTimeout(loadingTimer);
1883        $loadingOverlay.hide();
1884        trigger(event_complete);
1885        settings.get("onComplete");
1886      };
1887
1888      $title.html(settings.get("title")).show();
1889      $loaded.show();
1890
1891      if (total > 1) {
1892        // handle grouping
1893        if (typeof settings.get("current") === "string") {
1894          $current
1895            .html(
1896              settings
1897                .get("current")
1898                .replace("{current}", index + 1)
1899                .replace("{total}", total)
1900            )
1901            .show();
1902        }
1903
1904        $next[
1905          settings.get("loop") || index < total - 1 ? "show" : "hide"
1906        ]().html(settings.get("next"));
1907        $prev[settings.get("loop") || index ? "show" : "hide"]().html(
1908          settings.get("previous")
1909        );
1910
1911        slideshow();
1912
1913        // Preloads images within a rel group
1914        if (settings.get("preloading")) {
1915          $.each([getIndex(-1), getIndex(1)], function () {
1916            var img,
1917              i = $related[this],
1918              settings = new Settings(i, $.data(i, colorbox)),
1919              src = settings.get("href");
1920
1921            if (src && isImage(settings, src)) {
1922              src = retinaUrl(settings, src);
1923              img = document.createElement("img");
1924              img.src = src;
1925            }
1926          });
1927        }
1928      } else {
1929        $groupControls.hide();
1930      }
1931
1932      if (settings.get("iframe")) {
1933        iframe = document.createElement("iframe");
1934
1935        if ("frameBorder" in iframe) {
1936          iframe.frameBorder = 0;
1937        }
1938
1939        if ("allowTransparency" in iframe) {
1940          iframe.allowTransparency = "true";
1941        }
1942
1943        if (!settings.get("scrolling")) {
1944          iframe.scrolling = "no";
1945        }
1946
1947        $(iframe)
1948          .attr({
1949            src: settings.get("href"),
1950            name: new Date().getTime(), // give the iframe a unique name to prevent caching
1951            class: prefix + "Iframe",
1952            allowFullScreen: true, // allow HTML5 video to go fullscreen
1953          })
1954          .one("load", complete)
1955          .appendTo($loaded);
1956
1957        $events.one(event_purge, function () {
1958          iframe.src = "//about:blank";
1959        });
1960
1961        if (settings.get("fastIframe")) {
1962          $(iframe).trigger("load");
1963        }
1964      } else {
1965        complete();
1966      }
1967
1968      if (settings.get("transition") === "fade") {
1969        $box.fadeTo(speed, 1, removeFilter);
1970      } else {
1971        removeFilter();
1972      }
1973    };
1974
1975    if (settings.get("transition") === "fade") {
1976      $box.fadeTo(speed, 0, function () {
1977        publicMethod.position(0, callback);
1978      });
1979    } else {
1980      publicMethod.position(speed, callback);
1981    }
1982  };
1983
1984  function load() {
1985    var href,
1986      setResize,
1987      prep = publicMethod.prep,
1988      $inline,
1989      request = ++requests;
1990
1991    active = true;
1992
1993    photo = false;
1994
1995    trigger(event_purge);
1996    trigger(event_load);
1997    settings.get("onLoad");
1998
1999    settings.h = settings.get("height")
2000      ? setSize(settings.get("height"), "y") - loadedHeight - interfaceHeight
2001      : settings.get("innerHeight") &&
2002        setSize(settings.get("innerHeight"), "y");
2003
2004    settings.w = settings.get("width")
2005      ? setSize(settings.get("width"), "x") - loadedWidth - interfaceWidth
2006      : settings.get("innerWidth") && setSize(settings.get("innerWidth"), "x");
2007
2008    // Sets the minimum dimensions for use in image scaling
2009    settings.mw = settings.w;
2010    settings.mh = settings.h;
2011
2012    // Re-evaluate the minimum width and height based on maxWidth and maxHeight values.
2013    // If the width or height exceed the maxWidth or maxHeight, use the maximum values instead.
2014    if (settings.get("maxWidth")) {
2015      settings.mw =
2016        setSize(settings.get("maxWidth"), "x") - loadedWidth - interfaceWidth;
2017      settings.mw =
2018        settings.w && settings.w < settings.mw ? settings.w : settings.mw;
2019    }
2020    if (settings.get("maxHeight")) {
2021      settings.mh =
2022        setSize(settings.get("maxHeight"), "y") -
2023        loadedHeight -
2024        interfaceHeight;
2025      settings.mh =
2026        settings.h && settings.h < settings.mh ? settings.h : settings.mh;
2027    }
2028
2029    href = settings.get("href");
2030
2031    loadingTimer = setTimeout(function () {
2032      $loadingOverlay.show();
2033    }, 100);
2034
2035    if (settings.get("inline")) {
2036      var $target = $(href);
2037      // Inserts an empty placeholder where inline content is being pulled from.
2038      // An event is bound to put inline content back when Colorbox closes or loads new content.
2039      $inline = $("<div>").hide().insertBefore($target);
2040
2041      $events.one(event_purge, function () {
2042        $inline.replaceWith($target);
2043      });
2044
2045      prep($target);
2046    } else if (settings.get("iframe")) {
2047      // IFrame element won't be added to the DOM until it is ready to be displayed,
2048      // to avoid problems with DOM-ready JS that might be trying to run in that iframe.
2049      prep(" ");
2050    } else if (settings.get("html")) {
2051      prep(settings.get("html"));
2052    } else if (isImage(settings, href)) {
2053      href = retinaUrl(settings, href);
2054
2055      photo = new Image();
2056
2057      $(photo)
2058        .addClass(prefix + "Photo")
2059        .bind("error", function () {
2060          prep($tag(div, "Error").html(settings.get("imgError")));
2061        })
2062        .one("load", function () {
2063          if (request !== requests) {
2064            return;
2065          }
2066
2067          // A small pause because some browsers will occassionaly report a
2068          // img.width and img.height of zero immediately after the img.onload fires
2069          setTimeout(function () {
2070            var percent;
2071
2072            $.each(["alt", "longdesc", "aria-describedby"], function (i, val) {
2073              var attr =
2074                $(settings.el).attr(val) || $(settings.el).attr("data-" + val);
2075              if (attr) {
2076                photo.setAttribute(val, attr);
2077              }
2078            });
2079
2080            if (settings.get("retinaImage") && window.devicePixelRatio > 1) {
2081              photo.height = photo.height / window.devicePixelRatio;
2082              photo.width = photo.width / window.devicePixelRatio;
2083            }
2084
2085            if (settings.get("scalePhotos")) {
2086              setResize = function () {
2087                photo.height -= photo.height * percent;
2088                photo.width -= photo.width * percent;
2089              };
2090              if (settings.mw && photo.width > settings.mw) {
2091                percent = (photo.width - settings.mw) / photo.width;
2092                setResize();
2093              }
2094              if (settings.mh && photo.height > settings.mh) {
2095                percent = (photo.height - settings.mh) / photo.height;
2096                setResize();
2097              }
2098            }
2099
2100            if (settings.h) {
2101              photo.style.marginTop =
2102                Math.max(settings.mh - photo.height, 0) / 2 + "px";
2103            }
2104
2105            if ($related[1] && (settings.get("loop") || $related[index + 1])) {
2106              photo.style.cursor = "pointer";
2107              photo.onclick = function () {
2108                publicMethod.next();
2109              };
2110            }
2111
2112            photo.style.width = photo.width + "px";
2113            photo.style.height = photo.height + "px";
2114            prep(photo);
2115          }, 1);
2116        });
2117
2118      photo.src = href;
2119    } else if (href) {
2120      $loadingBay.load(href, settings.get("data"), function (data, status) {
2121        if (request === requests) {
2122          prep(
2123            status === "error"
2124              ? $tag(div, "Error").html(settings.get("xhrError"))
2125              : $(this).contents()
2126          );
2127        }
2128      });
2129    }
2130  }
2131
2132  // Navigates to the next page/image in a set.
2133  publicMethod.next = function () {
2134    if (
2135      !active &&
2136      $related[1] &&
2137      (settings.get("loop") || $related[index + 1])
2138    ) {
2139      index = getIndex(1);
2140      launch($related[index]);
2141    }
2142  };
2143
2144  publicMethod.prev = function () {
2145    if (!active && $related[1] && (settings.get("loop") || index)) {
2146      index = getIndex(-1);
2147      launch($related[index]);
2148    }
2149  };
2150
2151  // Note: to use this within an iframe use the following format: parent.jQuery.colorbox.close();
2152  publicMethod.close = function () {
2153    if (open && !closing) {
2154      closing = true;
2155      open = false;
2156      trigger(event_cleanup);
2157      settings.get("onCleanup");
2158      $window.unbind("." + prefix);
2159      $overlay.fadeTo(settings.get("fadeOut") || 0, 0);
2160
2161      $box.stop().fadeTo(settings.get("fadeOut") || 0, 0, function () {
2162        $box.hide();
2163        $overlay.hide();
2164        trigger(event_purge);
2165        $loaded.remove();
2166
2167        setTimeout(function () {
2168          closing = false;
2169          trigger(event_closed);
2170          settings.get("onClosed");
2171        }, 1);
2172      });
2173    }
2174  };
2175
2176  // Removes changes Colorbox made to the document, but does not remove the plugin.
2177  publicMethod.remove = function () {
2178    if (!$box) {
2179      return;
2180    }
2181
2182    $box.stop();
2183    $[colorbox].close();
2184    $box.stop(false, true).remove();
2185    $overlay.remove();
2186    closing = false;
2187    $box = null;
2188    $("." + boxElement)
2189      .removeData(colorbox)
2190      .removeClass(boxElement);
2191
2192    $(document)
2193      .unbind("click." + prefix)
2194      .unbind("keydown." + prefix);
2195  };
2196
2197  // A method for fetching the current element Colorbox is referencing.
2198  // returns a jQuery object.
2199  publicMethod.element = function () {
2200    return $(settings.el);
2201  };
2202
2203  publicMethod.settings = defaults;
2204})(jQuery, document, window);
2205(function ($) {
2206  Drupal.behaviors.initColorbox = {
2207    attach: function (context, settings) {
2208      if (
2209        !$.isFunction($.colorbox) ||
2210        typeof settings.colorbox === "undefined"
2211      ) {
2212        return;
2213      }
2214
2215      if (settings.colorbox.mobiledetect && window.matchMedia) {
2216        // Disable Colorbox for small screens.
2217        var mq = window.matchMedia(
2218          "(max-device-width: " + settings.colorbox.mobiledevicewidth + ")"
2219        );
2220        if (mq.matches) {
2221          return;
2222        }
2223      }
2224
2225      // Conflict with readspeaker js caused title, next & previous buttons to override
2226      // custom settings, so we set them here hardcoded. Cleaner attempts to fix
2227      // this failed.
2228      $.colorbox.settings.next = "";
2229      $.colorbox.settings.previous = "";
2230
2231      $.colorbox.settings.title = function () {
2232        var attr = $(this).data("inner-title");
2233        // For some browsers, `attr` is undefined; for others,
2234        // `attr` is false.  Check for both.
2235        if (typeof attr !== typeof undefined && attr !== false) {
2236          return $(this).data("inner-title");
2237        }
2238      };
2239
2240      $(".colorbox", context).once("init-colorbox").colorbox(settings.colorbox);
2241
2242      $(context).bind("cbox_complete", function () {
2243        Drupal.attachBehaviors("#cboxLoadedContent");
2244      });
2245    },
2246  };
2247})(jQuery);
2248(function ($) {
2249  Drupal.behaviors.initColorboxLoad = {
2250    attach: function (context, settings) {
2251      if (
2252        !$.isFunction($.colorbox) ||
2253        typeof settings.colorbox === "undefined"
2254      ) {
2255        return;
2256      }
2257      $.urlParams = function (url) {
2258        var p = {},
2259          e,
2260          a = /\+/g, // Regex for replacing addition symbol with a space
2261          r = /([^&=]+)=?([^&]*)/g,
2262          d = function (s) {
2263            return decodeURIComponent(s.replace(a, " "));
2264          },
2265          q = url.split("?");
2266        while ((e = r.exec(q[1]))) {
2267          e[1] = d(e[1]);
2268          e[2] = d(e[2]);
2269          switch (e[2].toLowerCase()) {
2270            case "true":
2271            case "yes":
2272              e[2] = true;
2273              break;
2274            case "false":
2275            case "no":
2276              e[2] = false;
2277              break;
2278          }
2279          if (e[1] == "width") {
2280            e[1] = "innerWidth";
2281          }
2282          if (e[1] == "height") {
2283            e[1] = "innerHeight";
2284          }
2285          p[e[1]] = e[2];
2286        }
2287        return p;
2288      };
2289      $(".colorbox-load", context).once("init-colorbox-load", function () {
2290        var params = $.urlParams($(this).attr("href"));
2291        $(this).colorbox(
2292          $.extend(
2293            {
2294              title: function () {
2295                return $(this).data("inner-title");
2296              },
2297            },
2298            settings.colorbox,
2299            params
2300          )
2301        );
2302      });
2303    },
2304  };
2305})(jQuery);
2306(function ($) {
2307  Drupal.behaviors.initColorboxInline = {
2308    attach: function (context, settings) {
2309      if (
2310        !$.isFunction($.colorbox) ||
2311        typeof settings.colorbox === "undefined"
2312      ) {
2313        return;
2314      }
2315      $.urlParam = function (name, url) {
2316        if (name == "fragment") {
2317          var results = new RegExp("(#[^&#]*)").exec(url);
2318        } else {
2319          var results = new RegExp("[\\?&]" + name + "=([^&#]*)").exec(url);
2320        }
2321        if (!results) {
2322          return "";
2323        }
2324        return results[1] || "";
2325      };
2326      $(".colorbox-inline", context)
2327        .once("init-colorbox-inline")
2328        .colorbox({
2329          transition: settings.colorbox.transition,
2330          speed: settings.colorbox.speed,
2331          opacity: settings.colorbox.opacity,
2332          slideshow: settings.colorbox.slideshow,
2333          slideshowAuto: settings.colorbox.slideshowAuto,
2334          slideshowSpeed: settings.colorbox.slideshowSpeed,
2335          slideshowStart: settings.colorbox.slideshowStart,
2336          slideshowStop: settings.colorbox.slideshowStop,
2337          current: settings.colorbox.current,
2338          previous: settings.colorbox.previous,
2339          next: settings.colorbox.next,
2340          close: settings.colorbox.close,
2341          overlayClose: settings.colorbox.overlayClose,
2342          maxWidth: settings.colorbox.maxWidth,
2343          maxHeight: settings.colorbox.maxHeight,
2344          innerWidth: function () {
2345            return $.urlParam("width", $(this).attr("href"));
2346          },
2347          innerHeight: function () {
2348            return $.urlParam("height", $(this).attr("href"));
2349          },
2350          title: function () {
2351            return decodeURIComponent(
2352              $.urlParam("title", $(this).attr("href"))
2353            );
2354          },
2355          iframe: function () {
2356            return $.urlParam("iframe", $(this).attr("href"));
2357          },
2358          inline: function () {
2359            return $.urlParam("inline", $(this).attr("href"));
2360          },
2361          href: function () {
2362            return $.urlParam("fragment", $(this).attr("href"));
2363          },
2364        });
2365    },
2366  };
2367})(jQuery);
2368/* ========================================================================
2369 * Bootstrap: tooltip.js v3.1.0
2370 * http://getbootstrap.com/javascript/#tooltip
2371 * Inspired by the original jQuery.tipsy by Jason Frame
2372 * ========================================================================
2373 * Copyright 2011-2014 Twitter, Inc.
2374 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2375 * ======================================================================== */
2376
2377+(function ($) {
2378  "use strict";
2379
2380  // TOOLTIP PUBLIC CLASS DEFINITION
2381  // ===============================
2382
2383  var Tooltip = function (element, options) {
2384    this.type = this.options = this.enabled = this.timeout = this.hoverState = this.$element = null;
2385
2386    this.init("tooltip", element, options);
2387  };
2388
2389  Tooltip.DEFAULTS = {
2390    animation: true,
2391    placement: "top",
2392    selector: false,
2393    template:
2394      '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
2395    trigger: "hover focus",
2396    title: "",
2397    delay: 0,
2398    html: false,
2399    container: false,
2400  };
2401
2402  Tooltip.prototype.init = function (type, element, options) {
2403    this.enabled = true;
2404    this.type = type;
2405    this.$element = $(element);
2406    this.options = this.getOptions(options);
2407
2408    var triggers = this.options.trigger.split(" ");
2409
2410    for (var i = triggers.length; i--; ) {
2411      var trigger = triggers[i];
2412
2413      if (trigger == "click") {
2414        this.$element.on(
2415          "click." + this.type,
2416          this.options.selector,
2417          $.proxy(this.toggle, this)
2418        );
2419      } else if (trigger != "manual") {
2420        var eventIn = trigger == "hover" ? "mouseenter" : "focusin";
2421        var eventOut = trigger == "hover" ? "mouseleave" : "focusout";
2422
2423        this.$element.on(
2424          eventIn + "." + this.type,
2425          this.options.selector,
2426          $.proxy(this.enter, this)
2427        );
2428        this.$element.on(
2429          eventOut + "." + this.type,
2430          this.options.selector,
2431          $.proxy(this.leave, this)
2432        );
2433      }
2434    }
2435
2436  };
2437
2438  Tooltip.prototype.getDefaults = function () {
2439    return Tooltip.DEFAULTS;
2440  };
2441
2442  Tooltip.prototype.getOptions = function (options) {
2443    options = $.extend({}, this.getDefaults(), this.$element.data(), options);
2444
2445    if (options.delay && typeof options.delay == "number") {
2446      options.delay = {
2447        show: options.delay,
2448        hide: options.delay,
2449      };
2450    }
2451
2452    return options;
2453  };
2454
2455  Tooltip.prototype.getDelegateOptions = function () {
2456    var options = {};
2457    var defaults = this.getDefaults();
2458
2459    this._options &&
2460      $.each(this._options, function (key, value) {
2461        if (defaults[key] != value) options[key] = value;
2462      });
2463
2464    return options;
2465  };
2466
2467  Tooltip.prototype.enter = function (obj) {
2468    var self =
2469      obj instanceof this.constructor
2470        ? obj
2471        : $(obj.currentTarget)
2472            [this.type](this.getDelegateOptions())
2473            .data("bs." + this.type);
2474
2475    clearTimeout(self.timeout);
2476
2477    self.hoverState = "in";
2478
2479    if (!self.options.delay || !self.options.delay.show) return self.show();
2480
2481    self.timeout = setTimeout(function () {
2482      if (self.hoverState == "in") self.show();
2483    }, self.options.delay.show);
2484  };
2485
2486  Tooltip.prototype.leave = function (obj) {
2487    var self =
2488      obj instanceof this.constructor
2489        ? obj
2490        : $(obj.currentTarget)
2491            [this.type](this.getDelegateOptions())
2492            .data("bs." + this.type);
2493
2494    clearTimeout(self.timeout);
2495
2496    self.hoverState = "out";
2497
2498    if (!self.options.delay || !self.options.delay.hide) return self.hide();
2499
2500    self.timeout = setTimeout(function () {
2501      if (self.hoverState == "out") self.hide();
2502    }, self.options.delay.hide);
2503  };
2504
2505  Tooltip.prototype.show = function () {
2506    var e = $.Event("show.bs." + this.type);
2507
2508    if (this.hasContent() && this.enabled) {
2509      this.$element.trigger(e);
2510
2511      if (e.isDefaultPrevented()) return;
2512      var that = this;
2513
2514      var $tip = this.tip();
2515
2516      this.setContent();
2517
2518      if (this.options.animation) $tip.addClass("fade");
2519
2520      var placement =
2521        typeof this.options.placement == "function"
2522          ? this.options.placement.call(this, $tip[0], this.$element[0])
2523          : this.options.placement;
2524
2525      var autoToken = /\s?auto?\s?/i;
2526      var autoPlace = autoToken.test(placement);
2527      if (autoPlace) placement = placement.replace(autoToken, "") || "top";
2528
2529      $tip
2530        .detach()
2531        .css({ top: 0, left: 0, display: "block" })
2532        .addClass(placement);
2533
2534      this.options.container
2535        ? $tip.appendTo(this.options.container)
2536        : $tip.insertAfter(this.$element);
2537
2538      var pos = this.getPosition();
2539      var actualWidth = $tip[0].offsetWidth;
2540      var actualHeight = $tip[0].offsetHeight;
2541
2542      if (autoPlace) {
2543        var $parent = this.$element.parent();
2544
2545        var orgPlacement = placement;
2546        var docScroll =
2547          document.documentElement.scrollTop || document.body.scrollTop;
2548        var parentWidth =
2549          this.options.container == "body"
2550            ? window.innerWidth
2551            : $parent.outerWidth();
2552        var parentHeight =
2553          this.options.container == "body"
2554            ? window.innerHeight
2555            : $parent.outerHeight();
2556        var parentLeft =
2557          this.options.container == "body" ? 0 : $parent.offset().left;
2558
2559        placement =
2560          placement == "bottom" &&
2561          pos.top + pos.height + actualHeight - docScroll > parentHeight
2562            ? "top"
2563            : placement == "top" && pos.top - docScroll - actualHeight < 0
2564            ? "bottom"
2565            : placement == "right" && pos.right + actualWidth > parentWidth
2566            ? "left"
2567            : placement == "left" && pos.left - actualWidth < parentLeft
2568            ? "right"
2569            : placement;
2570
2571        $tip.removeClass(orgPlacement).addClass(placement);
2572      }
2573
2574      var calculatedOffset = this.getCalculatedOffset(
2575        placement,
2576        pos,
2577        actualWidth,
2578        actualHeight
2579      );
2580
2581      this.applyPlacement(calculatedOffset, placement);
2582      this.hoverState = null;
2583
2584      var complete = function () {
2585        that.$element.trigger("shown.bs." + that.type);
2586      };
2587
2588      $.support.transition && this.$tip.hasClass("fade")
2589        ? $tip.one($.support.transition.end, complete).emulateTransitionEnd(150)
2590        : complete();
2591    }
2592  };
2593
2594  Tooltip.prototype.applyPlacement = function (offset, placement) {
2595    var replace;
2596    var $tip = this.tip();
2597    var width = $tip[0].offsetWidth;
2598    var height = $tip[0].offsetHeight;
2599
2600    // manually read margins because getBoundingClientRect includes difference
2601    var marginTop = parseInt($tip.css("margin-top"), 10);
2602    var marginLeft = parseInt($tip.css("margin-left"), 10);
2603
2604    // we must check for NaN for ie 8/9
2605    if (isNaN(marginTop)) marginTop = 0;
2606    if (isNaN(marginLeft)) marginLeft = 0;
2607
2608    offset.top = offset.top + marginTop;
2609    offset.left = offset.left + marginLeft;
2610
2611    // $.fn.offset doesn't round pixel values
2612    // so we use setOffset directly with our own function B-0
2613    $.offset.setOffset(
2614      $tip[0],
2615      $.extend(
2616        {
2617          using: function (props) {
2618            $tip.css({
2619              top: Math.round(props.top),
2620              left: Math.round(props.left),
2621            });
2622          },
2623        },
2624        offset
2625      ),
2626      0
2627    );
2628
2629    $tip.addClass("in");
2630
2631    // check to see if placing tip in new offset caused the tip to resize itself
2632    var actualWidth = $tip[0].offsetWidth;
2633    var actualHeight = $tip[0].offsetHeight;
2634
2635    if (placement == "top" && actualHeight != height) {
2636      replace = true;
2637      offset.top = offset.top + height - actualHeight;
2638    }
2639
2640    if (/bottom|top/.test(placement)) {
2641      var delta = 0;
2642
2643      if (offset.left < 0) {
2644        delta = offset.left * -2;
2645        offset.left = 0;
2646
2647        $tip.offset(offset);
2648
2649        actualWidth = $tip[0].offsetWidth;
2650        actualHeight = $tip[0].offsetHeight;
2651      }
2652
2653      this.replaceArrow(delta - width + actualWidth, actualWidth, "left");
2654    } else {
2655      this.replaceArrow(actualHeight - height, actualHeight, "top");
2656    }
2657
2658    if (replace) $tip.offset(offset);
2659  };
2660
2661  Tooltip.prototype.replaceArrow = function (delta, dimension, position) {
2662    this.arrow().css(position, delta ? 50 * (1 - delta / dimension) + "%" : "");
2663  };
2664
2665  Tooltip.prototype.setContent = function () {
2666    var $tip = this.tip();
2667    var title = this.getTitle();
2668
2669    $tip.find(".tooltip-inner")[this.options.html ? "html" : "text"](title);
2670    $tip.removeClass("fade in top bottom left right");
2671  };
2672
2673  Tooltip.prototype.hide = function () {
2674    var that = this;
2675    var $tip = this.tip();
2676    var e = $.Event("hide.bs." + this.type);
2677
2678    function complete() {
2679      if (that.hoverState != "in") $tip.detach();
2680      that.$element.trigger("hidden.bs." + that.type);
2681    }
2682
2683    this.$element.trigger(e);
2684
2685    if (e.isDefaultPrevented()) return;
2686
2687    $tip.removeClass("in");
2688
2689    $.support.transition && this.$tip.hasClass("fade")
2690      ? $tip.one($.support.transition.end, complete).emulateTransitionEnd(150)
2691      : complete();
2692
2693    this.hoverState = null;
2694
2695    return this;
2696  };
2697
2698
2699  Tooltip.prototype.hasContent = function () {
2700    return this.getTitle();
2701  };
2702
2703  Tooltip.prototype.getPosition = function () {
2704    var el = this.$element[0];
2705    return $.extend(
2706      {},
2707      typeof el.getBoundingClientRect == "function"
2708        ? el.getBoundingClientRect()
2709        : {
2710            width: el.offsetWidth,
2711            height: el.offsetHeight,
2712          },
2713      this.$element.offset()
2714    );
2715  };
2716
2717  Tooltip.prototype.getCalculatedOffset = function (
2718    placement,
2719    pos,
2720    actualWidth,
2721    actualHeight
2722  ) {
2723    return placement == "bottom"
2724      ? {
2725          top: pos.top + pos.height,
2726          left: pos.left + pos.width / 2 - actualWidth / 2,
2727        }
2728      : placement == "top"
2729      ? {
2730          top: pos.top - actualHeight,
2731          left: pos.left + pos.width / 2 - actualWidth / 2,
2732        }
2733      : placement == "left"
2734      ? {
2735          top: pos.top + pos.height / 2 - actualHeight / 2,
2736          left: pos.left - actualWidth,
2737        }
2738      : /* placement == 'right' */ {
2739          top: pos.top + pos.height / 2 - actualHeight / 2,
2740          left: pos.left + pos.width,
2741        };
2742  };
2743
2744  Tooltip.prototype.getTitle = function () {
2745    var title;
2746    var $e = this.$element;
2747    var o = this.options;
2748
2749    title =
2750      $e.attr("data-original-title") ||
2751      (typeof o.title == "function" ? o.title.call($e[0]) : o.title);
2752
2753    return title;
2754  };
2755
2756  Tooltip.prototype.tip = function () {
2757    return (this.$tip = this.$tip || $(this.options.template));
2758  };
2759
2760  Tooltip.prototype.arrow = function () {
2761    return (this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow"));
2762  };
2763
2764  Tooltip.prototype.validate = function () {
2765    if (!this.$element[0].parentNode) {
2766      this.hide();
2767      this.$element = null;
2768      this.options = null;
2769    }
2770  };
2771
2772  Tooltip.prototype.enable = fun
2772ction () {
2773    this.enabled = true;
2774  };
2775
2776  Tooltip.prototype.disable = function () {
2777    this.enabled = false;
2778  };
2779
2780  Tooltip.prototype.toggleEnabled = function () {
2781    this.enabled = !this.enabled;
2782  };
2783
2784  Tooltip.prototype.toggle = function (e) {
2785    var self = e
2786      ? $(e.currentTarget)
2787          [this.type](this.getDelegateOptions())
2788          .data("bs." + this.type)
2789      : this;
2790    self.tip().hasClass("in") ? self.leave(self) : self.enter(self);
2791  };
2792
2793  Tooltip.prototype.destroy = function () {
2794    clearTimeout(this.timeout);
2795    this.hide()
2796      .$element.off("." + this.type)
2797      .removeData("bs." + this.type);
2798  };
2799
2800  // TOOLTIP PLUGIN DEFINITION
2801  // =========================
2802
2803  var old = $.fn.tooltip;
2804
2805  $.fn.tooltip = function (option) {
2806    return this.each(function () {
2807      var $this = $(this);
2808      var data = $this.data("bs.tooltip");
2809      var options = typeof option == "object" && option;
2810
2811      if (!data && option == "destroy") return;
2812      if (!data) $this.data("bs.tooltip", (data = new Tooltip(this, options)));
2813      if (typeof option == "string") data[option]();
2814    });
2815  };
2816
2817  $.fn.tooltip.Constructor = Tooltip;
2818
2819  // TOOLTIP NO CONFLICT
2820  // ===================
2821
2822  $.fn.tooltip.noConflict = function () {
2823    $.fn.tooltip = old;
2824    return this;
2825  };
2826})(jQuery);
2827(function ($) {
2828  Drupal.behaviors.tooltip_drupal = {
2829    attach: function (context) {
2830      $("body")
2831        .once("once-tooltip")
2832        .on("click", ".has-tooltip", function (e) {
2833          var isTooltipActive = $(this).hasClass("active-tooltip");
2834          var isInsideTooltip = $(this).closest(".tooltip-inner").length > 0;
2835
2836          if (isTooltipActive || isInsideTooltip) {
2837            if (!isInsideTooltip) {
2838              e.preventDefault();
2839              $(this).removeClass('active-tooltip').tooltip('destroy').attr('aria-expanded', 'false').removeAttr('aria-describedby');
2840            }
2841          } else {
2842            e.preventDefault();
2843            var tooltipId = "tooltip_" + new Date().getTime();
2844            var content = $("<textarea/>").html($(this).attr("data-title")).val();
2845
2846            $(this).attr("data-original-title", content).attr('aria-describedby', tooltipId);
2847
2848            $(".active-tooltip")
2849              .removeClass("active-tooltip")
2850              .tooltip("destroy")
2851              .attr('aria-expanded', 'false')
2852              .removeAttr('aria-describedby');
2853
2854            $(this)
2855              .addClass("active-tooltip")
2856              .tooltip({
2857                show: true,
2858                trigger: "manual",
2859                html: true,
2860                animation: true,
2861                template: '<div class="tooltip" role="tooltip" id="' + tooltipId + '"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
2862              })
2863              .tooltip("show")
2864              .attr('aria-expanded', 'true');
2865
2866            $('<button class="close"><span class="sr-only">' + langhideexplanation + '</span></button>')
2867              .prependTo(".tooltip .tooltip-inner");
2868            $('<a class="read-more">' + langreadmore + "</a>")
2869              .attr("href", $(this).attr("href"))
2870              .appendTo(".tooltip .tooltip-inner");
2871
2872            $(this).attr("data-original-title", "");
2873          }
2874          return false;
2875        });
2876
2877      $("#main-content").on(
2878        "click",
2879        ".tooltip .tooltip-inner .close",
2880        function () {
2881          var $activeTooltip = $(".active-tooltip");
2882          $activeTooltip
2883            .removeClass("active-tooltip")
2884            .tooltip("destroy")
2885            .attr('aria-expanded', 'false')
2886            .removeAttr('aria-describedby');
2887          return false;
2888        }
2889      );
2890    },
2891  };
2892})(jQuery);
2893
2894(function ($) {
2895  Drupal.behaviors.feature_address = {
2896    attach: function (context) {
2897      $(document).ready(function () {
2898        $("#edit-field-address-address-value-2").removeAttr("disabled");
2899        $("#edit-field-address-address-value-2")
2900          .parent()
2901          .removeClass("form-disabled");
2902
2903        var toggleRadius = function (hide) {
2904          // Disable this for now as they don't like it but don't delete it.
2905          // I'm pretty sure we need this back.
2906          return;
2907          /*
2908                     if (hide === 'hide') {
2909                     $('#edit-field-address-address-value-2').attr('disabled', 'disabled');
2910                     $('#edit-field-address-address-value-2').parent().addClass('form-disabled');
2911                     }
2912                     else {
2913                     $('#edit-field-address-address-value-2').removeAttr('disabled');
2914                     $('#edit-field-address-address-value-2').parent().removeClass('form-disabled');
2915                     }
2916                     */
2917        };
2918
2919        var checkFields = function () {
2920          var zip = $("#edit-field-address-address-value").val();
2921          var city = $("#edit-field-address-address-value-1").val();
2922          if (zip && zip.length === 5 && city) {
2923            toggleRadius();
2924            geoCode(zip, city);
2925          } else {
2926            toggleRadius("hide");
2927          }
2928
2929          // Disable this for now as they don't like it but don't delete it.
2930          // I'm pretty sure we need this back.
2931          $("#edit-field-address-address-value-2").removeAttr("disabled");
2932          $("#edit-field-address-address-value-2")
2933            .parent()
2934            .removeClass("form-disabled");
2935        };
2936
2937        // Init.
2938        checkFields();
2939        // onChange.
2940        $("#edit-field-address-address-value").on("change", function () {
2941          //console.log('edit-field-address-address-value ', document.getElementById("edit-field-address-address-value").value);
2942          //console.log('edit-field-address-address-value-1 ', document.getElementById("edit-field-address-address-value-1").value);
2943          if (
2944            document.getElementById("edit-field-address-address-value")
2945              .value !== "" &&
2946            document.getElementById("edit-field-address-address-value-1")
2947              .value !== ""
2948          ) {
2949            $(
2950              '<style>.form-item.form-type-select.form-item-field-address-address-value-2::after{content:" "}</style>'
2951            ).appendTo("head");
2952          }
2953          checkFields();
2954        });
2955
2956        $("#edit-field-address-address-value-1").on("change", function () {
2957          if (
2958            document.getElementById("edit-field-address-address-value")
2959              .value !== "" &&
2960            document.getElementById("edit-field-address-address-value-1")
2961              .value !== ""
2962          ) {
2963            $(
2964              '<style>.form-item.form-type-select.form-item-field-address-address-value-2::after{content:" "}</style>'
2965            ).appendTo("head");
2966          }
2967          checkFields();
2968        });
2969
2970        $("#edit-field-address-address-value-2").on("change", function () {
2971          if (
2972            document.getElementById("edit-field-address-address-value").value === "" ||
2973            document.getElementById("edit-field-address-address-value-1").value === ""
2974          ) {
2975            $("#edit-field-address-address-value-2-wrapper span.perimeterError").hide();
2976
2977            if (document.body.className.match("i18n-de")) {
2978              var str = "Bitte PLZ und Ort eingeben.";
2979            } else if (document.body.className.match("i18n-pl")) {
2980              var str = "Prosze podaj kod pocztowy i miejscowoϾ.";
2981            } else if (document.body.className.match("i18n-es")) {
2982              var str = "Por favor introduzca el código postal y la localidad.";
2983            } else if (document.body.className.match("i18n-fr")) {
2984              var str = "Entrez le code postal y la ville, s`il vous plait.";
2985            } else {
2986              var str = "Please type postcode and place.";
2987            }
2988
2989            $("#addressValidationFail").html(str);
2990          } else {
2991            $("#addressValidationFail").html("");
2992          }
2993        });
2994      });
2995    }, // End attach.
2996  };
2997})(jQuery);
2998(function ($) {
2999  /**
3000   * Attaches the autocomplete behavior to all required fields.
3001   */
3002  Drupal.behaviors.autocomplete = {
3003    attach: function (context, settings) {
3004      var acdb = [];
3005      $("input.autocomplete", context).once("autocomplete", function () {
3006        var uri = this.value;
3007        if (!acdb[uri]) {
3008          acdb[uri] = new Drupal.ACDB(uri);
3009        }
3010        var $input = $("#" + this.id.substr(0, this.id.length - 13))
3011          .attr("autocomplete", "OFF")
3012          .attr("aria-autocomplete", "list");
3013        $($input[0].form).submit(Drupal.autocompleteSubmit);
3014        $input
3015          .parent()
3016          .attr("role", "application")
3017          .append(
3018            $(
3019              '<span class="element-invisible" aria-live="assertive"></span>'
3020            ).attr("id", $input.attr("id") + "-autocomplete-aria-live")
3021          );
3022        new Drupal.jsAC($input, acdb[uri]);
3023      });
3024    },
3025  };
3026
3027  /**
3028   * Prevents the form from submitting if the suggestions popup is open
3029   * and closes the suggestions popup when doing so.
3030   */
3031  Drupal.autocompleteSubmit = function () {
3032    return (
3033      $("#autocomplete").each(function () {
3034        this.owner.hidePopup();
3035      }).length == 0
3036    );
3037  };
3038
3039  /**
3040   * An AutoComplete object.
3041   */
3042  Drupal.jsAC = function ($input, db) {
3043    var ac = this;
3044    this.input = $input[0];
3045    this.ariaLive = $("#" + this.input.id + "-autocomplete-aria-live");
3046    this.db = db;
3047
3048    $input
3049      .keydown(function (event) {
3050        return ac.onkeydown(this, event);
3051      })
3052      .keyup(function (event) {
3053        ac.onkeyup(this, event);
3054      })
3055      .blur(function () {
3056        ac.hidePopup();
3057        ac.db.cancel();
3058      });
3059  };
3060
3061  /**
3062   * Handler for the "keydown" event.
3063   */
3064  Drupal.jsAC.prototype.onkeydown = function (input, e) {
3065    if (!e) {
3066      e = window.event;
3067    }
3068    switch (e.keyCode) {
3069      case 40: // down arrow.
3070        this.selectDown();
3071        return false;
3072      case 38: // up arrow.
3073        this.selectUp();
3074        return false;
3075      default:
3076        // All other keys.
3077        return true;
3078    }
3079  };
3080
3081  /**
3082   * Handler for the "keyup" event.
3083   */
3084  Drupal.jsAC.prototype.onkeyup = function (input, e) {
3085    if (!e) {
3086      e = window.event;
3087    }
3088    switch (e.keyCode) {
3089      case 16: // Shift.
3090      case 17: // Ctrl.
3091      case 18: // Alt.
3092      case 20: // Caps lock.
3093      case 33: // Page up.
3094      case 34: // Page down.
3095      case 35: // End.
3096      case 36: // Home.
3097      case 37: // Left arrow.
3098      case 38: // Up arrow.
3099      case 39: // Right arrow.
3100      case 40: // Down arrow.
3101        return true;
3102
3103      case 9: // Tab.
3104      case 13: // Enter.
3105      case 27: // Esc.
3106        this.hidePopup(e.keyCode);
3107        return true;
3108
3109      default:
3110        // All other keys.
3111        if (input.value.length > 0 && !input.readOnly) {
3112          this.populatePopup();
3113        } else {
3114          this.hidePopup(e.keyCode);
3115        }
3116        return true;
3117    }
3118  };
3119
3120  /**
3121   * Puts the currently highlighted suggestion into the autocomplete field.
3122   */
3123  Drupal.jsAC.prototype.select = function (node) {
3124    this.input.value = $(node).data("autocompleteValue");
3125    $(this.input).trigger("autocompleteSelect", [node]);
3126  };
3127
3128  /**
3129   * Highlights the next suggestion.
3130   */
3131  Drupal.jsAC.prototype.selectDown = function () {
3132    if (this.selected && this.selected.nextSibling) {
3133      this.highlight(this.selected.nextSibling);
3134    } else if (this.popup) {
3135      var lis = $("li", this.popup);
3136      if (lis.length > 0) {
3137        this.highlight(lis.get(0));
3138      }
3139    }
3140  };
3141
3142  /**
3143   * Highlights the previous suggestion.
3144   */
3145  Drupal.jsAC.prototype.selectUp = function () {
3146    if (this.selected && this.selected.previousSibling) {
3147      this.highlight(this.selected.previousSibling);
3148    }
3149  };
3150
3151  /**
3152   * Highlights a suggestion.
3153   */
3154  Drupal.jsAC.prototype.highlight = function (node) {
3155    if (this.selected) {
3156      $(this.selected).removeClass("selected");
3157    }
3158    $(node).addClass("selected");
3159    this.selected = node;
3160    $(this.ariaLive).html($(this.selected).html());
3161  };
3162
3163  /**
3164   * Unhighlights a suggestion.
3165   */
3166  Drupal.jsAC.prototype.unhighlight = function (node) {
3167    $(node).removeClass("selected");
3168    this.selected = false;
3169    $(this.ariaLive).empty();
3170  };
3171
3172  /**
3173   * Hides the autocomplete suggestions.
3174   */
3175  Drupal.jsAC.prototype.hidePopup = function (keycode) {
3176    // Select item if the right key or mousebutton was pressed.
3177    if (
3178      this.selected &&
3179      ((keycode && keycode != 46 && keycode != 8 && keycode != 27) || !keycode)
3180    ) {
3181      this.select(this.selected);
3182    }
3183    // Hide popup.
3184    var popup = this.popup;
3185    if (popup) {
3186      this.popup = null;
3187      $(popup).fadeOut("fast", function () {
3188        $(popup).remove();
3189      });
3190    }
3191    this.selected = false;
3192    $(this.ariaLive).empty();
3193  };
3194
3195  /**
3196   * Positions the suggestions popup and starts a search.
3197   */
3198  Drupal.jsAC.prototype.populatePopup = function () {
3199    var $input = $(this.input);
3200    var position = $input.position();
3201    // Show popup.
3202    if (this.popup) {
3203      $(this.popup).remove();
3204    }
3205    this.selected = false;
3206    this.popup = $('<div id="autocomplete"></div>')[0];
3207    this.popup.owner = this;
3208    $(this.popup).css({
3209      top: parseInt(position.top + this.input.offsetHeight, 10) + "px",
3210      left: parseInt(position.left, 10) + "px",
3211      width: $input.innerWidth() + "px",
3212      display: "none",
3213    });
3214    $input.before(this.popup);
3215
3216    // Do search.
3217    this.db.owner = this;
3218    this.db.search(this.input.value);
3219  };
3220
3221  /**
3222   * Fills the suggestion popup with any matches received.
3223   */
3224  Drupal.jsAC.prototype.found = function (matches) {
3225    // If no value in the textfield, do not show the popup.
3226    if (!this.input.value.length) {
3227      return false;
3228    }
3229
3230    // Prepare matches.
3231    var ul = $("<ul></ul>");
3232    var ac = this;
3233    for (key in matches) {
3234      $("<li></li>")
3235        .html($("<div></div>").html(matches[key]))
3236        .mousedown(function () {
3237          ac.hidePopup(this);
3238        })
3239        .mouseover(function () {
3240          ac.highlight(this);
3241        })
3242        .mouseout(function () {
3243          ac.unhighlight(this);
3244        })
3245        .data("autocompleteValue", key)
3246        .appendTo(ul);
3247    }
3248
3249    // Show popup with matches, if any.
3250    if (this.popup) {
3251      if (ul.children().length) {
3252        $(this.popup).empty().append(ul).show();
3253        $(this.ariaLive).html(Drupal.t("Autocomplete popup"));
3254      } else {
3255        $(this.popup).css({ visibility: "hidden" });
3256        this.hidePopup();
3257      }
3258    }
3259  };
3260
3261  Drupal.jsAC.prototype.setStatus = function (status) {
3262    switch (status) {
3263      case "begin":
3264        $(this.input).addClass("throbbing");
3265        $(this.ariaLive).html(Drupal.t("Searching for matches..."));
3266        break;
3267      case "cancel":
3268      case "error":
3269      case "found":
3270        $(this.input).removeClass("throbbing");
3271        break;
3272    }
3273  };
3274
3275  /**
3276   * An AutoComplete DataBase object.
3277   */
3278  Drupal.ACDB = function (uri) {
3279    this.uri = uri;
3280    this.delay = 300;
3281    this.cache = {};
3282  };
3283
3284  /**
3285   * Performs a cached and delayed search.
3286   */
3287  Drupal.ACDB.prototype.search = function (searchString) {
3288    var db = this;
3289    this.searchString = searchString;
3290
3291    // See if this string needs to be searched for anyway. The pattern ../ is
3292    // stripped since it may be misinterpreted by the browser.
3293    searchString = searchString.replace(/^\s+|\.{2,}\/|\s+$/g, "");
3294    // Skip empty search strings, or search strings ending with a comma, since
3295    // that is the separator between search terms.
3296    if (
3297      searchString.length <= 0 ||
3298      searchString.charAt(searchString.length - 1) == ","
3299    ) {
3300      return;
3301    }
3302
3303    // See if this key has been searched for before.
3304    if (this.cache[searchString]) {
3305      return this.owner.found(this.cache[searchString]);
3306    }
3307
3308    // Initiate delayed search.
3309    if (this.timer) {
3310      clearTimeout(this.timer);
3311    }
3312    this.timer = setTimeout(function () {
3313      db.owner.setStatus("begin");
3314
3315      // Ajax GET request for autocompletion. We use Drupal.encodePath instead of
3316      // encodeURIComponent to allow autocomplete search terms to contain slashes.
3317      $.ajax({
3318        type: "GET",
3319        url: db.uri + "/" + Drupal.encodePath(searchString),
3320        dataType: "json",
3321        success: function (matches) {
3322          if (typeof matches.status == "undefined" || matches.status != 0) {
3323            db.cache[searchString] = matches;
3324            // Verify if these are still the matches the user wants to see.
3325            if (db.searchString == searchString) {
3326              db.owner.found(matches);
3327            }
3328            db.owner.setStatus("found");
3329          }
3330        },
3331        error: function (xmlhttp) {
3332          Drupal.displayAjaxError(Drupal.ajaxError(xmlhttp, db.uri));
3333        },
3334      });
3335    }, this.delay);
3336  };
3337
3338  /**
3339   * Cancels the current autocomplete request.
3340   */
3341  Drupal.ACDB.prototype.cancel = function () {
3342    if (this.owner) this.owner.setStatus("cancel");
3343    if (this.timer) clearTimeout(this.timer);
3344    this.searchString = "";
3345  };
3346})(jQuery);
3347(function ($) {
3348  Drupal.behaviors.feature_address = {
3349    attach: function (context) {
3350      $(document).ready(function () {
3351        $("#edit-field-address-address-value-2").removeAttr("disabled");
3352        $("#edit-field-address-address-value-2")
3353          .parent()
3354          .removeClass("form-disabled");
3355
3356        var toggleRadius = function (hide) {
3357          // Disable this for now as they don't like it but don't delete it.
3358          // I'm pretty sure we need this back.
3359          return;
3360          /*
3361                     if (hide === 'hide') {
3362                     $('#edit-field-address-address-value-2').attr('disabled', 'disabled');
3363                     $('#edit-field-address-address-value-2').parent().addClass('form-disabled');
3364                     }
3365                     else {
3366                     $('#edit-field-address-address-value-2').removeAttr('disabled');
3367                     $('#edit-field-address-address-value-2').parent().removeClass('form-disabled');
3368                     }
3369                     */
3370        };
3371
3372        var checkFields = function () {
3373          var zip = $("#edit-field-address-address-value").val();
3374          var city = $("#edit-field-address-address-value-1").val();
3375          if (zip && zip.length === 5 && city) {
3376            toggleRadius();
3377          } else {
3378            toggleRadius("hide");
3379          }
3380
3381          // Disable this for now as they don't like it but don't delete it.
3382          // I'm pretty sure we need this back.
3383          $("#edit-field-address-address-value-2").removeAttr("disabled");
3384          $("#edit-field-address-address-value-2")
3385            .parent()
3386            .removeClass("form-disabled");
3387        };
3388
3389        // Init.
3390        checkFields();
3391        // onChange.
3392        $("#edit-field-address-address-value").on("change", function () {
3393          //console.log('edit-field-address-address-value ', document.getElementById("edit-field-address-address-value").value);
3394          //console.log('edit-field-address-address-value-1 ', document.getElementById("edit-field-address-address-value-1").value);
3395          if (
3396            document.getElementById("edit-field-address-address-value")
3397              .value !== "" &&
3398            document.getElementById("edit-field-address-address-value-1")
3399              .value !== ""
3400          ) {
3401            $("#addressValidationFail").html("");
3402          }
3403          checkFields();
3404        });
3405
3406        $("#edit-field-address-address-value-1").on("change", function () {
3407          if (
3408            document.getElementById("edit-field-address-address-value")
3409              .value !== "" &&
3410            document.getElementById("edit-field-address-address-value-1")
3411              .value !== ""
3412          ) {
3413            $("#addressValidationFail").html("");
3414          }
3415          checkFields();
3416        });
3417
3418        $("#edit-field-address-address-value-2").on("change", function () {
3419          if (
3420            document.getElementById("edit-field-address-address-value")
3421              .value === "" ||
3422            document.getElementById("edit-field-address-address-value-1")
3423              .value === ""
3424          ) {
3425            if (document.body.className.match("i18n-de")) {
3426              var str = "Bitte PLZ und Ort eingeben.";
3427            } else if (document.body.className.match("i18n-pl")) {
3428              var str = "Prosze podaj kod pocztowy i miejscowoϾ.";
3429            } else if (document.body.className.match("i18n-es")) {
3430              var str =
3431                "Por favor introduzca el código postal y la localidad.";
3432            } else if (document.body.className.match("i18n-fr")) {
3433              var str = "Entrez le code postal y la ville, s`il vous plait.";
3434            } else {
3435              var str = "Please type postcode and place.";
3436            }
3437
3438            $("#addressValidationFail").html(str);
3439          } else {
3440            $("#addressValidationFail").html("");
3441          }
3442        });
3443      });
3444    }, // End attach.
3445  };
3446})(jQuery);
3447(function ($) {
3448  /**
3449   * Handler for the "keyup" event.
3450   */
3451  Drupal.jsAC.prototype.onkeyup = function (input, e) {
3452    if (!e) {
3453      e = window.event;
3454    }
3455    switch (e.keyCode) {
3456      case 16: // Shift.
3457      case 17: // Ctrl.
3458      case 18: // Alt.
3459      case 20: // Caps lock.
3460      case 33: // Page up.
3461      case 34: // Page down.
3462      case 35: // End.
3463      case 36: // Home.
3464      case 37: // Left arrow.
3465      case 38: // Up arrow.
3466      case 39: // Right arrow.
3467      case 40: // Down arrow.
3468        return true;
3469
3470      // Created custom function to submit the form on enter
3471      case 13: // Enter.
3472        this.hidePopup(e.keyCode);
3473        this.redirect(this.selected);
3474        return true;
3475
3476      case 9: // Tab.
3477      case 27: // Esc.
3478        this.hidePopup(e.keyCode);
3479        return true;
3480
3481      default:
3482        // All other keys.
3483        if (input.value.length > 0 && !input.readOnly) {
3484          this.populatePopup();
3485        } else {
3486          this.hidePopup(e.keyCode);
3487        }
3488        return true;
3489    }
3490  };
3491
3492  /**
3493   * Highlights the previous suggestion.
3494   */
3495  Drupal.jsAC.prototype.highlight = function (node) {
3496    if (this.selected) {
3497      $(this.selected).removeClass("hover");
3498    }
3499    $(node).addClass("hover");
3500    this.selected = node;
3501    $(this.ariaLive).html($(this.selected).html());
3502  };
3503
3504  /**
3505   * Unhighlights a suggestion.
3506   */
3507  Drupal.jsAC.prototype.unhighlight = function (node) {
3508    $(node).removeClass("hover");
3509    // this.selected = false;
3510    $(this.ariaLive).empty();
3511  };
3512
3513  /**
3514   * Hides the autocomplete suggestions.
3515   */
3516  Drupal.jsAC.prototype.hidePopup = function (keycode) {
3517    // Select item if the right key or mousebutton was pressed.
3518    if (
3519      this.selected &&
3520      ((keycode && keycode != 46 && keycode != 8 && keycode != 27) || !keycode)
3521    ) {
3522      this.input.value = $(this.selected).data("autocompleteValue");
3523    }
3524    // Hide popup.
3525    var popup = this.popup;
3526    if (popup) {
3527      this.popup = null;
3528      $(popup).fadeOut("fast", function () {
3529        $(popup).remove();
3530      });
3531    }
3532    // this.selected = false;
3533    $(this.ariaLive).empty();
3534  };
3535
3536  Drupal.jsAC.prototype.redirect = function (selected) {
3537    if (selected) {
3538      window.location.href = $("#autocomplete").find("li.hover a").attr("href");
3539    } else {
3540      var search = $("#feature-site-search-header-block-form")
3541        .find("#edit-input")
3542        .val();
3543      var glossary_search = $("#feature-glossary-dictionary-search-form")
3544        .find(".search-form #edit-search-box")
3545        .val();
3546      if (search !== "") {
3547        window.location.href =
3548          Drupal.settings.basePath + Drupal.settings.searchUrl + "?s=" + search;
3549      } else if (glossary_search !== "") {
3550        window.location.href =
3551          Drupal.settings.feature_glossary.path + "?d=" + glossary_search;
3552      }
3553
3554      return false;
3555    }
3556  };
3557
3558  Drupal.ACDB.prototype.search = function (searchString) {
3559    var db = this;
3560    this.searchString = searchString;
3561
3562    // See if this string needs to be searched for anyway.
3563    searchString = searchString.replace(/^\s+|\s+$/, "");
3564    if (
3565      searchString.length <= 0 ||
3566      searchString.charAt(searchString.length - 1) == ","
3567    ) {
3568      return;
3569    }
3570
3571    // See if this key has been searched for before.
3572    if (this.cache[searchString]) {
3573      return this.owner.found(this.cache[searchString]);
3574    }
3575
3576    // Initiate delayed search.
3577    if (this.timer) {
3578      clearTimeout(this.timer);
3579    }
3580    this.timer = setTimeout(function () {
3581      db.owner.setStatus("begin");
3582
3583      // Ajax GET request for autocompletion. We use Drupal.encodePath instead of
3584      // encodeURIComponent to allow autocomplete search terms to contain slashes.
3585      $.ajax({
3586        type: "GET",
3587        url: db.uri + "/" + Drupal.encodePath(searchString),
3588        dataType: "json",
3589        success: function (matches) {
3590          if (typeof matches.status == "undefined" || matches.status != 0) {
3591            db.cache[searchString] = matches;
3592            // Verify if these are still the matches the user wants to see.
3593            if (db.searchString == searchString) {
3594              db.owner.found(matches);
3595            }
3596            db.owner.setStatus("found");
3597          }
3598        },
3599        error: function (xmlhttp) {
3600          // alert(Drupal.ajaxError(xmlhttp, db.uri));
3601        },
3602      });
3603    }, this.delay);
3604  };
3605})(jQuery);
3606
3607jQuery.extend(Drupal.settings, {
3608  "colorbox": {
3609    "transition": "elastic",
3610    "speed": "350",
3611    "opacity": "0.85",
3612    "slideshow": false,
3613    "slideshowAuto": true,
3614    "slideshowSpeed": "2500",
3615    "slideshowStart": "start slideshow",
3616    "slideshowStop": "stop slideshow",
3617    "current": "{current} of {total}",
3618    "previous": "",
3619    "next": "",
3620    "close": "",
3621    "overlayClose": true,
3622    "maxWidth": "98%",
3623    "maxHeight": "98%",
3624    "initialWidth": "98%",
3625    "initialHeight": "98%",
3626    "fixed": false,
3627    "scrolling": true,
3628    "mobiledetect": false,
3629    "mobiledevicewidth": "750px"
3630  }
3631});
3632
3633/**
3634 * @file
3635 * Attaches behaviors for the Contextual module.
3636 */
3637
3638(function ($) {
3639
3640    Drupal.contextualLinks = Drupal.contextualLinks || {};
3641
3642    /**
3643     * Attaches outline behavior for regions associated with contextual links.
3644     */
3645    Drupal.behaviors.contextualLinks = {
3646        attach: function (context) {
3647            // added the wrapper to the parent
3648            $(".contextual-links-wrapper").parent().addClass('contextual-links-region clearfix');
3649
3650            $('div.contextual-links-wrapper', context).once('contextual-links', function () {
3651                var $wrapper = $(this);
3652                var $region = $wrapper.closest('.contextual-links-region');
3653                var $links = $wrapper.find('ul.contextual-links');
3654                var $trigger = $('<a class="contextual-links-trigger" href="#" />').text(Drupal.t('Configure')).click(
3655                    function () {
3656                        $links.stop(true, true).slideToggle(100);
3657                        $wrapper.toggleClass('contextual-links-active');
3658                        return false;
3659                    }
3660                );
3661                // Attach hover behavior to trigger and ul.contextual-links.
3662                $trigger.add($links).hover(
3663                    function () { $region.addClass('contextual-links-region-active'); },
3664                    function () { $region.removeClass('contextual-links-region-active'); }
3665                );
3666                // Hide the contextual links when user clicks a link or rolls out of the .contextual-links-region.
3667                $region.bind('mouseleave click', Drupal.contextualLinks.mouseleave);
3668                // Prepend the trigger.
3669                $wrapper.prepend($trigger);
3670            });
3671        }
3672    };
3673
3674    /**
3675     * Disables outline for the region contextual links are associated with.
3676     */
3677    Drupal.contextualLinks.mouseleave = function () {
3678        $(this)
3679            .find('.contextual-links-active').removeClass('contextual-links-active')
3680            .find('ul.contextual-links').hide();
3681    };
3682
3683})(jQuery);
3684;
3685// (function ($) {
3686//
3687//     Drupal.behaviors.languageHandler = {
3688//         attach: function(context) {
3689//
3690//             var path = $(location).attr('pathname');
3691//
3692//             for (var i = Drupal.settings.feature_i18n.prefixes.length - 1; i >= 0; i--) {
3693//                 var prefix = Drupal.settings.feature_i18n.prefixes[i],
3694//                     lang = path.substring(1, 3);
3695//
3696//                 if (prefix == lang) {
3697//                     $.cookie('personalization.language', lang, { expires: parseInt(Drupal.settings.feature_i18n.cookie_lifetime), path: '/' });
3698//                 }
3699//             };
3700//
3701//             if (path == '/') {
3702//                 if (!$.cookie('personalization.language') && Drupal.settings.feature_i18n.landingspage) {
3703//                     window.location = Drupal.settings.feature_i18n.path;
3704//                 }
3705//                 else if ($.cookie('personalization.language')) {
3706//                     window.location = path + $.cookie('personalization.language');
3707//                 }
3708//             }
3709//
3710//         }
3711//     };
3712//
3713// })(jQuery);
3714
3715
3716
3717;
3718var lang = window.location.pathname.substring(1, 3);
3719if (lang == "no") {
3720  var langreadmore = "Les mer";
3721  var langpause = "Pause";
3722  var langplay = "Spill";
3723  var langhideexplanation = "Skjul forklaring";
3724}
3725if (lang == "de") {
3726  var langreadmore = "Mehr lesen";
3727  var langpause = "Pause";
3728  var langplay = "Vorlesen";
3729  var langhideexplanation = "Begriffserklärung ausblenden";
3730}
3731if (lang == "en") {
3732  var langreadmore = "Read more";
3733  var langpause = "Pause";
3734  var langplay = "Listen";
3735  var langhideexplanation = "Hide explanation";
3736}
3737if (lang == "fr") {
3738  var langreadmore = "Pour en savoir plus";
3739  var langpause = "Pause";
3740  var langplay = "Écouter";
3741  var langhideexplanation = "Masquer l'explication";
3742}
3743if (lang == "ru") {
3744  var langreadmore = "Подробнее";
3745  var langpause = "Перерыв";
3746  var langplay = "Слушать";
3747  var langhideexplanation = "Скрыть объяснение";
3748}
3749if (lang == "tr") {
3750  var langreadmore = "Daha fazla bilgi";
3751  var langpause = "Mola";
3752  var langplay = "Dinle";
3753  var langhideexplanation = "Açıklamayı gizle";
3754}
3755if (lang == "ar") {
3756  var langreadmore = "قراءة المزيد";
3757  var langpause = "استراحة";
3758  var langplay = "استماع";
3759  var langhideexplanation = "إخفاء الشرح";
3760}
3761if (lang == "fa") {
3762  var langreadmore = "خواندن مطالب بیشتر";
3763  var langpause = "مکث";
3764  var langplay = "گوش کن";
3765  var langhideexplanation = "پنهان کردن توضیحات";
3766}
3767if (lang == "bg") {
3768  var langreadmore = "Прочетете повече";
3769  var langpause = "Пробив";
3770  var langplay = "Слушайте";
3771  var langhideexplanation = "Скрий обяснението";
3772}
3773if (lang == "pl") {
3774  var langreadmore = "Czytaj dalej";
3775  var langpause = "Przerwa";
3776  var langplay = "Posłuchaj";
3777  var langhideexplanation = "Ukryj wyjaśnienie";
3778}
3779if (lang == "sq") {
3780  var langreadmore = "Lexoni më shumë";
3781  var langpause = "Pauzë";
3782  var langplay = "Dëgjo";
3783  var langhideexplanation = "Fshih shpjegimin";
3784}
3785if (lang == "ro") {
3786  var langreadmore = "Citiți mai mult";
3787  var langpause = "Pauză";
3788  var langplay = "Ascultați";
3789  var langhideexplanation = "Ascundeți explicația";
3790}
3791if (lang == "es") {
3792  var langreadmore = "Leer más";
3793  var langpause = "Pausa";
3794  var langplay = "Escuche";
3795  var langhideexplanation = "Ocultar explicación";
3796}
3797if (lang == "nl") {
3798  var langreadmore = "Lees meer";
3799  var langpause = "Pauze";
3800  var langplay = "Luister naar";
3801  var langhideexplanation = "Uitleg verbergen";
3802}
3803if (lang == "uk") {
3804  var langreadmore = "Прочитати";
3805  var langpause = "Перерва";
3806  var langplay = "Слухати";
3807  var langhideexplanation = "Приховати пояснення";
3808}
3809
3810(function ($) {
3811
3812
3813
3814  $(document).ready(function (e) {
3815    const urlParams = new URLSearchParams(window.location.search);
3816    const searchWord = urlParams.get('tx_solr[q]');
3817    if (searchWord) {
3818      var content = $(".icon-results h1").html();
3819      $("#edit-input").val(searchWord);
3820      $(".icon-results h1").html(content + ' "' + searchWord + '"');
3821    }
3822
3823    if (!$("#feature-glossary-dictionary-form").length) {
3824      if ($("#no-results").length) {
3825        var content = $("#no-results p").html();
3826        $("#no-results p").html(content + ' "' + searchWord + '"');
3827      }
3828    }
3829
3830    if ($(".ext").length) {
3831      var $row = $(".ext");
3832      $row.each(function () {
3833        var thisHtml = $(this).html();
3834        $(this).html(
3835          thisHtml +
3836            '<span class="ext"><span class="element-invisible"> (link is external)</span></span>'
3837        );
3838      });
3839    }
3840
3841    function getLocation(href) {
3842      var match = href.match(
3843        /^(https?\:)\/\/(([^:\/?#]*)(?:\:([0-9]+))?)([\/]{0,1}[^?#]*)(\?[^#]*|)(#.*|)$/
3844      );
3845      return (
3846        match && {
3847          href: href,
3848          protocol: match[1],
3849          host: match[2],
3850          hostname: match[3],
3851          port: match[4],
3852          pathname: match[5],
3853          search: match[6],
3854          hash: match[7],
3855        }
3856      );
3857    }
3858
3859    /* Split screen functionality - load content partially in other language */
3860
3861    var $splitScreenButton = $("[data-menu-split-screen-button]");
3862    var $splitScreenCloseButton = $("[data-menu-split-screen-close-button]");
3863    var otherlanguageContainerAttr = "data-other-language-container";
3864    var otherlanguageContentAttr = "data-other-language-content-to";
3865    var otherlanguageContentFromAttr = "data-other-language-content-from";
3866    var $otherLanguageContainer = $("[" + otherlanguageContainerAttr + "]");
3867    var $otherLanguageContent = $("[" + otherlanguageContentAttr + "]");
3868    var $otherLanguagesSelect = $("[data-choose-other-language]");
3869
3870    // Change second language event
3871    $otherLanguagesSelect.on("change", function (e) {
3872      var selectedOption = $otherLanguagesSelect.find("option:selected");
3873      sendLanguageRequest(
3874        selectedOption.val(),
3875        selectedOption.attr("direction"),
3876        selectedOption.attr("hreflang")
3877      );
3878    });
3879
3880    $splitScreenButton.on("click", function (e) {
3881      e.preventDefault();
3882
3883      $splitScreenButton.toggleClass("active");
3884      $otherLanguageContainer.toggleClass("active");
3885      $splitScreenButton.attr("aria-expanded", function (i, attr) {
3886        return attr == "true" ? "false" : "true";
3887      });
3888      if ($otherLanguageContainer.hasClass("active")) {
3889        initialContent();
3890      } else {
3891        localStorage.removeItem("secondLanguageCode");
3892        localStorage.removeItem("secondLanguageDir");
3893      }
3894    });
3895
3896    $splitScreenCloseButton.on("click", function (e) {
3897      e.preventDefault();
3898      $splitScreenButton.click();
3899    });
3900
3901    // Load the same page in other language, find needed place and put as split screen
3902    function sendLanguageRequest(url, dir, hreflang) {
3903      $.ajax({
3904        url: url,
3905        context: document.body,
3906      }).done(function (result) {
3907        var newLanguageContent = $(result)
3908          .find("[" + otherlanguageContentFromAttr + "]")
3909          .html();
3910        $otherLanguageContent.html(newLanguageContent);
3911
3912        // Change language direction in the div block if e.g. it is arabic
3913        $otherLanguageContent.attr("dir", dir);
3914
3915        // Reset Colorbox for images and Readspeaker
3916        setTimeout(function () {
3917          Drupal.behaviors.colorboxEvent.resetColorbox();
3918          jQuery.fn.reinitReadspeaker();
3919        });
3920
3921        localStorage.setItem("secondLanguageCode", hreflang);
3922        localStorage.setItem("secondLanguageDir", dir);
3923      });
3924    }
3925
3926    // Load initially from localstorage if saved, if not - first language from select
3927    function initialContent() {
3928      var hreflang, initialDir, initialUrl;
3929
3930      hreflang = localStorage.getItem("secondLanguageCode");
3931      initialDir = localStorage.getItem("secondLanguageDir");
3932
3933      if (
3934        !hreflang ||
3935        !$otherLanguagesSelect.find("option[hreflang=" + hreflang + "]").length
3936      ) {
3937        hreflang = $otherLanguagesSelect.find("option:first").attr("hreflang");
3938        initialDir = $otherLanguagesSelect
3939          .find("option:first")
3940          .attr("direction");
3941      }
3942
3943      initialUrl = $otherLanguagesSelect
3944        .find("option[hreflang=" + hreflang + "]")
3945        .val();
3946
3947      sendLanguageRequest(initialUrl, initialDir, hreflang);
3948      $otherLanguagesSelect.val(initialUrl);
3949    }
3950
3951    if (localStorage.getItem("secondLanguageCode") !== null) {
3952      $splitScreenButton.click();
3953    }
3954
3955    /* End split screen*/
3956
3957    /* Wörterbuch */
3958
3959    var $otherLanguagesDetailSelect = $("[data-other-language-detail]");
3960    var $otherLanguagesOverviewSelect = $("[data-other-language-overview]");
3961
3962    var languageDirection = {
3963      0: "ltr",
3964      1: "ltr",
3965      2: "ltr",
3966      3: "ltr",
3967      4: "ltr",
3968      5: "rtl",
3969      6: "rtl",
3970      7: "ltr",
3971      8: "ltr",
3972      9: "ltr",
3973      10: "ltr",
3974      11: "ltr",
3975      12: "ltr",
3976    };
3977
3978    var languageName = {
3979      0: "Deutsch ",
3980      1: "English ",
3981      2: "Français ",
3982      3: "Русский ",
3983      4: "Türkçe ",
3984      5: "عربي ",
3985      6: "فارسی ",
3986      7: "Български ",
3987      8: "Polski ",
3988      9: "Shqip ",
3989      10: "Română ",
3990      11: "Español ",
3991      12: "Nederlands ",
3992      14: "українська"
3993    };
3994
3995    var langSlug = {
3996      0: "de-DE",
3997      1: "en-GB",
3998      2: "fr-FR",
3999      3: "ru-RU",
4000      4: "tr-TR",
4001      5: "ar-AR",
4002      6: "fa-IR",
4003      7: "bg-BG",
4004      8: "pl-PL",
4005      9: "sq-SQ",
4006      10: "ro-RO",
4007      11: "es-ES",
4008      12: "nl-NL",
4009      14: "uk-UA"
4010    };
4011
4012    $otherLanguagesDetailSelect.on("change", function (e) {
4013      var selectedOption = $otherLanguagesDetailSelect.find("option:selected");
4014      detailSendLanguageRequest(
4015        selectedOption.val(),
4016        selectedOption.attr("dir"),
4017        selectedOption.attr("lang")
4018      );
4019    });
4020
4021    $otherLanguagesOverviewSelect.on("change", function (e) {
4022      var selectedOption = $otherLanguagesOverviewSelect.find(
4023        "option:selected"
4024      );
4025      overviewSendLanguageRequest(
4026        selectedOption.val(),
4027        selectedOption.attr("dir"),
4028        selectedOption.attr("lang")
4029      );
4030    });
4031
4032    function detailSendLanguageRequest(url, dir, hreflang) {
4033      var aktDir = languageDirection[dir];
4034      var aktlangSlug = langSlug[dir];
4035
4036      $.ajax({
4037        url: url,
4038        context: document.body,
4039      }).done(function (result) {
4040        var newLanguageContent = $(result)
4041          .find(
4042            ".vocabulary-glossary.view-mode-full div.glossary-description-wrap"
4043          )
4044          .html();
4045
4046        var $otherLanguageDictionaryContent = $(
4047          ".vocabulary-glossary.view-mode-translation"
4048        ).html(newLanguageContent);
4049        // Change language direction in the div block if e.g. it is arabic
4050        $otherLanguageDictionaryContent.attr("dir", aktDir);
4051        //}
4052
4053        var aktID = $otherLanguageDictionaryContent.attr("id");
4054        aktID = aktID + aktlangSlug;
4055        $otherLanguageDictionaryContent.attr("id", aktID);
4056
4057        // Reset Colorbox for images and Readspeaker
4058        setTimeout(function () {
4059          Drupal.behaviors.colorboxEvent.resetColorbox();
4060          jQuery.fn.reinitReadspeaker();
4061        });
4062
4063        localStorage.setItem("secondLanguageCodeDictionary", hreflang);
4064        localStorage.setItem("secondLanguageDirDictionary", dir);
4065      });
4066    }
4067
4068    function overviewSendLanguageRequest(url, dir, hreflang) {
4069      var pathname = url;
4070
4071      var aktDir = languageDirection[dir];
4072
4073      $.ajax({
4074        url: pathname,
4075        dataType: "json",
4076        type: "GET",
4077      })
4078        .done((data) => {
4079          var letterIds = Object.keys(data);
4080          var aktHreflang = languageName[hreflang];
4081
4082          for (var i = 0; i < letterIds.length; i++) {
4083            var aktID = letterIds[i];
4084
4085            $("#glossary-" + aktID + "-translated").attr("dir", aktDir);
4086            $("#glossary-" + aktID + "-translated .info.rs_skip").text(
4087              aktHreflang
4088            );
4089            $("#glossary-" + aktID + "-translated .rs_skip .rsbtn_play").attr(
4090              "href",
4091              data[aktID].readspeakerURL.replace(
4092                /lang=[a-z]{2}-[A-Z]{2}/,
4093                "lang=" + langSlug[hreflang]
4094              )
4095            );
4096            $("#glossary-" + aktID + "-translated .word-translated").text(
4097              data[aktID].translation
4098            );
4099          }
4100
4101          // Reset Colorbox for images and Readspeaker
4102          setTimeout(function () {
4103            Drupal.behaviors.colorboxEvent.resetColorbox();
4104            jQuery.fn.reinitReadspeaker();
4105          }, 0);
4106
4107          // Falls benötigt
4108          /*setTimeout( function() {
4109                    for(var i=0; i<letterIds.length; i++) {
4110
4111                        var aktID = letterIds[i];
4112
4113                        $("#glossary-"+aktID+"-translated").attr("dir", aktDir);
4114                        $("#glossary-"+aktID+"-translated .info.rs_skip").text(aktHreflang);
4115                        $("#glossary-"+aktID+"-translated .rs_skip .rsbtn_play").attr("href", data[aktID].readspeakerURL.replace(/lang=[a-z]{2}-[A-Z]{2}/, 'lang=' + langSlug[hreflang]));
4116                        $("#glossary-"+aktID+"-translated .word-translated").text(data[aktID].translation);
4117
4118                    }
4119                }, 500);*/
4120        })
4121        .fail((jqXHR, errorMessage, error) => {
4122          console.warn("Could not load translation data :: ", errorMessage);
4123        });
4124
4125      localStorage.setItem("secondLanguageCodeDictionary", hreflang);
4126      localStorage.setItem("secondLanguageDirDictionary", dir);
4127    }
4128
4129    function initialDictionaryContent() {
4130      var hreflangDictionary, initialDirDictionary, initialUrlDictionary;
4131
4132      hreflangDictionary = localStorage.getItem("secondLanguageCodeDictionary");
4133      initialDirDictionary = localStorage.getItem(
4134        "secondLanguageDirDictionary"
4135      );
4136
4137      if ($("div").hasClass("glossary-term-description")) {
4138        if (
4139          !hreflangDictionary ||
4140          !$otherLanguagesDetailSelect.find(
4141            "option[lang=" + hreflangDictionary + "]"
4142          ).length
4143        ) {
4144          hreflangDictionary = $otherLanguagesDetailSelect
4145            .find("option:first")
4146            .attr("lang");
4147          initialDirDictionary = $otherLanguagesDetailSelect
4148            .find("option:first")
4149            .attr("dir");
4150        }
4151        initialUrlDictionary = $otherLanguagesDetailSelect
4152          .find("option[lang=" + hreflangDictionary + "]")
4153          .val();
4154
4155        detailSendLanguageRequest(
4156          initialUrlDictionary,
4157          initialDirDictionary,
4158          hreflangDictionary
4159        );
4160        $otherLanguagesDetailSelect.val(initialUrlDictionary);
4161      } else if ($("div").hasClass("result-letter")) {
4162        if (
4163          !hreflangDictionary ||
4164          !$otherLanguagesOverviewSelect.find(
4165            "option[lang=" + hreflangDictionary + "]"
4166          ).length
4167        ) {
4168          hreflangDictionary = $otherLanguagesOverviewSelect
4169            .find("option:first")
4170            .attr("lang");
4171          initialDirDictionary = $otherLanguagesOverviewSelect
4172            .find("option:first")
4173            .attr("dir");
4174        }
4175        initialUrlDictionary = $otherLanguagesOverviewSelect
4176          .find("option[lang=" + hreflangDictionary + "]")
4177          .val();
4178
4179        overviewSendLanguageRequest(
4180          initialUrlDictionary,
4181          initialDirDictionary,
4182          hreflangDictionary
4183        );
4184        $otherLanguagesOverviewSelect.val(initialUrlDictionary);
4185      }
4186    }
4187
4188    if ($("body").hasClass("dictionary-page")) {
4189      initialDictionaryContent();
4190    }
4191  });
4192
4193  // autocomplete dynamic width
4194
4195  $(window).on("load resize orientationchange", function () {
4196    setTimeout(function () {
4197      var $widthAutocompleteBoxWidth = $(
4198        "#feature-site-search-header-block-form"
4199      ).width();
4200      var $autocompleteBox = $(".autocomplete-suggestions");
4201      $autocompleteBox.attr(
4202        "style",
4203        "width:" + $widthAutocompleteBoxWidth + "px !important"
4204      );
4205    }, 500);
4206  });
4207
4208  Drupal.behaviors.colorboxEvent = {
4209    attach: function (context, settings) {
4210      this.init();
4211
4212      $(window).bind("resize orientationchange", function () {
4213        if ($(window).width() < 480) {
4214          $.fn.colorbox.resize({
4215            width: "98%",
4216          });
4217        } else {
4218          $.fn.colorbox.resize({
4219            maxWidth: "98%",
4220            maxHeight: "98%",
4221          });
4222        }
4223      });
4224    },
4225
4226    init: function () {
4227      $(".colorbox-iframe")
4228        .once("colorbox-iframe")
4229        .bind("click", function (e) {
4230          e.preventDefault();
4231
4232          var params = Drupal.settings.colorbox;
4233          params.iframe = true;
4234          params.className = "windowview";
4235          params.width = "60%";
4236          params.fastIframe = false; // needed so colorbox will trigger onComplete when iframe is completly loaded
4237
4238          $(".colorbox-iframe").colorbox(params);
4239
4240          $(document).bind("cbox_complete", function () {
4241            // set an id on the iframe by getting the iframe name
4242            var iframeName = $("#cboxLoadedContent iframe").attr("name");
4243            $("#cboxLoadedContent iframe").attr("id", "iframe-" + iframeName);
4244
4245            // get the id of the iframe
4246            var iframeId = document.getElementById("iframe-" + iframeName);
4247
4248            setTimeout(function () {
4249              var iframeHeight =
4250                parseInt(iframeId.contentWindow.document.body.scrollHeight) +
4251                45; // + 45 for colorbox top
4252              $("#iframe-" + iframeName).css("height", "100%");
4253
4254              $.colorbox.resize({
4255                height: iframeHeight,
4256              });
4257            }, 300);
4258          });
4259        });
4260
4261      if ($(".popup-window").length) {
4262        $("input").attr("placeholder", "");
4263        $("input[type=radio][value=2]").bind("click", function () {
4264          $(this).parents(".form-item").next(".form-item").addClass("show");
4265        });
4266        $("input[type=radio][value=1]").bind("click", function () {
4267          $(this).parents(".form-item").next(".form-item").removeClass("show");
4268        });
4269      }
4270
4271      $(".rsbtn_play").bind("click", function () {
4272        if (!$(this).parents(".readspeaker-container").length) {
4273          $.colorbox.remove();
4274          Drupal.behaviors.colorboxEvent.resetColorbox();
4275        }
4276      });
4277
4278      $("#cboxPrevious").bind("click", function () {
4279        $("#cboxTitle").css("display", "none");
4280        Drupal.behaviors.colorboxEvent.clearReadspeakerEvents();
4281      });
4282
4283      $("#cboxNext").bind("click", function () {
4284        $("#cboxTitle").css("display", "none");
4285        Drupal.behaviors.colorboxEvent.clearReadspeakerEvents();
4286      });
4287
4288      $(document).bind("cbox_complete", function () {
4289        $("#cboxTitle").css("display", "block");
4290      });
4291
4292      $(document).on("cbox_closed", function () {
4293        Drupal.behaviors.colorboxEvent.clearReadspeakerEvents();
4294        $.colorbox.remove();
4295        Drupal.behaviors.colorboxEvent.resetColorbox();
4296      });
4297    },
4298
4299    clearReadspeakerEvents: function () {
4300      if ($(".speaking").length) {
4301        if ($(".rsplaying").length) {
4302          $(".speaking").parent().find(".rsbtn_pause").trigger("click");
4303        }
4304        $(".speaking").removeClass("speaking");
4305      }
4306    },
4307
4308    resetColorbox: function () {
4309      var params = [];
4310      var url = $(".colorbox-load").attr("href");
4311      if (typeof url !== "undefined") {
4312        params = $.urlParams(url);
4313      }
4314
4315      $(".colorbox-load").colorbox(
4316        $.extend(
4317          {
4318            title: function () {
4319              return $(this).data("inner-title");
4320            },
4321          },
4322          Drupal.settings.colorbox,
4323          params
4324        )
4325      );
4326    },
4327  };
4328  Drupal.behaviors.dictionary = {
4329    attach: function () {
4330      this.init();
4331      this.changeLetters();
4332    },
4333
4334    init: function () {
4335      if ($("#dictionary-results .result-row").length === 0) {
4336        return;
4337      }
4338
4339      var $row = $("#dictionary-results .result-row");
4340
4341      $row.each(function () {
4342        $(this)
4343          .once("result-row-link")
4344          .bind("click", function () {
4345            window.location = $(this).find(".dictionary-link a").attr("href");
4346          });
4347      });
4348    },
4349
4350    changeLetters: function () {
4351      if (
4352        $("#feature-glossary-dictionary-search-form + .glossary-letters")
4353          .length === 0
4354      ) {
4355        return;
4356      }
4357
4358      // should only happen on phones
4359      if ($(window).width() < 768) {
4360        var $glossaryLetters = $(".glossary-letters"),
4361          arrList = $glossaryLetters.find("a"),
4362          activeSelected = "";
4363
4364        // add a wrapper to hide the links
4365        $glossaryLetters.wrapInner('<div class="hidden"></div>');
4366        // add a dropdown
4367        $glossaryLetters.prepend(
4368          '<select id="glossary-letters-dropdown"></select>'
4369        );
4370
4371        var $drop = $("#glossary-letters-dropdown");
4372
4373        // add the options to the dropdown
4374        arrList.each(function () {
4375          if ($(this).hasClass("active")) {
4376            activeSelected = "selected";
4377          } else {
4378            activeSelected = "";
4379          }
4380
4381          $drop.append(
4382            '<option value="' +
4383              $(this).attr("href") +
4384              '"' +
4385              activeSelected +
4386              ">" +
4387              $(this).text() +
4388              "</option>"
4389          );
4390        });
4391
4392        $drop.bind("change", function () {
4393          var loc = $drop.find(":selected").val();
4394          window.location = loc;
4395        });
4396      }
4397    },
4398  };
4399  Drupal.behaviors.facets = {
4400    attach: function (context, settings) {
4401      this.addDivider();
4402    },
4403
4404    addDivider: function () {
4405      var $mainThemeFacet = $(
4406        "#facetapi-facet-search-apicontent-index-block-main-theme-facet"
4407      );
4408      if ($mainThemeFacet.length === 0) {
4409        return;
4410      }
4411
4412      if (
4413        !$mainThemeFacet
4414          .closest(".sidebar-first")
4415          .children()
4416          .last()
4417          .children()
4418          .hasClass("facetapi-facet-main-theme-facet")
4419      ) {
4420        $mainThemeFacet.parent().addClass("main-theme-facet");
4421      }
4422    },
4423  };
4424  Drupal.behaviors.forms = {
4425    attach: function (context, settings) {
4426      this.searchFields();
4427    },
4428
4429    searchFields: function () {
4430      if (
4431        $("#block-feature-site-search-header-form").length === 0 &&
4432        $("#feature-glossary-dictionary-search-form").length === 0
4433      ) {
4434        return;
4435      }
4436
4437      var arrInputs = [
4438        "#block-feature-site-search-header-form",
4439        "#feature-glossary-dictionary-search-form",
4440      ];
4441
4442      $.each(arrInputs, function (i) {
4443        var $input = $(arrInputs[i]).find('input[type="text"]'),
4444          $inputWrapper = $input.parents("form");
4445
4446        $input.once("header-search-input-focus").bind("focus", function () {
4447          $inputWrapper.addClass("focus");
4448        });
4449
4450        $input.once("header-search-input-blur").bind("blur", function () {
4451          $inputWrapper.removeClass("focus");
4452        });
4453      });
4454    },
4455  };
4456  Drupal.behaviors.languageSwitch = {
4457    attach: function (context, settings) {
4458      var $this = this;
4459
4460      $this.init();
4461    },
4462
4463    init: function () {
4464      $("a.language-switch-trigger")
4465        .once("language-switch")
4466        .bind("click", function (ev) {
4467          ev.preventDefault();
4468
4469          var el = $(this);
4470
4471          if (el.parents(".language-switch").hasClass("active")) {
4472            Drupal.behaviors.languageSwitch.closeLanguageChoice(el);
4473          } else {
4474            Drupal.behaviors.languageSwitch.openLanguageChoice(el);
4475          }
4476        });
4477
4478      $(document).bind("click", function (e) {
4479        var container = $(".language-switch");
4480
4481        if (!container.is(e.target) && container.has(e.target).length === 0) {
4482          Drupal.behaviors.languageSwitch.closeLanguageChoice(e);
4483        }
4484      });
4485    },
4486
4487    openLanguageChoice: function (el) {
4488      $("ul.available-languages").slideDown("fast");
4489      $(".language-switch").addClass("active");
4490      $(".language-switch-trigger").attr("aria-expanded", "true");
4491    },
4492
4493    closeLanguageChoice: function (el) {
4494      $("ul.available-languages").slideUp("fast");
4495      $(".language-switch").removeClass("active");
4496      $(".language-switch-trigger").attr("aria-expanded", "false");
4497    },
4498  };
4499  Drupal.behaviors.mobileMenu = {
4500    breakPoint1: 1024,
4501    breakPoint2: 768,
4502    breakPoint3: 420,
4503    fontState: "font-normal",
4504
4505    attach: function (context, settings) {
4506      var _this = this,
4507        _window = $(window);
4508
4509      _this.checkMobileMenuExist();
4510
4511      _window.bind("resize orientationchange", function () {
4512        _this.checkMobileMenuExist();
4513      });
4514    },
4515
4516    checkMobileMenuExist: function () {
4517      var _this = Drupal.behaviors.mobileMenu,
4518        _window = $(window),
4519        _body = $("body"),
4520        _html = $("html");
4521
4522      if (_window.width() < _this.breakPoint2) {
4523        // Get choossen default font size
4524        if (_body.hasClass("font-middle")) {
4525          _this.fontState = "font-middle";
4526        } else if (_body.hasClass("font-largest")) {
4527          _this.fontState = "font-largest";
4528        } else {
4529          _this.fontState = "font-normal";
4530        }
4531
4532        // Set font size to normal for mobile
4533        _body.removeClass(_this.fontState).addClass("font-normal");
4534
4535        if (!_body.hasClass("mobile-menu")) {
4536          _this.createMobileMenu();
4537        } else {
4538          _html.removeClass("show-mobile-search");
4539        }
4540      } else {
4541        // Set choosen default font size back after resize
4542        var size = $.cookie("personalization.font_size");
4543        if (size !== null) {
4544          _body.removeClass("font-normal").addClass("font-" + size);
4545        }
4546
4547        if (_body.hasClass("mobile-menu")) {
4548          _this.hideMobileMenu();
4549        }
4550      }
4551    },
4552
4553    createMobileMenu: function () {
4554      var _this = Drupal.behaviors.mobileMenu,
4555        _window = $(window),
4556        _body = $("body"),
4557        header = $("header > .container > .row"),
4558        menuButton = $(".js-mobile-menu-button"),
4559        mobileMenu = $('<div tabindex="-1" id="mobile-menu"></div>'),
4560        mobileMenuOverlay = $('<div id="mobile-menu-overlay" />'),
4561        mobileMenuContent = $("#block-feature-site-footer-doormat"),
4562        languageSwitch = $("#block-feature-site-language-switch"),
4563        searchButton = $("#mobile-menu-search-button"),
4564        languageSwitchTrigger = $(".language-switch-trigger").clone();
4565
4566      // Build mobile menu
4567      // Remove seperator from doormat list
4568      mobileMenuContent.find(".separator").parents("li").remove();
4569
4570      // take the language-switch-trigger and place it up top
4571      mobileMenuContent.prepend(languageSwitchTrigger);
4572      // Clone doormat and lanugage switch to mobile menu
4573      languageSwitch.clone().appendTo(mobileMenuContent);
4574      mobileMenuContent.clone().appendTo(mobileMenu);
4575
4576      mobileMenu.append(mobileMenuOverlay);
4577
4578      _body.addClass("mobile-menu");
4579      menuButton.after(mobileMenu);
4580      // Add mobile menu and search toggle buttons to header
4581      // header.prepend(menuButton);
4582      // searchButton.insertBefore(header.find('.header-region'));
4583
4584      // Add events
4585      _this.events(menuButton);
4586      _this.langSitchTrig();
4587    },
4588
4589    langSitchTrig: function (menuButton) {
4590      var _this = Drupal.behaviors.mobileMenu,
4591        mobileMenu = $("#mobile-menu"),
4592        mobileMenuContent = mobileMenu.find(
4593          "#block-feature-site-footer-doormat"
4594        ),
4595        mobileLanguage = mobileMenu.find("#block-feature-site-language-switch"),
4596        mobileMenuLangTrigger = mobileMenu.find(
4597          "#block-feature-site-footer-doormat > .language-switch-trigger"
4598        );
4599
4600      mobileMenuLangTrigger.bind("click", function (e) {
4601        e.preventDefault();
4602        mobileMenuContent.animate(
4603          {
4604            scrollTop: mobileLanguage.offset().top - 97,
4605          },
4606          1000
4607        );
4608        return false;
4609      });
4610    },
4611
4612    events: function (menuButton) {
4613      var _this = Drupal.behaviors.mobileMenu,
4614        _body = $("body"),
4615        _html = $("html"),
4616        mobileMenu = $("#mobile-menu");
4617
4618      // Toggle mobile menu
4619      menuButton.once("mobile-menu-button").bind("click", function (e) {
4620        if (!_html.hasClass("show-mobile-menu")) {
4621          if (_body.hasClass("show-mobile-search")) {
4622            _this.hideSearch();
4623          }
4624          mobileMenu.show();
4625          setTimeout(function () {
4626            _html.addClass("show-mobile-menu");
4627            _body.addClass("show-mobile-menu");
4628            menuButton.attr({ "aria-expanded": true });
4629          }, 200);
4630        } else {
4631          _this.hideMobileMenu();
4632          menuButton.attr({ "aria-expanded": false });
4633        }
4634      });
4635
4636      // Close mobile menu on touch/click dark overlay
4637      $("#mobile-menu-overlay")
4638        .once("mobile-menu-overlay")
4639        .bind("click", function () {
4640          _this.hideMobileMenu();
4641        });
4642
4643      //Search button, toggle search below header.
4644      $("#mobile-menu-search-button")
4645        .once("mobile-search-button")
4646        .bind("click", function (e) {
4647          if (!_body.hasClass("show-mobile-search")) {
4648            if (_html.hasClass("show-mobile-menu")) {
4649              _this.hideMobileMenu();
4650            }
4651            $("#mobile-menu-search-button").attr({
4652              "aria-expanded": true,
4653              "aria-label": "Suche schließen",
4654            });
4655            _body.addClass("show-mobile-search");
4656            setTimeout(function () {
4657              $(".header-search").focus();
4658            }, 400);
4659          } else {
4660            $("#mobile-menu-search-button").attr({
4661              "aria-expanded": false,
4662              "aria-label": "Suche öffnen",
4663            });
4664            _this.hideSearch();
4665          }
4666        })
4667        .bind("keypress", function (e) {
4668          if (e.which === 13) {
4669            if (!_body.hasClass("show-mobile-search")) {
4670              if (_html.hasClass("show-mobile-menu")) {
4671                _this.hideMobileMenu();
4672              }
4673              $("#mobile-menu-search-button").attr({ "aria-expanded": true });
4674              _body.addClass("show-mobile-search");
4675              setTimeout(function () {
4676                $(".header-search").focus();
4677              }, 400);
4678            } else {
4679              $("#mobile-menu-search-button").attr({ "aria-expanded": false });
4680              _this.hideSearch();
4681            }
4682          }
4683        });
4684
4685      //Disable language switcher behavior, no dropdown in mobile menu
4686      $("#mobile-menu")
4687        .find(".language-switch-trigger")
4688        .bind("click", function (e) {
4689          e.preventDefault();
4690          return false;
4691        });
4692    },
4693
4694    hideMobileMenu: function () {
4695      var _html = $("html");
4696      var _body = $("body");
4697      _html.removeClass("show-mobile-menu");
4698      _body.removeClass("show-mobile-menu");
4699      setTimeout(function () {
4700        $("#mobile-menu").hide();
4701      }, 200);
4702    },
4703
4704    hideSearch: function () {
4705      var _body = $("body");
4706      _body.removeClass("show-mobile-search");
4707    },
4708  };
4709  Drupal.behaviors.personalization = {
4710    attach: function (context) {
4711      var $this = Drupal.behaviors.personalization;
4712
4713      $this.fontSize();
4714    },
4715
4716    fontSize: function () {
4717      // Set initial size
4718      var size = $.cookie("personalization.font_size");
4719      if (size !== null) {
4720        $("body")
4721          .removeClass("font-normal")
4722          .addClass("font-" + size);
4723      }
4724
4725      // Toggle size
4726      $(".font-size-switch a").on("click", function (e) {
4727        e.preventDefault();
4728
4729        var $this = $(this),
4730          oldSize = $.cookie("personalization.font_size"),
4731          size = $this.data("size");
4732
4733        // Save preference to cookie
4734        $.cookie("personalization.font_size", size, { expires: 7, secure: true, path: "/" });
4735
4736        $("body")
4737          .removeClass("font-" + oldSize)
4738          .addClass("font-" + size);
4739
4740        Drupal.behaviors.personalization.switchActive();
4741
4742        return false;
4743      });
4744
4745      Drupal.behaviors.personalization.switchActive();
4746    },
4747
4748    switchActive: function () {
4749      $(".font-size-switch a").removeClass("active");
4750
4751      var size = $.cookie("personalization.font_size");
4752      if (size === null) {
4753        size = "normal";
4754      }
4755      $(".font-size-switch a.font-size-" + size).addClass("active");
4756    },
4757  };
4758
4759  Drupal.behaviors.print = {
4760    attach: function () {
4761      $(".trigger-print").click(function (e) {
4762        e.preventDefault();
4763        window.print();
4764        return false;
4765      });
4766    },
4767  };
4768  Drupal.behaviors.readSpeaker = {
4769    attach: function () {
4770      if (!window.rsConf) {
4771        window.rsConf = {};
4772      }
4773      if (!window.rsConf.ui) {
4774        window.rsConf.ui = {};
4775      }
4776      if (!window.rsConf.ui.player) {
4777        window.rsConf.ui.player = {};
4778      }
4779      if (!window.rsConf.general) {
4780        window.rsConf.general = {};
4781      }
4782
4783      // This default solution does not work, so the Observer's solution below is used
4784      window.rsConf = {
4785        general: {
4786          usePost: true,
4787        },
4788        ui: {
4789          player: [
4790            // Define the play button
4791            '<a href="javascript:void(0);" class="rsbtn_play rsimg rspart rsbutton" title="' + langplay + '">',
4792            ' <span class="rsbtn_btnlabel">' + langplay + 'asdf</span>',
4793            ' </a>',
4794            // Define the pause button
4795            '<a href="javascript:void(0);" class="rsbtn_pause rsimg rspart rsbutton" title="' + langpause + '">',
4796            ' <span class="rsbtn_btnlabel">' + langpause + 'asdf</span>',
4797            ' </a>'
4798          ]
4799        }
4800      };
4801    },
4802  };
4803
4804  document.addEventListener('DOMContentLoaded', function () {
4805    function updateButtonLabels() {
4806      const labels = document.querySelectorAll('.rsbtn_btnlabel');
4807      labels.forEach(function (label) {
4808        const rsbtn = label.closest('.rsbtn');
4809        if (rsbtn) {
4810          if (rsbtn.classList.contains('rsplaying')) {
4811            label.textContent = langpause;
4812          } else if (rsbtn.classList.contains('rspaused')) {
4813            label.textContent = langplay;
4814          }
4815        }
4816      });
4817    }
4818
4819    const observer = new MutationObserver(function (mutationsList) {
4820      mutationsList.forEach(function (mutation) {
4821        mutation.addedNodes.forEach(function (node) {
4822          if (node.nodeType === 1) {
4823            if (node.classList && node.classList.contains('rsbtn')) {
4824              updateButtonLabels();
4825            } else if (node.querySelectorAll) {
4826              const rsbtnElements = node.querySelectorAll('.rsbtn');
4827              const labelElements = node.querySelectorAll('.rsbtn_btnlabel');
4828              if (rsbtnElements.length > 0 || labelElements.length > 0) {
4829                updateButtonLabels();
4830              }
4831            }
4832          }
4833        });
4834        if (mutation.type === 'attributes' && mutation.target.classList.contains('rsbtn')) {
4835          updateButtonLabels();
4836        }
4837      });
4838    });
4839
4840    observer.observe(document.body, {
4841      childList: true,
4842      subtree: true,
4843      attributes: true,
4844      attributeFilter: ['class'],
4845    });
4846
4847    updateButtonLabels();
4848  });
4849
4850
4851  $(function () {
4852    jQuery.fn.reinitReadspeaker = function () {
4853      ReadSpeaker.q(function () {
4854        rspkr.ui.addClickEvents();
4855      });
4856    };
4857
4858    jQuery.fn.destroyReadspeaker = function () {
4859      ReadSpeaker.q(function () {
4860        var player = rspkr.ui.getActivePlayer();
4861        if (player) {
4862          player.close();
4863        }
4864      });
4865    };
4866  });
4867
4868  Drupal.behaviors.scroll = {
4869    attach: function (context) {
4870      var $this = Drupal.behaviors.scroll;
4871
4872      $this.initScroll();
4873
4874      $(window)
4875        .once("trigger-scroll")
4876        .bind("resize", function () {
4877          $this.initScroll();
4878        });
4879    },
4880    initScroll: function () {
4881      $(".trigger-scroll").click(function (e) {
4882        e.preventDefault();
4883
4884        var $this = $(this),
4885          target = $this.data("target"),
4886          offset = $this.data("offset") ? $this.data("offset") : 0,
4887          top = 0,
4888          $toolbar = $(".toolbar-menu"),
4889          $breadcrumbDepth = $(
4890            "#block-feature-site-breadcrumbs .color-theme-depth-0"
4891          ),
4892          $breadcrumbPage = $("#block-feature-site-breadcrumbs .color-page"),
4893          $actionbar = $("#block-feature-site-action-bar");
4894
4895        if ($("#" + target).length !== 0) {
4896          var $targetElement = $("#" + target);
4897          top = $targetElement.offset().top;
4898        } else if ($.isNumeric(target)) {
4899          top = target;
4900        } else {
4901          return false;
4902        }
4903
4904        if ($toolbar.length !== 0) {
4905          top -= $toolbar.height();
4906        }
4907
4908        if ($breadcrumbDepth.length !== 0) {
4909          top -= $breadcrumbDepth.height() + 28 + offset;
4910        }
4911
4912        if ($breadcrumbPage.length !== 0) {
4913          top -= $breadcrumbPage.height() + offset;
4914        }
4915
4916        if ($actionbar.length !== 0) {
4917          top -= $actionbar.height();
4918        }
4919
4920        $("html").animate({ scrollTop: top }, "slow"); //IE, FF
4921        $("body").animate({ scrollTop: top }, "slow"); //chrome
4922
4923        return false;
4924      });
4925    },
4926  };
4927
4928  Drupal.behaviors.sticky = {
4929    attach: function (context, settings) {
4930      var $this = Drupal.behaviors.sticky;
4931      var options = {
4932        breakpoint: 1023,
4933      };
4934
4935      $this.stickItCrumb();
4936      $this.stickItNav(options);
4937      $this.stickItPage();
4938
4939      $(window).bind("resize", function () {
4940        $this.stickItCrumb();
4941        $this.stickItNav(options);
4942        $this.stickItPage();
4943      });
4944    },
4945
4946    stickItCrumb: function () {
4947      this.stickIt(
4948        $("#block-feature-site-breadcrumbs .color-theme-depth-0"),
4949        "breadcrumb-sticky",
4950        0
4951      );
4952    },
4953
4954    stickItNav: function (options) {
4955      if ($(window).width() > options.breakpoint) {
4956        this.stickIt($("#block-feature-site-action-bar"), "action-sticky", 1);
4957      } else {
4958        $("#block-feature-site-action-bar").unstick();
4959      }
4960    },
4961
4962    stickItPage: function () {
4963      this.stickIt(
4964        $("#block-feature-site-breadcrumbs .color-page"),
4965        "breadcrumb-page-sticky",
4966        0
4967      );
4968    },
4969
4970    stickIt: function ($obj, stickyWrap, extraCheck) {
4971      if ($obj.length === 0) {
4972        return;
4973      }
4974
4975      var topSpace = 0;
4976
4977      if ($("body").hasClass("logged-in")) {
4978        topSpace = $("#toolbar").height();
4979      }
4980
4981      if (extraCheck === 1) {
4982        if (
4983          $("#block-feature-site-breadcrumbs .color-theme-depth-0").length !== 0
4984        ) {
4985          topSpace += $(
4986            "#block-feature-site-breadcrumbs .color-theme-depth-0"
4987          ).height();
4988        } else {
4989          topSpace += $("#block-feature-site-breadcrumbs .color-page").height();
4990        }
4991      }
4992
4993      $obj.once("sticky").sticky({
4994        topSpacing: topSpace,
4995        wrapperClassName: stickyWrap,
4996      });
4997    },
4998  };
4999})(jQuery);
5000// Sticky Plugin v1.0.0 for jQuery
5001// =============
5002// Author: Anthony Garand
5003// Improvements by German M. Bravo (Kronuz) and Ruud Kamphuis (ruudk)
5004// Improvements by Leonardo C. Daronco (daronco)
5005// Created: 2/14/2011
5006// Date: 2/12/2012
5007// Website: http://labs.anthonygarand.com/sticky
5008// Description: Makes an element on the page stick on the screen as you scroll
5009//       It will only set the 'top' and 'position' of your element, you
5010//       might need to adjust the width in some cases.
5011
5012(function ($) {
5013  var defaults = {
5014      topSpacing: 0,
5015      bottomSpacing: 0,
5016      className: "is-sticky",
5017      wrapperClassName: "sticky-wrapper",
5018      center: false,
5019      getWidthFrom: "",
5020      responsiveWidth: false,
5021    },
5022    $window = $(window),
5023    $document = $(document),
5024    sticked = [],
5025    windowHeight = $window.height(),
5026    scroller = function () {
5027      var scrollTop = $window.scrollTop(),
5028        documentHeight = $document.height(),
5029        dwh = documentHeight - windowHeight,
5030        extra = scrollTop > dwh ? dwh - scrollTop : 0;
5031
5032      for (var i = 0; i < sticked.length; i++) {
5033        var s = sticked[i],
5034          elementTop = s.stickyWrapper.offset().top,
5035          etse = elementTop - s.topSpacing - extra;
5036
5037        if (scrollTop <= etse) {
5038          if (s.currentTop !== null) {
5039            s.stickyElement.css("position", "").css("top", "");
5040            s.stickyElement
5041              .trigger("sticky-end", [s])
5042              .parent()
5043              .removeClass(s.className);
5044            s.currentTop = null;
5045          }
5046        } else {
5047          var newTop =
5048            documentHeight -
5049            s.stickyElement.outerHeight() -
5050            s.topSpacing -
5051            s.bottomSpacing -
5052            scrollTop -
5053            extra;
5054          if (newTop < 0) {
5055            newTop = newTop + s.topSpacing;
5056          } else {
5057            newTop = s.topSpacing;
5058          }
5059          if (s.currentTop != newTop) {
5060            s.stickyElement.css("position", "fixed").css("top", newTop);
5061
5062            if (typeof s.getWidthFrom !== "undefined") {
5063              s.stickyElement.css("width", $(s.getWidthFrom).width());
5064            }
5065
5066            s.stickyElement
5067              .trigger("sticky-start", [s])
5068              .parent()
5069              .addClass(s.className);
5070            s.currentTop = newTop;
5071          }
5072        }
5073      }
5074    },
5075    resizer = function () {
5076      windowHeight = $window.height();
5077
5078      for (var i = 0; i < sticked.length; i++) {
5079        var s = sticked[i];
5080        if (
5081          typeof s.getWidthFrom !== "undefined" &&
5082          s.responsiveWidth === true
5083        ) {
5084          s.stickyElement.css("width", $(s.getWidthFrom).width());
5085        }
5086      }
5087    },
5088    methods = {
5089      init: function (options) {
5090        var o = $.extend({}, defaults, options);
5091        return this.each(function () {
5092          var stickyElement = $(this);
5093
5094          var stickyId = stickyElement.attr("id");
5095          var wrapperId = stickyId
5096            ? stickyId + "-" + defaults.wrapperClassName
5097            : defaults.wrapperClassName;
5098          var wrapper = $("<div></div>")
5099            .attr("id", stickyId + "-sticky-wrapper")
5100            .addClass(o.wrapperClassName);
5101          stickyElement.wrapAll(wrapper);
5102
5103          if (o.center) {
5104            stickyElement.parent().css({
5105              width: stickyElement.outerWidth(),
5106              marginLeft: "auto",
5107              marginRight: "auto",
5108            });
5109          }
5110
5111          if (stickyElement.css("float") == "right") {
5112            stickyElement
5113              .css({ float: "none" })
5114              .parent()
5115              .css({ float: "right" });
5116          }
5117
5118          var stickyWrapper = stickyElement.parent();
5119          stickyWrapper.css("height", stickyElement.outerHeight());
5120          sticked.push({
5121            topSpacing: o.topSpacing,
5122            bottomSpacing: o.bottomSpacing,
5123            stickyElement: stickyElement,
5124            currentTop: null,
5125            stickyWrapper: stickyWrapper,
5126            className: o.className,
5127            getWidthFrom: o.getWidthFrom,
5128            responsiveWidth: o.responsiveWidth,
5129          });
5130        });
5131      },
5132      update: scroller,
5133      unstick: function (options) {
5134        return this.each(function () {
5135          var unstickyElement = $(this);
5136
5137          var removeIdx = -1;
5138          for (var i = 0; i < sticked.length; i++) {
5139            if (sticked[i].stickyElement.get(0) == unstickyElement.get(0)) {
5140              removeIdx = i;
5141            }
5142          }
5143          if (removeIdx != -1) {
5144            sticked.splice(removeIdx, 1);
5145            unstickyElement.unwrap();
5146            unstickyElement.removeAttr("style");
5147          }
5148        });
5149      },
5150    };
5151
5152  // should be more efficient than using $window.scroll(scroller) and $window.resize(resizer):
5153  if (window.addEventListener) {
5154    window.addEventListener("scroll", scroller, false);
5155    window.addEventListener("resize", resizer, false);
5156  } else if (window.attachEvent) {
5157    window.attachEvent("onscroll", scroller);
5158    window.attachEvent("onresize", resizer);
5159  }
5160
5161  $.fn.sticky = function (method) {
5162    if (methods[method]) {
5163      return methods[method].apply(
5164        this,
5165        Array.prototype.slice.call(arguments, 1)
5166      );
5167    } else if (typeof method === "object" || !method) {
5168      return methods.init.apply(this, arguments);
5169    } else {
5170      $.error("Method " + method + " does not exist on jQuery.sticky");
5171    }
5172  };
5173
5174  $.fn.unstick = function (method) {
5175    if (methods[method]) {
5176      return methods[method].apply(
5177        this,
5178        Array.prototype.slice.call(arguments, 1)
5179      );
5180    } else if (typeof method === "object" || !method) {
5181      return methods.unstick.apply(this, arguments);
5182    } else {
5183      $.error("Method " + method + " does not exist on jQuery.sticky");
5184    }
5185  };
5186  $(function () {
5187    setTimeout(scroller, 0);
5188  });
5189})(jQuery);
5190
5191/* Modernizr 2.6.2 (Custom Build) | MIT & BSD
5192 * Build: http://modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradiu
5192s-boxshadow-flexbox-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-shiv-mq-cssclasses-addtest-prefixed-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load
5193 */
5194(window.Modernizr = (function (a, b, c) {
5195  function D(a) {
5196    j.cssText = a;
5197  }
5198  function E(a, b) {
5199    return D(n.join(a + ";") + (b || ""));
5200  }
5201  function F(a, b) {
5202    return typeof a === b;
5203  }
5204  function G(a, b) {
5205    return !!~("" + a).indexOf(b);
5206  }
5207  function H(a, b) {
5208    for (var d in a) {
5209      var e = a[d];
5210      if (!G(e, "-") && j[e] !== c) return b == "pfx" ? e : !0;
5211    }
5212    return !1;
5213  }
5214  function I(a, b, d) {
5215    for (var e in a) {
5216      var f = b[a[e]];
5217      if (f !== c)
5218        return d === !1 ? a[e] : F(f, "function") ? f.bind(d || b) : f;
5219    }
5220    return !1;
5221  }
5222  function J(a, b, c) {
5223    var d = a.charAt(0).toUpperCase() + a.slice(1),
5224      e = (a + " " + p.join(d + " ") + d).split(" ");
5225    return F(b, "string") || F(b, "undefined")
5226      ? H(e, b)
5227      : ((e = (a + " " + q.join(d + " ") + d).split(" ")), I(e, b, c));
5228  }
5229  function K() {
5230    (e.input = (function (c) {
5231      for (var d = 0, e = c.length; d < e; d++) u[c[d]] = c[d] in k;
5232      return (
5233        u.list &&
5234          (u.list = !!b.createElement("datalist") && !!a.HTMLDataListElement),
5235        u
5236      );
5237    })(
5238      "autocomplete autofocus list placeholder max min multiple pattern required step".split(
5239        " "
5240      )
5241    )),
5242      (e.inputtypes = (function (a) {
5243        for (var d = 0, e, f, h, i = a.length; d < i; d++)
5244          k.setAttribute("type", (f = a[d])),
5245            (e = k.type !== "text"),
5246            e &&
5247              ((k.value = l),
5248              (k.style.cssText = "position:absolute;visibility:hidden;"),
5249              /^range$/.test(f) && k.style.WebkitAppearance !== c
5250                ? (g.appendChild(k),
5251                  (h = b.defaultView),
5252                  (e =
5253                    h.getComputedStyle &&
5254                    h.getComputedStyle(k, null).WebkitAppearance !==
5255                      "textfield" &&
5256                    k.offsetHeight !== 0),
5257                  g.removeChild(k))
5258                : /^(search|tel)$/.test(f) ||
5259                  (/^(url|email)$/.test(f)
5260                    ? (e = k.checkValidity && k.checkValidity() === !1)
5261                    : (e = k.value != l))),
5262            (t[a[d]] = !!e);
5263        return t;
5264      })(
5265        "search tel url email datetime date month week time datetime-local number range color".split(
5266          " "
5267        )
5268      ));
5269  }
5270  var d = "2.6.2",
5271    e = {},
5272    f = !0,
5273    g = b.documentElement,
5274    h = "modernizr",
5275    i = b.createElement(h),
5276    j = i.style,
5277    k = b.createElement("input"),
5278    l = ":)",
5279    m = {}.toString,
5280    n = " -webkit- -moz- -o- -ms- ".split(" "),
5281    o = "Webkit Moz O ms",
5282    p = o.split(" "),
5283    q = o.toLowerCase().split(" "),
5284    r = { svg: "http://www.w3.org/2000/svg" },
5285    s = {},
5286    t = {},
5287    u = {},
5288    v = [],
5289    w = v.slice,
5290    x,
5291    y = function (a, c, d, e) {
5292      var f,
5293        i,
5294        j,
5295        k,
5296        l = b.createElement("div"),
5297        m = b.body,
5298        n = m || b.createElement("body");
5299      if (parseInt(d, 10))
5300        while (d--)
5301          (j = b.createElement("div")),
5302            (j.id = e ? e[d] : h + (d + 1)),
5303            l.appendChild(j);
5304      return (
5305        (f = ["&#173;", '<style id="s', h, '">', a, "</style>"].join("")),
5306        (l.id = h),
5307        ((m ? l : n).innerHTML += f),
5308        n.appendChild(l),
5309        m ||
5310          ((n.style.background = ""),
5311          (n.style.overflow = "hidden"),
5312          (k = g.style.overflow),
5313          (g.style.overflow = "hidden"),
5314          g.appendChild(n)),
5315        (i = c(l, a)),
5316        m
5317          ? l.parentNode.removeChild(l)
5318          : (n.parentNode.removeChild(n), (g.style.overflow = k)),
5319        !!i
5320      );
5321    },
5322    z = function (b) {
5323      var c = a.matchMedia || a.msMatchMedia;
5324      if (c) return c(b).matches;
5325      var d;
5326      return (
5327        y("@media " + b + " { #" + h + " { position: absolute; } }", function (
5328          b
5329        ) {
5330          d =
5331            (a.getComputedStyle ? getComputedStyle(b, null) : b.currentStyle)[
5332              "position"
5333            ] == "absolute";
5334        }),
5335        d
5336      );
5337    },
5338    A = (function () {
5339      function d(d, e) {
5340        (e = e || b.createElement(a[d] || "div")), (d = "on" + d);
5341        var f = d in e;
5342        return (
5343          f ||
5344            (e.setAttribute || (e = b.createElement("div")),
5345            e.setAttribute &&
5346              e.removeAttribute &&
5347              (e.setAttribute(d, ""),
5348              (f = F(e[d], "function")),
5349              F(e[d], "undefined") || (e[d] = c),
5350              e.removeAttribute(d))),
5351          (e = null),
5352          f
5353        );
5354      }
5355      var a = {
5356        select: "input",
5357        change: "input",
5358        submit: "form",
5359        reset: "form",
5360        error: "img",
5361        load: "img",
5362        abort: "img",
5363      };
5364      return d;
5365    })(),
5366    B = {}.hasOwnProperty,
5367    C;
5368  !F(B, "undefined") && !F(B.call, "undefined")
5369    ? (C = function (a, b) {
5370        return B.call(a, b);
5371      })
5372    : (C = function (a, b) {
5373        return b in a && F(a.constructor.prototype[b], "undefined");
5374      }),
5375    Function.prototype.bind ||
5376      (Function.prototype.bind = function (b) {
5377        var c = this;
5378        if (typeof c != "function") throw new TypeError();
5379        var d = w.call(arguments, 1),
5380          e = function () {
5381            if (this instanceof e) {
5382              var a = function () {};
5383              a.prototype = c.prototype;
5384              var f = new a(),
5385                g = c.apply(f, d.concat(w.call(arguments)));
5386              return Object(g) === g ? g : f;
5387            }
5388            return c.apply(b, d.concat(w.call(arguments)));
5389          };
5390        return e;
5391      }),
5392    (s.flexbox = function () {
5393      return J("flexWrap");
5394    }),
5395    (s.canvas = function () {
5396      var a = b.createElement("canvas");
5397      return !!a.getContext && !!a.getContext("2d");
5398    }),
5399    (s.canvastext = function () {
5400      return (
5401        !!e.canvas &&
5402        !!F(b.createElement("canvas").getContext("2d").fillText, "function")
5403      );
5404    }),
5405    (s.webgl = function () {
5406      return !!a.WebGLRenderingContext;
5407    }),
5408    (s.touch = function () {
5409      var c;
5410      return (
5411        "ontouchstart" in a || (a.DocumentTouch && b instanceof DocumentTouch)
5412          ? (c = !0)
5413          : y(
5414              [
5415                "@media (",
5416                n.join("touch-enabled),("),
5417                h,
5418                ")",
5419                "{#modernizr{top:9px;position:absolute}}",
5420              ].join(""),
5421              function (a) {
5422                c = a.offsetTop === 9;
5423              }
5424            ),
5425        c
5426      );
5427    }),
5428    (s.geolocation = function () {
5429      return "geolocation" in navigator;
5430    }),
5431    (s.postmessage = function () {
5432      return !!a.postMessage;
5433    }),
5434    (s.websqldatabase = function () {
5435      return !!a.openDatabase;
5436    }),
5437    (s.indexedDB = function () {
5438      return !!J("indexedDB", a);
5439    }),
5440    (s.hashchange = function () {
5441      return A("hashchange", a) && (b.documentMode === c || b.documentMode > 7);
5442    }),
5443    (s.history = function () {
5444      return !!a.history && !!history.pushState;
5445    }),
5446    (s.draganddrop = function () {
5447      var a = b.createElement("div");
5448      return "draggable" in a || ("ondragstart" in a && "ondrop" in a);
5449    }),
5450    (s.websockets = function () {
5451      return "WebSocket" in a || "MozWebSocket" in a;
5452    }),
5453    (s.rgba = function () {
5454      return (
5455        D("background-color:rgba(150,255,150,.5)"), G(j.backgroundColor, "rgba")
5456      );
5457    }),
5458    (s.hsla = function () {
5459      return (
5460        D("background-color:hsla(120,40%,100%,.5)"),
5461        G(j.backgroundColor, "rgba") || G(j.backgroundColor, "hsla")
5462      );
5463    }),
5464    (s.multiplebgs = function () {
5465      return (
5466        D("background:url(https://),url(https://),red url(https://)"),
5467        /(url\s*\(.*?){3}/.test(j.background)
5468      );
5469    }),
5470    (s.backgroundsize = function () {
5471      return J("backgroundSize");
5472    }),
5473    (s.borderimage = function () {
5474      return J("borderImage");
5475    }),
5476    (s.borderradius = function () {
5477      return J("borderRadius");
5478    }),
5479    (s.boxshadow = function () {
5480      return J("boxShadow");
5481    }),
5482    (s.textshadow = function () {
5483      return b.createElement("div").style.textShadow === "";
5484    }),
5485    (s.opacity = function () {
5486      return E("opacity:.55"), /^0.55$/.test(j.opacity);
5487    }),
5488    (s.cssanimations = function () {
5489      return J("animationName");
5490    }),
5491    (s.csscolumns = function () {
5492      return J("columnCount");
5493    }),
5494    (s.cssgradients = function () {
5495      var a = "background-image:",
5496        b = "gradient(linear,left top,right bottom,from(#9f9),to(white));",
5497        c = "linear-gradient(left top,#9f9, white);";
5498      return (
5499        D(
5500          (a + "-webkit- ".split(" ").join(b + a) + n.join(c + a)).slice(
5501            0,
5502            -a.length
5503          )
5504        ),
5505        G(j.backgroundImage, "gradient")
5506      );
5507    }),
5508    (s.cssreflections = function () {
5509      return J("boxReflect");
5510    }),
5511    (s.csstransforms = function () {
5512      return !!J("transform");
5513    }),
5514    (s.csstransforms3d = function () {
5515      var a = !!J("perspective");
5516      return (
5517        a &&
5518          "webkitPerspective" in g.style &&
5519          y(
5520            "@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",
5521            function (b, c) {
5522              a = b.offsetLeft === 9 && b.offsetHeight === 3;
5523            }
5524          ),
5525        a
5526      );
5527    }),
5528    (s.csstransitions = function () {
5529      return J("transition");
5530    }),
5531    (s.fontface = function () {
5532      var a;
5533      return (
5534        y('@font-face {font-family:"font";src:url("https://")}', function (
5535          c,
5536          d
5537        ) {
5538          var e = b.getElementById("smodernizr"),
5539            f = e.sheet || e.styleSheet,
5540            g = f
5541              ? f.cssRules && f.cssRules[0]
5542                ? f.cssRules[0].cssText
5543                : f.cssText || ""
5544              : "";
5545          a = /src/i.test(g) && g.indexOf(d.split(" ")[0]) === 0;
5546        }),
5547        a
5548      );
5549    }),
5550    (s.generatedcontent = function () {
5551      var a;
5552      return (
5553        y(
5554          [
5555            "#",
5556            h,
5557            "{font:0/0 a}#",
5558            h,
5559            ':after{content:"',
5560            l,
5561            '";visibility:hidden;font:3px/1 a}',
5562          ].join(""),
5563          function (b) {
5564            a = b.offsetHeight >= 3;
5565          }
5566        ),
5567        a
5568      );
5569    }),
5570    (s.video = function () {
5571      var a = b.createElement("video"),
5572        c = !1;
5573      try {
5574        if ((c = !!a.canPlayType))
5575          (c = Boolean(c)),
5576            (c.ogg = a
5577              .canPlayType('video/ogg; codecs="theora"')
5578              .replace(/^no$/, "")),
5579            (c.h264 = a
5580              .canPlayType('video/mp4; codecs="avc1.42E01E"')
5581              .replace(/^no$/, "")),
5582            (c.webm = a
5583              .canPlayType('video/webm; codecs="vp8, vorbis"')
5584              .replace(/^no$/, ""));
5585      } catch (d) {}
5586      return c;
5587    }),
5588    (s.audio = function () {
5589      var a = b.createElement("audio"),
5590        c = !1;
5591      try {
5592        if ((c = !!a.canPlayType))
5593          (c = Boolean(c)),
5594            (c.ogg = a
5595              .canPlayType('audio/ogg; codecs="vorbis"')
5596              .replace(/^no$/, "")),
5597            (c.mp3 = a.canPlayType("audio/mpeg;").replace(/^no$/, "")),
5598            (c.wav = a
5599              .canPlayType('audio/wav; codecs="1"')
5600              .replace(/^no$/, "")),
5601            (c.m4a = (
5602              a.canPlayType("audio/x-m4a;") || a.canPlayType("audio/aac;")
5603            ).replace(/^no$/, ""));
5604      } catch (d) {}
5605      return c;
5606    }),
5607    (s.localstorage = function () {
5608      try {
5609        return localStorage.setItem(h, h), localStorage.removeItem(h), !0;
5610      } catch (a) {
5611        return !1;
5612      }
5613    }),
5614    (s.sessionstorage = function () {
5615      try {
5616        return sessionStorage.setItem(h, h), sessionStorage.removeItem(h), !0;
5617      } catch (a) {
5618        return !1;
5619      }
5620    }),
5621    (s.webworkers = function () {
5622      return !!a.Worker;
5623    }),
5624    (s.applicationcache = function () {
5625      return !!a.applicationCache;
5626    }),
5627    (s.svg = function () {
5628      return (
5629        !!b.createElementNS && !!b.createElementNS(r.svg, "svg").createSVGRect
5630      );
5631    }),
5632    (s.inlinesvg = function () {
5633      var a = b.createElement("div");
5634      return (
5635        (a.innerHTML = "<svg/>"),
5636        (a.firstChild && a.firstChild.namespaceURI) == r.svg
5637      );
5638    }),
5639    (s.smil = function () {
5640      return (
5641        !!b.createElementNS &&
5642        /SVGAnimate/.test(m.call(b.createElementNS(r.svg, "animate")))
5643      );
5644    }),
5645    (s.svgclippaths = function () {
5646      return (
5647        !!b.createElementNS &&
5648        /SVGClipPath/.test(m.call(b.createElementNS(r.svg, "clipPath")))
5649      );
5650    });
5651  for (var L in s)
5652    C(s, L) &&
5653      ((x = L.toLowerCase()), (e[x] = s[L]()), v.push((e[x] ? "" : "no-") + x));
5654  return (
5655    e.input || K(),
5656    (e.addTest = function (a, b) {
5657      if (typeof a == "object") for (var d in a) C(a, d) && e.addTest(d, a[d]);
5658      else {
5659        a = a.toLowerCase();
5660        if (e[a] !== c) return e;
5661        (b = typeof b == "function" ? b() : b),
5662          typeof f != "undefined" &&
5663            f &&
5664            (g.className += " " + (b ? "" : "no-") + a),
5665          (e[a] = b);
5666      }
5667      return e;
5668    }),
5669    D(""),
5670    (i = k = null),
5671    (function (a, b) {
5672      function k(a, b) {
5673        var c = a.createElement("p"),
5674          d = a.getElementsByTagName("head")[0] || a.documentElement;
5675        return (
5676          (c.innerHTML = "x<style>" + b + "</style>"),
5677          d.insertBefore(c.lastChild, d.firstChild)
5678        );
5679      }
5680      function l() {
5681        var a = r.elements;
5682        return typeof a == "string" ? a.split(" ") : a;
5683      }
5684      function m(a) {
5685        var b = i[a[g]];
5686        return b || ((b = {}), h++, (a[g] = h), (i[h] = b)), b;
5687      }
5688      function n(a, c, f) {
5689        c || (c = b);
5690        if (j) return c.createElement(a);
5691        f || (f = m(c));
5692        var g;
5693        return (
5694          f.cache[a]
5695            ? (g = f.cache[a].cloneNode())
5696            : e.test(a)
5697            ? (g = (f.cache[a] = f.createElem(a)).cloneNode())
5698            : (g = f.createElem(a)),
5699          g.canHaveChildren && !d.test(a) ? f.frag.appendChild(g) : g
5700        );
5701      }
5702      function o(a, c) {
5703        a || (a = b);
5704        if (j) return a.createDocumentFragment();
5705        c = c || m(a);
5706        var d = c.frag.cloneNode(),
5707          e = 0,
5708          f = l(),
5709          g = f.length;
5710        for (; e < g; e++) d.createElement(f[e]);
5711        return d;
5712      }
5713      function p(a, b) {
5714        b.cache ||
5715          ((b.cache = {}),
5716          (b.createElem = a.createElement),
5717          (b.createFrag = a.createDocumentFragment),
5718          (b.frag = b.createFrag())),
5719          (a.createElement = function (c) {
5720            return r.shivMethods ? n(c, a, b) : b.createElem(c);
5721          }),
5722          (a.createDocumentFragment = Function(
5723            "h,f",
5724            "return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&(" +
5725              l()
5726                .join()
5727                .replace(/\w+/g, function (a) {
5728                  return (
5729                    b.createElem(a), b.frag.createElement(a), 'c("' + a + '")'
5730                  );
5731                }) +
5732              ");return n}"
5733          )(r, b.frag));
5734      }
5735      function q(a) {
5736        a || (a = b);
5737        var c = m(a);
5738        return (
5739          r.shivCSS &&
5740            !f &&
5741            !c.hasCSS &&
5742            (c.hasCSS = !!k(
5743              a,
5744              "article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}"
5745            )),
5746          j || p(a, c),
5747          a
5748        );
5749      }
5750      var c = a.html5 || {},
5751        d = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,
5752        e = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,
5753        f,
5754        g = "_html5shiv",
5755        h = 0,
5756        i = {},
5757        j;
5758      (function () {
5759        try {
5760          var a = b.createElement("a");
5761          (a.innerHTML = "<xyz></xyz>"),
5762            (f = "hidden" in a),
5763            (j =
5764              a.childNodes.length == 1 ||
5765              (function () {
5766                b.createElement("a");
5767                var a = b.createDocumentFragment();
5768                return (
5769                  typeof a.cloneNode == "undefined" ||
5770                  typeof a.createDocumentFragment == "undefined" ||
5771                  typeof a.createElement == "undefined"
5772                );
5773              })());
5774        } catch (c) {
5775          (f = !0), (j = !0);
5776        }
5777      })();
5778      var r = {
5779        elements:
5780          c.elements ||
5781          "abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",
5782        shivCSS: c.shivCSS !== !1,
5783        supportsUnknownElements: j,
5784        shivMethods: c.shivMethods !== !1,
5785        type: "default",
5786        shivDocument: q,
5787        createElement: n,
5788        createDocumentFragment: o,
5789      };
5790      (a.html5 = r), q(b);
5791    })(this, b),
5792    (e._version = d),
5793    (e._prefixes = n),
5794    (e._domPrefixes = q),
5795    (e._cssomPrefixes = p),
5796    (e.mq = z),
5797    (e.hasEvent = A),
5798    (e.testProp = function (a) {
5799      return H([a]);
5800    }),
5801    (e.testAllProps = J),
5802    (e.testStyles = y),
5803    (e.prefixed = function (a, b, c) {
5804      return b ? J(a, b, c) : J(a, "pfx");
5805    }),
5806    (g.className =
5807      g.className.replace(/(^|\s)no-js(\s|$)/, "$1$2") +
5808      (f ? " js " + v.join(" ") : "")),
5809    e
5810  );
5811})(this, this.document)),
5812  (function (a, b, c) {
5813    function d(a) {
5814      return "[object Function]" == o.call(a);
5815    }
5816    function e(a) {
5817      return "string" == typeof a;
5818    }
5819    function f() {}
5820    function g(a) {
5821      return !a || "loaded" == a || "complete" == a || "uninitialized" == a;
5822    }
5823    function h() {
5824      var a = p.shift();
5825      (q = 1),
5826        a
5827          ? a.t
5828            ? m(function () {
5829                ("c" == a.t
5830                  ? B.injectCss
5831                  : B.injectJs)(a.s, 0, a.a, a.x, a.e, 1);
5832              }, 0)
5833            : (a(), h())
5834          : (q = 0);
5835    }
5836    function i(a, c, d, e, f, i, j) {
5837      function k(b) {
5838        if (
5839          !o &&
5840          g(l.readyState) &&
5841          ((u.r = o = 1),
5842          !q && h(),
5843          (l.onload = l.onreadystatechange = null),
5844          b)
5845        ) {
5846          "img" != a &&
5847            m(function () {
5848              t.removeChild(l);
5849            }, 50);
5850          for (var d in y[c]) y[c].hasOwnProperty(d) && y[c][d].onload();
5851        }
5852      }
5853      var j = j || B.errorTimeout,
5854        l = b.createElement(a),
5855        o = 0,
5856        r = 0,
5857        u = { t: d, s: c, e: f, a: i, x: j };
5858      1 === y[c] && ((r = 1), (y[c] = [])),
5859        "object" == a ? (l.data = c) : ((l.src = c), (l.type = a)),
5860        (l.width = l.height = "0"),
5861        (l.onerror = l.onload = l.onreadystatechange = function () {
5862          k.call(this, r);
5863        }),
5864        p.splice(e, 0, u),
5865        "img" != a &&
5866          (r || 2 === y[c]
5867            ? (t.insertBefore(l, s ? null : n), m(k, j))
5868            : y[c].push(l));
5869    }
5870    function j(a, b, c, d, f) {
5871      return (
5872        (q = 0),
5873        (b = b || "j"),
5874        e(a)
5875          ? i("c" == b ? v : u, a, b, this.i++, c, d, f)
5876          : (p.splice(this.i++, 0, a), 1 == p.length && h()),
5877        this
5878      );
5879    }
5880    function k() {
5881      var a = B;
5882      return (a.loader = { load: j, i: 0 }), a;
5883    }
5884    var l = b.documentElement,
5885      m = a.setTimeout,
5886      n = b.getElementsByTagName("script")[0],
5887      o = {}.toString,
5888      p = [],
5889      q = 0,
5890      r = "MozAppearance" in l.style,
5891      s = r && !!b.createRange().compareNode,
5892      t = s ? l : n.parentNode,
5893      l = a.opera && "[object Opera]" == o.call(a.opera),
5894      l = !!b.attachEvent && !l,
5895      u = r ? "object" : l ? "script" : "img",
5896      v = l ? "script" : u,
5897      w =
5898        Array.isArray ||
5899        function (a) {
5900          return "[object Array]" == o.call(a);
5901        },
5902      x = [],
5903      y = {},
5904      z = {
5905        timeout: function (a, b) {
5906          return b.length && (a.timeout = b[0]), a;
5907        },
5908      },
5909      A,
5910      B;
5911    (B = function (a) {
5912      function b(a) {
5913        var a = a.split("!"),
5914          b = x.length,
5915          c = a.pop(),
5916          d = a.length,
5917          c = { url: c, origUrl: c, prefixes: a },
5918          e,
5919          f,
5920          g;
5921        for (f = 0; f < d; f++)
5922          (g = a[f].split("=")), (e = z[g.shift()]) && (c = e(c, g));
5923        for (f = 0; f < b; f++) c = x[f](c);
5924        return c;
5925      }
5926      function g(a, e, f, g, h) {
5927        var i = b(a),
5928          j = i.autoCallback;
5929        i.url.split(".").pop().split("?").shift(),
5930          i.bypass ||
5931            (e &&
5932              (e = d(e)
5933                ? e
5934                : e[a] || e[g] || e[a.split("/").pop().split("?")[0]]),
5935            i.instead
5936              ? i.instead(a, e, f, g, h)
5937              : (y[i.url] ? (i.noexec = !0) : (y[i.url] = 1),
5938                f.load(
5939                  i.url,
5940                  i.forceCSS ||
5941                    (!i.forceJS &&
5942                      "css" == i.url.split(".").pop().split("?").shift())
5943                    ? "c"
5944                    : c,
5945                  i.noexec,
5946                  i.attrs,
5947                  i.timeout
5948                ),
5949                (d(e) || d(j)) &&
5950                  f.load(function () {
5951                    k(),
5952                      e && e(i.origUrl, h, g),
5953                      j && j(i.origUrl, h, g),
5954                      (y[i.url] = 2);
5955                  })));
5956      }
5957      function h(a, b) {
5958        function c(a, c) {
5959          if (a) {
5960            if (e(a))
5961              c ||
5962                (j = function () {
5963                  var a = [].slice.call(arguments);
5964                  k.apply(this, a), l();
5965                }),
5966                g(a, j, b, 0, h);
5967            else if (Object(a) === a)
5968              for (n in ((m = (function () {
5969                var b = 0,
5970                  c;
5971                for (c in a) a.hasOwnProperty(c) && b++;
5972                return b;
5973              })()),
5974              a))
5975                a.hasOwnProperty(n) &&
5976                  (!c &&
5977                    !--m &&
5978                    (d(j)
5979                      ? (j = function () {
5980                          var a = [].slice.call(arguments);
5981                          k.apply(this, a), l();
5982                        })
5983                      : (j[n] = (function (a) {
5984                          return function () {
5985                            var b = [].slice.call(arguments);
5986                            a && a.apply(this, b), l();
5987                          };
5988                        })(k[n]))),
5989                  g(a[n], j, b, n, h));
5990          } else !c && l();
5991        }
5992        var h = !!a.test,
5993          i = a.load || a.both,
5994          j = a.callback || f,
5995          k = j,
5996          l = a.complete || f,
5997          m,
5998          n;
5999        c(h ? a.yep : a.nope, !!i), i && c(i);
6000      }
6001      var i,
6002        j,
6003        l = this.yepnope.loader;
6004      if (e(a)) g(a, 0, l, 0);
6005      else if (w(a))
6006        for (i = 0; i < a.length; i++)
6007          (j = a[i]),
6008            e(j) ? g(j, 0, l, 0) : w(j) ? B(j) : Object(j) === j && h(j, l);
6009      else Object(a) === a && h(a, l);
6010    }),
6011      (B.addPrefix = function (a, b) {
6012        z[a] = b;
6013      }),
6014      (B.addFilter = function (a) {
6015        x.push(a);
6016      }),
6017      (B.errorTimeout = 1e4),
6018      null == b.readyState &&
6019        b.addEventListener &&
6020        ((b.readyState = "loading"),
6021        b.addEventListener(
6022          "DOMContentLoaded",
6023          (A = function () {
6024            b.removeEventListener("DOMContentLoaded", A, 0),
6025              (b.readyState = "complete");
6026          }),
6027          0
6028        )),
6029      (a.yepnope = k()),
6030      (a.yepnope.executeStack = h),
6031      (a.yepnope.injectJs = function (a, c, d, e, i, j) {
6032        var k = b.createElement("script"),
6033          l,
6034          o,
6035          e = e || B.errorTimeout;
6036        k.src = a;
6037        for (o in d) k.setAttribute(o, d[o]);
6038        (c = j ? h : c || f),
6039          (k.onreadystatechange = k.onload = function () {
6040            !l &&
6041              g(k.readyState) &&
6042              ((l = 1), c(), (k.onload = k.onreadystatechange = null));
6043          }),
6044          m(function () {
6045            l || ((l = 1), c(1));
6046          }, e),
6047          i ? k.onload() : n.parentNode.insertBefore(k, n);
6048      }),
6049      (a.yepnope.injectCss = function (a, c, d, e, g, i) {
6050        var e = b.createElement("link"),
6051          j,
6052          c = i ? h : c || f;
6053        (e.href = a), (e.rel = "stylesheet"), (e.type = "text/css");
6054        for (j in d) e.setAttribute(j, d[j]);
6055        g || (n.parentNode.insertBefore(e, n), m(c, 0));
6056      });
6057  })(this, document),
6058  (Modernizr.load = function () {
6059    yepnope.apply(window, [].slice.call(arguments, 0));
6060  });
6061
6062
6063

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