/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
!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&&"function"!=typeof e.item},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.6.0",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(),j=function(e,t){return e===t&&(l=!0),0},D={}.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&&e.namespaceURI,n=e&&(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},j=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&&D.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(j),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}: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];if(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(j).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 j(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(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var D,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"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,D=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="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return 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=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=/^([^.]*)(?:\.(.+)|)/;function we(){return!0}function Te(){return!1}function Ce(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ee(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)Ee(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=Te;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 Se(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&&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,we)}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=be.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=be.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")&&Se(t,"click",we),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(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?we:Te,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:Te,isPropagationStopped:Te,isImmediatePropagationStopped:Te,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=we,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=we,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=we,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:!0},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Se(this,e,Ce),!1},trigger:function(){return Se(this,e),!0},_default:function(){return!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 Ee(this,e,t,n,r)},one:function(e,t,n,r){return Ee(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=Te),this.each(function(){S.event.remove(this,e,n,t)})}});var ke=/<script|<style|<link/i,Ae=/checked\s*(?:[^=]|=\s*.checked.)/i,Ne=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(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 He(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&&Ae.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),He(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"),De)).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,qe),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(Ne,""),u,l))}return n}function Oe(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++)Le(o[r],a[r]);else Le(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 Oe(this,e,!0)},remove:function(e){return Oe(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 He(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||je(this,e).appendChild(e)})},prepend:function(){return He(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=je(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return He(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&&!ke.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 He(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 Pe=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Re=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Me=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},Ie=new RegExp(ne.join("|"),"i");function We(e,t,n){var r,i,o,a,s=e.style;return(n=n||Re(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Pe.test(a)&&Ie.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 Fe(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;border-collapse:separate",t.style.cssText="border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,re.removeChild(e)),a}}))}();var Be=["Webkit","Moz","ms"],$e=E.createElement("div").style,_e={};function ze(e){var t=S.cssProps[e]||_e[e];return t||(e in $e?e:_e[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Be.length;while(n--)if((e=Be[n]+t)in $e)return e}(e)||e)}var Ue=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ve={position:"absolute",visibility:"hidden",display:"block"},Ge={letterSpacing:"0",fontWeight:"400"};function Ye(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Qe(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 Je(e,t,n){var r=Re(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=We(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Pe.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)+Qe(e,t,n||(i?"border":"content"),o,r,a)+"px"}function Ke(e,t,n,r,i){return new Ke.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=We(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=Xe.test(t),l=e.style;if(u||(t=ze(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 Xe.test(t)||(t=ze(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=We(e,t,r)),"normal"===i&&t in Ge&&(i=Ge[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!Ue.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Je(e,u,n):Me(e,Ve,function(){return Je(e,u,n)})},set:function(e,t,n){var r,i=Re(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Qe(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Qe(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=S.css(e,u)),Ye(0,t,s)}}}),S.cssHooks.marginLeft=Fe(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(We(e,"marginLeft"))||e.getBoundingClientRect().left-Me(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=Ye)}),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=Re(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=Ke).prototype={constructor:Ke,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=Ke.propHooks[this.prop];return e&&e.get?e.get(this):Ke.propHooks._default.get(this)},run:function(e){var t,n=Ke.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):Ke.propHooks._default.set(this),this}}).init.prototype=Ke.prototype,(Ke.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[ze(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=Ke.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=Ke.prototype.init,S.fx.step={};var Ze,et,tt,nt,rt=/^(?:toggle|show|hide)$/,it=/queueHooks$/;function ot(){et&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(ot):C.setTimeout(ot,S.fx.interval),S.fx.tick())}function at(){return C.setTimeout(function(){Ze=void 0}),Ze=Date.now()}function st(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 ut(e,t,n){for(var r,i=(lt.tweeners[t]||[]).concat(lt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function lt(o,e,t){var n,a,r=0,i=lt.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=Ze||at(),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:Ze||at(),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=lt.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,ut,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(lt,{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],lt.tweeners[n]=lt.tweeners[n]||[],lt.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],rt.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=ut(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?lt.prefilters.unshift(e):lt.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=lt(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&&it.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(st(r,!0),e,t,n)}}),S.each({slideDown:st("show"),slideUp:st("hide"),slideToggle:st("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(Ze=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),Ze=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){et||(et=!0,ot())},S.fx.stop=function(){et=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)}})},tt=E.createElement("input"),nt=E.createElement("select").appendChild(E.createElement("option")),tt.type="checkbox",y.checkOn=""!==tt.value,y.optSelected=nt.selected,(tt=E.createElement("input")).value="t",tt.type="radio",y.radioValue="t"===tt.value;var ct,ft=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)?ct: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)}}),ct={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=ft[t]||S.find.attr;ft[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=ft[o],ft[o]=r,r=null!=a(e,t,n)?o:null,ft[o]=i),r}});var pt=/^(?:input|select|textarea|button)$/i,dt=/^(?:a|area)$/i;function ht(e){return(e.match(P)||[]).join(" ")}function gt(e){return e.getAttribute&&e.getAttribute("class")||""}function vt(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):pt.test(e.nodeName)||dt.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,gt(this)))});if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=ht(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,gt(this)))});if(!arguments.length)return this.attr("class","");if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=ht(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,gt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=vt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=gt(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<(" "+ht(gt(n))+" ").indexOf(t))return!0;return!1}});var yt=/\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(yt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:ht(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 mt=/^(?:focusinfocus|focusoutblur)$/,xt=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&&!mt.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,mt.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,xt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,xt),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 bt=C.location,wt={guid:Date.now()},Tt=/\?/;S.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||S.error("Invalid XML: "+(n?S.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var Ct=/\[\]$/,Et=/\r?\n/g,St=/^(?:submit|button|image|reset|file)$/i,kt=/^(?:input|select|textarea|keygen)/i;function At(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||Ct.test(n)?i(n,t):At(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)At(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)At(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")&&kt.test(this.nodeName)&&!St.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(Et,"\r\n")}}):{name:t.name,value:n.replace(Et,"\r\n")}}).get()}});var Nt=/%20/g,jt=/#.*$/,Dt=/([?&])_=[^&]*/,qt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Lt=/^(?:GET|HEAD)$/,Ht=/^\/\//,Ot={},Pt={},Rt="*/".concat("*"),Mt=E.createElement("a");function It(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 Wt(t,i,o,a){var s={},u=t===Pt;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 Ft(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}Mt.href=bt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:bt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(bt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Rt,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?Ft(Ft(e,S.ajaxSettings),t):Ft(S.ajaxSettings,e)},ajaxPrefilter:It(Ot),ajaxTransport:It(Pt),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=qt.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||bt.href)+"").replace(Ht,bt.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=Mt.protocol+"//"+Mt.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)),Wt(Ot,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=!Lt.test(v.type),f=v.url.replace(jt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Nt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Tt.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Dt,"$1"),o=(Tt.test(f)?"&":"?")+"_="+wt.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]?", "+Rt+"; 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=Wt(Pt,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)&&S.inArray("json",v.dataTypes)<0&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(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 Bt={0:200,1223:204},$t=S.ajaxSettings.xhr();y.cors=!!$t&&"withCredentials"in $t,y.ajax=$t=!!$t,S.ajaxTransport(function(i){var o,a;if(y.cors||$t&&!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(Bt[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 _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.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(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.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,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===_t.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=ht(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):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]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.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 Xt=/^[\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(Xt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Vt=C.jQuery,Gt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Gt),e&&C.jQuery===S&&(C.jQuery=Vt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});

;
/*!
 * jQuery Cookie Plugin v1.4.1
 * https://github.com/carhartl/jquery-cookie
 *
 * Copyright 2006, 2014 Klaus Hartl
 * Released under the MIT license
 */
(function (factory) {
	if (typeof define === 'function' && define.amd) {
		// AMD
		define(['jquery'], factory);
	} else if (typeof exports === 'object') {
		// CommonJS
		factory(require('jquery'));
	} else {
		// Browser globals
		factory(jQuery);
	}
}(function ($) {

	var pluses = /\+/g;

	function encode(s) {
		return config.raw ? s : encodeURIComponent(s);
	}

	function decode(s) {
		return config.raw ? s : decodeURIComponent(s);
	}

	function stringifyCookieValue(value) {
		return encode(config.json ? JSON.stringify(value) : String(value));
	}

	function parseCookieValue(s) {
		if (s.indexOf('"') === 0) {
			// This is a quoted cookie as according to RFC2068, unescape...
			s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
		}

		try {
			// Replace server-side written pluses with spaces.
			// If we can't decode the cookie, ignore it, it's unusable.
			// If we can't parse the cookie, ignore it, it's unusable.
			s = decodeURIComponent(s.replace(pluses, ' '));
			return config.json ? JSON.parse(s) : s;
		} catch(e) {}
	}

	function read(s, converter) {
		var value = config.raw ? s : parseCookieValue(s);
		return $.isFunction(converter) ? converter(value) : value;
	}

	var config = $.cookie = function (key, value, options) {

		// Write

		if (arguments.length > 1 && !$.isFunction(value)) {
			options = $.extend({}, config.defaults, options);

			if (typeof options.expires === 'number') {
				var days = options.expires, t = options.expires = new Date();
				t.setTime(+t + days * 864e+5);
			}

			return (document.cookie = [
				encode(key), '=', stringifyCookieValue(value),
				options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
				options.path    ? '; path=' + options.path : '',
				options.domain  ? '; domain=' + options.domain : '',
				options.secure  ? '; secure' : ''
			].join(''));
		}

		// Read

		var result = key ? undefined : {};

		// To prevent the for loop in the first place assign an empty array
		// in case there are no cookies at all. Also prevents odd result when
		// calling $.cookie().
		var cookies = document.cookie ? document.cookie.split('; ') : [];

		for (var i = 0, l = cookies.length; i < l; i++) {
			var parts = cookies[i].split('=');
			var name = decode(parts.shift());
			var cookie = parts.join('=');

			if (key && key === name) {
				// If second argument (value) is a function it's a converter...
				result = read(cookie, value);
				break;
			}

			// Prevent storing a cookie that we couldn't decode.
			if (!key && (cookie = read(cookie)) !== undefined) {
				result[name] = cookie;
			}
		}

		return result;
	};

	config.defaults = {};

	$.removeCookie = function (key, options) {
		if ($.cookie(key) === undefined) {
			return false;
		}

		// Must not alter options, thus extending a fresh object...
		$.cookie(key, '', $.extend({}, options, { expires: -1 }));
		return !$.cookie(key);
	};

}));
;
/*global __tcfapi, __cmp, __gpp, console, Promise */
var bizx = window.bizx || {};
bizx.cmp = {};

bizx.cmp.ccpaInterstitialContent = '<h2>YOUR PRIVACY CHOICES (DO NOT SELL/SHARE/TARGET)</h2><p>Under some U.S. Privacy Laws, consumers have the right to opt-out of processing of personal info for "targeted advertising," and activities that are classified as "sale" and/or "sharing." To submit an opt-out request that will apply to personal information collected by cookies and other tracking technologies ("cookie PI"), move the toggle below to the left and click "Confirm My Cookie PI Choice."<p>We will apply the opt-out to cookies that may implicate "sale", "sharing," or "targeted advertising." There are other cookies, such as essential cookies and other cookies operated by "service providers" or "processors" to which we do not apply the opt-out. You must exercise your preferences on each of our websites you visit, from each browser you use, and on each device that you use. If you clear or block cookies, your preferences will no longer be effective, and you will need to enable them again via this tool. In addition, this tool only has the capability of applying your opt-out to cookies.<p>To submit an opt-out request as to non-cookie PI (such as email address):<ul><li>If you are logged into your account, we will also apply your cookie PI opt-out request to non-cookie PI such as email address. You do not need to take further action to apply your opt-out to non-cookie PI.<li>If you are not logged into an account, you must opt-out separately. Please click on the "Non-Cookie PI Opt-Out" button below to access our webform.</ul><p>For more information regarding our privacy practices, please visit our <a href="https://slashdotmedia.com/privacy-statement/" rel=nofollow target=_blank>Privacy Policy</a> and <a href="https://slashdotmedia.com/privacy-statement/#rightsToKnow" rel=nofollow target=_blank>U.S. State Privacy Policy</a>.<br>To submit an information request or to request deletion, <a href="https://privacyportal.onetrust.com/webform/611e70e2-1994-43ff-b07b-646df870db4b/f4165d65-f39c-4ea5-8628-163090b74137" target=_blank>use this form</a>.<div class=ccpa-modal-inner><section><div><a href="https://privacyportal-cdn.onetrust.com/dsarwebform/611e70e2-1994-43ff-b07b-646df870db4b/c1c0acac-ab24-4dac-b3e6-43421a684626.html" rel=nofollow target=_blank class="button green">NON-COOKIE PI OPT-OUT FORM</a></div><div><div class=toggler><span class=out>Opted-out</span> <input id=opt-toggle type=checkbox> <span class=in>Opted-in</span></div><div id=cmp-confirm-msg></div><a href=# class="button green" id=cmp-submit-request>CONFIRM MY COOKIE-PI CHOICE</a></div></section></div>';

/* jshint ignore:start */
/* https://github.com/taylorhakes/promise-polyfill */
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n():"function"==typeof define&&define.amd?define(n):n()}(0,function(){"use strict";function e(){}function n(e){if(!(this instanceof n))throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=undefined,this._deferreds=[],f(e,this)}function t(e,t){for(;3===e._state;)e=e._value;0!==e._state?(e._handled=!0,n._immediateFn(function(){var n=1===e._state?t.onFulfilled:t.onRejected;if(null!==n){var i;try{i=n(e._value)}catch(f){return void r(t.promise,f)}o(t.promise,i)}else(1===e._state?o:r)(t.promise,e._value)})):e._deferreds.push(t)}function o(e,t){try{if(t===e)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var o=t.then;if(t instanceof n)return e._state=3,e._value=t,void i(e);if("function"==typeof o)return void f(function(e,n){return function(){e.apply(n,arguments)}}(o,t),e)}e._state=1,e._value=t,i(e)}catch(u){r(e,u)}}function r(e,n){e._state=2,e._value=n,i(e)}function i(e){2===e._state&&0===e._deferreds.length&&n._immediateFn(function(){e._handled||n._unhandledRejectionFn(e._value)});for(var o=0,r=e._deferreds.length;r>o;o++)t(e,e._deferreds[o]);e._deferreds=null}function f(e,n){var t=!1;try{e(function(e){t||(t=!0,o(n,e))},function(e){t||(t=!0,r(n,e))})}catch(i){if(t)return;t=!0,r(n,i)}}var u=function(e){var n=this.constructor;return this.then(function(t){return n.resolve(e()).then(function(){return t})},function(t){return n.resolve(e()).then(function(){return n.reject(t)})})},c=setTimeout;n.prototype["catch"]=function(e){return this.then(null,e)},n.prototype.then=function(n,o){var r=new this.constructor(e);return t(this,new function(e,n,t){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof n?n:null,this.promise=t}(n,o,r)),r},n.prototype["finally"]=u,n.all=function(e){return new n(function(n,t){function o(e,f){try{if(f&&("object"==typeof f||"function"==typeof f)){var u=f.then;if("function"==typeof u)return void u.call(f,function(n){o(e,n)},t)}r[e]=f,0==--i&&n(r)}catch(c){t(c)}}if(!e||"undefined"==typeof e.length)throw new TypeError("Promise.all accepts an array");var r=Array.prototype.slice.call(e);if(0===r.length)return n([]);for(var i=r.length,f=0;r.length>f;f++)o(f,r[f])})},n.resolve=function(e){return e&&"object"==typeof e&&e.constructor===n?e:new n(function(n){n(e)})},n.reject=function(e){return new n(function(n,t){t(e)})},n.race=function(e){return new n(function(n,t){for(var o=0,r=e.length;r>o;o++)e[o].then(n,t)})},n._immediateFn="function"==typeof setImmediate&&function(e){setImmediate(e)}||function(e){c(e,0)},n._unhandledRejectionFn=function(e){void 0!==console&&console&&console.warn("Possible Unhandled Promise Rejection:",e)};var l=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw Error("unable to locate global object")}();l.Promise?l.Promise.prototype["finally"]||(l.Promise.prototype["finally"]=u):l.Promise=n});
/* jshint ignore:end */

// very simple polyfill, not supporting fromIndex 2nd param
if (!Array.prototype.includes) {
  Object.defineProperty(Array.prototype, 'includes', {
      value: function (searchElement) {
          return this.indexOf(searchElement) !== -1;
      }
  });
}

// appends a new element next to do not sell information button when a global privacy control signal is received
var OptOutHonored = {
    init: function(){
        this.mobile = window.matchMedia('(max-width: 992px)');
        var nosellbtn = document.getElementById('opt-out-button');
        if (nosellbtn && nosellbtn.offsetParent !== null){ //make sure is not hidden
            this.appendElement(nosellbtn);
            return false;
        }

        var buttons = document.getElementsByTagName('button');
        var searchText = 'Do Not Sell or Share My Personal Information';
        for (var i = 0; i < buttons.length; i++) {
            if (buttons[i].innerText.trim() === searchText) {
            this.appendElement(buttons[i]);
            break;
            }
        }
    },
    appendElement: function(nosellbtn) {
        if (document.getElementById('honored-container')){
            return false;
        }
        var container = document.createElement('div');
        container.setAttribute('id', 'honored-container');
        container.setAttribute('style', 'display:flex;gap:5px;');
        nosellbtn.setAttribute('style', nosellbtn.getAttribute('style') + 'margin-right:0;');
        var honoredbtn = document.createElement('button');
        honoredbtn.setAttribute('class', 'button blue hollow short btn opt-out');
        honoredbtn.setAttribute('style', 'pointer-events: none;margin-right:0;');
        honoredbtn.innerHTML = "&#10003; Opt-Out Preference Signal Honored";
        if (nosellbtn.parentNode.tagName === 'LI') { // all sites except sf, slashdotmedia, wirefly
            nosellbtn.parentNode.style.display = 'flex';
            nosellbtn.parentNode.style.justifyContent = 'flex-start';
            honoredbtn.setAttribute('id', 'opt-out-button');
            if (window.location.hostname.includes('linuxjournal')) {
                honoredbtn.removeAttribute('class'); // remove rounded corners on button
                honoredbtn.setAttribute('class', 'opt-out');
            }
        }
        if (nosellbtn.tagName === 'DIV' ){
            if (window.location.hostname.includes('tmonews')) {// is tmonews
                container.style.flexDirection = 'column';
                honoredbtn.removeAttribute('class');
                honoredbtn.setAttribute('class', 'button-outer');
            }
            if (window.location.hostname.includes('voipreview')) {
                honoredbtn.style.fontWeight = 'bold';
                honoredbtn.style.fontSise = '12px';
                honoredbtn.style.setProperty("color", "#000", "important");
                honoredbtn.style.borderRadius = '25px';
                honoredbtn.style.height = '35px';
                nosellbtn.style.height = '35px';
            }
        }
        if (window.location.hostname.includes('wirefly')){ // is wirefly.com
            container.removeAttribute('style');
            container.setAttribute('style','float:left');
            nosellbtn.style.margin = '0';

        }
        if (window.location.hostname.includes('library.slashdotmedia.com')) {
            honoredbtn.removeAttribute('class');
            honoredbtn.setAttribute('class', 'opt-out');
        }
        if (nosellbtn.parentNode.className === 'et_pb_text_inner'){ // slashdotmedia
            var styles = honoredbtn.getAttribute('style') + 'border: 1px solid white;font-weight:bold;';
            container.style.flexDirection = 'column';
            honoredbtn.removeAttribute('class');
            honoredbtn.setAttribute('class', 'policyBTN');
            if (nosellbtn.getAttribute('id') !== 'opt-out-button-mobile'){
                styles += 'color:#008BC7;';
            }
            honoredbtn.setAttribute('style', styles);
        }
        if (window.location.hostname.includes('tahoesbest')){
            honoredbtn.style.fontWeight = 'bold';
            honoredbtn.style.textTransform = 'uppercase';
            honoredbtn.style.color = '#816A4F';
        }
        nosellbtn.parentNode.insertBefore(honoredbtn, nosellbtn.nextSibling);
        nosellbtn.parentNode.appendChild(container);
        container.appendChild(nosellbtn);
        container.appendChild(honoredbtn);
        var that = this;
        this.mobile.onchange = function(e) {
            that.mobileListener(e, container);
        };
        this.mobileListener(this.mobile, container);
    },
    mobileListener: function(event, container){
        if (event.matches){
            container.style.justifyContent = 'center';
            container.style.flex = '1';
            if (window.location.hostname.includes('tmonews')) {
                container.style.marginTop = '30px';
            }
        }else{
            if (!window.location.hostname.includes('slashdot.org')) {
                container.style.justifyContent = 'flex-end';
            }
        }
    }
};

bizx.cmp.default_cmp_id = 11319;

/* this is a lightly modified version of the snippet as copied from consentmanager.net.
   if it ever needs to be updated again from the CMnet console, these mods will have to made again by hand:
   - changes the main entry point from self-invoking to a named function
   - cmp_id can be passed in, or defaults to our main CMP id
*/
/*jshint ignore:start*/

bizx.cmp.embedCMPSnippet = function (cmp_id) {
    window.gdprAppliesGlobally = false;
    var cmp_cdid = {
        '11319': 'f46fb9b4e114',
        '12126': 'dba15d148b97',
        '13101': '8a4e60353a46',
        '59316': '41874560817f2',
    }
    if (!("cmp_id" in window) || window.cmp_id < 1) {
        window.cmp_id = 0
    }
    if (!("cmp_cdid" in window)) {
        window.cmp_cdid = cmp_cdid[cmp_id || bizx.cmp.default_cmp_id];
    }
    if (!("cmp_params" in window)) {
        window.cmp_params = ""
    }
    if (!("cmp_host" in window)) {
        window.cmp_host = "d.delivery.consentmanager.net"
    }
    if (!("cmp_cdn" in window)) {
        window.cmp_cdn = "cdn.consentmanager.net"
    }
    if (!("cmp_proto" in window)) {
        window.cmp_proto = "https:"
    }
    if (!("cmp_codesrc" in window)) {
        window.cmp_codesrc = "1"
    }
    window.cmp_getsupportedLangs = function () {
        var b = ["DE", "EN", "FR", "IT", "NO", "DA", "FI", "ES", "PT", "RO", "BG", "ET", "EL", "GA", "HR", "LV", "LT", "MT", "NL", "PL", "SV", "SK", "SL", "CS", "HU", "RU", "SR", "ZH", "TR", "UK", "AR", "BS"];
        if ("cmp_customlanguages" in window) {
            for (var a = 0; a < window.cmp_customlanguages.length; a++) {
                b.push(window.cmp_customlanguages[a].l.toUpperCase())
            }
        }
        return b
    };
    window.cmp_getRTLLangs = function () {
        var a = ["AR"];
        if ("cmp_customlanguages" in window) {
            for (var b = 0; b < window.cmp_customlanguages.length; b++) {
                if ("r" in window.cmp_customlanguages[b] && window.cmp_customlanguages[b].r) {
                    a.push(window.cmp_customlanguages[b].l)
                }
            }
        }
        return a
    };
    window.cmp_getlang = function (j) {
        if (typeof (j) != "boolean") {
            j = true
        }
        if (j && typeof (cmp_getlang.usedlang) == "string" && cmp_getlang.usedlang !== "") {
            return cmp_getlang.usedlang
        }
        var g = window.cmp_getsupportedLangs();
        var c = [];
        var f = location.hash;
        var e = location.search;
        var a = "languages" in navigator ? navigator.languages : [];
        if (f.indexOf("cmplang=") != -1) {
            c.push(f.substr(f.indexOf("cmplang=") + 8, 2).toUpperCase())
        } else {
            if (e.indexOf("cmplang=") != -1) {
                c.push(e.substr(e.indexOf("cmplang=") + 8, 2).toUpperCase())
            } else {
                if ("cmp_setlang" in window && window.cmp_setlang != "") {
                    c.push(window.cmp_setlang.toUpperCase())
                } else {
                    if (a.length > 0) {
                        for (var d = 0; d < a.length; d++) {
                            c.push(a[d])
                        }
                    }
                }
            }
        }
        if ("language" in navigator) {
            c.push(navigator.language)
        }
        if ("userLanguage" in navigator) {
            c.push(navigator.userLanguage)
        }
        var h = "";
        for (var d = 0; d < c.length; d++) {
            var b = c[d].toUpperCase();
            if (g.indexOf(b) != -1) {
                h = b;
                break
            }
            if (b.indexOf("-") != -1) {
                b = b.substr(0, 2)
            }
            if (g.indexOf(b) != -1) {
                h = b;
                break
            }
        }
        if (h == "" && typeof (cmp_getlang.defaultlang) == "string" && cmp_getlang.defaultlang !== "") {
            return cmp_getlang.defaultlang
        } else {
            if (h == "") {
                h = "EN"
            }
        }
        h = h.toUpperCase();
        return h
    };
    (function () {
        var n = document;
        // var p = n.getElementsByTagName;
        var q = window;
        var f = "";
        var b = "_en";
        if ("cmp_getlang" in q) {
            f = q.cmp_getlang().toLowerCase();
            if ("cmp_customlanguages" in q) {
                for (var h = 0; h < q.cmp_customlanguages.length; h++) {
                    if (q.cmp_customlanguages[h].l.toUpperCase() == f.toUpperCase()) {
                        f = "en";
                        break
                    }
                }
            }
            b = "_" + f
        }

        function g(i, e) {
            var t = "";
            i += "=";
            var s = i.length;
            var d = location;
            if (d.hash.indexOf(i) != -1) {
                t = d.hash.substr(d.hash.indexOf(i) + s, 9999)
            } else {
                if (d.search.indexOf(i) != -1) {
                    t = d.search.substr(d.search.indexOf(i) + s, 9999)
                } else {
                    return e
                }
            }
            if (t.indexOf("&") != -1) {
                t = t.substr(0, t.indexOf("&"))
            }
            return t
        }

        var j = ("cmp_proto" in q) ? q.cmp_proto : "https:";
        if (j != "http:" && j != "https:") {
            j = "https:"
        }
        var k = ("cmp_ref" in q) ? q.cmp_ref : location.href;
        var r = n.createElement("script");
        r.setAttribute("data-cmp-ab", "1");
        var c = g("cmpdesign", "cmp_design" in q ? q.cmp_design : "");
        var a = g("cmpregulationkey", "cmp_regulationkey" in q ? q.cmp_regulationkey : "");
        var o = g("cmpatt", "cmp_att" in q ? q.cmp_att : "");
        r.src = j + "//" + q.cmp_host + "/delivery/cmp.php?" + ("cmp_id" in q && q.cmp_id > 0 ? "id=" + q.cmp_id : "") + ("cmp_cdid" in q ? "&cdid=" + q.cmp_cdid : "") + "&h=" + encodeURIComponent(k) + (c != "" ? "&cmpdesign=" + encodeURIComponent(c) : "") + (a != "" ? "&cmpregulationkey=" + encodeURIComponent(a) : "") + (o != "" ? "&cmpatt=" + encodeURIComponent(o) : "") + ("cmp_params" in q ? "&" + q.cmp_params : "") + (n.cookie.length > 0 ? "&__cmpfcc=1" : "") + "&l=" + f.toLowerCase() + "&o=" + (new Date()).getTime();
        r.type = "text/javascript";
        r.async = true;
        if (n.currentScript && n.currentScript.parentElement) {
            n.currentScript.parentElement.appendChild(r)
        } else {
            if (n.body) {
                n.body.appendChild(r)
            } else {
                var m = n.getElementsByTagName("body");
                if (m.length == 0) {
                    m = n.getElementsByTagName("div")
                }
                if (m.length == 0) {
                    m = n.getElementsByTagName("span")
                }
                if (m.length == 0) {
                    m = n.getElementsByTagName("ins")
                }
                if (m.length == 0) {
                    m = n.getElementsByTagName("script")
                }
                if (m.length == 0) {
                    m = n.getElementsByTagName("head")
                }
                if (m.length > 0) {
                    m[0].appendChild(r)
                }
            }
        }
        var r = n.createElement("script");
        r.src = j + "//" + q.cmp_cdn + "/delivery/js/cmp" + b + ".min.js";
        r.type = "text/javascript";
        r.setAttribute("data-cmp-ab", "1");
        r.async = true;
        if (n.currentScript && n.currentScript.parentElement) {
            n.currentScript.parentElement.appendChild(r)
        } else {
            if (n.body) {
                n.body.appendChild(r)
            } else {
                var m = n.getElementsByTagName("body");
                if (m.length == 0) {
                    m = n.getElementsByTagName("div")
                }
                if (m.length == 0) {
                    m = n.getElementsByTagName("span")
                }
                if (m.length == 0) {
                    m = n.getElementsByTagName("ins")
                }
                if (m.length == 0) {
                    m = n.getElementsByTagName("script")
                }
                if (m.length == 0) {
                    m = n.getElementsByTagName("head")
                }
                if (m.length > 0) {
                    m[0].appendChild(r)
                }
            }
        }
    })();
    window.cmp_addFrame = function (b) {
        if (!window.frames[b]) {
            if (document.body) {
                var a = document.createElement("iframe");
                a.style.cssText = "display:none";
                if ("cmp_cdn" in window && "cmp_ultrablocking" in window && window.cmp_ultrablocking > 0) {
                    a.src = "//" + window.cmp_cdn + "/delivery/empty.html"
                }
                a.name = b;
                document.body.appendChild(a)
            } else {
                window.setTimeout(window.cmp_addFrame, 10, b)
            }
        }
    };
    window.cmp_rc = function (h) {
        var b = document.cookie;
        var f = "";
        var d = 0;
        while (b != "" && d < 100) {
            d++;
            while (b.substr(0, 1) == " ") {
                b = b.substr(1, b.length)
            }
            var g = b.substring(0, b.indexOf("="));
            if (b.indexOf(";") != -1) {
                var c = b.substring(b.indexOf("=") + 1, b.indexOf(";"))
            } else {
                var c = b.substr(b.indexOf("=") + 1, b.length)
            }
            if (h == g) {
                f = c
            }
            var e = b.indexOf(";") + 1;
            if (e == 0) {
                e = b.length
            }
            b = b.substring(e, b.length)
        }
        return (f)
    };
    window.cmp_stub = function () {
        var a = arguments;
        __cmp.a = __cmp.a || [];
        if (!a.length) {
            return __cmp.a
        } else {
            if (a[0] === "ping") {
                if (a[1] === 2) {
                    a[2]({
                        gdprApplies: gdprAppliesGlobally,
                        cmpLoaded: false,
                        cmpStatus: "stub",
                        displayStatus: "hidden",
                        apiVersion: "2.0",
                        cmpId: 31
                    }, true)
                } else {
                    a[2](false, true)
                }
            } else {
                if (a[0] === "getUSPData") {
                    a[2]({version: 1, uspString: window.cmp_rc("")}, true)
                } else {
                    if (a[0] === "getTCData") {
                        __cmp.a.push([].slice.apply(a))
                    } else {
                        if (a[0] === "addEventListener" || a[0] === "removeEventListener") {
                            __cmp.a.push([].slice.apply(a))
                        } else {
                            if (a.length == 4 && a[3] === false) {
                                a[2]({}, false)
                            } else {
                                __cmp.a.push([].slice.apply(a))
                            }
                        }
                    }
                }
            }
        }
    };
    window.cmp_gppstub = function () {
        var a = arguments;
        __gpp.q = __gpp.q || [];
        if (!a.length) {
            return __gpp.q
        }
        var g = a[0];
        var f = a.length > 1 ? a[1] : null;
        var e = a.length > 2 ? a[2] : null;
        if (g === "ping") {
            return {
                gppVersion: "1.0",
                cmpStatus: "stub",
                cmpDisplayStatus: "hidden",
                apiSupport: ["tcfeuv2", "tcfva", "usnat"],
                currentAPI: "",
                cmpId: 31
            }
        } else {
            if (g === "addEventListener") {
                __gpp.e = __gpp.e || [];
                if (!("lastId" in __gpp)) {
                    __gpp.lastId = 0
                }
                __gpp.lastId++;
                var c = __gpp.lastId;
                __gpp.e.push({id: c, callback: f});
                return {
                    eventName: "listenerRegistered",
                    listenerId: c,
                    data: true,
                    pingData: {
                        gppVersion: "1.0",
                        cmpStatus: "stub",
                        cmpDisplayStatus: "hidden",
                        apiSupport: [],
                        currentAPI: "",
                        cmpId: 31
                    }
                }
            } else {
                if (g === "removeEventListener") {
                    var h = false;
                    __gpp.e = __gpp.e || [];
                    for (var d = 0; d < __gpp.e.length; d++) {
                        if (__gpp.e[d].id == e) {
                            __gpp.e[d].splice(d, 1);
                            h = true;
                            break
                        }
                    }
                    return {eventName: "listenerRemoved", listenerId: e, data: h}
                } else {
                    if (g === "hasSection" || g === "getSection" || g === "getField" || g === "getGPPString") {
                        return null
                    } else {
                        __gpp.q.push([].slice.apply(a))
                    }
                }
            }
        }
    };
    window.cmp_msghandler = function (d) {
        var a = typeof d.data === "string";
        try {
            var c = a ? JSON.parse(d.data) : d.data
        } catch (f) {
            var c = null
        }
        if (typeof (c) === "object" && c !== null && "__cmpCall" in c) {
            var b = c.__cmpCall;
            window.__cmp(b.command, b.parameter, function (h, g) {
                var e = {__cmpReturn: {returnValue: h, success: g, callId: b.callId}};
                d.source.postMessage(a ? JSON.stringify(e) : e, "*")
            })
        }
        if (typeof (c) === "object" && c !== null && "__uspapiCall" in c) {
            var b = c.__uspapiCall;
            window.__uspapi(b.command, b.version, function (h, g) {
                var e = {__uspapiReturn: {returnValue: h, success: g, callId: b.callId}};
                d.source.postMessage(a ? JSON.stringify(e) : e, "*")
            })
        }
        if (typeof (c) === "object" && c !== null && "__tcfapiCall" in c) {
            var b = c.__tcfapiCall;
            window.__tcfapi(b.command, b.version, function (h, g) {
                var e = {__tcfapiReturn: {returnValue: h, success: g, callId: b.callId}};
                d.source.postMessage(a ? JSON.stringify(e) : e, "*")
            }, b.parameter)
        }
        if (typeof (c) === "object" && c !== null && "__gppCall" in c) {
            var b = c.__gppCall;
            window.__gpp(b.command, function (h, g) {
                var e = {__gppReturn: {returnValue: h, success: g, callId: b.callId}};
                d.source.postMessage(a ? JSON.stringify(e) : e, "*")
            }, b.parameter, "version" in b ? b.version : 1)
        }
    };
    window.cmp_setStub = function (a) {
        if (!(a in window) || (typeof (window[a]) !== "function" && typeof (window[a]) !== "object" && (typeof (window[a]) === "undefined" || window[a] !== null))) {
            window[a] = window.cmp_stub;
            window[a].msgHandler = window.cmp_msghandler;
            window.addEventListener("message", window.cmp_msghandler, false)
        }
    };
    window.cmp_setGppStub = function (a) {
        if (!(a in window) || (typeof (window[a]) !== "function" && typeof (window[a]) !== "object" && (typeof (window[a]) === "undefined" || window[a] !== null))) {
            window[a] = window.cmp_gppstub;
            window[a].msgHandler = window.cmp_msghandler;
            window.addEventListener("message", window.cmp_msghandler, false)
        }
    };
    window.cmp_addFrame("__cmpLocator");
    if (!("cmp_disableusp" in window) || !window.cmp_disableusp) {
        window.cmp_addFrame("__uspapiLocator")
    }
    if (!("cmp_disabletcf" in window) || !window.cmp_disabletcf) {
        window.cmp_addFrame("__tcfapiLocator")
    }
    if (!("cmp_disablegpp" in window) || !window.cmp_disablegpp) {
        window.cmp_addFrame("__gppLocator")
    }
    window.cmp_setStub("__cmp");
    if (!("cmp_disabletcf" in window) || !window.cmp_disabletcf) {
        window.cmp_setStub("__tcfapi")
    }
    if (!("cmp_disableusp" in window) || !window.cmp_disableusp) {
        window.cmp_setStub("__uspapi")
    }
    if (!("cmp_disablegpp" in window) || !window.cmp_disablegpp) {
        window.cmp_setGppStub("__gpp")
    }
    ;
};
/*jshint ignore:end*/


// values from https://github.com/InteractiveAdvertisingBureau/Global-Privacy-Platform/tree/main/Sections/US-States
bizx.cmp.donotsells = {
    CCPA: {
        gppname: 'usca', gppid: 8, state: 'CA'},
};

bizx.cmp.donotsell_regulations = Object.keys(bizx.cmp.donotsells);

bizx.cmp.donotsell_states = [];
for (var r in bizx.cmp.donotsells) {
    if (bizx.cmp.donotsells.hasOwnProperty(r)) {
        bizx.cmp.donotsell_states.push(bizx.cmp.donotsells[r].state);
    }
}

// keep in sync with def show_cookie_notice
bizx.cmp.cookie_notice_states = [];  // none for now

// the ids must be IAB ids when possible, and then s## or c## if its not IAB.  Get them from the Vendors section of our CMP
// They keys can be whatever friendly name we want to use in ifConsent calls
bizx.cmp.vendor_ids = {
    'bombora': 163,
    'adroll': 130,  // nextroll
    'nextroll': 130,  // aka adroll
    'google-ads': 755,
    'prebid': -1,  // not an actual vendor, but a special indicator for us

    'sdm': -2,  // not an actual vendor, but a special indicator for us

    'adobe': 264,
    'amazon-ads': 793,
    'blockthrough': 815,
    'clearbit': 'c37910',
    'consentmanager': 's23',
    'disqus': 833,
    'equativ': 45,
    'eyeota': 120,
    'google': 's135',
    'jobbio': 'c33095',
    'liveramp': 97,
    'lotame': 95,
    'magnite': 52,
    'mixpanel': 'c48392',
    'mailchimp': 's2437',
    'pubmatic': 76,
    'sharethrough': 80,
    'sovrn': 13,
    'uk-trade-desk': 21,
    'xandr': 32,
    'youtube': 's30',
    '6sense': 740,
    'hubspot': 's10',
    'adshield': 'c63062',
    'google-analytics': 's26',
    'apollo': 'c67592',
    'narrative': 'c67992',
    'vector':'c69200',
    'visual-visitor':'c69201',
    'identity-matrix':'c69467',
};

bizx.cmp.embedScript = function (src, async, location, callback, defer, extra_attrs) {
    location = location || 'head';
    var s = document.createElement('script');
    if (extra_attrs) {
        for (var x in extra_attrs) {
            if (extra_attrs.hasOwnProperty(x)) {
                s.setAttribute(x, extra_attrs[x]);
            }
        }
    }
    if (bizx.cmp.googleads_load_from_limited_domain && src === 'https://securepubads.g.doubleclick.net/tag/js/gpt.js') {
        // https://developers.google.com/publisher-tag/guides/general-best-practices#load_from_an_official_source
        src = 'https://pagead2.googlesyndication.com/tag/js/gpt.js';
    }
    s.setAttribute('src', src);
    s.async = async || true;
    s.defer = defer || true;
    if (callback) {
        s.onload = callback;
    }
    document[location].appendChild(s);
};

bizx.cmp.logs = [];

bizx.cmp.log = function () {
    if (document.URL.indexOf('cmp_debug') >= 0) {
        var args = arguments;
        args = [].slice.call(args);  // convert to normal array
        bizx.cmp.logs.push(args.slice());
        if (navigator.webdriver) {  // selenium webdriver
            args.unshift('CMP');
        } else {
            args.unshift('display: inline-block; color: #fff; background: darkgreen; padding: 1px 4px; border-radius: 3px;');
            args.unshift('%cCMP');
        }
        console.log.apply(console, args);
    }
};


bizx.cmp.promptConsent = function () {
    __tcfapi('showScreen');
    return false;
};


bizx.cmp.cmpIsPresent = function () {
    // to determine if the cmp is really present or not.
    var apiString = window.__tcfapi && window.__tcfapi.toString();
    return !!(apiString &&
        apiString.indexOf("CMP not found") < 0 && // prebid cmp integration used to create a dummy obj with this in it
        apiString.indexOf("._tcfapi_calls.push(") < 0  // adroll creates a dummy __tcfapi object with this in it
    );
};

/**
 * wait for consent to run callbacks
 * @param party_or_options either '' to support old format, or an object of the format {purposes: [], vendors: []}
 * @param purposesAndVendors "all" or list of: purpose group names, and/or vendor names, and/or "all".  See getTCFandRunCallbacks for names in detail.
 * @param hasConsentFn runs if consent
 * @param rejectedFn runs if consent is rejected
 * @param finallyFn runs after consent is determined (both yes or no)
 * @param unknownFn runs after a few seconds if no consent ever determined (e.g. cookie banner not interacted with, or some error)
 */
bizx.cmp.ifConsent = function (party_or_options, purposesAndVendors, hasConsentFn, rejectedFn, finallyFn, unknownFn) {
    /*
        first convert from v1 signature...
            ifConsent('', ['all', 'bombora'], function(){} ...)
        ...to v2 signature
            ifConsent(options, function(){} ...)
    */
    var purposes, vendors;
    var _version = 2;
    if (typeof party_or_options === 'string') {
        _version = 1;
        purposes = purposesAndVendors.slice();
        vendors = purposesAndVendors.slice();
    } else {
        // is options!
        purposes = party_or_options.purposes || [];
        vendors = party_or_options.vendors || [];
        // shift up all the callbacks
        unknownFn = finallyFn;
        finallyFn = rejectedFn;
        rejectedFn = hasConsentFn;
        hasConsentFn = purposesAndVendors;
        purposesAndVendors = undefined;
    }
    // if (rejectedFn && !unknownFn) {
    //     console.warn('ifConsent: you provided a rejectedFn, you probably should provide a unknownFn too.  rejectedFn=' + rejectedFn);
    // }

    if (typeof purposes === 'string') {
        purposes = [purposes];
    }
    if (typeof vendors === 'string') {
        vendors = [vendors];
    }

    var allPurposes = ['storage', 'personalization', 'ads', 'content', 'measurement'];
    var allall = allPurposes.concat(['all']);
    if (purposes[0] === 'all') {
        purposes = allPurposes;
    } else {
        purposes = purposes.filter(function(val) { return allPurposes.includes(val);});
    }
    vendors = vendors.filter(function(val) { return !allall.includes(val);});

    var vendor_ids = [];
    for (var iv = 0; iv < vendors.length; iv++) {
        var vid = bizx.cmp.vendor_ids[vendors[iv]];
        if (typeof vid === 'undefined') {
            throw new Error('Unexpected vendor id: ' + vendors[iv]);
        }
        vendor_ids.push(vid);
    }

    function runConsentAndFinally() {
        if (hasConsentFn) {
            hasConsentFn();
        }
        if (finallyFn) {
            finallyFn();
        }
    }

    if (!bizx.cmp.cmpIsPresent()) {
        bizx.cmp.log('no CMP present');
        // if the CMP isn't present on the page, we can assume consent and short-circuit checks.
        runConsentAndFinally();
        return;
    }

    if (bizx.cmp.cookie_notice_applies() && vendors.includes('google-ads')) {
        // run Google Ads even if general consent not given, but do it via Limited Ads
        unknownFn = rejectedFn = function() {
            if (!hasConsentFn) {
                return;
            }
            bizx.cmp.googleads_load_from_limited_domain = true;
            if (window.googletag && window.googletag.cmd) {
                bizx.cmp.log('will tell Google Ads to do Limited Ads');
                var limitedAds = function() {
                    bizx.cmp.log('actually telling Google Ads to do Limited Ads');
                    window.googletag.pubads().setPrivacySettings({limitedAds: true});
                };
                if (window.googletag.cmd.unshift) {
                    // if `cmd` is still a plain array, put it first
                    window.googletag.cmd.unshift(limitedAds);
                } else {
                    window.googletag.cmd.push(limitedAds);
                }
            } else {
                bizx.cmp.log('no Google Ads found to do Limited Ads');
            }
            // call *hasConsentFn* so Google Ads will run (but restricted now)
            hasConsentFn();
            hasConsentFn = null;  // so this callback won't run again if actual consent is given.  Nor again in this version of rejectedFn
        };
    }

    // wait until the CMP is ready to inform us of consents.
    bizx.cmp.ConsentReadyPromise.then(function () {
        var regulation = bizx.cmp.getRegulation();
        if (bizx.cmp.cookie_notice_applies()) {  // must check before donotsell_regulations
            bizx.cmp.log('checking consent choices with cookie-notice', purposes, vendors);
            if (bizx.cmp.donotsell_regulations.includes(regulation)) {
                // use GPP for the places that we have it set up
                bizx.cmp.getGPPandRunCallbacks(bizx.cmp.donotsells[regulation].gppname, hasConsentFn, rejectedFn, finallyFn);
            } else {
                // TCF code seems to work ok even though TCF is only really for GDPR
                bizx.cmp.getTCFandRunCallbacks(purposes, vendor_ids, hasConsentFn, rejectedFn, finallyFn);
            }
        } else if (bizx.cmp.donotsell_regulations.includes(regulation)) {
            // this may not run, depending on which states get cookie notice logic (must be checked first) vs states in do-not-sell
            if (purposes.includes('ads')) { // Do-Not-Sell only applies to 'ads' (third-party) basically, not storage, personalization etc
                bizx.cmp.getGPPandRunCallbacks(bizx.cmp.donotsells[regulation].gppname, hasConsentFn, rejectedFn, finallyFn);
            } else {
                bizx.cmp.log(regulation + ' mode, and no "ads" or "all" purpose (got ' + purposes + '); so allowed');
                runConsentAndFinally();
            }
        } else if (['GDPR', 'GDPRUK'].includes(regulation)) {
            if (vendors.includes('google-ads')) {
                bizx.cmp.log('google ads will automatically trigger "Limited Ads" if needed, so allowing');
                runConsentAndFinally();
            } else {
                bizx.cmp.log('checking the GDPR consent choices', purposes, vendors);
                bizx.cmp.getTCFandRunCallbacks(purposes, vendor_ids, hasConsentFn, rejectedFn, finallyFn);
            }
        } else {
            bizx.cmp.log('unexpected CMP regulation:', regulation);
            runConsentAndFinally();
        }
    });

    // run something in case the CMP had problems running, or if consent is not decided yet
    if (unknownFn) {
        // if we know we're waiting on user input and might not get it, run as soon as possible
        if (bizx.cmp.cookie_notice_applies()){
            // 'settings' event could work too, but would also have to check !__cmp('getCMPData').userChoiceExists
            __cmp("addEventListener",["loadShowing", function(){
                bizx.cmp.log('cookie banner with working CMP, but waiting on user choice, so running unknownFn');
                unknownFn();
                unknownFn.ran = true;
            },false],null);
        }
        // failsafe in case CMP didn't load or something
        setTimeout(function () {
            var cmpbox = document.getElementById('cmpbox');
            var cmpbox_visible = cmpbox && window.getComputedStyle(cmpbox).display !== 'none';
            if (cmpbox_visible && bizx.cmp.getRegulation() === 'GDPR') {
                bizx.cmp.log('GDPR CMP visible and waiting on user, not running unknownFn');
            } else if (bizx.cmp.consent_is_known) {
                bizx.cmp.log('consent is known, not running unknownFn');
            } else if (unknownFn && !unknownFn.ran) {
                bizx.cmp.log('running unknownFn (failsafe)');
                unknownFn();
            }
        }, 4000);  // long timeout in case CMP is slow to load for some people
    }
};


bizx.cmp.getGPPandRunCallbacks = function(gppSection, callback, rejectedFn, finallyFn) {
    bizx.cmp.log(gppSection, 'GPP consent promise fulfilled; now checking consent value for', callback);
    __gpp(
        'getSection',
        function(gppData) {
            try {
                var optOut = !gppData || !gppData.length || gppData[0].SaleOptOut === 1 || gppData[0].TargetedAdvertisingOptOut === 1 || gppData[0].SharingOptOut === 1;  // 1 is Opted Out
                if (optOut) {
                    bizx.cmp.log('gpp not allowed:', gppData ? gppData: 'no GPP response data!');
                    if (rejectedFn) {
                        rejectedFn();
                    }
                } else {
                    bizx.cmp.log('gpp allowed:', gppData ? gppData: 'no GPP response data!');
                    if (callback) {
                        callback();
                    }
                }
                if (finallyFn) {
                    finallyFn();
                }
            } catch (e) {
                console.error('error within __gpp getSection:', e);
            }
        },
        gppSection
    );
};

bizx.cmp.getTCFandRunCallbacks = function (purposes, vendor_ids, callback, rejectedFn, finallyFn) {
    /*
    var v1purpose_ids = {'storage': 1, 'personalization': 2, 'ads': 3, 'content': 4, 'measurement': 5};
    var v2purpose_ids = {
        'storage': 1,
        'ads': 2, 'ads-profile': 3, 'ads-select': 4,
        'content-profile': 5, 'content-select': 6,
        'ads-perf': 7, 'content-perf': 8,
        'market-research': 9,
        'improve-products': 10,
    };
     */

    // the `purposes` names originate from TCF v1 spec and are used throughout our websites' ifConsent checks.
    // this maps those purposes to the current TCF spec: https://iabeurope.eu/iab-europe-transparency-consent-framework-policies/#Appendix_A_Purposes_and_Features_Definitions
    var purpose_ids = {
        'storage': [1],
        'personalization': [5],
        'ads': [2, 3, 4, 7, 9],
        'content': [6],
        'measurement': [8],
        // [10] not used yet
    };

    // specialFeatures: 1=precise geo,  2=device characteristics for ID

    __tcfapi('getTCData', 2, function(consentInfo, success) {
        // getTCData is deprecated and __tcfapi('addEventListener', would be better but it doesn't run for our ROW cookie notice
        try {
            // bizx.cmp.log('callback fired for', purposes, consentInfo);

            if (success) {
                // check if purposes granted
                var consents = consentInfo.purpose.consents;
                var meetsAll = true;
                outer_loop: for (var i = 0; i < purposes.length; i++) {
                    var ids = purpose_ids[purposes[i]];
                    for (var j = 0; j < ids.length; j++) {
                        var id = ids[j];
                        if (!consents[id]) {
                            meetsAll = false;
                            //bizx.cmp.log('consent failed on ' + id, purposes[i], consents);
                            break outer_loop;
                        }
                    }
                }
                // check if vendors granted.  TODO use in GPP check too? but it doesn't have vendor data, would have to call getTCData again.
                for (var iv = 0; iv < vendor_ids.length; iv++) {
                    var vid = vendor_ids[iv];
                    if (vid < 0) {
                        continue;
                    } else if (!consentInfo.vendor.consents[vid] && !consentInfo.customVendorConsents[vid]) {
                        //bizx.cmp.log('consent failed on', vid);
                        meetsAll = false;
                        break;
                    }
                }

                if (meetsAll) {
                    bizx.cmp.log('consent granted for', purposes, vendor_ids, consentInfo);
                    if (callback) {
                        callback(consentInfo, success);
                    }
                } else {
                    bizx.cmp.log('consent NOT granted for', purposes, vendor_ids, consentInfo);
                    if (rejectedFn) {
                        rejectedFn(success);
                    }
                }
            } else {
                bizx.cmp.log('consent failed to detect for', purposes, vendor_ids, consentInfo);
                if (rejectedFn) {
                    rejectedFn(success);
                }
            }

            if (finallyFn) {
                finallyFn(consentInfo, success);
            }
        } catch (e) {
            console.error('error within __tcfapi getTCData:', e);
        }
    });
};


bizx.cmp.handleOpen = function (ev, cmpo) {
    bizx.cmp.log('handleOpen');

    if (bizx.cmp.getRegulation() === 'GDPR') {
        var cmpStatus = __cmp('consentStatus');
        if (cmpStatus && cmpStatus.userChoiceExists) {
            // they haven't made the choice quite yet, but likely will :)
            bizx.cmp.visitorMadeSubsequentChange = true;
        } else {
            // this is the very initial load in GDPR, its only their first choice, so track that.
            bizx.cmp.visitorMadeSubsequentChange = false;
        }
    }
};

bizx.cmp.handleCustomChoicesScreen = function(eventname, cmpobject, subtype) {
    bizx.cmp.fetchVendorList().then(
        /** @param {{success: bool, vendors: Array.<ParentVendor>}} payload */
        function (payload) {
            if(!payload.success || !payload.vendors || payload.vendors.length < 1) {
                console.error('bad payload', JSON.stringify(payload));
                return;
            }
            payload.vendors.forEach(function (vendor) {
                var vendorName = vendor.vendor_name;
                var vendorElem = findVendorElemByName(vendorName);
                if (vendorElem) {
                    appendVendorData(vendorElem, vendor);
                } else {
                    console.error('could not find element for', vendorName);
                }
            });
        }, function(err){ console.error('fetchVendorList Failed', err); });


    function findVendorElemByName(label) {
        // with accessibility mode enabled, there's a wrapper and we have to query
        //  via its shadowRoot. otherwise, can just query from `document'.
        var shadowEl = document.querySelector('#cmpwrapper');
        var queryEl = shadowEl ? shadowEl.shadowRoot : document;

        var vendorItems = queryEl.querySelectorAll('table.cmptbl tbody tr.cmpvenditem');
        for (var i = 0; i < vendorItems.length; i++) {
            var span = vendorItems[i].querySelector('td.cmpvendname > span');
            if (span && span.textContent === label) {
                return vendorItems[i];
            }
        }
        return null;
    }

    /** @param {HTMLElement} vendorItem
     * @param {ParentVendor} vendor */
    function appendVendorData(vendorItem, vendor) {
        /** @type HTMLTableDataCellElement */
        var row = document.createElement('td');
        row.colSpan = 2;
        row.style.textAlign = 'left';
        row.classList.add('cmpvendorspecial');
        var output = 'The following vendors may be included via ' + vendor.vendor_name + ' if it is enabled: ';
        output += vendor.sub_vendors.map(function (vendor) {
            var name = vendor[0];
            var url = vendor[1];
            var html = '<span>' + name + '</span>';
            if (url) {
                html = '<a href="' + url + '" target="_blank">' + name + '</a>';
            }
            return html;
        }).join(", ");
        row.innerHTML = output;

        // need a dummy row to keep alternating highlights
        vendorItem.insertAdjacentElement('afterend', document.createElement('tr'));
        vendorItem.insertAdjacentElement('afterend', row);
    }
};

bizx.cmp.handleClose = function (args) {
    bizx.cmp.log('handleClose');
    // this callback can be provided by the site, e.g. slashdot mobile uses it to know about changes
    if (bizx.cmp.onUICloseComplete) {
        bizx.cmp.onUICloseComplete();
    }
    // make sure user's selection is respected immediately (stop any scripts currently running on the page)
    if (bizx.cmp.visitorMadeSubsequentChange) {
        bizx.cmp.ifConsent({purposes: ['ads']},
            bizx.cmp.handleUserOptIn,
            null,
            function() { location.reload(); }  // reload no matter what choice they made
        );
    }
};


bizx.cmp.handleSettingsReady = function(eventname, cmpobject, subtype) {
    bizx.cmp.log('handleSettingsReady');
    // this event is the earliest we can get the Regulation
    // NOTE: the `if` conditions here must be duplicated in handleLoadShowing to close the banner

    // NOTE: keep gpc_means_optout in sync with sfpy's 'gpc.json' handling
    var gpc_means_optout = bizx.cmp.donotsell_regulations.includes(bizx.cmp.getRegulation());
    if (window.navigator.globalPrivacyControl && gpc_means_optout) {
        bizx.cmp.log('intepreting GPC signal as optout');
        bizx.cmp.visitorChoseDoNotSellShare = true;
        __cmp('setConsent', 0);  // this is a "reject"  (but doesn't necessarily close the cookie banner, see handleLoadShowing)
        OptOutHonored.init();
    }

    if (document.cookie.indexOf('__cmpccpausps=1YYN') >= 0) {
        // this is particularly important for restoring cookies from logged-in users who opted out.  Otherwise we'd have to update server-side code on several sites.
        bizx.cmp.log('backwards compatibility: old CCPA cookie triggering an opt-out');
        __cmp('setConsent', 0);
    }
};

bizx.cmp.setCookie = function(name, value, days, opts) {
    var d = new Date();
    d.setTime(d.getTime() + 24 * 60 * 60 * 1000 * days);
    var cookieStr = name + "=" + value + ";path=/;expires=" + d.toGMTString();
    if (opts && opts.samesite) {
        cookieStr += ';SameSite=' + opts.samesite;
        if (opts.samesite === 'None') {
            cookieStr += ';Secure';
        }
    }
    document.cookie = cookieStr;
    document.cookie = cookieStr + ';domain=.sf.net';  // sandboxes end up with this domain used too
};

bizx.cmp.handleLoadShowing = function() {
    // NOTE: the `if` conditions match those in handleSettingsReady
    var gpc_means_optout = bizx.cmp.donotsell_regulations.includes(bizx.cmp.getRegulation());
    if (window.navigator.globalPrivacyControl && gpc_means_optout) {
        bizx.cmp.log('GPC triggered a reject in handleSettingsReady, but ensuring the banner gets closed too');
        __cmp('close');
    }
    if (document.cookie.indexOf('__cmpccpausps=1YYN') >= 0) {
        bizx.cmp.log('backwards compatibility: old CCPA cookie triggered an opt-out, but ensuring the banner gets closed too');
        __cmp('close');
    }
};

bizx.cmp.trackingPixel = function(party, purposesAndVendors, src, alt, parentId, delay){
    src = src.replace(/&amp;/g, '&');  // HTML escaping can introduce &amp; which we don't want
    bizx.cmp.ifConsent(party, purposesAndVendors, function(){
        if (delay && navigator.sendBeacon) {
            navigator.sendBeacon(src);
        } else {
            var pixel = document.createElement("img");
            pixel.src = src;
            pixel.height = 1;
            pixel.width = 1;
            pixel.alt = alt || '';
            pixel.style = "display: none";
            var node = document.getElementById(parentId);
            node.insertBefore(pixel, null);
        }
    });
};


bizx.cmp.fetchVendorList = (function () {

    var promise;

    return function() {
        if(promise) {
            return promise;
        }

        promise = new Promise(function (resolve, reject) {
            var xhr = new XMLHttpRequest();

            xhr.onload = function () {
                if (xhr.status >= 400) {
                    reject('failure ' + xhr.status);
                    return;
                }
                try {
                    /** @typedef {{vendor_name: string, vendor_id:int, sub_vendors: SubVendor }} ParentVendor */
                    /** @typedef {[string, string]} SubVendor */
                    var json = JSON.parse(xhr.responseText);
                    resolve(json);
                } catch (err) {
                    reject('error parsing json ' + err.message);
                }
            };

            xhr.onerror = function () {
                reject('Vendor List failed due to a XHR Transport error. Code: ' + xhr.status);
            };

            var url = 'https://a.fsdn.com/con/app/vendor_list_v2';
            xhr.open('GET', url, true);
            xhr.setRequestHeader('Accept', 'application/json, */*; q=0.01');
            xhr.send();
        });

        return promise;
    };
})();

/**
 * @returns {string|null} - a consentmanager.net code, see some at https://help.consentmanager.net/books/cmp/page/client-side-configuration-options
 */
bizx.cmp.getRegulation = function() {
    // window.cmpmngr.getRegulation() can also get the numbers
    // window.cmp_config_data.regulationkey can also get the string values (capitalized)
    // but best to use a real API
    var reg;
    if (typeof __cmp !== 'undefined') {
        var cmpData = __cmp('getCMPData');
        if (cmpData) {
            reg = cmpData.regulationKey;
        }
    }
    return reg;
};


bizx.cmp.init = function (options, provider) {
    bizx.cmp.options = options;
    bizx.cmp.visitorMadeSubsequentChange = false;
    bizx.cmp.visitorChoseDoNotSellShare = false;
    var url_override = window.location.search.match(new RegExp('cmpregulationkey=(GDPR|ROW|' + bizx.cmp.donotsell_regulations.join('|') + ')'));
    var override_reg = url_override ? url_override[1] : null;
    if (options.geo) {
        if (override_reg === 'GDPR') {
            options.geo = {country_code2: 'DE', is_euro_union: 1};
        } else if (override_reg) {
            options.geo = {country_code2: 'US', region: bizx.cmp.donotsells[override_reg].state, is_euro_union: 0};
        }
        if (!bizx.cmp.show_do_not_sell() && options.geo.is_euro_union !== 1 && !bizx.cmp.cookie_notice_applies()) {
            bizx.cmp.log('cmp not needed in this geo, so not initializing');
            return;
        }
    }
    // URL override for some settings should also set GPP override (not url-controllable)
    if (override_reg && bizx.cmp.donotsells[override_reg]) {
        window.cmp_params="&cmpgppkey=" + bizx.cmp.donotsells[override_reg].gppname;
    }
    bizx.cmp.embedCMPSnippet(options.cmp_id);

    window.addEventListener('DOMContentLoaded', function () {
        var elModalContentDest = document.getElementById('ccpa-modal-content-destination');
        if (elModalContentDest) {
            elModalContentDest.innerHTML = bizx.cmp.ccpaInterstitialContent;
            var elToggle = document.getElementById('opt-toggle');
            var elConfirmBtn = document.getElementById('cmp-submit-request');
            var elMsg = document.getElementById('cmp-confirm-msg');
            document.querySelector('.toggler .out').addEventListener('click', function(e) {
                elToggle.checked = false;
                elToggle.dispatchEvent(new Event('change'));
            });
            document.querySelector('.toggler .in').addEventListener('click', function(e) {
                elToggle.checked = true;
                elToggle.dispatchEvent(new Event('change'));
            });
            elToggle.addEventListener('change', function(e) {
                elMsg.innerHTML = '';
            });
            elConfirmBtn.addEventListener('click', function(e) {
                e.preventDefault();
                bizx.cmp.log('visitor has confirmed their opt-out/in choice');
                var success;
                if (elToggle.checked) {
                    success = __cmp('setConsent', 1);  // accept
                    bizx.cmp.setCookie('__cmpccpausps', '', -1);  // old backwards compatibility cookie that the CMP may not clear
                } else {
                    bizx.cmp.visitorChoseDoNotSellShare = true;
                    success = __cmp('setConsent', 0);  // reject
                }
                var message;
                if (success) {
                    message = '<span style=color:blue>Your choice has been saved.</span>';
                } else {
                    message = '<span style=color:red>Error.  Adblock may be preventing this.</span>';
                }
                elMsg.innerHTML = message;
                bizx.cmp.visitorMadeSubsequentChange = true;
                bizx.cmp.handleClose();  // since we're not using the CMP, we should call this ourselves
            });
        }
        var elDoNotSell = document.getElementById('opt-out-button') || document.querySelector('[data-open="ccpa-modal"]');
        if (elDoNotSell) {
            elDoNotSell.innerHTML = elDoNotSell.innerHTML.replace('Do Not Sell My', 'Do Not Sell or Share My');
        }
        var elModal = document.getElementById('ccpa-modal');
        if (elModal) {
            // watch for the modal to be visible (we don't trigger it ourselves so have to use this), and then lock the body scroll
            var body_orig_overflow = document.body.style.overflow;
            var modalVisibleWatcher = new IntersectionObserver(function (entries) {
                if (entries[0].isIntersecting) {
                    document.body.style.overflow = 'hidden';
                } else {
                    document.body.style.overflow = body_orig_overflow;
                }
            });
            modalVisibleWatcher.observe(elModal);
        }
    });

    __tcfapi("addEventListener",["consentscreen", bizx.cmp.handleOpen,false],null);
    __tcfapi("addEventListener",["consentscreenoff", bizx.cmp.handleClose,false],null);
    __cmp("addEventListener",["loadShowing", bizx.cmp.handleLoadShowing,false],null);
    __tcfapi("addEventListener",["consentscreencustom", bizx.cmp.handleCustomChoicesScreen,false],null);
    __cmp("addEventListener",["settings", bizx.cmp.handleSettingsReady,false],null);
    __cmp('addEventListener', ["consent", bizx.cmp.handleUserOptOut, false], null);
    __cmp('addEventListener', ["consent", bizx.cmp.updateDoNotSellToggle, false], null);

    bizx.cmp.ConsentReadyPromise = new Promise(function(resolve, reject){
        function resolver() {
            bizx.cmp.log('"consent" data available fired, ConsentReadyPromise resolver now running');
            bizx.cmp.consent_is_known = true;
            resolve();
        }
        bizx.cmp.log('waiting for "consent" event');
        __cmp("addEventListener", ["consent", resolver, false], null);
    });
};

bizx.cmp.updateDoNotSellToggle = function() {
    var elToggle = document.getElementById('opt-toggle');
    if (!elToggle) {
        return;
    }
    bizx.cmp.ifConsent('', ['ads'], function () {
        // accepted
        elToggle.checked = true;
    }, function () {
        // rejected
        elToggle.checked = false;
    });
};

bizx.cmp.ls_key = 'recorded_user_optout';

bizx.cmp.handleUserOptOut = function () {
    // for logged-in users only
    if (!bizx.cmp.options.logged_in_user_record_api) {
        localStorage.removeItem(bizx.cmp.ls_key);  // in case a different user will log in later
        return;
    }
    // all do-not-sell regions need handle this and do backend optouts.  Only California will save the value for the user.
    if (!bizx.cmp.donotsell_regulations.includes(bizx.cmp.getRegulation())) {
        return;
    }
    function no_ads_consent() {
        var interval = 6 * 60 * 60 * 1000; // 6 hrs, expressed in ms
        var recorded_user_optout = new Date(localStorage.getItem(bizx.cmp.ls_key));
        if (!bizx.cmp.visitorChoseDoNotSellShare && new Date() - recorded_user_optout < interval) {
            return;
        }
        bizx.cmp.log('logged-in user recording opt-out');
        var xhr = new XMLHttpRequest();
        var endpoint = bizx.cmp.options.logged_in_user_record_api;
        if (bizx.cmp.visitorChoseDoNotSellShare) {
            endpoint += '?backend=1';
        }
        xhr.open('PUT', endpoint);
        xhr.addEventListener('load', function(e) {
            if (e.target.status >= 400 || e.target.status < 200) {
                bizx.cmp.log('logged-in user recording failed!', e.target);
                return;
            }
            bizx.cmp.log('logged-in user recording success');
            localStorage.setItem(bizx.cmp.ls_key, new Date());
        });
        xhr.send();
    }
    bizx.cmp.log('logged-in user checking if opt-out');
    bizx.cmp.ifConsent('', ['ads'], null, no_ads_consent);
};

bizx.cmp.handleUserOptIn = function() {
    // for logged-in users
    if (!bizx.cmp.options.logged_in_user_record_api_in) {
        return;
    }
    if (!bizx.cmp.donotsell_regulations.includes(bizx.cmp.getRegulation())) {
        return;
    }
    bizx.cmp.log('logged-in user recording opt-in');
    localStorage.removeItem(bizx.cmp.ls_key);
    var xhr = new XMLHttpRequest();
    xhr.open('PUT',
        bizx.cmp.options.logged_in_user_record_api_in,
        false  // false = not async.  wait for it, otherwise the page reload that happens next will send a stale opt-out CCPA cookie
    );
    xhr.addEventListener('load', function(e) {
        if (e.target.status >= 400 || e.target.status < 200) {
            bizx.cmp.log('logged-in user recording failed!', e.target);
            return;
        }
        bizx.cmp.log('logged-in user recording success');
    });
    xhr.send();
};

bizx.cmp.show_do_not_sell = function() {
    if (!bizx.cmp.options.geo) {
        throw Error('must provide options.geo vals to use this function');
    }
    return bizx.cmp.options.geo.country_code2 === 'US' && bizx.cmp.donotsell_states.includes(bizx.cmp.options.geo.region);
};

bizx.cmp.cookie_notice_applies = function() {
    if (!bizx.cmp.options.geo) {
        throw Error('must provide options.geo vals to use this function');
    }
    return bizx.cmp.options.geo.country_code2 === 'US' && bizx.cmp.cookie_notice_states.includes(bizx.cmp.options.geo.region);
};
;
/*global SF, jQuery, $, console, Handlebars, bizxPrebid, bizx, pbjs, googletag, __cmp */

if (!window.SF) {
    window.SF = {};
}
SF.Ads = SF.Ads || {};

//# Polyfill - addEventListener in IE8
window.addEventListener = window.addEventListener || function (e, f) { window.attachEvent('on' + e, f); };

/*! GetDevicePixelRatio | Author: Tyson Matanich, 2012 | License: MIT */
// https://github.com/tysonmatanich/GetDevicePixelRatio
// provides window.getDevicePixelRatio
(function(n){n.getDevicePixelRatio=function(){var t=1;return n.screen.systemXDPI!==undefined&&n.screen.logicalXDPI!==undefined&&n.screen.systemXDPI>n.screen.logicalXDPI?t=n.screen.systemXDPI/n.screen.logicalXDPI:n.devicePixelRatio!==undefined&&(t=n.devicePixelRatio),t;};})(this);

//namespaced handlers for GPT helpers
SF.Ads.Helpers = {
    parseUnitNameFromPath : function(path){
        var nameNoPath = path.substring(path.lastIndexOf('/')+1);
        return nameNoPath;
    },
    getContainerIDFromPath : function(path){
        var nameNoPath = SF.Ads.Helpers.parseUnitNameFromPath(path);
        return '#' + nameNoPath + '_wrapped';
    },
    getPathFromContainerID : function(id) {
        var unit_id = $('#' + id).parent('.draper').attr('id');
        if (unit_id) {
            return unit_id.replace('_wrapped', '');
        } else {
            console.warn('Could not find id for ' + id);
        }
    },
    getSizeDelivered: function(ad){
        // ads delivered via prebid have their ad.slot.size set at 1x1
        // so, we'll check prebid data, and also find the iframe and look at it's rendered dimensions.
        if (ad.isEmpty) {
            return null;
        }
        var path = ad.slot.getAdUnitPath();
        var container = SF.Ads.Helpers.getContainerIDFromPath(path);
        var ad_id = $(container).attr('data-id');
        var prebid_winner = window.bizxPrebid && bizxPrebid.Ads.prebidWinners && bizxPrebid.Ads.prebidWinners[ad_id];
        if (prebid_winner) {
            return prebid_winner.width + 'x' + prebid_winner.height;
        } else {
            var frames = $('iframe', container);
            var frame;
            frames.each(function (t) {
                if (this.id.indexOf('to_be_removed') < 0) {
                    // for ad refresh, there may be two iframes in the container if the old one
                    // hasn't yet been cleared out - so we have to make sure we use the *new* one
                    // for sizing calculations.
                    if (frame) {
                        console.error('Sizing algorithm found multiple frames, this is bad.');
                    }
                    frame = $(this);
                }
            });
            return frame.width() + 'x' + frame.height();
        }
    },
    isNativeGEL: function(e) {
        return e.slot.getAdUnitPath().indexOf('_GEL') >= 0;
    },
    getSizeAndSetClass: function(e) {
        var $wrappedAd = $(SF.Ads.Helpers.getContainerIDFromPath(e.slot.getAdUnitPath()));
        $wrappedAd.addClass('delivered');
        if ($wrappedAd.attr('class').indexOf('sz_') !== -1) {
            // already set
            return true;
        }
        var size = e.size;
        if (size && size[0] === 1 && size[1] === 1) {
            // if size is 1x1, ensure it's really correct
            size = SF.Ads.Helpers.getSizeDelivered(e);
        }
        if (SF.Ads.Helpers.isNativeGEL(e)) {
            // otherwise we get size 0x0
            size = 'fluid';
        }
        if (!size) {
            return false;
        }

        //sizes might be expressed with commas or X's, depending on where it was calculated
        var sz_class = 'sz_' + size.toString().replace(',', '_').replace('x', '_');
        if (sz_class !== 'sz_1_1') {
            $wrappedAd.addClass(sz_class);
            if (size === 'fluid') {
                return;
            }
            var width = sz_class.replace('sz_', '').split('_')[0];
            var height = sz_class.replace('sz_', '').split('_')[1];

            // refreshed ads iframes don't want to size correctly when they're a pbjs win
            $wrappedAd.css('width', width);

            $wrappedAd.find('iframe').each(function(){
                if (this.id.indexOf('to_be_removed') <0) {
                    $wrappedAd.find('iframe').css('width', width);
                    $wrappedAd.find('iframe').css('height', height);
                }
            });

            return true;
        }
    },
    refreshBids: function (reloadIds) {
        var reloadSlots = reloadIds.map(function(id) { return SF.Ads.slotsById[id]; });
        if (!SF.Ads.usePrebid){
            googletag.pubads().refresh(reloadSlots);
            return;
        }
        // use prebid
        pbjs.que.push(function () {
            for (var i = reloadIds.length-1; i >= 0; i--) {
                var id = reloadIds[i];
                // clear out winner status from earlier auctions
                if (bizxPrebid.Ads.prebidWinners[id]) {
                    delete bizxPrebid.Ads.prebidWinners[id];
                }

            }

            var bids_back_amazon = false;
            var bids_back_prebid = false;

            function refreshBidsComplete() {
                bizxPrebid.prebidLog('refresh: clearing old stuff');

                // clear out previous sizing attrs, as they may change after refresh
                for (var i = 0; i < reloadSlots.length; i++) {
                    var $wrappedAd = $(SF.Ads.Helpers.getContainerIDFromPath(reloadSlots[i].getAdUnitPath()));

                    var classes = $wrappedAd.attr('class').split(' ');
                    for (var j = 0; j < classes.length; j++) {
                        if (classes[j].indexOf('sz_') >= 0) {
                            $wrappedAd.removeClass(classes[j]);
                        }
                    }
                }

                pbjs.setTargetingForGPTAsync(reloadIds);
                if (window.apstag) {
                    window.apstag.setDisplayBids();
                }
                googletag.pubads().refresh(reloadSlots);
                bizxPrebid.prebidLog('refresh complete');
            }

            pbjs.requestBids({
                timeout: window.bizxPrebid.PREBID_TIMEOUT * 3,  // longer timeout since the page has been open a long time anyway, we can wait longer for bids
                adUnitCodes: reloadIds,
                bidsBackHandler: function () {
                    bizxPrebid.prebidLog('refreshed pbjs bids done for', reloadIds);
                    bizxPrebid.Ads.debugPrebidResults();
                    bids_back_prebid = true;
                    if (bids_back_amazon) {
                        refreshBidsComplete();
                    }
                }
            });
            if (window.apstag && bizxPrebid.amazonUnits?.length) {
                var amazonReloadUnits = bizxPrebid.amazonUnits.filter(function(unit) {
                    return reloadIds.indexOf(unit.slotID) >= 0;
                });
                bizxPrebid.prebidLog('refreshing amazon ads', amazonReloadUnits);
                window.apstag.fetchBids({
                    slots: amazonReloadUnits,
                    timeout: window.bizxPrebid.PREBID_TIMEOUT * 3
                }, function(bids) {
                    bizxPrebid.prebidLog('refreshed amazon bids done for', reloadIds);
                    if (bizxPrebid.PREBID_DEBUG && window.console.table) {
                        window.console.table(bids);
                    }
                    bids_back_amazon = true;
                    if (bids_back_prebid) {
                        refreshBidsComplete();
                    }
                });
            } else {
                bids_back_amazon = true;
            }
        });
    }
};

SF.Ads.Advertisers = {
    AdxAdsense: 1276890381,
    Adx: 2036965341,
    Prebid: 1478656221,
    House: 1329521181,
    SF_Deals: 14275154,
    Unknown: 1,
};

//namespaced handlers for GPT event listeners, can be used by individual slots via "client_render_handler" in g.ads list
SF.Ads.RenderHandlers ={
    revealIfDelivers:function(e){
        try {
            var path = e.slot.getAdUnitPath();
            var id = SF.Ads.Helpers.getContainerIDFromPath(path);
            var $wrap = $(id);

            $wrap.removeClass('revealIfDelivers');
        }
        catch(err) {
            console.error(err);
        }
    },
    viewabilityInstrumentation: function(e) {
        var unitName = e.slot.getAdUnitPath();
        var $wrappedAd = $(SF.Ads.Helpers.getContainerIDFromPath(unitName));
        if (SF.Ads.fancyStickify) {
            SF.Ads.fancyStickify.reachedViewability($wrappedAd);
        }
        $wrappedAd.addClass('viewableImpression');
        if (SF.Ads.visualViewabilityIndicators ) {
            $wrappedAd.addClass('viewableImpressionIndicator');
        }
        console.log('======== ' + unitName + ' viewability met   ==================');
    },
    visibilityInstrumentation: function(e) {
        var unitName = event.slot.getAdUnitPath();
        console.log('======== ' + unitName + ' visibility change   ==================');
        console.log(event);
    },
    exampleCustomHandler :function(e){
        if(window.console){
            console.log('position ' + e.slot.b + ' ' + (e.isEmpty ? 'is empty ' : 'rendered!'));
        }
    },
    decorateSizeDelivered: function(e){
        // somewhat often prebid ads have size 1x1 (even the iframe size) so we need to poll for it
        if (!SF.Ads.Helpers.getSizeAndSetClass(e)) {
            var attempts = 0;
            var trySizeAgain = function(){
                attempts += 1;
                if (!SF.Ads.Helpers.getSizeAndSetClass(e) && attempts < 20) {
                    window.setTimeout(trySizeAgain, attempts*20);
                }
            };
            window.setTimeout(trySizeAgain, 10);
        }
    },
    gotBlank: function(e) {
        var $wrappedAd = $(SF.Ads.Helpers.getContainerIDFromPath(e.slot.getAdUnitPath()));
        $wrappedAd.addClass('blank');
        if (SF.Ads.fancyStickify) {
            SF.Ads.fancyStickify.reachedViewability($wrappedAd);
        }
        $wrappedAd.css("min-height", '');
    },
    checkDirectSoldForLeadForm: function(e){
        var direct_sold = (!e.isEmpty && e.advertiserId &&
                           e.advertiserId !== SF.Ads.Advertisers.AdxAdsense &&
                           e.advertiserId !== SF.Ads.Advertisers.Adx &&
                           e.advertiserId !== SF.Ads.Advertisers.Unknown &&
                           e.advertiserId !== SF.Ads.Advertisers.Prebid &&
                           e.advertiserId !== SF.Ads.Advertisers.House);
        var $iframe = $('iframe[data-src-small]');
        var src_attr = direct_sold ? 'data-src-small' : 'data-src-big';
        $iframe.attr('src', $iframe.attr(src_attr));
    }
};

SF.Ads.listenerForBlockThis = function(e){
    try {
        SF.Ads.renderedAds = SF.Ads.renderedAds || [];
        SF.Ads.renderedAds.push(e);
        if (!e.isEmpty && !SF.Ads.Helpers.isNativeGEL(e)) {
            var dom_selector = SF.Ads.Helpers.getContainerIDFromPath(e.slot.getAdUnitPath());
            $('.lbl-ad', dom_selector).remove();
            if (!e.advertiserId ||
                e.advertiserId === SF.Ads.Advertisers.AdxAdsense ||
                e.advertiserId === SF.Ads.Advertisers.Adx ||
                e.advertiserId === SF.Ads.Advertisers.Unknown ||
                e.advertiserId === SF.Ads.Advertisers.Prebid) {
                $(dom_selector).append('<span class="lbl-ad"> - <a href="#" class="btn-blockthis">Report</a></span>');
            } else {
                $(dom_selector).append('<span class="lbl-ad"></span>');
            }
        }
    }
    catch(err) {
        window.console.error(err);
    }
};

SF.Ads.gptExpected = function(){
    if (!window.googletag) {
        window.googletag = {};
        window.googletag.cmd = [];
    }
};

SF.Ads.visibleTime = {};

SF.Ads.visibilityChangedTracker = function(event) {
    var id = event.slot.getSlotElementId();
    if (!SF.Ads.visibleTime.hasOwnProperty(id)) {
        SF.Ads.visibleTime[id] = {
            visible: false,
            prevVisibleTotal: 0,
            wasVisibleBeforePageBgd: false,
            reloadCount: 0
        };
    }
    var timeinfo = SF.Ads.visibleTime[id];
    if (event.inViewPercentage >= 50 && !document.hidden) {
        if (!timeinfo.visible) {
            timeinfo.visible = performance.now();
        }
    } else {
        if (timeinfo.visible) {
            timeinfo.prevVisibleTotal += performance.now() - timeinfo.visible;
            timeinfo.visible = false;
        }
    }
};

SF.Ads.setupAdRefresh = function() {
    document.addEventListener('visibilitychange', function () {
        for (var id in SF.Ads.visibleTime) {
            if (SF.Ads.visibleTime.hasOwnProperty(id)) {
                var timeinfo = SF.Ads.visibleTime[id];
                if (document.hidden) {
                    timeinfo.wasVisibleBeforePageBgd = !!timeinfo.visible;
                    if (timeinfo.visible) {
                        timeinfo.prevVisibleTotal += performance.now() - timeinfo.visible;
                        timeinfo.visible = false;
                    }
                } else if (!document.hidden && timeinfo.wasVisibleBeforePageBgd) {
                    timeinfo.visible = performance.now();
                }
            }
        }
    }, false);

    // after 30 sec, start checking every second for reload
    var LIMIT_MS = 30000;
    setTimeout(function () {
        setInterval(function () {
            if (document.hidden) {
                return;
            }
            if ($('#overlay-blockthis-wrapper:visible').length) {
                return;  // skipping ad reload, until BT is closed.
            }
            for (var id in SF.Ads.visibleTime) {
                if (SF.Ads.visibleTime.hasOwnProperty(id)) {
                    var timeinfo = SF.Ads.visibleTime[id];
                    if (timeinfo.visible &&
                        timeinfo.prevVisibleTotal + (performance.now() - timeinfo.visible) >= LIMIT_MS &&
                        timeinfo.reloadCount < 50
                    ) {
                        timeinfo.reloadCount++;
                        timeinfo.visible = false;
                        timeinfo.prevVisibleTotal = 0;
                        SF.Ads.Helpers.refreshBids([id]);
                    }
                }
            }
        }, 1000);
    }, LIMIT_MS);
};


SF.wire_up_subscribe_form = function(index, form) {
    var handler = $(form).attr('data-handler');
    /*jshint ignore:start*/
    new SF.Widgets[handler ? handler : 'EmailComplianceWidget']({
        selector: form,
    });
    /*jshint ignore:end*/
};

//we don't want sort or filtering links to be crawled
SF.followObfuscatedLink = function(e) {
    SF.Widgets.pageLoadingSpinner();
    top.location = $(this).attr('data-action');
    return false;
};

// Polyfill for IE from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
/*jshint ignore:start*/
if (typeof Object.assign != 'function') {
  // Must be writable: true, enumerable: false, configurable: true
  Object.defineProperty(Object, "assign", {
    value: function assign(target, varArgs) { // .length of function is 2
      'use strict';
      if (target == null) { // TypeError if undefined or null
        throw new TypeError('Cannot convert undefined or null to object');
      }

      var to = Object(target);

      for (var index = 1; index < arguments.length; index++) {
        var nextSource = arguments[index];

        if (nextSource != null) { // Skip over if undefined or null
          for (var nextKey in nextSource) {
            // Avoid bugs when hasOwnProperty is shadowed
            if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
              to[nextKey] = nextSource[nextKey];
            }
          }
        }
      }
      return to;
    },
    writable: true,
    configurable: true
  });
}
/*jshint ignore:end*/


SF.wireOutboundZoneTracking = function () {
    bizx.cmp.ifConsent('publisher', ['storage', 'measurement'], function(){
        /* selectors for BSL buttons and BEL/NEL buttons */
        $('.m-zone > a, a[data-zone]').on('click', function () {
            var $t = $(this);
            var $dataZone;
            if ($t.data('zone')) {
                $dataZone = $t;
            } else {
                $dataZone = $t.parents('.m-zone');
            }
            var zone = $dataZone.data('zone');
            var slug = $dataZone.data('slug');
            var ifr = document.getElementById('frame-zone-outbound');
            ifr.contentWindow.postMessage({zone: zone, slug: slug}, "*");
            return true;
        });
    });
};

if(typeof __cmp !== 'undefined') {
    // after do-not-sell opt-out, make any network request, so that the server-side processing happens for users (RememberConsentForUsersMiddleware) even if user never navigates to another page themselves
    // also record visitor consent change
    __cmp('addEventListener', ["consentrejected", function () {
        var xhr = new XMLHttpRequest();
        xhr.open('PUT', '/p/sfapi/update_vid');
        xhr.send();
    }, false], null);
}
;
/**
 *
 * Important Note:
 * Module-style features of TS are unavailable here (imports, exports, modules, namespaces, globals, etc),
 * as the environment currently lacks utilities for module loading (provided by frameworks like babel, webpack, etc)
 *
 *
 * .gdpr-* classes no longer exist, and in theory could be cleaned up from this file
 *
 * ******* IMPORTANT COMPILE NOTE *********
 * to compile this file, you must run `npm run tsc` from /var/local/sfpy/
 * *
 */
var __extends = (this && this.__extends) || (function () {
    var extendStatics = function (d, b) {
        extendStatics = Object.setPrototypeOf ||
            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
        return extendStatics(d, b);
    };
    return function (d, b) {
        if (typeof b !== "function" && b !== null)
            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    };
})();
function contains(arr, key) {
    try {
        return arr.indexOf(key) > -1;
    }
    catch (error) {
    }
    return false;
}
var ConsentTrackingForm = /** @class */ (function () {
    function ConsentTrackingForm($form, options) {
        this.settings = $.extend({}, options);
        if (typeof $form === 'string') {
            $form = $($form);
        }
        this.$form = $form;
        this.userChoices = [];
        this.init();
        this.wireEvents();
    }
    ConsentTrackingForm.prototype.init = function () {
        var consent_fields = $("input[name='all_consent']", this.$form).length;
        if (consent_fields == 0) {
            this.$form.append('<input type="hidden" name="all_consent">');
        }
        this.$allConsent = $('input[name=all_consent]', this.$form);
    };
    ConsentTrackingForm.prototype.wireEvents = function () {
        if (this.settings.deferSubmitHandling !== true) {
            this.$form.on('submit.ConsentTrackingForm', this.submit.bind(this));
        }
    };
    ConsentTrackingForm.prototype.trackChoices = function (e) {
        var userChoices = [];
        $("input[data-consent-action]:checked, [data-consent-notice]", this.$form).each(function (t, v) {
            var id = $(v).attr('data-consent-id');
            userChoices.push(id);
        });
        this.userChoices = userChoices;
        this.$allConsent.val(JSON.stringify(this.userChoices));
    };
    ConsentTrackingForm.prototype.submit = function (e) {
        this.trackChoices(e);
        SF.doRecaptcha(e, $('.g-recaptcha', this.$form), this.realSubmit.bind(this));
    };
    ConsentTrackingForm.prototype.realSubmit = function (e) {
        // runs after captcha is completed
        this.$form.off('submit.ConsentTrackingForm');
        this.$form.submit();
    };
    return ConsentTrackingForm;
}());
var CountryGroups = /** @class */ (function () {
    function CountryGroups() {
    }
    return CountryGroups;
}());
var BaseRules = /** @class */ (function () {
    function BaseRules(EU_country_codes, unknown_country_codes) {
        this.countryGroups = new CountryGroups();
        this.countryGroups.US = ['US'];
        this.countryGroups.CA = ['CA'];
        this.countryGroups.GDPR = EU_country_codes || SF.EU_country_codes;
        this.countryGroups.unknownCountries = unknown_country_codes || SF.unknown_country_codes;
    }
    /** Determines if the passed country requires a State to be specified along with it */
    BaseRules.prototype.requireState = function (country) {
        if (contains(this.countryGroups.US, country)) {
            return true;
        }
        else {
            return false;
        }
    };
    /** Determines if the passed country allows pre-checking of checkboxes */
    BaseRules.prototype.allowPrechecked = function (country) {
        var groups = this.countryGroups.CA.concat(this.countryGroups.GDPR).concat(this.countryGroups.unknownCountries);
        if (contains(groups, country)) {
            return false;
        }
        else {
            return true;
        }
    };
    /** Determines if the passed country requires topics/communication methods for Resources newsletter */
    BaseRules.prototype.requireResourcesOptins = function (country) {
        if (contains(this.countryGroups.GDPR, country)) {
            return true;
        }
        else {
            return false;
        }
    };
    /** Determines if the passed country requires a consent checkbox for the entire form,
     * with an optional argument to state whether or not general consent is applicable
     */
    BaseRules.prototype.requireGeneralConsent = function (country, applicable) {
        if (applicable === void 0) { applicable = true; }
        return applicable;
    };
    /** Determines if the passed country requires the user to check boxes for each thing they're subscribing to
     * (essentially disallowing any assumed consent)
     * This is separate from requirGeneralConsent()
     */
    BaseRules.prototype.requireMinimalExplicitConsent = function (country) {
        return contains(this.countryGroups.GDPR, country);
    };
    /** Determines if the passed country requires a special extra general consent checkbox (ie, for GDPR) */
    BaseRules.prototype.requireSpecialGeneralConsent = function (country) {
        return false;
    };
    /**  */
    /** Determines if the passed country +form requires at least one of a set of optins to be checked before proceeding)
     * Essentially means that no options can be assumed on the form
     */
    BaseRules.prototype.requireAtLeastOneOptIn = function (country) {
        return false;
    };
    BaseRules.prototype.requireNonEssentialProfileFields = function (country, containingForm) {
        var groups = this.countryGroups.GDPR.concat(this.countryGroups.unknownCountries);
        return !contains(groups, country);
    };
    BaseRules.prototype.canGateContent = function (country) {
        return !contains(this.countryGroups.GDPR, country);
    };
    /** Contact methods are GDPR fields.  These fields are no longer used anywhere */
    BaseRules.prototype.requireAnyContactMethod = function (country) {
        return false;
    };
    /** are newsletters an option at all? */
    BaseRules.prototype.newslettersAvailable = function (country) {
        return !contains(this.countryGroups.GDPR, country);
    };
    return BaseRules;
}());
var NewsletterFormRules = /** @class */ (function (_super) {
    __extends(NewsletterFormRules, _super);
    function NewsletterFormRules() {
        return _super !== null && _super.apply(this, arguments) || this;
    }
    NewsletterFormRules.prototype.assumeBothNewsletters = function (country) {
        if (contains(this.countryGroups.GDPR, country)) {
            return false;
        }
        else {
            return true;
        }
    };
    NewsletterFormRules.prototype.assumeSitewideOnly = function (country) {
        if (contains(this.countryGroups.GDPR, country)) {
            return true;
        }
        else {
            return false;
        }
    };
    NewsletterFormRules.prototype.useCombinedNewslettersCheckbox = function (country) {
        return false;
    };
    NewsletterFormRules.prototype.requireSpecialGeneralConsent = function (country) {
        return contains(this.countryGroups.GDPR, country);
    };
    NewsletterFormRules.prototype.requireNonEssentialProfileFields = function (country, $containingForm) {
        return false;
    };
    return NewsletterFormRules;
}(BaseRules));
var KMUFormRules = /** @class */ (function (_super) {
    __extends(KMUFormRules, _super);
    function KMUFormRules() {
        return _super !== null && _super.apply(this, arguments) || this;
    }
    KMUFormRules.prototype.requireAtLeastOneOptIn = function (country) {
        if (!this.newslettersAvailable(country)) {
            // if no newsletters, then we're not doing "pick at least one checkbox"
            return false;
        }
        var groups = this.countryGroups.CA.concat(this.countryGroups.GDPR);
        return contains(groups, country);
    };
    KMUFormRules.prototype.assumeKMU = function (country) {
        return !this.requireKMUCheckbox(country);
    };
    KMUFormRules.prototype.requireKMUCheckbox = function (country) {
        if (!this.newslettersAvailable(country)) {
            // if no newsletters, don't require the KMU checkbox either because it'd be the only things
            return false;
        }
        return true;
        // let groups = this.countryGroups.CA.concat(this.countryGroups.GDPR);
        // if (contains(groups, country)) {
        //     return true;
        // }
        // return false;
    };
    KMUFormRules.prototype.useCombinedNewslettersCheckbox = function (country) {
        // SF-8428:  there is only one newsletter now but we sitll use "research" as a flag.
        // this wasn't always the case so maybe this rule can be removed but lots of logic looks at it, so leaving for now.
        return true;
        // if (contains(this.countryGroups.CA, country)) {
        //     return true;
        // }
        // return false;
    };
    KMUFormRules.prototype.assumeBothNewsletters = function (country) {
        // we used to have 2 newsletters, 'sitewide' and 'research'
        // now 'research' indicates OK for advertising/leadgen things like Passport, and is not actually a newsletter
        return true;
        // let groups = this.countryGroups.CA.concat(this.countryGroups.GDPR);
        // if (!contains(groups, country)) {
        //     return false;
        // }
        // return false;
    };
    KMUFormRules.prototype.assumeSitewideOnly = function (country) {
        return false;
    };
    KMUFormRules.prototype.requireSpecialGeneralConsent = function (country) {
        return this.requireResourcesOptins(country);
    };
    KMUFormRules.prototype.requireNonEssentialProfileFields = function (country, $containingForm) {
        return false;
    };
    return KMUFormRules;
}(BaseRules));
var RegistrationFormRules = /** @class */ (function (_super) {
    __extends(RegistrationFormRules, _super);
    function RegistrationFormRules() {
        return _super !== null && _super.apply(this, arguments) || this;
    }
    RegistrationFormRules.prototype.useCombinedNewslettersCheckbox = function (country) {
        if (!contains(this.countryGroups.GDPR, country)) {
            return true;
        }
        return false;
    };
    RegistrationFormRules.prototype.assumeSitewideOnly = function (country) {
        return false;
    };
    RegistrationFormRules.prototype.assumeBothNewsletters = function (country) {
        return false;
    };
    RegistrationFormRules.prototype.requireGeneralConsent = function (country, applicable) {
        if (applicable === void 0) { applicable = true; }
        return contains(this.countryGroups.GDPR, country) && applicable;
    };
    RegistrationFormRules.prototype.requireMinimalExplicitConsent = function (country) {
        return false;
    };
    RegistrationFormRules.prototype.requireNonEssentialProfileFields = function (country, $containingForm) {
        if (!$containingForm) {
            return _super.prototype.requireNonEssentialProfileFields.call(this, country, $containingForm);
        }
        var action = $containingForm.attr('action');
        var isOSSRegistration = action.indexOf('/user/register') === 0 && action.indexOf('business') < 0;
        if (isOSSRegistration) {
            return false;
        }
        else {
            return _super.prototype.requireNonEssentialProfileFields.call(this, country, $containingForm);
        }
    };
    return RegistrationFormRules;
}(BaseRules));
var MailmanFormRules = /** @class */ (function (_super) {
    __extends(MailmanFormRules, _super);
    function MailmanFormRules() {
        return _super !== null && _super.apply(this, arguments) || this;
    }
    MailmanFormRules.prototype.requireSpecialGeneralConsent = function (country) {
        return this.requireResourcesOptins(country);
    };
    MailmanFormRules.prototype.requireMinimalExplicitConsent = function (country) {
        return !this.allowPrechecked(country);
    };
    return MailmanFormRules;
}(RegistrationFormRules));
var WhitepaperLeadFormRules = /** @class */ (function (_super) {
    __extends(WhitepaperLeadFormRules, _super);
    function WhitepaperLeadFormRules() {
        return _super !== null && _super.apply(this, arguments) || this;
    }
    WhitepaperLeadFormRules.prototype.translateCountry = function (country_name) {
        if (!SF.EU_country_names) {
            throw "Can't find country names translation list";
        }
        return this.getKeyByValue(SF.EU_country_names, country_name);
    };
    WhitepaperLeadFormRules.prototype.getKeyByValue = function (dict, value) {
        for (var prop in dict) {
            if (dict.hasOwnProperty(prop)) {
                if (dict[prop] === value)
                    return prop;
            }
        }
    };
    WhitepaperLeadFormRules.prototype.assumeBothNewsletters = function (country) {
        return false;
    };
    WhitepaperLeadFormRules.prototype.assumeSitewideOnly = function (country) {
        return false;
    };
    WhitepaperLeadFormRules.prototype.useCombinedNewslettersCheckbox = function (country) {
        return false;
    };
    return WhitepaperLeadFormRules;
}(BaseRules));
var BareFormRules = /** @class */ (function (_super) {
    __extends(BareFormRules, _super);
    function BareFormRules() {
        return _super !== null && _super.apply(this, arguments) || this;
    }
    BareFormRules.prototype.assumeSitewideOnly = function (country) {
        return false;
    };
    BareFormRules.prototype.useCombinedNewslettersCheckbox = function (country) {
        return false;
    };
    BareFormRules.prototype.assumeBothNewsletters = function (country) {
        return false;
    };
    BareFormRules.prototype.requireMinimalExplicitConsent = function (country) {
        return false;
    };
    return BareFormRules;
}(BaseRules));
var BSLLeadFormRules = /** @class */ (function (_super) {
    __extends(BSLLeadFormRules, _super);
    function BSLLeadFormRules() {
        return _super !== null && _super.apply(this, arguments) || this;
    }
    return BSLLeadFormRules;
}(BareFormRules));
var BaseComplianceForm = /** @class */ (function () {
    function BaseComplianceForm(options, newDefaults, rules) {
        this.defaults = {
            consentInputSet: '.minimum-explicit-required',
            state_selector: 'select[id^=state]',
            country_selector: 'select[id^=country]',
            debug: false,
            requireOneOptinSelector: '.kmunl_consent, .gdpr-consent-topics, .loose-consent-requirement',
            allowPrecheckedSelector: '.allow-precheck, .allow-precheck input[type=checkbox]',
            deferSubmitHandling: false
        };
        if (rules) {
            this.rules = rules;
        }
        else {
            throw Error('Compliance Forms must supply their own rule sets.');
        }
        var allDefaults = $.extend({}, this.defaults, newDefaults);
        this.settings = $.extend({}, allDefaults, options);
        this.$el = $(this.settings.selector);
        this.$consentInputSet = $(this.settings.consentInputSet, this.$el);
        this.$oneOptinSet = $(this.settings.requireOneOptinSelector, this.$el);
        this.$stateInputSet = $(this.settings.state_selector, this.$el);
        if (this.$stateInputSet.parents('label').length > 0) {
            this.$stateInputSet = this.$stateInputSet.parents('label'); // sometimes this field is on its own, without a parent inputset
        }
        this.$country = $(this.settings.country_selector, this.$el);
        this.$state = $(this.settings.state_selector, this.$el);
        this.$promptPhone = $('.prompt-phone', this.$el);
        this.consentDirty = false;
        this.editFieldsPlaceholders();
        if (this.validateFormStructure()) {
            this.tracker = new ConsentTrackingForm(this.$el, { deferSubmitHandling: this.settings.deferSubmitHandling });
            this.wireEvents();
            this.renderForm();
        }
    }
    BaseComplianceForm.prototype.country = function () {
        return this.$country.val();
    };
    BaseComplianceForm.prototype.editFieldsPlaceholders = function () {
        // updates the current input field placeholder to include required or optional
        $(this.$el).each(function () {
            $(this).find(':input').each(function () {
                if ($(this).attr('required')) {
                    if ($(this).is('input') && typeof $(this).attr('placeholder') !== 'undefined' &&
                        !$(this).attr('placeholder').includes('required')) {
                        $(this).attr('placeholder', $(this).attr('placeholder') + ' (required)');
                    }
                    if ($(this).is('select')) {
                        var selectText = $(this).find('option:first-child').text();
                        if (!selectText.includes('required')) {
                            $(this).find('option:first-child').text(selectText + ' (required)');
                        }
                    }
                }
                else {
                    if ($(this).is('input') && typeof $(this).attr('placeholder') !== 'undefined' &&
                        !$(this).attr('placeholder').includes('optional')) {
                        $(this).attr('placeholder', $(this).attr('placeholder') + ' (optional)');
                    }
                    if ($(this).is('select')) {
                        var selectText = $(this).find('option:first-child').text();
                        if (!selectText.includes('optional')) {
                            $(this).find('option:first-child').text(selectText + ' (optional)');
                        }
                    }
                }
            });
        });
    };
    BaseComplianceForm.prototype.validateFormStructure = function () {
        if (!this.$country.length) {
            console.error("The form " + this.settings.selector + " is missing key fields to collect consent");
        }
        if (this.$el.hasClass('rendered')) {
            return false;
        }
        this.$el.addClass('rendered');
        return true;
    };
    BaseComplianceForm.prototype.prepop = function () {
        if (!this.consentDirty
            && !$('.has-error', this.$el).length // on mailman + KMU forms
            && !$('.fielderror:visible:not(:empty)', this.$el).length // on user registration form
        ) {
            if (this.rules.allowPrechecked(this.country())) {
                $(this.settings.allowPrecheckedSelector, this.$el).prop('checked', true);
            }
            else {
                this.uncheckAll($(this.settings.allowPrecheckedSelector, this.$el));
            }
        }
    };
    BaseComplianceForm.prototype.wireEvents = function () {
        if (!this.settings.deferSubmitHandling) {
            //handle submit
            this.$el.on('submit.complianceForm', this.submit.bind(this));
        }
        // handle precheckable changes
        $('input', $(this.settings.allowPrecheckedSelector, this.$el)).on('change', this.validateConsent.bind(this));
        if (!this.rules.requireAnyContactMethod(this.country())) {
            //handle minumum explicit consent
            $('input', this.$consentInputSet).on('change', this.validateConsent.bind(this));
        }
        else {
            // handle leadforms version of min consent
            $('.gdpr-contact-methods input', this.$el).on('change', this.validateConsent.bind(this));
        }
        // handle blanket consent change
        $('.input-set-agree-general input', this.$el).on('change', this.validateConsent.bind(this));
        // handle country change
        this.$country.on('change', this.countrySelected.bind(this));
        // handle phone/sms checkbox change
        $('input[type=checkbox]', this.$promptPhone).on('change', this.promptPhone.bind(this));
        // handle mailing lists check
        $('.input-mailing-list input', this.$el).on('change', this.validateConsent.bind(this));
    };
    BaseComplianceForm.prototype.submit = function (e) {
        var validCountry = this.validateCountry();
        var checked = this.validateConsent() && this.validateOneOptin();
        if (!checked || !validCountry) {
            console.log("submit validation failed: checked=".concat(checked, " validCountry=").concat(validCountry));
            return false;
        }
        SF.doRecaptcha(e, $('.g-recaptcha', this.$el), (function () {
            this.$el.off('submit.complianceForm'); // don't run our submit handler any more, its ok
            this.$el.submit();
        }).bind(this));
    };
    ;
    BaseComplianceForm.prototype.promptPhone = function (e) {
        // Only mailman form had input-phone class.  And now that's removed too
        /*
        var $phone = $('.input-phone', this.$el);

        if ($(".prompt-phone input:checkbox:checked", this.$el).length > 0){
            $phone.removeClass('hide');
            $('input', $phone).attr('required', 'required');
        }
        else {
            $phone.addClass('hide');
            $('input', $phone).removeAttr('required');
        }
         */
    };
    ;
    BaseComplianceForm.prototype.validateCountry = function () {
        var result = true;
        if (!this.$country.val()) {
            this.$country.parents('.input-set').addClass('has-error');
            result = false;
        }
        else {
            this.$country.parents('.input-set').removeClass('has-error');
        }
        var stateValue = this.$state.val();
        if (this.settings.state_selector.indexOf(',') >= 0) { // a form that lacks input-sets
            stateValue = this.$state.eq(1).val();
        }
        if (this.rules.requireState(this.country()) && !stateValue) {
            this.$state.parents('.input-set').addClass('has-error');
            result = false;
        }
        else {
            this.$state.parents('.input-set').removeClass('has-error');
        }
        return result;
    };
    ;
    BaseComplianceForm.prototype.validateOneOptin = function () {
        $('.select-one-errmsg', this.$el).remove();
        if (this.rules.requireAtLeastOneOptIn(this.country())) {
            var checked = $("input[type=checkbox]:checked", this.$oneOptinSet).length;
            if (!checked) {
                $(this.settings.requireOneOptinSelector, this.$el).first().before("<div class=\"select-one-errmsg fielderror\">Select at least one:</div>");
                $(this.settings.requireOneOptinSelector, this.$el).addClass('has-error');
                console.log('validateOneOptin failed');
                return false;
            }
            else {
                $(this.settings.requireOneOptinSelector, this.$el).removeClass('has-error');
            }
            return checked;
        }
        else {
            return true;
        }
    };
    BaseComplianceForm.prototype.validateConsent = function () {
        this.consentDirty = true;
        if (this.rules.requireMinimalExplicitConsent(this.country())) {
            var checked = $("input[type=checkbox]:checked", this.$consentInputSet).length;
            if (!checked) {
                $(this.settings.consentInputSet, this.$el).addClass('has-error');
                return false;
            }
            else {
                $(this.settings.consentInputSet, this.$el).removeClass('has-error');
            }
            return checked;
        }
        else if (this.rules.requireAnyContactMethod(this.country())) {
            var $err = $('.require-any-contact-method', this.$el);
            if (!$err.length) {
                $err = $('<div class="require-any-contact-method">The only way we can provide you a quote is by sharing your information with our provider partners. If you want a quote please select a contact method above.</div>');
                $(".gdpr-contact-methods", this.$el).append($err);
            }
            var checked = $(".gdpr-contact-methods input[type=checkbox]:checked", this.$el);
            if (!checked.length) {
                $err.show();
            }
            else {
                $err.hide();
            }
            return checked.length;
        }
        else {
            return true;
        }
    };
    ;
    /**
        Re-renders entire form - useful for actions that naturally reset large areas of the UI (like country change),
        but too broad to be used for repainting minor content changes within the form
    */
    BaseComplianceForm.prototype.renderForm = function () {
        $('.select-one-errmsg', this.$el).remove();
        if (!this.rules.newslettersAvailable(this.country())) {
            //hide both checkboxes
            this.hideField('.input-set-newsletters-optin-sitewide');
            this.hideField('.loose-consent-requirement'); // "Resources" checkbox
        }
        else if (this.rules.requireResourcesOptins(this.country())) {
            //show two sections of checkboxes for gdpr
            $('.gdpr-consent-requirement', this.$el).show();
            //hide loose Resources opt in
            this.hideField('.loose-consent-requirement');
            if (!this.rules.requireAnyContactMethod(this.country())) {
                // make the "Email" contact method required
                $('input', '.input-set-consent-email', this.$el).attr('required', 'required');
            }
        }
        else {
            //hide the two sections of checkboxes for GDPR (for Resources newsletter)
            this.hideField('.gdpr-consent-requirement');
            //show the single loose checkbox for Resources
            // $('.loose-consent-requirement', this.$el).show();
            // make the Email contact-method unrequired
            $('input', '.input-set-consent-email', this.$el).prop('required', false);
        }
        if (!this.rules.allowPrechecked(this.country())) {
            // uncheck the the Resources and non-gdpr checkboxes, if they've been checked
            this.uncheckAll($('input', '.loose-consent-requirement, .input-set-agree-general', this.$el));
        }
        else {
            // uncheck all GDPR-only checkboxes
            this.uncheckAll($('input', '.gdpr-consent-requirement, .input-set-agree-general-gdpr', this.$el));
        }
        // show/hide State field if US
        if (this.rules.requireState(this.country())) {
            this.$stateInputSet.show();
            this.$state.attr('required', 'required');
        }
        else {
            this.$stateInputSet.hide();
            this.$state.prop('required', false);
        }
        this.prepop();
        // reset the correct phone field requirement
        this.promptPhone();
        // phone number formatting mask
        var $telInput = $('.phone', this.$el);
        if ((this.country() === 'US' || this.country() === 'Canada') && $telInput.attr('required')) {
            $telInput.attr('placeholder', '(000) 000-0000');
        }
        else {
            $telInput.removeAttr('maxlength');
        }
        if (this.rules.assumeBothNewsletters(this.country())) {
            $('.input-assumed-newsletters', this.$el).val('sitewide research');
        }
        else if (this.rules.assumeSitewideOnly(this.country())) {
            $('.input-assumed-newsletters', this.$el).val('sitewide');
        }
        this.renderGeneralConsent();
    };
    ;
    BaseComplianceForm.prototype.renderGeneralConsent = function () {
        if (this.rules.requireSpecialGeneralConsent(this.country())) {
            //Hide the non-GDPR general agree text, and disable required on it
            this.hideField('.input-set-agree-general');
            //show, and make required, the GDPR general "agree" checkbox
            $('.input-set-agree-general-gdpr', this.$el).show().find('input').attr('required', 'required');
        }
        else {
            // hide the GDPR-specific general agree checkbox, and make it unrequired
            this.hideField('.input-set-agree-general-gdpr');
            // show the non-GDPR general agree checkbox, and make it required
            $('.input-set-agree-general', this.$el).show().find('input').attr('required', 'required');
        }
    };
    BaseComplianceForm.prototype.countrySelected = function () {
        var requireExtras = this.rules.requireNonEssentialProfileFields(this.country(), this.$el);
        $('.job', this.$el).attr('required', requireExtras).attr('minlength', requireExtras ? "3" : null);
        $('.industry', this.$el).attr('required', requireExtras).attr('minlength', requireExtras ? "3" : null);
        $('.employees', this.$el).attr('required', requireExtras);
        if (!requireExtras) {
            $('.job, .industry', this.$el).change(); // if country has changed to gdpr; clear any errors if they are lingering
            // make some fields unrequired
            // these are not in the list above since they are required in some places (registration_business & KMU/NL)
            // and not required other places (OSS user reg, mailman form) and we'd have to keep track of original requiredness
            $('.company', this.$el).attr('required', false);
            $('.phone', this.$el).attr('required', false);
        }
        this.renderForm();
    };
    BaseComplianceForm.prototype.hideField = function (selector) {
        this.uncheckAll($(selector, this.$el).hide().find('input').prop('required', false));
    };
    BaseComplianceForm.prototype.uncheckAll = function ($boxes_to_uncheck) {
        // only uncheck if needed, so that the form isn't considered "changed" by the browser.
        // otherwise FF will add the -moz-ui-invalid class and cause the box to be highlighted red
        $boxes_to_uncheck.each(function () {
            var $box = $(this);
            if ($box.prop('checked')) {
                $box.prop('checked', false);
            }
        });
    };
    return BaseComplianceForm;
}());
var NewsletterComplianceForm = /** @class */ (function (_super) {
    __extends(NewsletterComplianceForm, _super);
    function NewsletterComplianceForm(options, newDefaults) {
        var rules = new NewsletterFormRules();
        return _super.call(this, { selector: options.selector || '.newsletter-subscribe-form' }, newDefaults, rules) || this;
    }
    return NewsletterComplianceForm;
}(BaseComplianceForm));
var KMUComplianceForm = /** @class */ (function (_super) {
    __extends(KMUComplianceForm, _super);
    function KMUComplianceForm(options, newDefaults) {
        var rules = new KMUFormRules();
        return _super.call(this, { selector: options.selector || '.newsletter-subscribe-form' }, newDefaults, rules) || this;
    }
    KMUComplianceForm.prototype.renderForm = function () {
        this.shortname = this.shortname || this.$el.attr('data-shortname');
        _super.prototype.renderForm.call(this);
        // unset all assumed values; they'll get set if need be below
        $('.input-assumed-newsletters, .input-assumed-kmu', this.$el).val('');
        if (this.rules.requireKMUCheckbox(this.country())) {
            $('.input-set-kmu', this.$el).show();
        }
        else {
            this.hideField('.input-set-kmu');
            $('.input-assumed-kmu', this.$el).val(this.shortname);
        }
        if (!this.rules.newslettersAvailable(this.country())) {
            // hide all newsletter checkboxes
            this.hideField('.input-set-newsletters-optin-all, .input-set-newsletters-optin-sitewide, .input-set-newsletters-optin-research');
        }
        else if (this.rules.useCombinedNewslettersCheckbox(this.country())) {
            // show combined checkbox
            $('.input-set-newsletters-optin-all', this.$el).show();
            //hide individual newsletter checkboxes
            this.hideField('.input-set-newsletters-optin-sitewide, .input-set-newsletters-optin-research');
        }
        else if (this.rules.assumeBothNewsletters(this.country())) {
            // set assumed
            $('.input-assumed-newsletters', this.$el).val('sitewide research');
            // hide all newsletter checkboxes
            // this.hideField('.input-set-newsletters-optin-all, .input-set-newsletters-optin-sitewide, .input-set-newsletters-optin-research');
        }
        else if (this.rules.requireResourcesOptins(this.country())) {
            $('.input-set-newsletters-optin-sitewide', this.$el).show();
            this.hideField('.input-set-newsletters-optin-all');
            this.hideField('.input-set-newsletters-optin-research');
        }
    };
    KMUComplianceForm.prototype.wireEvents = function () {
        _super.prototype.wireEvents.call(this);
        //handle kmu/nl combined consent
        $('input', this.$oneOptinSet).on('change', this.validateOneOptin.bind(this));
        // handle cancelling redirects if user engages with form
        $(':input', this.$el).one('focus', function () {
            // DLP
            if (SF.downloader) {
                SF.downloader.cancelRedirect();
            }
            // TYP
            SF.noRedirect = true;
            return true;
        });
    };
    return KMUComplianceForm;
}(BaseComplianceForm));
var MailmanComplianceForm = /** @class */ (function (_super) {
    __extends(MailmanComplianceForm, _super);
    function MailmanComplianceForm(options, newDefaults) {
        var rules = new MailmanFormRules(null, null);
        return _super.call(this, { selector: options.selector || '.mailman-subscribe-form',
            consentInputSet: '.minimum-explicit-required', }, newDefaults, rules) || this;
    }
    MailmanComplianceForm.prototype.renderForm = function () {
        _super.prototype.renderForm.call(this);
        var selector = '.newsletter-subheading, .input-set-newsletters-optin-sitewide, .loose-consent-requirement';
        if (this.rules.newslettersAvailable(this.country())) {
            $(selector).show();
        }
        else {
            $(selector).hide();
        }
    };
    return MailmanComplianceForm;
}(BaseComplianceForm));
var NewReviewForm = /** @class */ (function (_super) {
    __extends(NewReviewForm, _super);
    function NewReviewForm(options, newDefaults) {
        var rules = new BareFormRules(null, null);
        return _super.call(this, {
            selector: options.selector || '.m-review-add',
            country_selector: '#country_code',
            state_selector: '#state, label[for=state]',
        }, newDefaults, rules) || this;
    }
    NewReviewForm.prototype.countrySelected = function () {
        if (!this.rules.allowPrechecked(this.country())) {
            $('#_consent_commercial_review_subscription_wrap').css('visibility', 'visible');
        }
        else {
            $('#_consent_commercial_review_subscription_wrap').css('visibility', 'hidden');
        }
        _super.prototype.countrySelected.call(this);
    };
    NewReviewForm.prototype.renderForm = function () {
        _super.prototype.renderForm.call(this);
        // this.countrySelected();
    };
    return NewReviewForm;
}(BaseComplianceForm));
var RegistrationComplianceForm = /** @class */ (function (_super) {
    __extends(RegistrationComplianceForm, _super);
    function RegistrationComplianceForm(options, newDefaults) {
        var rules = new RegistrationFormRules(null, null);
        return _super.call(this, { selector: options.selector || '#registration form',
            consentInputSet: '.minimum-explicit-required',
            newsletterOptinsSelector: '.input-set-newsletters-optin-sitewide, .gdpr-consent-topics' }, newDefaults, rules) || this;
    }
    RegistrationComplianceForm.prototype.hasNewslettersSelected = function () {
        return $(':checked', $(this.settings.newsletterOptinsSelector, this.$el)).length > 0;
    };
    RegistrationComplianceForm.prototype.wireEvents = function () {
        _super.prototype.wireEvents.call(this);
        //handle if newsletter optins are changed
        $('input', $(this.settings.newsletterOptinsSelector, this.$el)).on('change', this.renderNewsletterArea.bind(this));
        $('.job, .industry', this.$el).change(this.jobIndustryHandler.bind(this));
    };
    RegistrationComplianceForm.prototype.renderForm = function () {
        _super.prototype.renderForm.call(this);
        this.renderNewsletterArea();
    };
    RegistrationComplianceForm.prototype.renderNewsletterArea = function () {
        if (!this.rules.newslettersAvailable(this.country())) {
            this.hideField('.input-set-newsletters-optin-all');
            this.hideField('.input-set-newsletters-optin-sitewide');
        }
        else if (!this.rules.useCombinedNewslettersCheckbox(this.country())) {
            this.hideField('.input-set-newsletters-optin-all');
            $('.input-set-newsletters-optin-sitewide', this.$el).show();
        }
        else {
            this.hideField('.input-set-newsletters-optin-sitewide');
            $('.input-set-newsletters-optin-all', this.$el).show();
        }
        if (this.rules.requireGeneralConsent(this.country(), true)) {
            $('.input-set-agree-general', this.$el).show().addClass('minimum-explicit-required').find('input').attr('required', 'required');
        }
        else {
            this.hideField('.input-set-agree-general');
        }
    };
    RegistrationComplianceForm.prototype.jobIndustryHandler = function (e) {
        var val = e.target.value;
        var $error = $(e.target).parent().addBack().siblings('.fielderror');
        if (e.target.required && val.length < 3) {
            $error.text('Must be at least 3 characters long.');
        }
        else {
            $error.empty();
        }
    };
    ;
    return RegistrationComplianceForm;
}(BaseComplianceForm));
var BSLLeadsCompliantForm = /** @class */ (function (_super) {
    __extends(BSLLeadsCompliantForm, _super);
    function BSLLeadsCompliantForm(options, newDefaults) {
        var rules = new BSLLeadFormRules();
        return _super.call(this, options, newDefaults, rules) || this;
    }
    return BSLLeadsCompliantForm;
}(BaseComplianceForm));
SF.Widgets = SF.Widgets || {};
SF.Widgets.ConsentTrackingForm = ConsentTrackingForm;
SF.Widgets.EmailComplianceWidget = NewsletterComplianceForm;
SF.Widgets.KMUNSWidget = KMUComplianceForm;
SF.Widgets.MailmanFormWidget = MailmanComplianceForm;
SF.Widgets.RegistrationFormWidget = RegistrationComplianceForm;
SF.Widgets.NewReviewFormWidget = NewReviewForm;
