Version Description
- New: Support for big images in WordPress 5.3
- Fix: WP Offload Media integration with Pro version
Download this release
Release Info
Developer | jdailey |
Plugin | Smush Image Compression and Optimization |
Version | 3.3.2 |
Comparing to | |
See all releases |
Code changes from version 3.3.1 to 3.3.2
_src/js/modules/admin.js
CHANGED
@@ -964,4 +964,17 @@ jQuery( function ( $ ) {
|
|
964 |
} );
|
965 |
} );
|
966 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
967 |
} );
|
964 |
} );
|
965 |
} );
|
966 |
|
967 |
+
/**
|
968 |
+
* Scroll to resize settings.
|
969 |
+
*
|
970 |
+
* @since 3.3.2
|
971 |
+
*/
|
972 |
+
$( '#close-resize-update-dialog' ).on( 'click', function( e ) {
|
973 |
+
e.preventDefault();
|
974 |
+
|
975 |
+
window.SUI.dialogs[ 'resizing-update' ].hide();
|
976 |
+
|
977 |
+
goToByScroll( '#column-wp-smush-resize' );
|
978 |
+
} );
|
979 |
+
|
980 |
} );
|
app/assets/css/smush-admin.min.css
CHANGED
@@ -6804,7 +6804,6 @@ fieldset[disabled] .sui-2-3-29 .sui-wrap .sui-multi-checkbox:hover {
|
|
6804 |
.sui-2-3-29 .sui-wrap .sui-radio,
|
6805 |
.sui-2-3-29 .sui-wrap .sui-checkbox {
|
6806 |
-webkit-user-select: none;
|
6807 |
-
-moz-user-select: none;
|
6808 |
-ms-user-select: none;
|
6809 |
user-select: none;
|
6810 |
-ms-flex-align: start;
|
@@ -10477,7 +10476,6 @@ html.sui-has-overlay {
|
|
10477 |
|
10478 |
.sui-2-3-29 .sui-wrap .sui-upload .sui-upload-file span {
|
10479 |
-webkit-user-select: none;
|
10480 |
-
-moz-user-select: none;
|
10481 |
-ms-user-select: none;
|
10482 |
user-select: none;
|
10483 |
display: block;
|
6804 |
.sui-2-3-29 .sui-wrap .sui-radio,
|
6805 |
.sui-2-3-29 .sui-wrap .sui-checkbox {
|
6806 |
-webkit-user-select: none;
|
|
|
6807 |
-ms-user-select: none;
|
6808 |
user-select: none;
|
6809 |
-ms-flex-align: start;
|
10476 |
|
10477 |
.sui-2-3-29 .sui-wrap .sui-upload .sui-upload-file span {
|
10478 |
-webkit-user-select: none;
|
|
|
10479 |
-ms-user-select: none;
|
10480 |
user-select: none;
|
10481 |
display: block;
|
app/assets/js/smush-admin.min.js
CHANGED
@@ -22,7 +22,7 @@
|
|
22 |
*
|
23 |
* Date: 2019-04-08
|
24 |
*/
|
25 |
-
function(e){var t,n,i,s,r,o,a,u,l,d,c,h,p,f,m,g,v,y,_,w="sizzle"+1*new Date,b=e.document,x=0,k=0,C=ue(),S=ue(),T=ue(),N=ue(),E=function(e,t){return e===t&&(c=!0),0},j={}.hasOwnProperty,L=[],A=L.pop,D=L.push,P=L.push,I=L.slice,z=function(e,t){for(var n=0,i=e.length;n<i;n++)if(e[n]===t)return n;return-1},H="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",O="[\\x20\\t\\r\\n\\f]",q="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",R="\\["+O+"*("+q+")(?:"+O+"*([*^$|!~]?=)"+O+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+q+"))|)"+O+"*\\]",M=":("+q+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+R+")*)|.*)\\)|)",W=new RegExp(O+"+","g"),F=new RegExp("^"+O+"+|((?:^|[^\\\\])(?:\\\\.)*)"+O+"+$","g"),B=new RegExp("^"+O+"*,"+O+"*"),Q=new RegExp("^"+O+"*([>+~]|"+O+")"+O+"*"),$=new RegExp(O+"|>"),U=new RegExp(M),V=new RegExp("^"+q+"$"),K={ID:new RegExp("^#("+q+")"),CLASS:new RegExp("^\\.("+q+")"),TAG:new RegExp("^("+q+"|[*])"),ATTR:new RegExp("^"+R),PSEUDO:new RegExp("^"+M),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+O+"*(even|odd|(([+-]|)(\\d*)n|)"+O+"*(?:([+-]|)"+O+"*(\\d+)|))"+O+"*\\)|)","i"),bool:new RegExp("^(?:"+H+")$","i"),needsContext:new RegExp("^"+O+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+O+"*((?:-\\d)?\\d*)"+O+"*\\)|)(?=[^-]|$)","i")},X=/HTML$/i,G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,J=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+O+"?|("+O+")|.)","ig"),ne=function(e,t,n){var i="0x"+t-65536;return i!=i||n?t:i<0?String.fromCharCode(i+65536):String.fromCharCode(i>>10|55296,1023&i|56320)},ie=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,se=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){h()},oe=we((function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()}),{dir:"parentNode",next:"legend"});try{P.apply(L=I.call(b.childNodes),b.childNodes),L[b.childNodes.length].nodeType}catch(e){P={apply:L.length?function(e,t){D.apply(e,I.call(t))}:function(e,t){for(var n=e.length,i=0;e[n++]=t[i++];);e.length=n-1}}}function ae(e,t,i,s){var r,a,l,d,c,f,v,y=t&&t.ownerDocument,x=t?t.nodeType:9;if(i=i||[],"string"!=typeof e||!e||1!==x&&9!==x&&11!==x)return i;if(!s&&((t?t.ownerDocument||t:b)!==p&&h(t),t=t||p,m)){if(11!==x&&(c=Z.exec(e)))if(r=c[1]){if(9===x){if(!(l=t.getElementById(r)))return i;if(l.id===r)return i.push(l),i}else if(y&&(l=y.getElementById(r))&&_(t,l)&&l.id===r)return i.push(l),i}else{if(c[2])return P.apply(i,t.getElementsByTagName(e)),i;if((r=c[3])&&n.getElementsByClassName&&t.getElementsByClassName)return P.apply(i,t.getElementsByClassName(r)),i}if(n.qsa&&!N[e+" "]&&(!g||!g.test(e))&&(1!==x||"object"!==t.nodeName.toLowerCase())){if(v=e,y=t,1===x&&$.test(e)){for((d=t.getAttribute("id"))?d=d.replace(ie,se):t.setAttribute("id",d=w),a=(f=o(e)).length;a--;)f[a]="#"+d+" "+_e(f[a]);v=f.join(","),y=ee.test(e)&&ve(t.parentNode)||t}try{return P.apply(i,y.querySelectorAll(v)),i}catch(t){N(e,!0)}finally{d===w&&t.removeAttribute("id")}}}return u(e.replace(F,"$1"),t,i,s)}function ue(){var e=[];return function t(n,s){return e.push(n+" ")>i.cacheLength&&delete t[e.shift()],t[n+" "]=s}}function le(e){return e[w]=!0,e}function de(e){var t=p.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ce(e,t){for(var n=e.split("|"),s=n.length;s--;)i.attrHandle[n[s]]=t}function he(e,t){var n=t&&e,i=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(i)return i;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function pe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function fe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function me(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&oe(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function ge(e){return le((function(t){return t=+t,le((function(n,i){for(var s,r=e([],n.length,t),o=r.length;o--;)n[s=r[o]]&&(n[s]=!(i[s]=n[s]))}))}))}function ve(e){return e&&void 0!==e.getElementsByTagName&&e}for(t in n=ae.support={},r=ae.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!X.test(t||n&&n.nodeName||"HTML")},h=ae.setDocument=function(e){var t,s,o=e?e.ownerDocument||e:b;return o!==p&&9===o.nodeType&&o.documentElement?(f=(p=o).documentElement,m=!r(p),b!==p&&(s=p.defaultView)&&s.top!==s&&(s.addEventListener?s.addEventListener("unload",re,!1):s.attachEvent&&s.attachEvent("onunload",re)),n.attributes=de((function(e){return e.className="i",!e.getAttribute("className")})),n.getElementsByTagName=de((function(e){return e.appendChild(p.createComment("")),!e.getElementsByTagName("*").length})),n.getElementsByClassName=J.test(p.getElementsByClassName),n.getById=de((function(e){return f.appendChild(e).id=w,!p.getElementsByName||!p.getElementsByName(w).length})),n.getById?(i.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},i.find.ID=function(e,t){if(void 0!==t.getElementById&&m){var n=t.getElementById(e);return n?[n]:[]}}):(i.filter.ID=function(e){var t=e.replace(te,ne);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},i.find.ID=function(e,t){if(void 0!==t.getElementById&&m){var n,i,s,r=t.getElementById(e);if(r){if((n=r.getAttributeNode("id"))&&n.value===e)return[r];for(s=t.getElementsByName(e),i=0;r=s[i++];)if((n=r.getAttributeNode("id"))&&n.value===e)return[r]}return[]}}),i.find.TAG=n.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,i=[],s=0,r=t.getElementsByTagName(e);if("*"===e){for(;n=r[s++];)1===n.nodeType&&i.push(n);return i}return r},i.find.CLASS=n.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&m)return t.getElementsByClassName(e)},v=[],g=[],(n.qsa=J.test(p.querySelectorAll))&&(de((function(e){f.appendChild(e).innerHTML="<a id='"+w+"'></a><select id='"+w+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&g.push("[*^$]="+O+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||g.push("\\["+O+"*(?:value|"+H+")"),e.querySelectorAll("[id~="+w+"-]").length||g.push("~="),e.querySelectorAll(":checked").length||g.push(":checked"),e.querySelectorAll("a#"+w+"+*").length||g.push(".#.+[+~]")})),de((function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=p.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&g.push("name"+O+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&g.push(":enabled",":disabled"),f.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")}))),(n.matchesSelector=J.test(y=f.matches||f.webkitMatchesSelector||f.mozMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&de((function(e){n.disconnectedMatch=y.call(e,"*"),y.call(e,"[s!='']:x"),v.push("!=",M)})),g=g.length&&new RegExp(g.join("|")),v=v.length&&new RegExp(v.join("|")),t=J.test(f.compareDocumentPosition),_=t||J.test(f.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,i=t&&t.parentNode;return e===i||!(!i||1!==i.nodeType||!(n.contains?n.contains(i):e.compareDocumentPosition&&16&e.compareDocumentPosition(i)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},E=t?function(e,t){if(e===t)return c=!0,0;var i=!e.compareDocumentPosition-!t.compareDocumentPosition;return i||(1&(i=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===i?e===p||e.ownerDocument===b&&_(b,e)?-1:t===p||t.ownerDocument===b&&_(b,t)?1:d?z(d,e)-z(d,t):0:4&i?-1:1)}:function(e,t){if(e===t)return c=!0,0;var n,i=0,s=e.parentNode,r=t.parentNode,o=[e],a=[t];if(!s||!r)return e===p?-1:t===p?1:s?-1:r?1:d?z(d,e)-z(d,t):0;if(s===r)return he(e,t);for(n=e;n=n.parentNode;)o.unshift(n);for(n=t;n=n.parentNode;)a.unshift(n);for(;o[i]===a[i];)i++;return i?he(o[i],a[i]):o[i]===b?-1:a[i]===b?1:0},p):p},ae.matches=function(e,t){return ae(e,null,null,t)},ae.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&h(e),n.matchesSelector&&m&&!N[t+" "]&&(!v||!v.test(t))&&(!g||!g.test(t)))try{var i=y.call(e,t);if(i||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return i}catch(e){N(t,!0)}return ae(t,p,null,[e]).length>0},ae.contains=function(e,t){return(e.ownerDocument||e)!==p&&h(e),_(e,t)},ae.attr=function(e,t){(e.ownerDocument||e)!==p&&h(e);var s=i.attrHandle[t.toLowerCase()],r=s&&j.call(i.attrHandle,t.toLowerCase())?s(e,t,!m):void 0;return void 0!==r?r:n.attributes||!m?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},ae.escape=function(e){return(e+"").replace(ie,se)},ae.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},ae.uniqueSort=function(e){var t,i=[],s=0,r=0;if(c=!n.detectDuplicates,d=!n.sortStable&&e.slice(0),e.sort(E),c){for(;t=e[r++];)t===e[r]&&(s=i.push(r));for(;s--;)e.splice(i[s],1)}return d=null,e},s=ae.getText=function(e){var t,n="",i=0,r=e.nodeType;if(r){if(1===r||9===r||11===r){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=s(e)}else if(3===r||4===r)return e.nodeValue}else for(;t=e[i++];)n+=s(t);return n},(i=ae.selectors={cacheLength:50,createPseudo:le,match:K,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]||ae.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]&&ae.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return K.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&U.test(n)&&(t=o(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=C[e+" "];return t||(t=new RegExp("(^|"+O+")"+e+"("+O+"|$)"))&&C(e,(function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")}))},ATTR:function(e,t,n){return function(i){var s=ae.attr(i,e);return null==s?"!="===t:!t||(s+="","="===t?s===n:"!="===t?s!==n:"^="===t?n&&0===s.indexOf(n):"*="===t?n&&s.indexOf(n)>-1:"$="===t?n&&s.slice(-n.length)===n:"~="===t?(" "+s.replace(W," ")+" ").indexOf(n)>-1:"|="===t&&(s===n||s.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,i,s){var r="nth"!==e.slice(0,3),o="last"!==e.slice(-4),a="of-type"===t;return 1===i&&0===s?function(e){return!!e.parentNode}:function(t,n,u){var l,d,c,h,p,f,m=r!==o?"nextSibling":"previousSibling",g=t.parentNode,v=a&&t.nodeName.toLowerCase(),y=!u&&!a,_=!1;if(g){if(r){for(;m;){for(h=t;h=h[m];)if(a?h.nodeName.toLowerCase()===v:1===h.nodeType)return!1;f=m="only"===e&&!f&&"nextSibling"}return!0}if(f=[o?g.firstChild:g.lastChild],o&&y){for(_=(p=(l=(d=(c=(h=g)[w]||(h[w]={}))[h.uniqueID]||(c[h.uniqueID]={}))[e]||[])[0]===x&&l[1])&&l[2],h=p&&g.childNodes[p];h=++p&&h&&h[m]||(_=p=0)||f.pop();)if(1===h.nodeType&&++_&&h===t){d[e]=[x,p,_];break}}else if(y&&(_=p=(l=(d=(c=(h=t)[w]||(h[w]={}))[h.uniqueID]||(c[h.uniqueID]={}))[e]||[])[0]===x&&l[1]),!1===_)for(;(h=++p&&h&&h[m]||(_=p=0)||f.pop())&&((a?h.nodeName.toLowerCase()!==v:1!==h.nodeType)||!++_||(y&&((d=(c=h[w]||(h[w]={}))[h.uniqueID]||(c[h.uniqueID]={}))[e]=[x,_]),h!==t)););return(_-=s)===i||_%i==0&&_/i>=0}}},PSEUDO:function(e,t){var n,s=i.pseudos[e]||i.setFilters[e.toLowerCase()]||ae.error("unsupported pseudo: "+e);return s[w]?s(t):s.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?le((function(e,n){for(var i,r=s(e,t),o=r.length;o--;)e[i=z(e,r[o])]=!(n[i]=r[o])})):function(e){return s(e,0,n)}):s}},pseudos:{not:le((function(e){var t=[],n=[],i=a(e.replace(F,"$1"));return i[w]?le((function(e,t,n,s){for(var r,o=i(e,null,s,[]),a=e.length;a--;)(r=o[a])&&(e[a]=!(t[a]=r))})):function(e,s,r){return t[0]=e,i(t,null,r,n),t[0]=null,!n.pop()}})),has:le((function(e){return function(t){return ae(e,t).length>0}})),contains:le((function(e){return e=e.replace(te,ne),function(t){return(t.textContent||s(t)).indexOf(e)>-1}})),lang:le((function(e){return V.test(e||"")||ae.error("unsupported lang: "+e),e=e.replace(te,ne).toLowerCase(),function(t){var n;do{if(n=m?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}})),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:me(!1),disabled:me(!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!i.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.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:ge((function(){return[0]})),last:ge((function(e,t){return[t-1]})),eq:ge((function(e,t,n){return[n<0?n+t:n]})),even:ge((function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e})),odd:ge((function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e})),lt:ge((function(e,t,n){for(var i=n<0?n+t:n>t?t:n;--i>=0;)e.push(i);return e})),gt:ge((function(e,t,n){for(var i=n<0?n+t:n;++i<t;)e.push(i);return e}))}}).pseudos.nth=i.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[t]=pe(t);for(t in{submit:!0,reset:!0})i.pseudos[t]=fe(t);function ye(){}function _e(e){for(var t=0,n=e.length,i="";t<n;t++)i+=e[t].value;return i}function we(e,t,n){var i=t.dir,s=t.next,r=s||i,o=n&&"parentNode"===r,a=k++;return t.first?function(t,n,s){for(;t=t[i];)if(1===t.nodeType||o)return e(t,n,s);return!1}:function(t,n,u){var l,d,c,h=[x,a];if(u){for(;t=t[i];)if((1===t.nodeType||o)&&e(t,n,u))return!0}else for(;t=t[i];)if(1===t.nodeType||o)if(d=(c=t[w]||(t[w]={}))[t.uniqueID]||(c[t.uniqueID]={}),s&&s===t.nodeName.toLowerCase())t=t[i]||t;else{if((l=d[r])&&l[0]===x&&l[1]===a)return h[2]=l[2];if(d[r]=h,h[2]=e(t,n,u))return!0}return!1}}function be(e){return e.length>1?function(t,n,i){for(var s=e.length;s--;)if(!e[s](t,n,i))return!1;return!0}:e[0]}function xe(e,t,n,i,s){for(var r,o=[],a=0,u=e.length,l=null!=t;a<u;a++)(r=e[a])&&(n&&!n(r,i,s)||(o.push(r),l&&t.push(a)));return o}function ke(e,t,n,i,s,r){return i&&!i[w]&&(i=ke(i)),s&&!s[w]&&(s=ke(s,r)),le((function(r,o,a,u){var l,d,c,h=[],p=[],f=o.length,m=r||function(e,t,n){for(var i=0,s=t.length;i<s;i++)ae(e,t[i],n);return n}(t||"*",a.nodeType?[a]:a,[]),g=!e||!r&&t?m:xe(m,h,e,a,u),v=n?s||(r?e:f||i)?[]:o:g;if(n&&n(g,v,a,u),i)for(l=xe(v,p),i(l,[],a,u),d=l.length;d--;)(c=l[d])&&(v[p[d]]=!(g[p[d]]=c));if(r){if(s||e){if(s){for(l=[],d=v.length;d--;)(c=v[d])&&l.push(g[d]=c);s(null,v=[],l,u)}for(d=v.length;d--;)(c=v[d])&&(l=s?z(r,c):h[d])>-1&&(r[l]=!(o[l]=c))}}else v=xe(v===o?v.splice(f,v.length):v),s?s(null,o,v,u):P.apply(o,v)}))}function Ce(e){for(var t,n,s,r=e.length,o=i.relative[e[0].type],a=o||i.relative[" "],u=o?1:0,d=we((function(e){return e===t}),a,!0),c=we((function(e){return z(t,e)>-1}),a,!0),h=[function(e,n,i){var s=!o&&(i||n!==l)||((t=n).nodeType?d(e,n,i):c(e,n,i));return t=null,s}];u<r;u++)if(n=i.relative[e[u].type])h=[we(be(h),n)];else{if((n=i.filter[e[u].type].apply(null,e[u].matches))[w]){for(s=++u;s<r&&!i.relative[e[s].type];s++);return ke(u>1&&be(h),u>1&&_e(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(F,"$1"),n,u<s&&Ce(e.slice(u,s)),s<r&&Ce(e=e.slice(s)),s<r&&_e(e))}h.push(n)}return be(h)}return ye.prototype=i.filters=i.pseudos,i.setFilters=new ye,o=ae.tokenize=function(e,t){var n,s,r,o,a,u,l,d=S[e+" "];if(d)return t?0:d.slice(0);for(a=e,u=[],l=i.preFilter;a;){for(o in n&&!(s=B.exec(a))||(s&&(a=a.slice(s[0].length)||a),u.push(r=[])),n=!1,(s=Q.exec(a))&&(n=s.shift(),r.push({value:n,type:s[0].replace(F," ")}),a=a.slice(n.length)),i.filter)!(s=K[o].exec(a))||l[o]&&!(s=l[o](s))||(n=s.shift(),r.push({value:n,type:o,matches:s}),a=a.slice(n.length));if(!n)break}return t?a.length:a?ae.error(e):S(e,u).slice(0)},a=ae.compile=function(e,t){var n,s=[],r=[],a=T[e+" "];if(!a){for(t||(t=o(e)),n=t.length;n--;)(a=Ce(t[n]))[w]?s.push(a):r.push(a);(a=T(e,function(e,t){var n=t.length>0,s=e.length>0,r=function(r,o,a,u,d){var c,f,g,v=0,y="0",_=r&&[],w=[],b=l,k=r||s&&i.find.TAG("*",d),C=x+=null==b?1:Math.random()||.1,S=k.length;for(d&&(l=o===p||o||d);y!==S&&null!=(c=k[y]);y++){if(s&&c){for(f=0,o||c.ownerDocument===p||(h(c),a=!m);g=e[f++];)if(g(c,o||p,a)){u.push(c);break}d&&(x=C)}n&&((c=!g&&c)&&v--,r&&_.push(c))}if(v+=y,n&&y!==v){for(f=0;g=t[f++];)g(_,w,o,a);if(r){if(v>0)for(;y--;)_[y]||w[y]||(w[y]=A.call(u));w=xe(w)}P.apply(u,w),d&&!r&&w.length>0&&v+t.length>1&&ae.uniqueSort(u)}return d&&(x=C,l=b),_};return n?le(r):r}(r,s))).selector=e}return a},u=ae.select=function(e,t,n,s){var r,u,l,d,c,h="function"==typeof e&&e,p=!s&&o(e=h.selector||e);if(n=n||[],1===p.length){if((u=p[0]=p[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&m&&i.relative[u[1].type]){if(!(t=(i.find.ID(l.matches[0].replace(te,ne),t)||[])[0]))return n;h&&(t=t.parentNode),e=e.slice(u.shift().value.length)}for(r=K.needsContext.test(e)?0:u.length;r--&&(l=u[r],!i.relative[d=l.type]);)if((c=i.find[d])&&(s=c(l.matches[0].replace(te,ne),ee.test(u[0].type)&&ve(t.parentNode)||t))){if(u.splice(r,1),!(e=s.length&&_e(u)))return P.apply(n,s),n;break}}return(h||a(e,p))(s,t,!m,n,!t||ee.test(e)&&ve(t.parentNode)||t),n},n.sortStable=w.split("").sort(E).join("")===w,n.detectDuplicates=!!c,h(),n.sortDetached=de((function(e){return 1&e.compareDocumentPosition(p.createElement("fieldset"))})),de((function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")}))||ce("type|href|height|width",(function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)})),n.attributes&&de((function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")}))||ce("value",(function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue})),de((function(e){return null==e.getAttribute("disabled")}))||ce(H,(function(e,t,n){var i;if(!n)return!0===e[t]?t.toLowerCase():(i=e.getAttributeNode(t))&&i.specified?i.value:null})),ae}(n);k.find=T,k.expr=T.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=T.uniqueSort,k.text=T.getText,k.isXMLDoc=T.isXML,k.contains=T.contains,k.escapeSelector=T.escape;var N=function(e,t,n){for(var i=[],s=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(s&&k(e).is(n))break;i.push(e)}return i},E=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},j=k.expr.match.needsContext;function L(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,t,n){return y(t)?k.grep(e,(function(e,i){return!!t.call(e,i,e)!==n})):t.nodeType?k.grep(e,(function(e){return e===t!==n})):"string"!=typeof t?k.grep(e,(function(e){return c.call(t,e)>-1!==n})):k.filter(t,e,n)}k.filter=function(e,t,n){var i=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===i.nodeType?k.find.matchesSelector(i,e)?[i]:[]:k.find.matches(e,k.grep(t,(function(e){return 1===e.nodeType})))},k.fn.extend({find:function(e){var t,n,i=this.length,s=this;if("string"!=typeof e)return this.pushStack(k(e).filter((function(){for(t=0;t<i;t++)if(k.contains(s[t],this))return!0})));for(n=this.pushStack([]),t=0;t<i;t++)k.find(e,s[t],n);return i>1?k.uniqueSort(n):n},filter:function(e){return this.pushStack(D(this,e||[],!1))},not:function(e){return this.pushStack(D(this,e||[],!0))},is:function(e){return!!D(this,"string"==typeof e&&j.test(e)?k(e):e||[],!1).length}});var P,I=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var i,s;if(!e)return this;if(n=n||P,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:I.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:o,!0)),A.test(i[1])&&k.isPlainObject(t))for(i in t)y(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(s=o.getElementById(i[2]))&&(this[0]=s,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):y(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,P=k(o);var z=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter((function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0}))},closest:function(e,t){var n,i=0,s=this.length,r=[],o="string"!=typeof e&&k(e);if(!j.test(e))for(;i<s;i++)for(n=this[i];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(o?o.index(n)>-1:1===n.nodeType&&k.find.matchesSelector(n,e))){r.push(n);break}return this.pushStack(r.length>1?k.uniqueSort(r):r)},index:function(e){return e?"string"==typeof e?c.call(k(e),this[0]):c.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return N(e,"parentNode")},parentsUntil:function(e,t,n){return N(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return N(e,"nextSibling")},prevAll:function(e){return N(e,"previousSibling")},nextUntil:function(e,t,n){return N(e,"nextSibling",n)},prevUntil:function(e,t,n){return N(e,"previousSibling",n)},siblings:function(e){return E((e.parentNode||{}).firstChild,e)},children:function(e){return E(e.firstChild)},contents:function(e){return void 0!==e.contentDocument?e.contentDocument:(L(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},(function(e,t){k.fn[e]=function(n,i){var s=k.map(this,t,n);return"Until"!==e.slice(-5)&&(i=n),i&&"string"==typeof i&&(s=k.filter(i,s)),this.length>1&&(H[e]||k.uniqueSort(s),z.test(e)&&s.reverse()),this.pushStack(s)}}));var q=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function W(e,t,n,i){var s;try{e&&y(s=e.promise)?s.call(e).done(t).fail(n):e&&y(s=e.then)?s.call(e,t,n):t.apply(void 0,[e].slice(i))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(e){e="string"==typeof e?function(e){var t={};return k.each(e.match(q)||[],(function(e,n){t[n]=!0})),t}(e):k.extend({},e);var t,n,i,s,r=[],o=[],a=-1,u=function(){for(s=s||e.once,i=t=!0;o.length;a=-1)for(n=o.shift();++a<r.length;)!1===r[a].apply(n[0],n[1])&&e.stopOnFalse&&(a=r.length,n=!1);e.memory||(n=!1),t=!1,s&&(r=n?[]:"")},l={add:function(){return r&&(n&&!t&&(a=r.length-1,o.push(n)),function t(n){k.each(n,(function(n,i){y(i)?e.unique&&l.has(i)||r.push(i):i&&i.length&&"string"!==x(i)&&t(i)}))}(arguments),n&&!t&&u()),this},remove:function(){return k.each(arguments,(function(e,t){for(var n;(n=k.inArray(t,r,n))>-1;)r.splice(n,1),n<=a&&a--})),this},has:function(e){return e?k.inArray(e,r)>-1:r.length>0},empty:function(){return r&&(r=[]),this},disable:function(){return s=o=[],r=n="",this},disabled:function(){return!r},lock:function(){return s=o=[],n||t||(r=n=""),this},locked:function(){return!!s},fireWith:function(e,n){return s||(n=[e,(n=n||[]).slice?n.slice():n],o.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!i}};return l},k.extend({Deferred:function(e){var t=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",s={state:function(){return i},always:function(){return r.done(arguments).fail(arguments),this},catch:function(e){return s.then(null,e)},pipe:function(){var e=arguments;return k.Deferred((function(n){k.each(t,(function(t,i){var s=y(e[i[4]])&&e[i[4]];r[i[1]]((function(){var e=s&&s.apply(this,arguments);e&&y(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[i[0]+"With"](this,s?[e]:arguments)}))})),e=null})).promise()},then:function(e,i,s){var r=0;function o(e,t,i,s){return function(){var a=this,u=arguments,l=function(){var n,l;if(!(e<r)){if((n=i.apply(a,u))===t.promise())throw new TypeError("Thenable self-resolution");l=n&&("object"==typeof n||"function"==typeof n)&&n.then,y(l)?s?l.call(n,o(r,t,R,s),o(r,t,M,s)):(r++,l.call(n,o(r,t,R,s),o(r,t,M,s),o(r,t,R,t.notifyWith))):(i!==R&&(a=void 0,u=[n]),(s||t.resolveWith)(a,u))}},d=s?l:function(){try{l()}catch(n){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(n,d.stackTrace),e+1>=r&&(i!==M&&(a=void 0,u=[n]),t.rejectWith(a,u))}};e?d():(k.Deferred.getStackHook&&(d.stackTrace=k.Deferred.getStackHook()),n.setTimeout(d))}}return k.Deferred((function(n){t[0][3].add(o(0,n,y(s)?s:R,n.notifyWith)),t[1][3].add(o(0,n,y(e)?e:R)),t[2][3].add(o(0,n,y(i)?i:M))})).promise()},promise:function(e){return null!=e?k.extend(e,s):s}},r={};return k.each(t,(function(e,n){var o=n[2],a=n[5];s[n[1]]=o.add,a&&o.add((function(){i=a}),t[3-e][2].disable,t[3-e][3].disable,t[0][2].lock,t[0][3].lock),o.add(n[3].fire),r[n[0]]=function(){return r[n[0]+"With"](this===r?void 0:this,arguments),this},r[n[0]+"With"]=o.fireWith})),s.promise(r),e&&e.call(r,r),r},when:function(e){var t=arguments.length,n=t,i=Array(n),s=u.call(arguments),r=k.Deferred(),o=function(e){return function(n){i[e]=this,s[e]=arguments.length>1?u.call(arguments):n,--t||r.resolveWith(i,s)}};if(t<=1&&(W(e,r.done(o(n)).resolve,r.reject,!t),"pending"===r.state()||y(s[n]&&s[n].then)))return r.then();for(;n--;)W(s[n],o(n),r.reject);return r.promise()}});var F=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){n.console&&n.console.warn&&e&&F.test(e.name)&&n.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){n.setTimeout((function(){throw e}))};var B=k.Deferred();function Q(){o.removeEventListener("DOMContentLoaded",Q),n.removeEventListener("load",Q),k.ready()}k.fn.ready=function(e){return B.then(e).catch((function(e){k.readyException(e)})),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0,!0!==e&&--k.readyWait>0||B.resolveWith(o,[k]))}}),k.ready.then=B.then,"complete"===o.readyState||"loading"!==o.readyState&&!o.documentElement.doScroll?n.setTimeout(k.ready):(o.addEventListener("DOMContentLoaded",Q),n.addEventListener("load",Q));var $=function(e,t,n,i,s,r,o){var a=0,u=e.length,l=null==n;if("object"===x(n))for(a in s=!0,n)$(e,t,a,n[a],!0,r,o);else if(void 0!==i&&(s=!0,y(i)||(o=!0),l&&(o?(t.call(e,i),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;a<u;a++)t(e[a],n,o?i:i.call(e[a],a,t(e[a],n)));return s?e:l?t.call(e):u?t(e[0],n):r},U=/^-ms-/,V=/-([a-z])/g;function K(e,t){return t.toUpperCase()}function X(e){return e.replace(U,"ms-").replace(V,K)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var i,s=this.cache(e);if("string"==typeof t)s[X(t)]=n;else for(i in t)s[X(i)]=t[i];return s},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,i=e[this.expando];if(void 0!==i){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in i?[t]:t.match(q)||[]).length;for(;n--;)delete i[t[n]]}(void 0===t||k.isEmptyObject(i))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var J=new Y,Z=new Y,ee=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,te=/[A-Z]/g;function ne(e,t,n){var i;if(void 0===n&&1===e.nodeType)if(i="data-"+t.replace(te,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(i))){try{n=function(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:ee.test(e)?JSON.parse(e):e)}(n)}catch(e){}Z.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return Z.hasData(e)||J.hasData(e)},data:function(e,t,n){return Z.access(e,t,n)},removeData:function(e,t){Z.remove(e,t)},_data:function(e,t,n){return J.access(e,t,n)},_removeData:function(e,t){J.remove(e,t)}}),k.fn.extend({data:function(e,t){var n,i,s,r=this[0],o=r&&r.attributes;if(void 0===e){if(this.length&&(s=Z.get(r),1===r.nodeType&&!J.get(r,"hasDataAttrs"))){for(n=o.length;n--;)o[n]&&0===(i=o[n].name).indexOf("data-")&&(i=X(i.slice(5)),ne(r,i,s[i]));J.set(r,"hasDataAttrs",!0)}return s}return"object"==typeof e?this.each((function(){Z.set(this,e)})):$(this,(function(t){var n;if(r&&void 0===t)return void 0!==(n=Z.get(r,e))?n:void 0!==(n=ne(r,e))?n:void 0;this.each((function(){Z.set(this,e,t)}))}),null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each((function(){Z.remove(this,e)}))}}),k.extend({queue:function(e,t,n){var i;if(e)return t=(t||"fx")+"queue",i=J.get(e,t),n&&(!i||Array.isArray(n)?i=J.access(e,t,k.makeArray(n)):i.push(n)),i||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),i=n.length,s=n.shift(),r=k._queueHooks(e,t);"inprogress"===s&&(s=n.shift(),i--),s&&("fx"===t&&n.unshift("inprogress"),delete r.stop,s.call(e,(function(){k.dequeue(e,t)}),r)),!i&&r&&r.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:k.Callbacks("once memory").add((function(){J.remove(e,[t+"queue",n])}))})}}),k.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?k.queue(this[0],e):void 0===t?this:this.each((function(){var n=k.queue(this,e,t);k._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&k.dequeue(this,e)}))},dequeue:function(e){return this.each((function(){k.dequeue(this,e)}))},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,i=1,s=k.Deferred(),r=this,o=this.length,a=function(){--i||s.resolveWith(r,[r])};for("string"!=typeof e&&(t=e,e=void 0),e=e||"fx";o--;)(n=J.get(r[o],e+"queueHooks"))&&n.empty&&(i++,n.empty.add(a));return a(),s.promise(t)}});var ie=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,se=new RegExp("^(?:([+-])=|)("+ie+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],oe=o.documentElement,ae=function(e){return k.contains(e.ownerDocument,e)},ue={composed:!0};oe.getRootNode&&(ae=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ue)===e.ownerDocument});var le=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ae(e)&&"none"===k.css(e,"display")},de=function(e,t,n,i){var s,r,o={};for(r in t)o[r]=e.style[r],e.style[r]=t[r];for(r in s=n.apply(e,i||[]),t)e.style[r]=o[r];return s};function ce(e,t,n,i){var s,r,o=20,a=i?function(){return i.cur()}:function(){return k.css(e,t,"")},u=a(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),d=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&se.exec(k.css(e,t));if(d&&d[3]!==l){for(u/=2,l=l||d[3],d=+u||1;o--;)k.style(e,t,d+l),(1-r)*(1-(r=a()/u||.5))<=0&&(o=0),d/=r;d*=2,k.style(e,t,d+l),n=n||[]}return n&&(d=+d||+u||0,s=n[1]?d+(n[1]+1)*n[2]:+n[2],i&&(i.unit=l,i.start=d,i.end=s)),s}var he={};function pe(e){var t,n=e.ownerDocument,i=e.nodeName,s=he[i];return s||(t=n.body.appendChild(n.createElement(i)),s=k.css(t,"display"),t.parentNode.removeChild(t),"none"===s&&(s="block"),he[i]=s,s)}function fe(e,t){for(var n,i,s=[],r=0,o=e.length;r<o;r++)(i=e[r]).style&&(n=i.style.display,t?("none"===n&&(s[r]=J.get(i,"display")||null,s[r]||(i.style.display="")),""===i.style.display&&le(i)&&(s[r]=pe(i))):"none"!==n&&(s[r]="none",J.set(i,"display",n)));for(r=0;r<o;r++)null!=s[r]&&(e[r].style.display=s[r]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each((function(){le(this)?k(this).show():k(this).hide()}))}});var me=/^(?:checkbox|radio)$/i,ge=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,ve=/^$|^module$|\/(?:java|ecma)script/i,ye={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function _e(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&L(e,t)?k.merge([e],n):n}function we(e,t){for(var n=0,i=e.length;n<i;n++)J.set(e[n],"globalEval",!t||J.get(t[n],"globalEval"))}ye.optgroup=ye.option,ye.tbody=ye.tfoot=ye.colgroup=ye.caption=ye.thead,ye.th=ye.td;var be,xe,ke=/<|&#?\w+;/;function Ce(e,t,n,i,s){for(var r,o,a,u,l,d,c=t.createDocumentFragment(),h=[],p=0,f=e.length;p<f;p++)if((r=e[p])||0===r)if("object"===x(r))k.merge(h,r.nodeType?[r]:r);else if(ke.test(r)){for(o=o||c.appendChild(t.createElement("div")),a=(ge.exec(r)||["",""])[1].toLowerCase(),u=ye[a]||ye._default,o.innerHTML=u[1]+k.htmlPrefilter(r)+u[2],d=u[0];d--;)o=o.lastChild;k.merge(h,o.childNodes),(o=c.firstChild).textContent=""}else h.push(t.createTextNode(r));for(c.textContent="",p=0;r=h[p++];)if(i&&k.inArray(r,i)>-1)s&&s.push(r);else if(l=ae(r),o=_e(c.appendChild(r),"script"),l&&we(o),n)for(d=0;r=o[d++];)ve.test(r.type||"")&&n.push(r);return c}be=o.createDocumentFragment().appendChild(o.createElement("div")),(xe=o.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),be.appendChild(xe),v.checkClone=be.cloneNode(!0).cloneNode(!0).lastChild.checked,be.innerHTML="<textarea>x</textarea>",v.noCloneChecked=!!be.cloneNode(!0).lastChild.defaultValue;var Se=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ne=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function je(){return!1}function Le(e,t){return e===function(){try{return o.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,i,s,r){var o,a;if("object"==typeof t){for(a in"string"!=typeof n&&(i=i||n,n=void 0),t)Ae(e,a,n,i,t[a],r);return e}if(null==i&&null==s?(s=n,i=n=void 0):null==s&&("string"==typeof n?(s=i,i=void 0):(s=i,i=n,n=void 0)),!1===s)s=je;else if(!s)return e;return 1===r&&(o=s,(s=function(e){return k().off(e),o.apply(this,arguments)}).guid=o.guid||(o.guid=k.guid++)),e.each((function(){k.event.add(this,t,s,i,n)}))}function De(e,t,n){n?(J.set(e,t,!1),k.event.add(e,t,{namespace:!1,handler:function(e){var i,s,r=J.get(this,t);if(1&e.isTrigger&&this[t]){if(r.length)(k.event.special[t]||{}).delegateType&&e.stopPropagation();else if(r=u.call(arguments),J.set(this,t,r),i=n(this,t),this[t](),r!==(s=J.get(this,t))||i?J.set(this,t,!1):s={},r!==s)return e.stopImmediatePropagation(),e.preventDefault(),s.value}else r.length&&(J.set(this,t,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===J.get(e,t)&&k.event.add(e,t,Ee)}k.event={global:{},add:function(e,t,n,i,s){var r,o,a,u,l,d,c,h,p,f,m,g=J.get(e);if(g)for(n.handler&&(n=(r=n).handler,s=r.selector),s&&k.find.matchesSelector(oe,s),n.guid||(n.guid=k.guid++),(u=g.events)||(u=g.events={}),(o=g.handle)||(o=g.handle=function(t){return void 0!==k&&k.event.triggered!==t.type?k.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(q)||[""]).length;l--;)p=m=(a=Ne.exec(t[l])||[])[1],f=(a[2]||"").split(".").sort(),p&&(c=k.event.special[p]||{},p=(s?c.delegateType:c.bindType)||p,c=k.event.special[p]||{},d=k.extend({type:p,origType:m,data:i,handler:n,guid:n.guid,selector:s,needsContext:s&&k.expr.match.needsContext.test(s),namespace:f.join(".")},r),(h=u[p])||((h=u[p]=[]).delegateCount=0,c.setup&&!1!==c.setup.call(e,i,f,o)||e.addEventListener&&e.addEventListener(p,o)),c.add&&(c.add.call(e,d),d.handler.guid||(d.handler.guid=n.guid)),s?h.splice(h.delegateCount++,0,d):h.push(d),k.event.global[p]=!0)},remove:function(e,t,n,i,s){var r,o,a,u,l,d,c,h,p,f,m,g=J.hasData(e)&&J.get(e);if(g&&(u=g.events)){for(l=(t=(t||"").match(q)||[""]).length;l--;)if(p=m=(a=Ne.exec(t[l])||[])[1],f=(a[2]||"").split(".").sort(),p){for(c=k.event.special[p]||{},h=u[p=(i?c.delegateType:c.bindType)||p]||[],a=a[2]&&new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"),o=r=h.length;r--;)d=h[r],!s&&m!==d.origType||n&&n.guid!==d.guid||a&&!a.test(d.namespace)||i&&i!==d.selector&&("**"!==i||!d.selector)||(h.splice(r,1),d.selector&&h.delegateCount--,c.remove&&c.remove.call(e,d));o&&!h.length&&(c.teardown&&!1!==c.teardown.call(e,f,g.handle)||k.removeEvent(e,p,g.handle),delete u[p])}else for(p in u)k.event.remove(e,p+t[l],n,i,!0);k.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t,n,i,s,r,o,a=k.event.fix(e),u=new Array(arguments.length),l=(J.get(this,"events")||{})[a.type]||[],d=k.event.special[a.type]||{};for(u[0]=a,t=1;t<arguments.length;t++)u[t]=arguments[t];if(a.delegateTarget=this,!d.preDispatch||!1!==d.preDispatch.call(this,a)){for(o=k.event.handlers.call(this,a,l),t=0;(s=o[t++])&&!a.isPropagationStopped();)for(a.currentTarget=s.elem,n=0;(r=s.handlers[n++])&&!a.isImmediatePropagationStopped();)a.rnamespace&&!1!==r.namespace&&!a.rnamespace.test(r.namespace)||(a.handleObj=r,a.data=r.data,void 0!==(i=((k.event.special[r.origType]||{}).handle||r.handler).apply(s.elem,u))&&!1===(a.result=i)&&(a.preventDefault(),a.stopPropagation()));return d.postDispatch&&d.postDispatch.call(this,a),a.result}},handlers:function(e,t){var n,i,s,r,o,a=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&e.button>=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(r=[],o={},n=0;n<u;n++)void 0===o[s=(i=t[n]).selector+" "]&&(o[s]=i.needsContext?k(s,this).index(l)>-1:k.find(s,this,null,[l]).length),o[s]&&r.push(i);r.length&&a.push({elem:l,handlers:r})}return l=this,u<t.length&&a.push({elem:l,handlers:t.slice(u)}),a},addProp:function(e,t){Object.defineProperty(k.Event.prototype,e,{enumerable:!0,configurable:!0,get:y(t)?function(){if(this.originalEvent)return t(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[e]},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return me.test(t.type)&&t.click&&L(t,"input")&&De(t,"click",Ee),!1},trigger:function(e){var t=this||e;return me.test(t.type)&&t.click&&L(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return me.test(t.type)&&t.click&&L(t,"input")&&J.get(t,"click")||L(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ee:je,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&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:je,isPropagationStopped:je,isImmediatePropagationStopped:je,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ee,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ee,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ee,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Se.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Te.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},(function(e,t){k.event.special[e]={setup:function(){return De(this,e,Le),!1},trigger:function(){return De(this,e),!0},delegateType:t}})),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},(function(e,t){k.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,i=this,s=e.relatedTarget,r=e.handleObj;return s&&(s===i||k.contains(i,s))||(e.type=r.origType,n=r.handler.apply(this,arguments),e.type=t),n}}})),k.fn.extend({on:function(e,t,n,i){return Ae(this,e,t,n,i)},one:function(e,t,n,i){return Ae(this,e,t,n,i,1)},off:function(e,t,n){var i,s;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,k(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(s in e)this.off(s,t,e[s]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=je),this.each((function(){k.event.remove(this,e,n,t)}))}});var Pe=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Ie=/<script|<style|<link/i,ze=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return L(e,"table")&&L(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function qe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,i,s,r,o,a,u,l;if(1===t.nodeType){if(J.hasData(e)&&(r=J.access(e),o=J.set(t,r),l=r.events))for(s in delete o.handle,o.events={},l)for(n=0,i=l[s].length;n<i;n++)k.event.add(t,s,l[s][n]);Z.hasData(e)&&(a=Z.access(e),u=k.extend({},a),Z.set(t,u))}}function We(e,t){var n=t.nodeName.toLowerCase();"input"===n&&me.test(e.type)?t.checked=e.checked:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}function Fe(e,t,n,i){t=l.apply([],t);var s,r,o,a,u,d,c=0,h=e.length,p=h-1,f=t[0],m=y(f);if(m||h>1&&"string"==typeof f&&!v.checkClone&&ze.test(f))return e.each((function(s){var r=e.eq(s);m&&(t[0]=f.call(this,s,r.html())),Fe(r,t,n,i)}));if(h&&(r=(s=Ce(t,e[0].ownerDocument,!1,e,i)).firstChild,1===s.childNodes.length&&(s=r),r||i)){for(a=(o=k.map(_e(s,"script"),qe)).length;c<h;c++)u=s,c!==p&&(u=k.clone(u,!0,!0),a&&k.merge(o,_e(u,"script"))),n.call(e[c],u,c);if(a)for(d=o[o.length-1].ownerDocument,k.map(o,Re),c=0;c<a;c++)u=o[c],ve.test(u.type||"")&&!J.access(u,"globalEval")&&k.contains(d,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,d))}return e}function Be(e,t,n){for(var i,s=t?k.filter(t,e):e,r=0;null!=(i=s[r]);r++)n||1!==i.nodeType||k.cleanData(_e(i)),i.parentNode&&(n&&ae(i)&&we(_e(i,"script")),i.parentNode.removeChild(i));return e}k.extend({htmlPrefilter:function(e){return e.replace(Pe,"<$1></$2>")},clone:function(e,t,n){var i,s,r,o,a=e.cloneNode(!0),u=ae(e);if(!(v.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(o=_e(a),i=0,s=(r=_e(e)).length;i<s;i++)We(r[i],o[i]);if(t)if(n)for(r=r||_e(e),o=o||_e(a),i=0,s=r.length;i<s;i++)Me(r[i],o[i]);else Me(e,a);return(o=_e(a,"script")).length>0&&we(o,!u&&_e(e,"script")),a},cleanData:function(e){for(var t,n,i,s=k.event.special,r=0;void 0!==(n=e[r]);r++)if(G(n)){if(t=n[J.expando]){if(t.events)for(i in t.events)s[i]?k.event.remove(n,i):k.removeEvent(n,i,t.handle);n[J.expando]=void 0}n[Z.expando]&&(n[Z.expando]=void 0)}}}),k.fn.extend({detach:function(e){return Be(this,e,!0)},remove:function(e){return Be(this,e)},text:function(e){return $(this,(function(e){return void 0===e?k.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 Fe(this,arguments,(function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)}))},prepend:function(){return Fe(this,arguments,(function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}}))},before:function(){return Fe(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this)}))},after:function(){return Fe(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&&(k.cleanData(_e(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map((function(){return k.clone(this,e,t)}))},html:function(e){return $(this,(function(e){var t=this[0]||{},n=0,i=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ie.test(e)&&!ye[(ge.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<i;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(_e(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)}),null,e,arguments.length)},replaceWith:function(){var e=[];return Fe(this,arguments,(function(t){var n=this.parentNode;k.inArray(this,e)<0&&(k.cleanData(_e(this)),n&&n.replaceChild(t,this))}),e)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},(function(e,t){k.fn[e]=function(e){for(var n,i=[],s=k(e),r=s.length-1,o=0;o<=r;o++)n=o===r?this:this.clone(!0),k(s[o])[t](n),d.apply(i,n.get());return this.pushStack(i)}}));var Qe=new RegExp("^("+ie+")(?!px)[a-z%]+$","i"),$e=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=n),t.getComputedStyle(e)},Ue=new RegExp(re.join("|"),"i");function Ve(e,t,n){var i,s,r,o,a=e.style;return(n=n||$e(e))&&(""!==(o=n.getPropertyValue(t)||n[t])||ae(e)||(o=k.style(e,t)),!v.pixelBoxStyles()&&Qe.test(o)&&Ue.test(t)&&(i=a.width,s=a.minWidth,r=a.maxWidth,a.minWidth=a.maxWidth=a.width=o,o=n.width,a.width=i,a.minWidth=s,a.maxWidth=r)),void 0!==o?o+"":o}function Ke(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(d){l.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",d.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",oe.appendChild(l).appendChild(d);var e=n.getComputedStyle(d);i="1%"!==e.top,u=12===t(e.marginLeft),d.style.right="60%",a=36===t(e.right),s=36===t(e.width),d.style.position="absolute",r=12===t(d.offsetWidth/3),oe.removeChild(l),d=null}}function t(e){return Math.round(parseFloat(e))}var i,s,r,a,u,l=o.createElement("div"),d=o.createElement("div");d.style&&(d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",v.clearCloneStyle="content-box"===d.style.backgroundClip,k.extend(v,{boxSizingReliable:function(){return e(),s},pixelBoxStyles:function(){return e(),a},pixelPosition:function(){return e(),i},reliableMarginLeft:function(){return e(),u},scrollboxSize:function(){return e(),r}}))}();var Xe=["Webkit","Moz","ms"],Ge=o.createElement("div").style,Ye={};function Je(e){var t=k.cssProps[e]||Ye[e];return t||(e in Ge?e:Ye[e]=function(e){for(var t=e[0].toUpperCase()+e.slice(1),n=Xe.length;n--;)if((e=Xe[n]+t)in Ge)return e}(e)||e)}var Ze=/^(none|table(?!-c[ea]).+)/,et=/^--/,tt={position:"absolute",visibility:"hidden",display:"block"},nt={letterSpacing:"0",fontWeight:"400"};function it(e,t,n){var i=se.exec(t);return i?Math.max(0,i[2]-(n||0))+(i[3]||"px"):t}function st(e,t,n,i,s,r){var o="width"===t?1:0,a=0,u=0;if(n===(i?"border":"content"))return 0;for(;o<4;o+=2)"margin"===n&&(u+=k.css(e,n+re[o],!0,s)),i?("content"===n&&(u-=k.css(e,"padding"+re[o],!0,s)),"margin"!==n&&(u-=k.css(e,"border"+re[o]+"Width",!0,s))):(u+=k.css(e,"padding"+re[o],!0,s),"padding"!==n?u+=k.css(e,"border"+re[o]+"Width",!0,s):a+=k.css(e,"border"+re[o]+"Width",!0,s));return!i&&r>=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-r-u-a-.5))||0),u}function rt(e,t,n){var i=$e(e),s=(!v.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,i),r=s,o=Ve(e,t,i),a="offset"+t[0].toUpperCase()+t.slice(1);if(Qe.test(o)){if(!n)return o;o="auto"}return(!v.boxSizingReliable()&&s||"auto"===o||!parseFloat(o)&&"inline"===k.css(e,"display",!1,i))&&e.getClientRects().length&&(s="border-box"===k.css(e,"boxSizing",!1,i),(r=a in e)&&(o=e[a])),(o=parseFloat(o)||0)+st(e,t,n||(s?"border":"content"),r,i,o)+"px"}function ot(e,t,n,i,s){return new ot.prototype.init(e,t,n,i,s)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Ve(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,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var s,r,o,a=X(t),u=et.test(t),l=e.style;if(u||(t=Je(a)),o=k.cssHooks[t]||k.cssHooks[a],void 0===n)return o&&"get"in o&&void 0!==(s=o.get(e,!1,i))?s:l[t];"string"===(r=typeof n)&&(s=se.exec(n))&&s[1]&&(n=ce(e,t,s),r="number"),null!=n&&n==n&&("number"!==r||u||(n+=s&&s[3]||(k.cssNumber[a]?"":"px")),v.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),o&&"set"in o&&void 0===(n=o.set(e,n,i))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,i){var s,r,o,a=X(t);return et.test(t)||(t=Je(a)),(o=k.cssHooks[t]||k.cssHooks[a])&&"get"in o&&(s=o.get(e,!0,n)),void 0===s&&(s=Ve(e,t,i)),"normal"===s&&t in nt&&(s=nt[t]),""===n||n?(r=parseFloat(s),!0===n||isFinite(r)?r||0:s):s}}),k.each(["height","width"],(function(e,t){k.cssHooks[t]={get:function(e,n,i){if(n)return!Ze.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?rt(e,t,i):de(e,tt,(function(){return rt(e,t,i)}))},set:function(e,n,i){var s,r=$e(e),o=!v.scrollboxSize()&&"absolute"===r.position,a=(o||i)&&"border-box"===k.css(e,"boxSizing",!1,r),u=i?st(e,t,i,a,r):0;return a&&o&&(u-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(r[t])-st(e,t,"border",!1,r)-.5)),u&&(s=se.exec(n))&&"px"!==(s[3]||"px")&&(e.style[t]=n,n=k.css(e,t)),it(0,n,u)}}})),k.cssHooks.marginLeft=Ke(v.reliableMarginLeft,(function(e,t){if(t)return(parseFloat(Ve(e,"marginLeft"))||e.getBoundingClientRect().left-de(e,{marginLeft:0},(function(){return e.getBoundingClientRect().left})))+"px"})),k.each({margin:"",padding:"",border:"Width"},(function(e,t){k.cssHooks[e+t]={expand:function(n){for(var i=0,s={},r="string"==typeof n?n.split(" "):[n];i<4;i++)s[e+re[i]+t]=r[i]||r[i-2]||r[0];return s}},"margin"!==e&&(k.cssHooks[e+t].set=it)})),k.fn.extend({css:function(e,t){return $(this,(function(e,t,n){var i,s,r={},o=0;if(Array.isArray(t)){for(i=$e(e),s=t.length;o<s;o++)r[t[o]]=k.css(e,t[o],!1,i);return r}return void 0!==n?k.style(e,t,n):k.css(e,t)}),e,t,arguments.length>1)}}),k.Tween=ot,ot.prototype={constructor:ot,init:function(e,t,n,i,s,r){this.elem=e,this.prop=n,this.easing=s||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=i,this.unit=r||(k.cssNumber[n]?"":"px")},cur:function(){var e=ot.propHooks[this.prop];return e&&e.get?e.get(this):ot.propHooks._default.get(this)},run:function(e){var t,n=ot.propHooks[this.prop];return this.options.duration?this.pos=t=k.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):ot.propHooks._default.set(this),this}},ot.prototype.init.prototype=ot.prototype,ot.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=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Je(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}},ot.propHooks.scrollTop=ot.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=ot.prototype.init,k.fx.step={};var at,ut,lt=/^(?:toggle|show|hide)$/,dt=/queueHooks$/;function ct(){ut&&(!1===o.hidden&&n.requestAnimationFrame?n.requestAnimationFrame(ct):n.setTimeout(ct,k.fx.interval),k.fx.tick())}function ht(){return n.setTimeout((function(){at=void 0})),at=Date.now()}function pt(e,t){var n,i=0,s={height:e};for(t=t?1:0;i<4;i+=2-t)s["margin"+(n=re[i])]=s["padding"+n]=e;return t&&(s.opacity=s.width=e),s}function ft(e,t,n){for(var i,s=(mt.tweeners[t]||[]).concat(mt.tweeners["*"]),r=0,o=s.length;r<o;r++)if(i=s[r].call(n,t,e))return i}function mt(e,t,n){var i,s,r=0,o=mt.prefilters.length,a=k.Deferred().always((function(){delete u.elem})),u=function(){if(s)return!1;for(var t=at||ht(),n=Math.max(0,l.startTime+l.duration-t),i=1-(n/l.duration||0),r=0,o=l.tweens.length;r<o;r++)l.tweens[r].run(i);return a.notifyWith(e,[l,i,n]),i<1&&o?n:(o||a.notifyWith(e,[l,1,0]),a.resolveWith(e,[l]),!1)},l=a.promise({elem:e,props:k.extend({},t),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},n),originalProperties:t,originalOptions:n,startTime:at||ht(),duration:n.duration,tweens:[],createTween:function(t,n){var i=k.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(i),i},stop:function(t){var n=0,i=t?l.tweens.length:0;if(s)return this;for(s=!0;n<i;n++)l.tweens[n].run(1);return t?(a.notifyWith(e,[l,1,0]),a.resolveWith(e,[l,t])):a.rejectWith(e,[l,t]),this}}),d=l.props;for(!function(e,t){var n,i,s,r,o;for(n in e)if(s=t[i=X(n)],r=e[n],Array.isArray(r)&&(s=r[1],r=e[n]=r[0]),n!==i&&(e[i]=r,delete e[n]),(o=k.cssHooks[i])&&"expand"in o)for(n in r=o.expand(r),delete e[i],r)n in e||(e[n]=r[n],t[n]=s);else t[i]=s}(d,l.opts.specialEasing);r<o;r++)if(i=mt.prefilters[r].call(l,e,d,l.opts))return y(i.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=i.stop.bind(i)),i;return k.map(d,ft,l),y(l.opts.start)&&l.opts.start.call(e,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(mt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return ce(n.elem,e,se.exec(t),n),n}]},tweener:function(e,t){y(e)?(t=e,e=["*"]):e=e.match(q);for(var n,i=0,s=e.length;i<s;i++)n=e[i],mt.tweeners[n]=mt.tweeners[n]||[],mt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var i,s,r,o,a,u,l,d,c="width"in t||"height"in t,h=this,p={},f=e.style,m=e.nodeType&&le(e),g=J.get(e,"fxshow");for(i in n.queue||(null==(o=k._queueHooks(e,"fx")).unqueued&&(o.unqueued=0,a=o.empty.fire,o.empty.fire=function(){o.unqueued||a()}),o.unqueued++,h.always((function(){h.always((function(){o.unqueued--,k.queue(e,"fx").length||o.empty.fire()}))}))),t)if(s=t[i],lt.test(s)){if(delete t[i],r=r||"toggle"===s,s===(m?"hide":"show")){if("show"!==s||!g||void 0===g[i])continue;m=!0}p[i]=g&&g[i]||k.style(e,i)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(p))for(i in c&&1===e.nodeType&&(n.overflow=[f.overflow,f.overflowX,f.overflowY],null==(l=g&&g.display)&&(l=J.get(e,"display")),"none"===(d=k.css(e,"display"))&&(l?d=l:(fe([e],!0),l=e.style.display||l,d=k.css(e,"display"),fe([e]))),("inline"===d||"inline-block"===d&&null!=l)&&"none"===k.css(e,"float")&&(u||(h.done((function(){f.display=l})),null==l&&(d=f.display,l="none"===d?"":d)),f.display="inline-block")),n.overflow&&(f.overflow="hidden",h.always((function(){f.overflow=n.overflow[0],f.overflowX=n.overflow[1],f.overflowY=n.overflow[2]}))),u=!1,p)u||(g?"hidden"in g&&(m=g.hidden):g=J.access(e,"fxshow",{display:l}),r&&(g.hidden=!m),m&&fe([e],!0),h.done((function(){for(i in m||fe([e]),J.remove(e,"fxshow"),p)k.style(e,i,p[i])}))),u=ft(m?g[i]:0,i,h),i in g||(g[i]=u.start,m&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?mt.prefilters.unshift(e):mt.prefilters.push(e)}}),k.speed=function(e,t,n){var i=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||y(e)&&e,duration:e,easing:n&&t||t&&!y(t)&&t};return k.fx.off?i.duration=0:"number"!=typeof i.duration&&(i.duration in k.fx.speeds?i.duration=k.fx.speeds[i.duration]:i.duration=k.fx.speeds._default),null!=i.queue&&!0!==i.queue||(i.queue="fx"),i.old=i.complete,i.complete=function(){y(i.old)&&i.old.call(this),i.queue&&k.dequeue(this,i.queue)},i},k.fn.extend({fadeTo:function(e,t,n,i){return this.filter(le).css("opacity",0).show().end().animate({opacity:t},e,n,i)},animate:function(e,t,n,i){var s=k.isEmptyObject(e),r=k.speed(t,n,i),o=function(){var t=mt(this,k.extend({},e),r);(s||J.get(this,"finish"))&&t.stop(!0)};return o.finish=o,s||!1===r.queue?this.each(o):this.queue(r.queue,o)},stop:function(e,t,n){var i=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&!1!==e&&this.queue(e||"fx",[]),this.each((function(){var t=!0,s=null!=e&&e+"queueHooks",r=k.timers,o=J.get(this);if(s)o[s]&&o[s].stop&&i(o[s]);else for(s in o)o[s]&&o[s].stop&&dt.test(s)&&i(o[s]);for(s=r.length;s--;)r[s].elem!==this||null!=e&&r[s].queue!==e||(r[s].anim.stop(n),t=!1,r.splice(s,1));!t&&n||k.dequeue(this,e)}))},finish:function(e){return!1!==e&&(e=e||"fx"),this.each((function(){var t,n=J.get(this),i=n[e+"queue"],s=n[e+"queueHooks"],r=k.timers,o=i?i.length:0;for(n.finish=!0,k.queue(this,e,[]),s&&s.stop&&s.stop.call(this,!0),t=r.length;t--;)r[t].elem===this&&r[t].queue===e&&(r[t].anim.stop(!0),r.splice(t,1));for(t=0;t<o;t++)i[t]&&i[t].finish&&i[t].finish.call(this);delete n.finish}))}}),k.each(["toggle","show","hide"],(function(e,t){var n=k.fn[t];k.fn[t]=function(e,i,s){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(pt(t,!0),e,i,s)}})),k.each({slideDown:pt("show"),slideUp:pt("hide"),slideToggle:pt("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},(function(e,t){k.fn[e]=function(e,n,i){return this.animate(t,e,n,i)}})),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(at=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),at=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){ut||(ut=!0,ct())},k.fx.stop=function(){ut=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(e,t){return e=k.fx&&k.fx.speeds[e]||e,t=t||"fx",this.queue(t,(function(t,i){var s=n.setTimeout(t,e);i.stop=function(){n.clearTimeout(s)}}))},function(){var e=o.createElement("input"),t=o.createElement("select").appendChild(o.createElement("option"));e.type="checkbox",v.checkOn=""!==e.value,v.optSelected=t.selected,(e=o.createElement("input")).value="t",e.type="radio",v.radioValue="t"===e.value}();var gt,vt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return $(this,k.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each((function(){k.removeAttr(this,e)}))}}),k.extend({attr:function(e,t,n){var i,s,r=e.nodeType;if(3!==r&&8!==r&&2!==r)return void 0===e.getAttribute?k.prop(e,t,n):(1===r&&k.isXMLDoc(e)||(s=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?gt:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):s&&"set"in s&&void 0!==(i=s.set(e,n,t))?i:(e.setAttribute(t,n+""),n):s&&"get"in s&&null!==(i=s.get(e,t))?i:null==(i=k.find.attr(e,t))?void 0:i)},attrHooks:{type:{set:function(e,t){if(!v.radioValue&&"radio"===t&&L(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,i=0,s=t&&t.match(q);if(s&&1===e.nodeType)for(;n=s[i++];)e.removeAttribute(n)}}),gt={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),(function(e,t){var n=vt[t]||k.find.attr;vt[t]=function(e,t,i){var s,r,o=t.toLowerCase();return i||(r=vt[o],vt[o]=s,s=null!=n(e,t,i)?o:null,vt[o]=r),s}}));var yt=/^(?:input|select|textarea|button)$/i,_t=/^(?:a|area)$/i;function wt(e){return(e.match(q)||[]).join(" ")}function bt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(q)||[]}k.fn.extend({prop:function(e,t){return $(this,k.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each((function(){delete this[k.propFix[e]||e]}))}}),k.extend({prop:function(e,t,n){var i,s,r=e.nodeType;if(3!==r&&8!==r&&2!==r)return 1===r&&k.isXMLDoc(e)||(t=k.propFix[t]||t,s=k.propHooks[t]),void 0!==n?s&&"set"in s&&void 0!==(i=s.set(e,n,t))?i:e[t]=n:s&&"get"in s&&null!==(i=s.get(e,t))?i:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):yt.test(e.nodeName)||_t.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),v.optSelected||(k.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)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],(function(){k.propFix[this.toLowerCase()]=this})),k.fn.extend({addClass:function(e){var t,n,i,s,r,o,a,u=0;if(y(e))return this.each((function(t){k(this).addClass(e.call(this,t,bt(this)))}));if((t=xt(e)).length)for(;n=this[u++];)if(s=bt(n),i=1===n.nodeType&&" "+wt(s)+" "){for(o=0;r=t[o++];)i.indexOf(" "+r+" ")<0&&(i+=r+" ");s!==(a=wt(i))&&n.setAttribute("class",a)}return this},removeClass:function(e){var t,n,i,s,r,o,a,u=0;if(y(e))return this.each((function(t){k(this).removeClass(e.call(this,t,bt(this)))}));if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)for(;n=this[u++];)if(s=bt(n),i=1===n.nodeType&&" "+wt(s)+" "){for(o=0;r=t[o++];)for(;i.indexOf(" "+r+" ")>-1;)i=i.replace(" "+r+" "," ");s!==(a=wt(i))&&n.setAttribute("class",a)}return this},toggleClass:function(e,t){var n=typeof e,i="string"===n||Array.isArray(e);return"boolean"==typeof t&&i?t?this.addClass(e):this.removeClass(e):y(e)?this.each((function(n){k(this).toggleClass(e.call(this,n,bt(this),t),t)})):this.each((function(){var t,s,r,o;if(i)for(s=0,r=k(this),o=xt(e);t=o[s++];)r.hasClass(t)?r.removeClass(t):r.addClass(t);else void 0!==e&&"boolean"!==n||((t=bt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))}))},hasClass:function(e){var t,n,i=0;for(t=" "+e+" ";n=this[i++];)if(1===n.nodeType&&(" "+wt(bt(n))+" ").indexOf(t)>-1)return!0;return!1}});var kt=/\r/g;k.fn.extend({val:function(e){var t,n,i,s=this[0];return arguments.length?(i=y(e),this.each((function(n){var s;1===this.nodeType&&(null==(s=i?e.call(this,n,k(this).val()):e)?s="":"number"==typeof s?s+="":Array.isArray(s)&&(s=k.map(s,(function(e){return null==e?"":e+""}))),(t=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,s,"value")||(this.value=s))}))):s?(t=k.valHooks[s.type]||k.valHooks[s.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(s,"value"))?n:"string"==typeof(n=s.value)?n.replace(kt,""):null==n?"":n:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:wt(k.text(e))}},select:{get:function(e){var t,n,i,s=e.options,r=e.selectedIndex,o="select-one"===e.type,a=o?null:[],u=o?r+1:s.length;for(i=r<0?u:o?r:0;i<u;i++)if(((n=s[i]).selected||i===r)&&!n.disabled&&(!n.parentNode.disabled||!L(n.parentNode,"optgroup"))){if(t=k(n).val(),o)return t;a.push(t)}return a},set:function(e,t){for(var n,i,s=e.options,r=k.makeArray(t),o=s.length;o--;)((i=s[o]).selected=k.inArray(k.valHooks.option.get(i),r)>-1)&&(n=!0);return n||(e.selectedIndex=-1),r}}}}),k.each(["radio","checkbox"],(function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=k.inArray(k(e).val(),t)>-1}},v.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})})),v.focusin="onfocusin"in n;var Ct=/^(?:focusinfocus|focusoutblur)$/,St=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,i,s){var r,a,u,l,d,c,h,p,m=[i||o],g=f.call(e,"type")?e.type:e,v=f.call(e,"namespace")?e.namespace.split("."):[];if(a=p=u=i=i||o,3!==i.nodeType&&8!==i.nodeType&&!Ct.test(g+k.event.triggered)&&(g.indexOf(".")>-1&&(v=g.split("."),g=v.shift(),v.sort()),d=g.indexOf(":")<0&&"on"+g,(e=e[k.expando]?e:new k.Event(g,"object"==typeof e&&e)).isTrigger=s?2:3,e.namespace=v.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+v.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=i),t=null==t?[e]:k.makeArray(t,[e]),h=k.event.special[g]||{},s||!h.trigger||!1!==h.trigger.apply(i,t))){if(!s&&!h.noBubble&&!_(i)){for(l=h.delegateType||g,Ct.test(l+g)||(a=a.parentNode);a;a=a.parentNode)m.push(a),u=a;u===(i.ownerDocument||o)&&m.push(u.defaultView||u.parentWindow||n)}for(r=0;(a=m[r++])&&!e.isPropagationStopped();)p=a,e.type=r>1?l:h.bindType||g,(c=(J.get(a,"events")||{})[e.type]&&J.get(a,"handle"))&&c.apply(a,t),(c=d&&a[d])&&c.apply&&G(a)&&(e.result=c.apply(a,t),!1===e.result&&e.preventDefault());return e.type=g,s||e.isDefaultPrevented()||h._default&&!1!==h._default.apply(m.pop(),t)||!G(i)||d&&y(i[g])&&!_(i)&&((u=i[d])&&(i[d]=null),k.event.triggered=g,e.isPropagationStopped()&&p.addEventListener(g,St),i[g](),e.isPropagationStopped()&&p.removeEventListener(g,St),k.event.triggered=void 0,u&&(i[d]=u)),e.result}},simulate:function(e,t,n){var i=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(i,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each((function(){k.event.trigger(e,t,this)}))},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),v.focusin||k.each({focus:"focusin",blur:"focusout"},(function(e,t){var n=function(e){k.event.simulate(t,e.target,k.event.fix(e))};k.event.special[t]={setup:function(){var i=this.ownerDocument||this,s=J.access(i,t);s||i.addEventListener(e,n,!0),J.access(i,t,(s||0)+1)},teardown:function(){var i=this.ownerDocument||this,s=J.access(i,t)-1;s?J.access(i,t,s):(i.removeEventListener(e,n,!0),J.remove(i,t))}}}));var Tt=n.location,Nt=Date.now(),Et=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new n.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var jt=/\[\]$/,Lt=/\r?\n/g,At=/^(?:submit|button|image|reset|file)$/i,Dt=/^(?:input|select|textarea|keygen)/i;function Pt(e,t,n,i){var s;if(Array.isArray(t))k.each(t,(function(t,s){n||jt.test(e)?i(e,s):Pt(e+"["+("object"==typeof s&&null!=s?t:"")+"]",s,n,i)}));else if(n||"object"!==x(t))i(e,t);else for(s in t)Pt(e+"["+s+"]",t[s],n,i)}k.param=function(e,t){var n,i=[],s=function(e,t){var n=y(t)?t():t;i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,(function(){s(this.name,this.value)}));else for(n in e)Pt(n,e[n],t,s);return i.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this})).filter((function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&Dt.test(this.nodeName)&&!At.test(e)&&(this.checked||!me.test(e))})).map((function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,(function(e){return{name:t.name,value:e.replace(Lt,"\r\n")}})):{name:t.name,value:n.replace(Lt,"\r\n")}})).get()}});var It=/%20/g,zt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,qt=/^(?:GET|HEAD)$/,Rt=/^\/\//,Mt={},Wt={},Ft="*/".concat("*"),Bt=o.createElement("a");function Qt(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var i,s=0,r=t.toLowerCase().match(q)||[];if(y(n))for(;i=r[s++];)"+"===i[0]?(i=i.slice(1)||"*",(e[i]=e[i]||[]).unshift(n)):(e[i]=e[i]||[]).push(n)}}function $t(e,t,n,i){var s={},r=e===Wt;function o(a){var u;return s[a]=!0,k.each(e[a]||[],(function(e,a){var l=a(t,n,i);return"string"!=typeof l||r||s[l]?r?!(u=l):void 0:(t.dataTypes.unshift(l),o(l),!1)})),u}return o(t.dataTypes[0])||!s["*"]&&o("*")}function Ut(e,t){var n,i,s=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((s[n]?e:i||(i={}))[n]=t[n]);return i&&k.extend(!0,e,i),e}Bt.href=Tt.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Tt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Tt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Ft,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":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ut(Ut(e,k.ajaxSettings),t):Ut(k.ajaxSettings,e)},ajaxPrefilter:Qt(Mt),ajaxTransport:Qt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var i,s,r,a,u,l,d,c,h,p,f=k.ajaxSetup({},t),m=f.context||f,g=f.context&&(m.nodeType||m.jquery)?k(m):k.event,v=k.Deferred(),y=k.Callbacks("once memory"),_=f.statusCode||{},w={},b={},x="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(d){if(!a)for(a={};t=Ot.exec(r);)a[t[1].toLowerCase()+" "]=(a[t[1].toLowerCase()+" "]||[]).concat(t[2]);t=a[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return d?r:null},setRequestHeader:function(e,t){return null==d&&(e=b[e.toLowerCase()]=b[e.toLowerCase()]||e,w[e]=t),this},overrideMimeType:function(e){return null==d&&(f.mimeType=e),this},statusCode:function(e){var t;if(e)if(d)C.always(e[C.status]);else for(t in e)_[t]=[_[t],e[t]];return this},abort:function(e){var t=e||x;return i&&i.abort(t),S(0,t),this}};if(v.promise(C),f.url=((e||f.url||Tt.href)+"").replace(Rt,Tt.protocol+"//"),f.type=t.method||t.type||f.method||f.type,f.dataTypes=(f.dataType||"*").toLowerCase().match(q)||[""],null==f.crossDomain){l=o.createElement("a");try{l.href=f.url,l.href=l.href,f.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){f.crossDomain=!0}}if(f.data&&f.processData&&"string"!=typeof f.data&&(f.data=k.param(f.data,f.traditional)),$t(Mt,f,t,C),d)return C;for(h in(c=k.event&&f.global)&&0==k.active++&&k.event.trigger("ajaxStart"),f.type=f.type.toUpperCase(),f.hasContent=!qt.test(f.type),s=f.url.replace(zt,""),f.hasContent?f.data&&f.processData&&0===(f.contentType||"").indexOf("application/x-www-form-urlencoded")&&(f.data=f.data.replace(It,"+")):(p=f.url.slice(s.length),f.data&&(f.processData||"string"==typeof f.data)&&(s+=(Et.test(s)?"&":"?")+f.data,delete f.data),!1===f.cache&&(s=s.replace(Ht,"$1"),p=(Et.test(s)?"&":"?")+"_="+Nt+++p),f.url=s+p),f.ifModified&&(k.lastModified[s]&&C.setRequestHeader("If-Modified-Since",k.lastModified[s]),k.etag[s]&&C.setRequestHeader("If-None-Match",k.etag[s])),(f.data&&f.hasContent&&!1!==f.contentType||t.contentType)&&C.setRequestHeader("Content-Type",f.contentType),C.setRequestHeader("Accept",f.dataTypes[0]&&f.accepts[f.dataTypes[0]]?f.accepts[f.dataTypes[0]]+("*"!==f.dataTypes[0]?", "+Ft+"; q=0.01":""):f.accepts["*"]),f.headers)C.setRequestHeader(h,f.headers[h]);if(f.beforeSend&&(!1===f.beforeSend.call(m,C,f)||d))return C.abort();if(x="abort",y.add(f.complete),C.done(f.success),C.fail(f.error),i=$t(Wt,f,t,C)){if(C.readyState=1,c&&g.trigger("ajaxSend",[C,f]),d)return C;f.async&&f.timeout>0&&(u=n.setTimeout((function(){C.abort("timeout")}),f.timeout));try{d=!1,i.send(w,S)}catch(e){if(d)throw e;S(-1,e)}}else S(-1,"No Transport");function S(e,t,o,a){var l,h,p,w,b,x=t;d||(d=!0,u&&n.clearTimeout(u),i=void 0,r=a||"",C.readyState=e>0?4:0,l=e>=200&&e<300||304===e,o&&(w=function(e,t,n){for(var i,s,r,o,a=e.contents,u=e.dataTypes;"*"===u[0];)u.shift(),void 0===i&&(i=e.mimeType||t.getResponseHeader("Content-Type"));if(i)for(s in a)if(a[s]&&a[s].test(i)){u.unshift(s);break}if(u[0]in n)r=u[0];else{for(s in n){if(!u[0]||e.converters[s+" "+u[0]]){r=s;break}o||(o=s)}r=r||o}if(r)return r!==u[0]&&u.unshift(r),n[r]}(f,C,o)),w=function(e,t,n,i){var s,r,o,a,u,l={},d=e.dataTypes.slice();if(d[1])for(o in e.converters)l[o.toLowerCase()]=e.converters[o];for(r=d.shift();r;)if(e.responseFields[r]&&(n[e.responseFields[r]]=t),!u&&i&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=r,r=d.shift())if("*"===r)r=u;else if("*"!==u&&u!==r){if(!(o=l[u+" "+r]||l["* "+r]))for(s in l)if((a=s.split(" "))[1]===r&&(o=l[u+" "+a[0]]||l["* "+a[0]])){!0===o?o=l[s]:!0!==l[s]&&(r=a[0],d.unshift(a[1]));break}if(!0!==o)if(o&&e.throws)t=o(t);else try{t=o(t)}catch(e){return{state:"parsererror",error:o?e:"No conversion from "+u+" to "+r}}}return{state:"success",data:t}}(f,w,C,l),l?(f.ifModified&&((b=C.getResponseHeader("Last-Modified"))&&(k.lastModified[s]=b),(b=C.getResponseHeader("etag"))&&(k.etag[s]=b)),204===e||"HEAD"===f.type?x="nocontent":304===e?x="notmodified":(x=w.state,h=w.data,l=!(p=w.error))):(p=x,!e&&x||(x="error",e<0&&(e=0))),C.status=e,C.statusText=(t||x)+"",l?v.resolveWith(m,[h,x,C]):v.rejectWith(m,[C,x,p]),C.statusCode(_),_=void 0,c&&g.trigger(l?"ajaxSuccess":"ajaxError",[C,f,l?h:p]),y.fireWith(m,[C,x]),c&&(g.trigger("ajaxComplete",[C,f]),--k.active||k.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],(function(e,t){k[t]=function(e,n,i,s){return y(n)&&(s=s||i,i=n,n=void 0),k.ajax(k.extend({url:e,type:t,dataType:s,data:n,success:i},k.isPlainObject(e)&&e))}})),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(y(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map((function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e})).append(this)),this},wrapInner:function(e){return y(e)?this.each((function(t){k(this).wrapInner(e.call(this,t))})):this.each((function(){var t=k(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)}))},wrap:function(e){var t=y(e);return this.each((function(n){k(this).wrapAll(t?e.call(this,n):e)}))},unwrap:function(e){return this.parent(e).not("body").each((function(){k(this).replaceWith(this.childNodes)})),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new n.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Kt=k.ajaxSettings.xhr();v.cors=!!Kt&&"withCredentials"in Kt,v.ajax=Kt=!!Kt,k.ajaxTransport((function(e){var t,i;if(v.cors||Kt&&!e.crossDomain)return{send:function(s,r){var o,a=e.xhr();if(a.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(o in e.xhrFields)a[o]=e.xhrFields[o];for(o in e.mimeType&&a.overrideMimeType&&a.overrideMimeType(e.mimeType),e.crossDomain||s["X-Requested-With"]||(s["X-Requested-With"]="XMLHttpRequest"),s)a.setRequestHeader(o,s[o]);t=function(e){return function(){t&&(t=i=a.onload=a.onerror=a.onabort=a.ontimeout=a.onreadystatechange=null,"abort"===e?a.abort():"error"===e?"number"!=typeof a.status?r(0,"error"):r(a.status,a.statusText):r(Vt[a.status]||a.status,a.statusText,"text"!==(a.responseType||"text")||"string"!=typeof a.responseText?{binary:a.response}:{text:a.responseText},a.getAllResponseHeaders()))}},a.onload=t(),i=a.onerror=a.ontimeout=t("error"),void 0!==a.onabort?a.onabort=i:a.onreadystatechange=function(){4===a.readyState&&n.setTimeout((function(){t&&i()}))},t=t("abort");try{a.send(e.hasContent&&e.data||null)}catch(e){if(t)throw e}},abort:function(){t&&t()}}})),k.ajaxPrefilter((function(e){e.crossDomain&&(e.contents.script=!1)})),k.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 k.globalEval(e),e}}}),k.ajaxPrefilter("script",(function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")})),k.ajaxTransport("script",(function(e){var t,n;if(e.crossDomain||e.scriptAttrs)return{send:function(i,s){t=k("<script>").attr(e.scriptAttrs||{}).prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&s("error"===e.type?404:200,e.type)}),o.head.appendChild(t[0])},abort:function(){n&&n()}}}));var Xt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+Nt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",(function(e,t,i){var s,r,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return s=e.jsonpCallback=y(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+s):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+s),e.converters["script json"]=function(){return o||k.error(s+" was not called"),o[0]},e.dataTypes[0]="json",r=n[s],n[s]=function(){o=arguments},i.always((function(){void 0===r?k(n).removeProp(s):n[s]=r,e[s]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(s)),o&&y(r)&&r(o[0]),o=r=void 0})),"script"})),v.createHTMLDocument=((Xt=o.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Xt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((i=(t=o.implementation.createHTMLDocument("")).createElement("base")).href=o.location.href,t.head.appendChild(i)):t=o),r=!n&&[],(s=A.exec(e))?[t.createElement(s[1])]:(s=Ce([e],t,r),r&&r.length&&k(r).remove(),k.merge([],s.childNodes)));var i,s,r},k.fn.load=function(e,t,n){var i,s,r,o=this,a=e.indexOf(" ");return a>-1&&(i=wt(e.slice(a)),e=e.slice(0,a)),y(t)?(n=t,t=void 0):t&&"object"==typeof t&&(s="POST"),o.length>0&&k.ajax({url:e,type:s||"GET",dataType:"html",data:t}).done((function(e){r=arguments,o.html(i?k("<div>").append(k.parseHTML(e)).find(i):e)})).always(n&&function(e,t){o.each((function(){n.apply(this,r||[e.responseText,t,e])}))}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],(function(e,t){k.fn[t]=function(e){return this.on(t,e)}})),k.expr.pseudos.animated=function(e){return k.grep(k.timers,(function(t){return e===t.elem})).length},k.offset={setOffset:function(e,t,n){var i,s,r,o,a,u,l=k.css(e,"position"),d=k(e),c={};"static"===l&&(e.style.position="relative"),a=d.offset(),r=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&(r+u).indexOf("auto")>-1?(o=(i=d.position()).top,s=i.left):(o=parseFloat(r)||0,s=parseFloat(u)||0),y(t)&&(t=t.call(e,n,k.extend({},a))),null!=t.top&&(c.top=t.top-a.top+o),null!=t.left&&(c.left=t.left-a.left+s),"using"in t?t.using.call(e,c):d.css(c)}},k.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each((function(t){k.offset.setOffset(this,e,t)}));var t,n,i=this[0];return i?i.getClientRects().length?(t=i.getBoundingClientRect(),n=i.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,i=this[0],s={top:0,left:0};if("fixed"===k.css(i,"position"))t=i.getBoundingClientRect();else{for(t=this.offset(),n=i.ownerDocument,e=i.offsetParent||n.documentElement;e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position");)e=e.parentNode;e&&e!==i&&1===e.nodeType&&((s=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),s.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-s.top-k.css(i,"marginTop",!0),left:t.left-s.left-k.css(i,"marginLeft",!0)}}},offsetParent:function(){return this.map((function(){for(var e=this.offsetParent;e&&"static"===k.css(e,"position");)e=e.offsetParent;return e||oe}))}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},(function(e,t){var n="pageYOffset"===t;k.fn[e]=function(i){return $(this,(function(e,i,s){var r;if(_(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===s)return r?r[t]:e[i];r?r.scrollTo(n?r.pageXOffset:s,n?s:r.pageYOffset):e[i]=s}),e,i,arguments.length)}})),k.each(["top","left"],(function(e,t){k.cssHooks[t]=Ke(v.pixelPosition,(function(e,n){if(n)return n=Ve(e,t),Qe.test(n)?k(e).position()[t]+"px":n}))})),k.each({Height:"height",Width:"width"},(function(e,t){k.each({padding:"inner"+e,content:t,"":"outer"+e},(function(n,i){k.fn[i]=function(s,r){var o=arguments.length&&(n||"boolean"!=typeof s),a=n||(!0===s||!0===r?"margin":"border");return $(this,(function(t,n,s){var r;return _(t)?0===i.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(r=t.documentElement,Math.max(t.body["scroll"+e],r["scroll"+e],t.body["offset"+e],r["offset"+e],r["client"+e])):void 0===s?k.css(t,n,a):k.style(t,n,s,a)}),t,o?s:void 0,o)}}))})),k.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,t){k.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}})),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.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,i){return this.on(t,e,n,i)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,i,s;if("string"==typeof t&&(n=e[t],t=e,e=n),y(e))return i=u.call(arguments,2),(s=function(){return e.apply(t||this,i.concat(u.call(arguments)))}).guid=e.guid=e.guid||k.guid++,s},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=L,k.isFunction=y,k.isWindow=_,k.camelCase=X,k.type=x,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},void 0===(i=function(){return k}.apply(t,[]))||(e.exports=i);var Jt=n.jQuery,Zt=n.$;return k.noConflict=function(e){return n.$===k&&(n.$=Zt),e&&n.jQuery===k&&(n.jQuery=Jt),k},s||(n.jQuery=n.$=k),k}))},function(e,t,n){var i,s,r;
|
26 |
/*!
|
27 |
* jquery.fancytree.js
|
28 |
* Tree view control with support for lazy loading and much more.
|
@@ -34,7 +34,7 @@ function(e){var t,n,i,s,r,o,a,u,l,d,c,h,p,f,m,g,v,y,_,w="sizzle"+1*new Date,b=e.
|
|
34 |
*
|
35 |
* @version 2.32.0
|
36 |
* @date 2019-09-10T07:42:12Z
|
37 |
-
*/s=[n(4),n(21)],void 0===(r="function"==typeof(i=function(e){"use strict";if(!e.ui||!e.ui.fancytree){var t,n,i=null,s=new RegExp(/\.|\//),r=/[&<>"'/]/g,o=/[<>"'/]/g,a={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"},u={16:!0,17:!0,18:!0},l={8:"backspace",9:"tab",10:"return",13:"return",19:"pause",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"insert",46:"del",59:";",61:"=",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9",106:"*",107:"+",109:"-",110:".",111:"/",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12",144:"numlock",145:"scroll",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},d={16:"shift",17:"ctrl",18:"alt",91:"meta",93:"meta"},c={0:"",1:"left",2:"middle",3:"right"},h="active expanded focus folder lazy radiogroup selected unselectable unselectableIgnore".split(" "),p={},f="columns types".split(" "),m="checkbox expanded extraClasses folder icon iconTooltip key lazy partsel radiogroup refKey selected statusNodeType title tooltip type unselectable unselectableIgnore unselectableStatus".split(" "),g={},v={},y={active:!0,children:!0,data:!0,focus:!0};for(t=0;t<h.length;t++)p[h[t]]=!0;for(t=0;t<m.length;t++)n=m[t],g[n]=!0,n!==n.toLowerCase()&&(v[n.toLowerCase()]=n);return _(e.ui,"Fancytree requires jQuery UI (http://jqueryui.com)"),Date.now||(Date.now=function(){return(new Date).getTime()}),L.prototype={_findDirectChild:function(e){var t,n,i=this.children;if(i)if("string"==typeof e){for(t=0,n=i.length;t<n;t++)if(i[t].key===e)return i[t]}else{if("number"==typeof e)return this.children[e];if(e.parent===this)return e}return null},_setChildren:function(e){_(e&&(!this.children||0===this.children.length),"only init supported"),this.children=[];for(var t=0,n=e.length;t<n;t++)this.children.push(new L(this,e[t]));this.tree._callHook("treeStructureChanged",this.tree,"setChildren")},addChildren:function(t,n){var i,s,r,o,a=this.getFirstChild(),u=this.getLastChild(),l=[];for(e.isPlainObject(t)&&(t=[t]),this.children||(this.children=[]),i=0,s=t.length;i<s;i++)l.push(new L(this,t[i]));if(o=l[0],null==n?this.children=this.children.concat(l):(n=this._findDirectChild(n),_((r=e.inArray(n,this.children))>=0,"insertBefore must be an existing child"),this.children.splice.apply(this.children,[r,0].concat(l))),a&&!n){for(i=0,s=l.length;i<s;i++)l[i].render();a!==this.getFirstChild()&&a.renderStatus(),u!==this.getLastChild()&&u.renderStatus()}else(!this.parent||this.parent.ul||this.tr)&&this.render();return 3===this.tree.options.selectMode&&this.fixSelection3FromEndNodes(),this.triggerModifyChild("add",1===l.length?l[0]:null),o},addClass:function(e){return this.toggleClass(e,!0)},addNode:function(e,t){switch(void 0!==t&&"over"!==t||(t="child"),t){case"after":return this.getParent().addChildren(e,this.getNextSibling());case"before":return this.getParent().addChildren(e,this);case"firstChild":var n=this.children?this.children[0]:null;return this.addChildren(e,n);case"child":case"over":return this.addChildren(e)}_(!1,"Invalid mode: "+t)},addPagingNode:function(t,n){var i,s;if(n=n||"child",!1!==t)return t=e.extend({title:this.tree.options.strings.moreData,statusNodeType:"paging",icon:!1},t),this.partload=!0,this.addNode(t,n);for(i=this.children.length-1;i>=0;i--)"paging"===(s=this.children[i]).statusNodeType&&this.removeChild(s);this.partload=!1},appendSibling:function(e){return this.addNode(e,"after")},applyCommand:function(e,t){return this.tree.applyCommand(e,this,t)},applyPatch:function(t){if(null===t)return this.remove(),C(this);var n,i,s={children:!0,expanded:!0,parent:!0};for(n in t)t.hasOwnProperty(n)&&(i=t[n],s[n]||e.isFunction(i)||(g[n]?this[n]=i:this.data[n]=i));return t.hasOwnProperty("children")&&(this.removeChildren(),t.children&&this._setChildren(t.children)),this.isVisible()&&(this.renderTitle(),this.renderStatus()),t.hasOwnProperty("expanded")?this.setExpanded(t.expanded):C(this)},collapseSiblings:function(){return this.tree._callHook("nodeCollapseSiblings",this)},copyTo:function(e,t,n){return e.addNode(this.toDict(!0,n),t)},countChildren:function(e){var t,n,i,s=this.children;if(!s)return 0;if(i=s.length,!1!==e)for(t=0,n=i;t<n;t++)i+=s[t].countChildren();return i},debug:function(e){this.tree.options.debugLevel>=4&&(Array.prototype.unshift.call(arguments,this.toString()),w("log",arguments))},discard:function(){return this.warn("FancytreeNode.discard() is deprecated since 2014-02-16. Use .resetLazy() instead."),this.resetLazy()},discardMarkup:function(e){var t=e?"nodeRemoveMarkup":"nodeRemoveChildMarkup";this.tree._callHook(t,this)},error:function(e){this.tree.options.debugLevel>=1&&(Array.prototype.unshift.call(arguments,this.toString()),w("error",arguments))},findAll:function(t){t=e.isFunction(t)?t:j(t);var n=[];return this.visit((function(e){t(e)&&n.push(e)})),n},findFirst:function(t){t=e.isFunction(t)?t:j(t);var n=null;return this.visit((function(e){if(t(e))return n=e,!1})),n},findRelatedNode:function(e,t){return this.tree.findRelatedNode(this,e,t)},_changeSelectStatusAttrs:function(e){var t=!1,n=this.tree.options,s=i.evalOption("unselectable",this,this,n,!1),r=i.evalOption("unselectableStatus",this,this,n,void 0);switch(s&&null!=r&&(e=r),e){case!1:t=this.selected||this.partsel,this.selected=!1,this.partsel=!1;break;case!0:t=!this.selected||!this.partsel,this.selected=!0,this.partsel=!0;break;case void 0:t=this.selected||!this.partsel,this.selected=!1,this.partsel=!0;break;default:_(!1,"invalid state: "+e)}return t&&this.renderStatus(),t},fixSelection3AfterClick:function(e){var t=this.isSelected();this.visit((function(e){if(e._changeSelectStatusAttrs(t),e.radiogroup)return"skip"})),this.fixSelection3FromEndNodes(e)},fixSelection3FromEndNodes:function(e){var t=this.tree.options;_(3===t.selectMode,"expected selectMode 3"),function e(n){var s,r,o,a,u,l,d,c,h=n.children;if(h&&h.length){for(l=!0,d=!1,s=0,r=h.length;s<r;s++)a=e(o=h[s]),i.evalOption("unselectableIgnore",o,o,t,!1)||(!1!==a&&(d=!0),!0!==a&&(l=!1));u=!!l||!!d&&void 0}else u=null==(c=i.evalOption("unselectableStatus",n,n,t,void 0))?!!n.selected:!!c;return n.partsel&&!n.selected&&n.lazy&&null==n.children&&(u=void 0),n._changeSelectStatusAttrs(u),u}(this),this.visitParents((function(e){var n,s,r,o,a,u=e.children,l=!0,d=!1;for(n=0,s=u.length;n<s;n++)r=u[n],i.evalOption("unselectableIgnore",r,r,t,!1)||(((o=null==(a=i.evalOption("unselectableStatus",r,r,t,void 0))?!!r.selected:!!a)||r.partsel)&&(d=!0),o||(l=!1));o=!!l||!!d&&void 0,e._changeSelectStatusAttrs(o)}))},fromDict:function(t){for(var n in t)g[n]?this[n]=t[n]:"data"===n?e.extend(this.data,t.data):e.isFunction(t[n])||y[n]||(this.data[n]=t[n]);t.children&&(this.removeChildren(),this.addChildren(t.children)),this.renderTitle()},getChildren:function(){if(void 0!==this.hasChildren())return this.children},getFirstChild:function(){return this.children?this.children[0]:null},getIndex:function(){return e.inArray(this,this.parent.children)},getIndexHier:function(t,n){t=t||".";var i,s=[];return e.each(this.getParentList(!1,!0),(function(e,t){i=""+(t.getIndex()+1),n&&(i=("0000000"+i).substr(-n)),s.push(i)})),s.join(t)},getKeyPath:function(e){var t=this.tree.options.keyPathSeparator;return t+this.getPath(!e,"key",t)},getLastChild:function(){return this.children?this.children[this.children.length-1]:null},getLevel:function(){for(var e=0,t=this.parent;t;)e++,t=t.parent;return e},getNextSibling:function(){if(this.parent){var e,t,n=this.parent.children;for(e=0,t=n.length-1;e<t;e++)if(n[e]===this)return n[e+1]}return null},getParent:function(){return this.parent},getParentList:function(e,t){for(var n=[],i=t?this:this.parent;i;)(e||i.parent)&&n.unshift(i),i=i.parent;return n},getPath:function(t,n,i){t=!1!==t,n=n||"title",i=i||"/";var s,r=[],o=e.isFunction(n);return this.visitParents((function(e){e.parent&&(s=o?n(e):e[n],r.unshift(s))}),t),r.join(i)},getPrevSibling:function(){if(this.parent){var e,t,n=this.parent.children;for(e=1,t=n.length;e<t;e++)if(n[e]===this)return n[e-1]}return null},getSelectedNodes:function(e){var t=[];return this.visit((function(n){if(n.selected&&(t.push(n),!0===e))return"skip"})),t},hasChildren:function(){if(this.lazy){if(null==this.children)return;if(0===this.children.length)return!1;if(1===this.children.length&&this.children[0].isStatusNode())return;return!0}return!(!this.children||!this.children.length)},hasClass:function(e){return(" "+(this.extraClasses||"")+" ").indexOf(" "+e+" ")>=0},hasFocus:function(){return this.tree.hasFocus()&&this.tree.focusNode===this},info:function(e){this.tree.options.debugLevel>=3&&(Array.prototype.unshift.call(arguments,this.toString()),w("info",arguments))},isActive:function(){return this.tree.activeNode===this},isBelowOf:function(e){return this.getIndexHier(".",5)>e.getIndexHier(".",5)},isChildOf:function(e){return this.parent&&this.parent===e},isDescendantOf:function(t){if(!t||t.tree!==this.tree)return!1;for(var n=this.parent;n;){if(n===t)return!0;n===n.parent&&e.error("Recursive parent link: "+n),n=n.parent}return!1},isExpanded:function(){return!!this.expanded},isFirstSibling:function(){var e=this.parent;return!e||e.children[0]===this},isFolder:function(){return!!this.folder},isLastSibling:function(){var e=this.parent;return!e||e.children[e.children.length-1]===this},isLazy:function(){return!!this.lazy},isLoaded:function(){return!this.lazy||void 0!==this.hasChildren()},isLoading:function(){return!!this._isLoading},isRoot:function(){return this.isRootNode()},isPartsel:function(){return!this.selected&&!!this.partsel},isPartload:function(){return!!this.partload},isRootNode:function(){return this.tree.rootNode===this},isSelected:function(){return!!this.selected},isStatusNode:function(){return!!this.statusNodeType},isPagingNode:function(){return"paging"===this.statusNodeType},isTopLevel:function(){return this.tree.rootNode===this.parent},isUndefined:function(){return void 0===this.hasChildren()},isVisible:function(){var e,t,n=this.tree.enableFilter,i=this.getParentList(!1,!1);if(n&&!this.match&&!this.subMatchCount)return this.debug("isVisible: HIDDEN ("+n+", "+this.match+", "+this.match+")"),!1;for(e=0,t=i.length;e<t;e++)if(!i[e].expanded)return this.debug("isVisible: HIDDEN (parent collapsed)"),!1;return this.debug("isVisible: VISIBLE"),!0},lazyLoad:function(e){return this.warn("FancytreeNode.lazyLoad() is deprecated since 2014-02-16. Use .load() instead."),this.load(e)},load:function(e){var t,n,i=this,s=this.isExpanded();return _(this.isLazy(),"load() requires a lazy node"),e||this.isUndefined()?(this.isLoaded()&&this.resetLazy(),!1===(n=this.tree._triggerNodeEvent("lazyLoad",this))?C(this):(_("boolean"!=typeof n,"lazyLoad event must return source in data.result"),t=this.tree._callHook("nodeLoadChildren",this,n),s?(this.expanded=!0,t.always((function(){i.render()}))):t.always((function(){i.renderStatus()})),t)):C(this)},makeVisible:function(t){var n,i=this,s=[],r=new e.Deferred,o=this.getParentList(!1,!1),a=o.length,u=!(t&&!0===t.noAnimation),l=!(t&&!1===t.scrollIntoView);for(n=a-1;n>=0;n--)s.push(o[n].setExpanded(!0,t));return e.when.apply(e,s).done((function(){l?i.scrollIntoView(u).done((function(){r.resolve()})):r.resolve()})),r.promise()},moveTo:function(t,n,i){void 0===n||"over"===n?n="child":"firstChild"===n&&(t.children&&t.children.length?(n="before",t=t.children[0]):n="child");var s,r=this.tree,o=this.parent,a="child"===n?t:t.parent;if(this!==t){if(this.parent?a.isDescendantOf(this)&&e.error("Cannot move a node to its own descendant"):e.error("Cannot move system root"),a!==o&&o.triggerModifyChild("remove",this),1===this.parent.children.length){if(this.parent===a)return;this.parent.children=this.parent.lazy?[]:null,this.parent.expanded=!1}else _((s=e.inArray(this,this.parent.children))>=0,"invalid source parent"),this.parent.children.splice(s,1);if(this.parent=a,a.hasChildren())switch(n){case"child":a.children.push(this);break;case"before":_((s=e.inArray(t,a.children))>=0,"invalid target parent"),a.children.splice(s,0,this);break;case"after":_((s=e.inArray(t,a.children))>=0,"invalid target parent"),a.children.splice(s+1,0,this);break;default:e.error("Invalid mode "+n)}else a.children=[this];i&&t.visit(i,!0),a===o?a.triggerModifyChild("move",this):a.triggerModifyChild("add",this),r!==t.tree&&(this.warn("Cross-tree moveTo is experimental!"),this.visit((function(e){e.tree=t.tree}),!0)),r._callHook("treeStructureChanged",r,"moveTo"),o.isDescendantOf(a)||o.render(),a.isDescendantOf(o)||a===o||a.render()}},navigate:function(t,n){var i,s=e.ui.keyCode;switch(t){case"left":case s.LEFT:if(this.expanded)return this.setExpanded(!1);break;case"right":case s.RIGHT:if(!this.expanded&&(this.children||this.lazy))return this.setExpanded()}if(i=this.findRelatedNode(t)){try{i.makeVisible({scrollIntoView:!1})}catch(e){}return!1===n?(i.setFocus(),C()):i.setActive()}return this.warn("Could not find related node '"+t+"'."),C()},remove:function(){return this.parent.removeChild(this)},removeChild:function(e){return this.tree._callHook("nodeRemoveChild",this,e)},removeChildren:function(){return this.tree._callHook("nodeRemoveChildren",this)},removeClass:function(e){return this.toggleClass(e,!1)},render:function(e,t){return this.tree._callHook("nodeRender",this,e,t)},renderTitle:function(){return this.tree._callHook("nodeRenderTitle",this)},renderStatus:function(){return this.tree._callHook("nodeRenderStatus",this)},replaceWith:function(n){var i,s=this.parent,r=e.inArray(this,s.children),o=this;return _(this.isPagingNode(),"replaceWith() currently requires a paging status node"),(i=this.tree._callHook("nodeLoadChildren",this,n)).done((function(e){var n=o.children;for(t=0;t<n.length;t++)n[t].parent=s;s.children.splice.apply(s.children,[r+1,0].concat(n)),o.children=null,o.remove(),s.render()})).fail((function(){o.setExpanded()})),i},resetLazy:function(){this.removeChildren(),this.expanded=!1,this.lazy=!0,this.children=void 0,this.renderStatus()},scheduleAction:function(t,n){this.tree.timer&&(clearTimeout(this.tree.timer),this.tree.debug("clearTimeout(%o)",this.tree.timer)),this.tree.timer=null;var i=this;switch(t){case"cancel":break;case"expand":this.tree.timer=setTimeout((function(){i.tree.debug("setTimeout: trigger expand"),i.setExpanded(!0)}),n);break;case"activate":this.tree.timer=setTimeout((function(){i.tree.debug("setTimeout: trigger activate"),i.setActive(!0)}),n);break;default:e.error("Invalid mode "+t)}},scrollIntoView:function(t,n){if(void 0!==n&&(i=n).tree&&void 0!==i.statusNodeType)throw Error("scrollIntoView() with 'topNode' option is deprecated since 2014-05-08. Use 'options.topNode' instead.");var i,s=e.extend({effects:!0===t?{duration:200,queue:!1}:t,scrollOfs:this.tree.options.scrollOfs,scrollParent:this.tree.options.scrollParent,topNode:null},n),r=s.scrollParent,o=this.tree.$container,a=o.css("overflow-y");r?r.jquery||(r=e(r)):r=this.tree.tbody?o.scrollParent():"scroll"===a||"auto"===a?o:o.scrollParent(),r[0]!==document&&r[0]!==document.body||(this.debug("scrollIntoView(): normalizing scrollParent to 'window':",r[0]),r=e(window));var u,l,d,c=new e.Deferred,h=this,p=e(this.span).height(),f=s.scrollOfs.top||0,m=s.scrollOfs.bottom||0,g=r.height(),v=r.scrollTop(),y=r,w=r[0]===window,b=s.topNode||null,x=null;return this.isVisible()?(w?(l=e(this.span).offset().top,u=b&&b.span?e(b.span).offset().top:0,y=e("html,body")):(_(r[0]!==document&&r[0]!==document.body,"scrollParent should be a simple element or `window`, not document or body."),d=r.offset().top,l=e(this.span).offset().top-d+v,u=b?e(b.span).offset().top-d+v:0,g-=Math.max(0,r.innerHeight()-r[0].clientHeight)),l<v+f?x=l-f:l+p>v+g-m&&(x=l+p-g+m,b&&(_(b.isRootNode()||b.isVisible(),"topNode must be visible"),u<x&&(x=u-f))),null===x?c.resolveWith(this):s.effects?(s.effects.complete=function(){c.resolveWith(h)},y.stop(!0).animate({scrollTop:x},s.effects)):(y[0].scrollTop=x,c.resolveWith(this)),c.promise()):(this.warn("scrollIntoView(): node is invisible."),C())},setActive:function(e,t){return this.tree._callHook("nodeSetActive",this,e,t)},setExpanded:function(e,t){return this.tree._callHook("nodeSetExpanded",this,e,t)},setFocus:function(e){return this.tree._callHook("nodeSetFocus",this,e)},setSelected:function(e,t){return this.tree._callHook("nodeSetSelected",this,e,t)},setStatus:function(e,t,n){return this.tree._callHook("nodeSetStatus",this,e,t,n)},setTitle:function(e){this.title=e,this.renderTitle(),this.triggerModify("rename")},sortChildren:function(e,t){var n,i,s=this.children;if(s){if(e=e||function(e,t){var n=e.title.toLowerCase(),i=t.title.toLowerCase();return n===i?0:n>i?1:-1},s.sort(e),t)for(n=0,i=s.length;n<i;n++)s[n].children&&s[n].sortChildren(e,"$norender$");"$norender$"!==t&&this.render(),this.triggerModifyChild("sort")}},toDict:function(t,n){var i,s,r,o,a={},u=this;if(e.each(m,(function(e,t){(u[t]||!1===u[t])&&(a[t]=u[t])})),e.isEmptyObject(this.data)||(a.data=e.extend({},this.data),e.isEmptyObject(a.data)&&delete a.data),n){if(!1===(o=n(a,u)))return!1;"skip"===o&&(t=!1)}if(t&&this.hasChildren())for(a.children=[],i=0,s=this.children.length;i<s;i++)(r=this.children[i]).isStatusNode()||!1!==(o=r.toDict(!0,n))&&a.children.push(o);return a},toggleClass:function(t,n){var i,s,r=t.match(/\S+/g)||[],o=0,a=!1,u=this[this.tree.statusClassPropName],l=" "+(this.extraClasses||"")+" ";for(u&&e(u).toggleClass(t,n);i=r[o++];)if(s=l.indexOf(" "+i+" ")>=0,n=void 0===n?!s:!!n)s||(l+=i+" ",a=!0);else for(;l.indexOf(" "+i+" ")>-1;)l=l.replace(" "+i+" "," ");return this.extraClasses=e.trim(l),a},toggleExpanded:function(){return this.tree._callHook("nodeToggleExpanded",this)},toggleSelected:function(){return this.tree._callHook("nodeToggleSelected",this)},toString:function(){return"FancytreeNode@"+this.key+"[title='"+this.title+"']"},triggerModifyChild:function(t,n,i){var s,r=this.tree.options.modifyChild;r&&(n&&n.parent!==this&&e.error("childNode "+n+" is not a child of "+this),s={node:this,tree:this.tree,operation:t,childNode:n||null},i&&e.extend(s,i),r({type:"modifyChild"},s))},triggerModify:function(e,t){this.parent.triggerModifyChild(e,this,t)},visit:function(e,t){var n,i,s=!0,r=this.children;if(!0===t&&(!1===(s=e(this))||"skip"===s))return s;if(r)for(n=0,i=r.length;n<i&&!1!==(s=r[n].visit(e,!0));n++);return s},visitAndLoad:function(t,n,i){var s,r,o,a=this;return!t||!0!==n||!1!==(r=t(a))&&"skip"!==r?a.children||a.lazy?(s=new e.Deferred,o=[],a.load().done((function(){for(var n=0,i=a.children.length;n<i;n++){if(!1===(r=a.children[n].visitAndLoad(t,!0,!0))){s.reject();break}"skip"!==r&&o.push(r)}e.when.apply(this,o).then((function(){s.resolve()}))})),s.promise()):C():i?r:C()},visitParents:function(e,t){if(t&&!1===e(this))return!1;for(var n=this.parent;n;){if(!1===e(n))return!1;n=n.parent}return!0},visitSiblings:function(e,t){var n,i,s,r=this.parent.children;for(n=0,i=r.length;n<i;n++)if(s=r[n],(t||s!==this)&&!1===e(s))return!1;return!0},warn:function(e){this.tree.options.debugLevel>=2&&(Array.prototype.unshift.call(arguments,this.toString()),w("warn",arguments))}},A.prototype={_makeHookContext:function(t,n,i){var s,r;return void 0!==t.node?(n&&t.originalEvent!==n&&e.error("invalid args"),s=t):t.tree?s={node:t,tree:r=t.tree,widget:r.widget,options:r.widget.options,originalEvent:n,typeInfo:r.types[t.type]||{}}:t.widget?s={node:null,tree:t,widget:t.widget,options:t.widget.options,originalEvent:n}:e.error("invalid args"),i&&e.extend(s,i),s},_callHook:function(t,n,i){var s=this._makeHookContext(n),r=this[t],o=Array.prototype.slice.call(arguments,2);return e.isFunction(r)||e.error("_callHook('"+t+"') is not a function"),o.unshift(s),r.apply(this,o)},_setExpiringValue:function(e,t,n){this._tempCache[e]={value:t,expire:Date.now()+(+n||50)}},_getExpiringValue:function(e){var t=this._tempCache[e];return t&&t.expire>Date.now()?t.value:(delete this._tempCache[e],null)},_requireExtension:function(t,n,i,s){null!=i&&(i=!!i);var r=this._local.name,o=this.options.extensions,a=e.inArray(t,o)<e.inArray(r,o),u=n&&null==this.ext[t],l=!u&&null!=i&&i!==a;return _(r&&r!==t,"invalid or same name '"+r+"' (require yourself?)"),!u&&!l||(s||(u||n?(s="'"+r+"' extension requires '"+t+"'",l&&(s+=" to be registered "+(i?"before":"after")+" itself")):s="If used together, `"+t+"` must be registered "+(i?"before":"after")+" `"+r+"`"),e.error(s),!1)},activateKey:function(e,t){var n=this.getNodeByKey(e);return n?n.setActive(!0,t):this.activeNode&&this.activeNode.setActive(!1,t),n},addPagingNode:function(e,t){return this.rootNode.addPagingNode(e,t)},applyCommand:function(t,n,i){var s;switch(n=n||this.getActiveNode(),t){case"moveUp":(s=n.getPrevSibling())&&(n.moveTo(s,"before"),n.setActive());break;case"moveDown":(s=n.getNextSibling())&&(n.moveTo(s,"after"),n.setActive());break;case"indent":(s=n.getPrevSibling())&&(n.moveTo(s,"child"),s.setExpanded(),n.setActive());break;case"outdent":n.isTopLevel()||(n.moveTo(n.getParent(),"after"),n.setActive());break;case"remove":s=n.getPrevSibling()||n.getParent(),n.remove(),s&&s.setActive();break;case"addChild":n.editCreateNode("child","");break;case"addSibling":n.editCreateNode("after","");break;case"rename":n.editStart();break;case"down":case"first":case"last":case"left":case"parent":case"right":case"up":return n.navigate(t);default:e.error("Unhandled command: '"+t+"'")}},applyPatch:function(t){var n,i,s,r,o,a,u=t.length,l=[];for(i=0;i<u;i++)_(2===(s=t[i]).length,"patchList must be an array of length-2-arrays"),r=s[0],o=s[1],(a=null===r?this.rootNode:this.getNodeByKey(r))?(n=new e.Deferred,l.push(n),a.applyPatch(o).always(T(n,a))):this.warn("could not find node with key '"+r+"'");return e.when.apply(e,l).promise()},clear:function(e){this._callHook("treeClear",this)},count:function(){return this.rootNode.countChildren()},debug:function(e){this.options.debugLevel>=4&&(Array.prototype.unshift.call(arguments,this.toString()),w("log",arguments))},enable:function(e){!1===e?this.widget.disable():this.widget.enable()},enableUpdate:function(e){return e=!1!==e,!!this._enableUpdate==!!e?e:(this._enableUpdate=e,e?(this.debug("enableUpdate(true): redraw "),this._callHook("treeStructureChanged",this,"enableUpdate"),this.render()):this.debug("enableUpdate(false)..."),!e)},error:function(e){this.options.debugLevel>=1&&(Array.prototype.unshift.call(arguments,this.toString()),w("error",arguments))},expandAll:function(e,t){var n=this.enableUpdate(!1);e=!1!==e,this.visit((function(n){!1!==n.hasChildren()&&n.isExpanded()!==e&&n.setExpanded(e,t)})),this.enableUpdate(n)},findAll:function(e){return this.rootNode.findAll(e)},findFirst:function(e){return this.rootNode.findFirst(e)},findNextNode:function(e,t){var n,i=null,s=this.getFirstChild();function r(n){if(e(n)&&(i=n),i||n===t)return!1}return e="string"==typeof e?(n=new RegExp("^"+e,"i"),function(e){return n.test(e.title)}):e,t=t||s,this.visitRows(r,{start:t,includeSelf:!1}),i||t===s||this.visitRows(r,{start:s,includeSelf:!0}),i},findRelatedNode:function(t,n,i){var s=null,r=e.ui.keyCode;switch(n){case"parent":case r.BACKSPACE:t.parent&&t.parent.parent&&(s=t.parent);break;case"first":case r.HOME:this.visit((function(e){if(e.isVisible())return s=e,!1}));break;case"last":case r.END:this.visit((function(e){e.isVisible()&&(s=e)}));break;case"left":case r.LEFT:t.expanded?t.setExpanded(!1):t.parent&&t.parent.parent&&(s=t.parent);break;case"right":case r.RIGHT:t.expanded||!t.children&&!t.lazy?t.children&&t.children.length&&(s=t.children[0]):(t.setExpanded(),s=t);break;case"up":case r.UP:this.visitRows((function(e){return s=e,!1}),{start:t,reverse:!0,includeSelf:!1});break;case"down":case r.DOWN:this.visitRows((function(e){return s=e,!1}),{start:t,includeSelf:!1});break;default:this.tree.warn("Unknown relation '"+n+"'.")}return s},generateFormElements:function(t,n,i){i=i||{};var s,r="string"==typeof t?t:"ft_"+this._id+"[]",o="string"==typeof n?n:"ft_"+this._id+"_active",a="fancytree_result_"+this._id,u=e("#"+a),l=3===this.options.selectMode&&!1!==i.stopOnParents;function d(t){u.append(e("<input>",{type:"checkbox",name:r,value:t.key,checked:!0}))}u.length?u.empty():u=e("<div>",{id:a}).hide().insertAfter(this.$container),!1!==n&&this.activeNode&&u.append(e("<input>",{type:"radio",name:o,value:this.activeNode.key,checked:!0})),i.filter?this.visit((function(e){var t=i.filter(e);if("skip"===t)return t;!1!==t&&d(e)})):!1!==t&&(s=this.getSelectedNodes(l),e.each(s,(function(e,t){d(t)})))},getActiveNode:function(){return this.activeNode},getFirstChild:function(){return this.rootNode.getFirstChild()},getFocusNode:function(){return this.focusNode},getOption:function(e){return this.widget.option(e)},getNodeByKey:function(e,t){var n,i;return!t&&(n=document.getElementById(this.options.idPrefix+e))?n.ftnode?n.ftnode:null:(t=t||this.rootNode,i=null,t.visit((function(t){if(t.key===e)return i=t,!1}),!0),i)},getRootNode:function(){return this.rootNode},getSelectedNodes:function(e){return this.rootNode.getSelectedNodes(e)},hasFocus:function(){return!!this._hasFocus},info:function(e){this.options.debugLevel>=3&&(Array.prototype.unshift.call(arguments,this.toString()),w("info",arguments))},isLoading:function(){var e=!1;return this.rootNode.visit((function(t){if(t._isLoading||t._requestId)return e=!0,!1}),!0),e},loadKeyPath:function(t,n){var i,s,r,o=this,a=new e.Deferred,u=this.getRootNode(),l=this.options.keyPathSeparator,d=[],c=e.extend({},n);for("function"==typeof n?i=n:n&&n.callback&&(i=n.callback),c.callback=function(e,t,n){i&&i.call(e,t,n),a.notifyWith(e,[{node:t,status:n}])},null==c.matchKey&&(c.matchKey=function(e,t){return e.key===t}),e.isArray(t)||(t=[t]),s=0;s<t.length;s++)(r=t[s]).charAt(0)===l&&(r=r.substr(1)),d.push(r.split(l));return setTimeout((function(){o._loadKeyPathImpl(a,c,u,d).done((function(){a.resolve()}))}),0),a.promise()},_loadKeyPathImpl:function(t,n,i,s){var r,o,a,u,l,d,c,h,p,f,m=this;function g(e,t){var i,s,r=e.children;if(r)for(i=0,s=r.length;i<s;i++)if(n.matchKey(r[i],t))return r[i];return null}for(c={},o=0;o<s.length;o++)for(p=s[o],h=i;p.length;){if(a=p.shift(),!(u=g(h,a))){this.warn("loadKeyPath: key not found: "+a+" (parent: "+h+")"),n.callback(this,a,"error");break}if(0===p.length){n.callback(this,u,"ok");break}if(u.lazy&&void 0===u.hasChildren()){n.callback(this,u,"loaded"),c[a=u.key]?c[a].pathSegList.push(p):c[a]={parent:u,pathSegList:[p]};break}n.callback(this,u,"loaded"),h=u}function v(e,t,i){n.callback(m,t,"loading"),t.load().done((function(){m._loadKeyPathImpl.call(m,e,n,t,i).always(T(e,m))})).fail((function(i){m.warn("loadKeyPath: error loading lazy "+t),n.callback(m,u,"error"),e.rejectWith(m)}))}for(l in r=[],c)c.hasOwnProperty(l)&&(d=c[l],f=new e.Deferred,r.push(f),v(f,d.parent,d.pathSegList));return e.when.apply(e,r).promise()},reactivate:function(e){var t,n=this.activeNode;return n?(this.activeNode=null,t=n.setActive(!0,{noFocus:!0}),e&&n.setFocus(),t):C()},reload:function(e){return this._callHook("treeClear",this),this._callHook("treeLoad",this,e)},render:function(e,t){return this.rootNode.render(e,t)},selectAll:function(e){this.visit((function(t){t.setSelected(e)}))},setFocus:function(e){return this._callHook("treeSetFocus",this,e)},setOption:function(e,t){return this.widget.option(e,t)},toDict:function(e,t){var n=this.rootNode.toDict(!0,t);return e?n:n.children},toString:function(){return"Fancytree@"+this._id},_triggerNodeEvent:function(e,t,n,i){var s=this._makeHookContext(t,n,i),r=this.widget._trigger(e,n,s);return!1!==r&&void 0!==s.result?s.result:r},_triggerTreeEvent:function(e,t,n){var i=this._makeHookContext(this,t,n),s=this.widget._trigger(e,t,i);return!1!==s&&void 0!==i.result?i.result:s},visit:function(e){return this.rootNode.visit(e,!1)},visitRows:function(e,t){if(!this.rootNode.children)return!1;if(t&&t.reverse)return delete t.reverse,this._visitRowsUp(e,t);var n,i,s,r=0,o=!1===(t=t||{}).includeSelf,a=!!t.includeHidden,u=!a&&this.enableFilter,l=t.start||this.rootNode.children[0];for(i=l.parent;i;){for(n=(s=i.children).indexOf(l)+r;n<s.length;n++)if(l=s[n],!u||l.match||l.subMatchCount){if(!o&&!1===e(l))return!1;if(o=!1,l.children&&l.children.length&&(a||l.expanded)&&!1===l.visit((function(t){return!u||t.match||t.subMatchCount?!1!==e(t)&&(a||!t.children||t.expanded?void 0:"skip"):"skip"}),!1))return!1}l=i,i=i.parent,r=1}return!0},_visitRowsUp:function(e,t){for(var n,i,s,r=!!t.includeHidden,o=t.start||this.rootNode.children[0];;){if((n=(s=o.parent).children)[0]===o){if(!(o=s).parent)break;n=s.children}else for(i=n.indexOf(o),o=n[i-1];(r||o.expanded)&&o.children&&o.children.length;)s=o,o=(n=o.children)[n.length-1];if((r||o.isVisible())&&!1===e(o))return!1}},warn:function(e){this.options.debugLevel>=2&&(Array.prototype.unshift.call(arguments,this.toString()),w("warn",arguments))}},e.extend(A.prototype,{nodeClick:function(e){var t,n,i=e.targetType,s=e.node;if("expander"===i){if(s.isLoading())return void s.debug("Got 2nd click while loading: ignored");this._callHook("nodeToggleExpanded",e)}else if("checkbox"===i)this._callHook("nodeToggleSelected",e),e.options.focusOnSelect&&this._callHook("nodeSetFocus",e,!0);else{if(n=!1,t=!0,s.folder)switch(e.options.clickFolderMode){case 2:n=!0,t=!1;break;case 3:t=!0,n=!0}t&&(this.nodeSetFocus(e),this._callHook("nodeSetActive",e,!0)),n&&this._callHook("nodeToggleExpanded",e)}},nodeCollapseSiblings:function(e,t){var n,i,s,r=e.node;if(r.parent)for(i=0,s=(n=r.parent.children).length;i<s;i++)n[i]!==r&&n[i].expanded&&this._callHook("nodeSetExpanded",n[i],!1,t)},nodeDblclick:function(e){"title"===e.targetType&&4===e.options.clickFolderMode&&this._callHook("nodeToggleExpanded",e),"title"===e.targetType&&e.originalEvent.preventDefault()},nodeKeydown:function(t){var n,s,r,o=t.originalEvent,a=t.node,u=t.tree,c=t.options,h=o.which,p=o.key||String.fromCharCode(h),f=!!(o.altKey||o.ctrlKey||o.metaKey),m=!d[h]&&!l[h]&&!f,g=e(o.target),v=!0,y=!(o.ctrlKey||!c.autoActivate);if(a||(r=this.getActiveNode()||this.getFirstChild())&&(r.setFocus(),(a=t.node=this.focusNode).debug("Keydown force focus on active node")),c.quicksearch&&m&&!g.is(":input:enabled"))return(s=Date.now())-u.lastQuicksearchTime>500&&(u.lastQuicksearchTerm=""),u.lastQuicksearchTime=s,u.lastQuicksearchTerm+=p,(n=u.findNextNode(u.lastQuicksearchTerm,u.getActiveNode()))&&n.setActive(),void o.preventDefault();switch(i.eventToString(o)){case"+":case"=":u.nodeSetExpanded(t,!0);break;case"-":u.nodeSetExpanded(t,!1);break;case"space":a.isPagingNode()?u._triggerNodeEvent("clickPaging",t,o):i.evalOption("checkbox",a,a,c,!1)?u.nodeToggleSelected(t):u.nodeSetActive(t,!0);break;case"return":u.nodeSetActive(t,!0);break;case"home":case"end":case"backspace":case"left":case"right":case"up":case"down":a.navigate(o.which,y);break;default:v=!1}v&&o.preventDefault()},nodeLoadChildren:function(t,n){var i,s,r,o,a=t.tree,u=t.node,l=Date.now();return e.isFunction(n)&&(n=n.call(a,{type:"source"},t),_(!e.isFunction(n),"source callback must not return another function")),n.url&&(u._requestId&&u.warn("Recursive load request #"+l+" while #"+u._requestId+" is pending."),i=e.extend({},t.options.ajax,n),u._requestId=l,i.debugDelay?(s=i.debugDelay,delete i.debugDelay,e.isArray(s)&&(s=s[0]+Math.random()*(s[1]-s[0])),u.warn("nodeLoadChildren waiting debugDelay "+Math.round(s)+" ms ..."),r=e.Deferred((function(t){setTimeout((function(){e.ajax(i).done((function(){t.resolveWith(this,arguments)})).fail((function(){t.rejectWith(this,arguments)}))}),s)}))):r=e.ajax(i),n=new e.Deferred,r.done((function(i,s,r){var o,d;if("json"!==this.dataType&&"jsonp"!==this.dataType||"string"!=typeof i||e.error("Ajax request returned a string (did you get the JSON dataType wrong?)."),u._requestId&&u._requestId>l)n.rejectWith(this,["$recursive_request"]);else{if(t.options.postProcess){try{d=a._triggerNodeEvent("postProcess",t,t.originalEvent,{response:i,error:null,dataType:this.dataType})}catch(e){d={error:e,message:""+e,details:"postProcess failed"}}if(d.error)return o=e.isPlainObject(d.error)?d.error:{message:d.error},o=a._makeHookContext(u,null,o),void n.rejectWith(this,[o]);(e.isArray(d)||e.isPlainObject(d)&&e.isArray(d.children))&&(i=d)}else i&&i.hasOwnProperty("d")&&t.options.enableAspx&&(i="string"==typeof i.d?e.parseJSON(i.d):i.d);n.resolveWith(this,[i])}})).fail((function(e,t,i){var s=a._makeHookContext(u,null,{error:e,args:Array.prototype.slice.call(arguments),message:i,details:e.status+": "+i});n.rejectWith(this,[s])}))),e.isFunction(n.then)&&e.isFunction(n.catch)&&(r=n,n=new e.Deferred,r.then((function(e){n.resolve(e)}),(function(e){n.reject(e)}))),e.isFunction(n.promise)?(a.nodeSetStatus(t,"loading"),n.done((function(e){a.nodeSetStatus(t,"ok"),u._requestId=null})).fail((function(e){var n;"$recursive_request"!==e?(e.node&&e.error&&e.message?n=e:"[object Object]"===(n=a._makeHookContext(u,null,{error:e,args:Array.prototype.slice.call(arguments),message:e?e.message||e.toString():""})).message&&(n.message=""),u.warn("Load children failed ("+n.message+")",n),!1!==a._triggerNodeEvent("loadError",n,null)&&a.nodeSetStatus(t,"error",n.message,n.details)):u.warn("Ignored response for obsolete load request #"+l+" (expected #"+u._requestId+")")}))):t.options.postProcess&&(o=a._triggerNodeEvent("postProcess",t,t.originalEvent,{response:n,error:null,dataType:typeof n}),(e.isArray(o)||e.isPlainObject(o)&&e.isArray(o.children))&&(n=o)),e.when(n).done((function(n){var i,s;e.isPlainObject(n)&&(_(u.isRootNode(),"source may only be an object for root nodes (expecting an array of child objects otherwise)"),_(e.isArray(n.children),"if an object is passed as source, it must contain a 'children' array (all other properties are added to 'tree.data')"),i=n,n=n.children,delete i.children,e.each(f,(function(e,t){void 0!==i[t]&&(a[t]=i[t],delete i[t])})),e.extend(a.data,i)),_(e.isArray(n),"expected array of children"),u._setChildren(n),a.options.nodata&&0===n.length&&(e.isFunction(a.options.nodata)?s=a.options.nodata.call(a,{type:"nodata"},t):!0===a.options.nodata&&u.isRootNode()?s=a.options.strings.nodata:"string"==typeof a.options.nodata&&u.isRootNode()&&(s=a.options.nodata),s&&u.setStatus("nodata",s)),a._triggerNodeEvent("loadChildren",u)}))},nodeLoadKeyPath:function(e,t){},nodeRemoveChild:function(t,n){var i,s=t.node,r=e.extend({},t,{node:n}),o=s.children;if(1===o.length)return _(n===o[0],"invalid single child"),this.nodeRemoveChildren(t);this.activeNode&&(n===this.activeNode||this.activeNode.isDescendantOf(n))&&this.activeNode.setActive(!1),this.focusNode&&(n===this.focusNode||this.focusNode.isDescendantOf(n))&&(this.focusNode=null),this.nodeRemoveMarkup(r),this.nodeRemoveChildren(r),_((i=e.inArray(n,o))>=0,"invalid child"),s.triggerModifyChild("remove",n),n.visit((function(e){e.parent=null}),!0),this._callHook("treeRegisterNode",this,!1,n),o.splice(i,1)},nodeRemoveChildMarkup:function(t){var n=t.node;n.ul&&(n.isRootNode()?e(n.ul).empty():(e(n.ul).remove(),n.ul=null),n.visit((function(e){e.li=e.ul=null})))},nodeRemoveChildren:function(e){var t=e.tree,n=e.node;n.children&&(this.activeNode&&this.activeNode.isDescendantOf(n)&&this.activeNode.setActive(!1),this.focusNode&&this.focusNode.isDescendantOf(n)&&(this.focusNode=null),this.nodeRemoveChildMarkup(e),n.triggerModifyChild("remove",null),n.visit((function(e){e.parent=null,t._callHook("treeRegisterNode",t,!1,e)})),n.lazy?n.children=[]:n.children=null,n.isRootNode()||(n.expanded=!1),this.nodeRenderStatus(e))},nodeRemoveMarkup:function(t){var n=t.node;n.li&&(e(n.li).remove(),n.li=null),this.nodeRemoveChildMarkup(t)},nodeRender:function(t,n,i,s,r){var o,a,u,l,d,c,h,p=t.node,f=t.tree,m=t.options,g=m.aria,v=!1,y=p.parent,w=!y,b=p.children,x=null;if(!1!==f._enableUpdate&&(w||y.ul)){if(_(w||y.ul,"parent UL must exist"),w||(p.li&&(n||p.li.parentNode!==p.parent.ul)&&(p.li.parentNode===p.parent.ul?x=p.li.nextSibling:this.debug("Unlinking "+p+" (must be child of "+p.parent+")"),this.nodeRemoveMarkup(t)),p.li?this.nodeRenderStatus(t):(v=!0,p.li=document.createElement("li"),p.li.ftnode=p,p.key&&m.generateIds&&(p.li.id=m.idPrefix+p.key),p.span=document.createElement("span"),p.span.className="fancytree-node",g&&!p.tr&&e(p.li).attr("role","treeitem"),p.li.appendChild(p.span),this.nodeRenderTitle(t),m.createNode&&m.createNode.call(f,{type:"createNode"},t)),m.renderNode&&m.renderNode.call(f,{type:"renderNode"},t)),b){if(w||p.expanded||!0===i){for(p.ul||(p.ul=document.createElement("ul"),(!0!==s||r)&&p.expanded||(p.ul.style.display="none"),g&&e(p.ul).attr("role","group"),p.li?p.li.appendChild(p.ul):p.tree.$div.append(p.ul)),l=0,d=b.length;l<d;l++)h=e.extend({},t,{node:b[l]}),this.nodeRender(h,n,i,!1,!0);for(o=p.ul.firstChild;o;)(u=o.ftnode)&&u.parent!==p?(p.debug("_fixParent: remove missing "+u,o),c=o.nextSibling,o.parentNode.removeChild(o),o=c):o=o.nextSibling;for(o=p.ul.firstChild,l=0,d=b.length-1;l<d;l++)(a=b[l])===(u=o.ftnode)?o=o.nextSibling:p.ul.insertBefore(a.li,u.li)}}else p.ul&&(this.warn("remove child markup for "+p),this.nodeRemoveChildMarkup(t));w||v&&y.ul.insertBefore(p.li,x)}},nodeRenderTitle:function(t,n){var r,o,a,u,l,d,c,h=t.node,p=t.tree,f=t.options,m=f.aria,g=h.getLevel(),v=[];void 0!==n&&(h.title=n),h.span&&!1!==p._enableUpdate&&(l=m&&!1!==h.hasChildren()?" role='button'":"",g<f.minExpandLevel?(h.lazy||(h.expanded=!0),g>1&&v.push("<span "+l+" class='fancytree-expander fancytree-expander-fixed'></span>")):v.push("<span "+l+" class='fancytree-expander'></span>"),(r=i.evalOption("checkbox",h,h,f,!1))&&!h.isStatusNode()&&(l=m?" role='checkbox'":"",o="fancytree-checkbox",("radio"===r||h.parent&&h.parent.radiogroup)&&(o+=" fancytree-radio"),v.push("<span "+l+" class='"+o+"'></span>")),void 0!==h.data.iconClass&&(h.icon?e.error("'iconClass' node option is deprecated since v2.14.0: use 'icon' only instead"):(h.warn("'iconClass' node option is deprecated since v2.14.0: use 'icon' instead"),h.icon=h.data.iconClass)),!1!==(a=i.evalOption("icon",h,h,f,!0))&&(l=m?" role='presentation'":"",c=(c=i.evalOption("iconTooltip",h,h,f,null))?" title='"+E(c)+"'":"","string"==typeof a?s.test(a)?(a="/"===a.charAt(0)?a:(f.imagePath||"")+a,v.push("<img src='"+a+"' class='fancytree-icon'"+c+" alt='' />")):v.push("<span "+l+" class='fancytree-custom-icon "+a+"'"+c+"></span>"):a.text?v.push("<span "+l+" class='fancytree-custom-icon "+(a.addClass||"")+"'"+c+">"+i.escapeHtml(a.text)+"</span>"):a.html?v.push("<span "+l+" class='fancytree-custom-icon "+(a.addClass||"")+"'"+c+">"+a.html+"</span>"):v.push("<span "+l+" class='fancytree-icon'"+c+"></span>")),u="",f.renderTitle&&(u=f.renderTitle.call(p,{type:"renderTitle"},t)||""),u||(!0===(d=i.evalOption("tooltip",h,h,f,null))&&(d=h.title),u="<span class='fancytree-title'"+(d=d?" title='"+E(d)+"'":"")+(f.titlesTabbable?" tabindex='0'":"")+">"+(f.escapeTitles?i.escapeHtml(h.title):h.title)+"</span>"),v.push(u),h.span.innerHTML=v.join(""),this.nodeRenderStatus(t),f.enhanceTitle&&(t.$title=e(">span.fancytree-title",h.span),u=f.enhanceTitle.call(p,{type:"enhanceTitle"},t)||""))},nodeRenderStatus:function(t){var n,s=t.node,r=t.tree,o=t.options,a=s.hasChildren(),u=s.isLastSibling(),l=o.aria,d=o._classNames,c=[],h=s[r.statusClassPropName];h&&!1!==r._enableUpdate&&(l&&(n=e(s.tr||s.li)),c.push(d.node),r.activeNode===s&&c.push(d.active),r.focusNode===s&&c.push(d.focused),s.expanded&&c.push(d.expanded),l&&(!1===a?n.removeAttr("aria-expanded"):n.attr("aria-expanded",Boolean(s.expanded))),s.folder&&c.push(d.folder),!1!==a&&c.push(d.hasChildren),u&&c.push(d.lastsib),s.lazy&&null==s.children&&c.push(d.lazy),s.partload&&c.push(d.partload),s.partsel&&c.push(d.partsel),i.evalOption("unselectable",s,s,o,!1)&&c.push(d.unselectable),s._isLoading&&c.push(d.loading),s._error&&c.push(d.error),s.statusNodeType&&c.push(d.statusNodePrefix+s.statusNodeType),s.selected?(c.push(d.selected),l&&n.attr("aria-selected",!0)):l&&n.attr("aria-selected",!1),s.extraClasses&&c.push(s.extraClasses),!1===a?c.push(d.combinedExpanderPrefix+"n"+(u?"l":"")):c.push(d.combinedExpanderPrefix+(s.expanded?"e":"c")+(s.lazy&&null==s.children?"d":"")+(u?"l":"")),c.push(d.combinedIconPrefix+(s.expanded?"e":"c")+(s.folder?"f":"")),h.className=c.join(" "),s.li&&e(s.li).toggleClass(d.lastsib,u))},nodeSetActive:function(t,n,i){i=i||{};var s,r=t.node,o=t.tree,a=t.options,u=!0===i.noEvents,l=!0===i.noFocus,d=!1!==i.scrollIntoView;return r===o.activeNode==(n=!1!==n)?C(r):n&&!u&&!1===this._triggerNodeEvent("beforeActivate",r,t.originalEvent)?S(r,["rejected"]):(n?(o.activeNode&&(_(o.activeNode!==r,"node was active (inconsistency)"),s=e.extend({},t,{node:o.activeNode}),o.nodeSetActive(s,!1),_(null===o.activeNode,"deactivate was out of sync?")),a.activeVisible&&r.makeVisible({scrollIntoView:d}),o.activeNode=r,o.nodeRenderStatus(t),l||o.nodeSetFocus(t),u||o._triggerNodeEvent("activate",r,t.originalEvent)):(_(o.activeNode===r,"node was not active (inconsistency)"),o.activeNode=null,this.nodeRenderStatus(t),u||t.tree._triggerNodeEvent("deactivate",r,t.originalEvent)),C(r))},nodeSetExpanded:function(t,n,i){i=i||{};var s,r,o,a,u,l,d=t.node,c=t.tree,h=t.options,p=!0===i.noAnimation,f=!0===i.noEvents;if(n=!1!==n,d.expanded&&n||!d.expanded&&!n)return C(d);if(n&&!d.lazy&&!d.hasChildren())return C(d);if(!n&&d.getLevel()<h.minExpandLevel)return S(d,["locked"]);if(!f&&!1===this._triggerNodeEvent("beforeExpand",d,t.originalEvent))return S(d,["rejected"]);if(p||d.isVisible()||(p=i.noAnimation=!0),r=new e.Deferred,n&&!d.expanded&&h.autoCollapse){u=d.getParentList(!1,!0),l=h.autoCollapse;try{for(h.autoCollapse=!1,o=0,a=u.length;o<a;o++)this._callHook("nodeCollapseSiblings",u[o],i)}finally{h.autoCollapse=l}}return r.done((function(){var e=d.getLastChild();n&&h.autoScroll&&!p&&e?e.scrollIntoView(!0,{topNode:d}).always((function(){f||t.tree._triggerNodeEvent(n?"expand":"collapse",t)})):f||t.tree._triggerNodeEvent(n?"expand":"collapse",t)})),s=function(i){var s=h._classNames,r=h.toggleEffect;if(d.expanded=n,c._callHook("treeStructureChanged",t,n?"expand":"collapse"),c._callHook("nodeRender",t,!1,!1,!0),d.ul)if("none"!==d.ul.style.display==!!d.expanded)d.warn("nodeSetExpanded: UL.style.display already set");else{if(r&&!p)return e(d.li).addClass(s.animating),void(e.isFunction(e(d.ul)[r.effect])?(c.debug("use jquery."+r.effect+" method"),e(d.ul)[r.effect]({duration:r.duration,always:function(){e(this).removeClass(s.animating),e(d.li).removeClass(s.animating),i()}})):(e(d.ul).stop(!0,!0),e(d.ul).parent().find(".ui-effects-placeholder").remove(),e(d.ul).toggle(r.effect,r.options,r.duration,(function(){e(this).removeClass(s.animating),e(d.li).removeClass(s.animating),i()}))));d.ul.style.display=d.expanded||!parent?"":"none"}i()},n&&d.lazy&&void 0===d.hasChildren()?d.load().done((function(){r.notifyWith&&r.notifyWith(d,["loaded"]),s((function(){r.resolveWith(d)}))})).fail((function(e){s((function(){r.rejectWith(d,["load failed ("+e+")"])}))})):s((function(){r.resolveWith(d)})),r.promise()},nodeSetFocus:function(t,n){var i,s=t.tree,r=t.node,o=s.options,a=!!t.originalEvent&&e(t.originalEvent.target).is(":input");if(n=!1!==n,s.focusNode){if(s.focusNode===r&&n)return;i=e.extend({},t,{node:s.focusNode}),s.focusNode=null,this._triggerNodeEvent("blur",i),this._callHook("nodeRenderStatus",i)}n&&(this.hasFocus()||(r.debug("nodeSetFocus: forcing container focus"),this._callHook("treeSetFocus",t,!0,{calledByNode:!0})),r.makeVisible({scrollIntoView:!1}),s.focusNode=r,o.titlesTabbable&&(a||e(r.span).find(".fancytree-title").focus()),o.aria&&e(s.$container).attr("aria-activedescendant",e(r.tr||r.li).uniqueId().attr("id")),this._triggerNodeEvent("focus",t),document.activeElement===s.$container.get(0)||e(document.activeElement,s.$container).length>=1||e(s.$container).focus(),o.autoScroll&&r.scrollIntoView(),this._callHook("nodeRenderStatus",t))},nodeSetSelected:function(e,t,n){n=n||{};var s=e.node,r=e.tree,o=e.options,a=!0===n.noEvents,u=s.parent;if(t=!1!==t,!i.evalOption("unselectable",s,s,o,!1)){if(s._lastSelectIntent=t,!!s.selected===t&&(3!==o.selectMode||!s.partsel||t))return t;if(!a&&!1===this._triggerNodeEvent("beforeSelect",s,e.originalEvent))return!!s.selected;t&&1===o.selectMode?(r.lastSelectedNode&&r.lastSelectedNode.setSelected(!1),s.selected=t):3!==o.selectMode||!u||u.radiogroup||s.radiogroup?u&&u.radiogroup?s.visitSiblings((function(e){e._changeSelectStatusAttrs(t&&e===s)}),!0):s.selected=t:(s.selected=t,s.fixSelection3AfterClick(n)),this.nodeRenderStatus(e),r.lastSelectedNode=t?s:null,a||r._triggerNodeEvent("select",e)}},nodeSetStatus:function(t,n,i,s){var r=t.node,o=t.tree;function a(n,i){var s=r.children?r.children[0]:null;return s&&s.isStatusNode()?(e.extend(s,n),s.statusNodeType=i,o._callHook("nodeRenderTitle",s)):(r._setChildren([n]),o._callHook("treeStructureChanged",t,"setStatusNode"),r.children[0].statusNodeType=i,o.render()),r.children[0]}switch(n){case"ok":!function(){var e=r.children?r.children[0]:null;if(e&&e.isStatusNode()){try{r.ul&&(r.ul.removeChild(e.li),e.li=null)}catch(e){}1===r.children.length?r.children=[]:r.children.shift(),o._callHook("treeStructureChanged",t,"clearStatusNode")}}(),r._isLoading=!1,r._error=null,r.renderStatus();break;case"loading":r.parent||a({title:o.options.strings.loading+(i?" ("+i+")":""),checkbox:!1,tooltip:s},n),r._isLoading=!0,r._error=null,r.renderStatus();break;case"error":a({title:o.options.strings.loadError+(i?" ("+i+")":""),checkbox:!1,tooltip:s},n),r._isLoading=!1,r._error={message:i,details:s},r.renderStatus();break;case"nodata":a({title:i||o.options.strings.noData,checkbox:!1,tooltip:s},n),r._isLoading=!1,r._error=null,r.renderStatus();break;default:e.error("invalid node status "+n)}},nodeToggleExpanded:function(e){return this.nodeSetExpanded(e,!e.node.expanded)},nodeToggleSelected:function(e){var t=e.node,n=!t.selected;return t.partsel&&!t.selected&&!0===t._lastSelectIntent&&(n=!1,t.selected=!0),t._lastSelectIntent=n,this.nodeSetSelected(e,n)},treeClear:function(e){var t=e.tree;t.activeNode=null,t.focusNode=null,t.$div.find(">ul.fancytree-container").empty(),t.rootNode.children=null,t._callHook("treeStructureChanged",e,"clear")},treeCreate:function(e){},treeDestroy:function(e){this.$div.find(">ul.fancytree-container").remove(),this.$source&&this.$source.removeClass("fancytree-helper-hidden")},treeInit:function(t){var n=t.tree,i=n.options;n.$container.attr("tabindex",i.tabindex),e.each(f,(function(e,t){void 0!==i[t]&&(n.info("Move option "+t+" to tree"),n[t]=i[t],delete i[t])})),i.checkboxAutoHide&&n.$container.addClass("fancytree-checkbox-auto-hide"),i.rtl?n.$container.attr("DIR","RTL").addClass("fancytree-rtl"):n.$container.removeAttr("DIR").removeClass("fancytree-rtl"),i.aria&&(n.$container.attr("role","tree"),1!==i.selectMode&&n.$container.attr("aria-multiselectable",!0)),this.treeLoad(t)},treeLoad:function(t,n){var i,s,r,o=t.tree,a=t.widget.element,u=e.extend({},t,{node:this.rootNode});if(o.rootNode.children&&this.treeClear(t),n=n||this.options.source)"string"==typeof n&&e.error("Not implemented");else switch(s=a.data("type")||"html"){case"html":(r=a.find(">ul").first()).addClass("ui-fancytree-source fancytree-helper-hidden"),n=e.ui.fancytree.parseHtml(r),this.data=e.extend(this.data,N(r));break;case"json":n=e.parseJSON(a.text()),a.contents().filter((function(){return 3===this.nodeType})).remove(),e.isPlainObject(n)&&(_(e.isArray(n.children),"if an object is passed as source, it must contain a 'children' array (all other properties are added to 'tree.data')"),i=n,n=n.children,delete i.children,e.each(f,(function(e,t){void 0!==i[t]&&(o[t]=i[t],delete i[t])})),e.extend(o.data,i));break;default:e.error("Invalid data-type: "+s)}return this.nodeLoadChildren(u,n).done((function(){o._callHook("treeStructureChanged",t,"loadChildren"),o.render(),3===t.options.selectMode&&o.rootNode.fixSelection3FromEndNodes(),o.activeNode&&o.options.activeVisible&&o.activeNode.makeVisible(),o._triggerTreeEvent("init",null,{status:!0})})).fail((function(){o.render(),o._triggerTreeEvent("init",null,{status:!1})}))},treeRegisterNode:function(e,t,n){e.tree._callHook("treeStructureChanged",e,t?"addNode":"removeNode")},treeSetFocus:function(t,n,i){var s;(n=!1!==n)!==this.hasFocus()&&(this._hasFocus=n,!n&&this.focusNode?this.focusNode.setFocus(!1):!n||i&&i.calledByNode||e(this.$container).focus(),this.$container.toggleClass("fancytree-treefocus",n),this._triggerTreeEvent(n?"focusTree":"blurTree"),n&&!this.activeNode&&(s=this._lastMousedownNode||this.getFirstChild())&&s.setFocus())},treeSetOption:function(t,n,i){var s=t.tree,r=!0,o=!1,a=!1;switch(n){case"aria":case"checkbox":case"icon":case"minExpandLevel":case"tabindex":o=!0,a=!0;break;case"checkboxAutoHide":s.$container.toggleClass("fancytree-checkbox-auto-hide",!!i);break;case"escapeTitles":case"tooltip":a=!0;break;case"rtl":!1===i?s.$container.removeAttr("DIR").removeClass("fancytree-rtl"):s.$container.attr("DIR","RTL").addClass("fancytree-rtl"),a=!0;break;case"source":r=!1,s._callHook("treeLoad",s,i),a=!0}s.debug("set option "+n+"="+i+" <"+typeof i+">"),r&&(this.widget._super?this.widget._super.call(this.widget,n,i):e.Widget.prototype._setOption.call(this.widget,n,i)),o&&s._callHook("treeCreate",s),a&&s.render(!0,!1)},treeStructureChanged:function(e,t){}}),e.widget("ui.fancytree",{options:{activeVisible:!0,ajax:{type:"GET",cache:!1,dataType:"json"},aria:!0,autoActivate:!0,autoCollapse:!1,autoScroll:!1,checkbox:!1,clickFolderMode:4,debugLevel:null,disabled:!1,enableAspx:!0,escapeTitles:!1,extensions:[],toggleEffect:{effect:"slideToggle",duration:200},generateIds:!1,icon:!0,idPrefix:"ft_",focusOnSelect:!1,keyboard:!0,keyPathSeparator:"/",minExpandLevel:1,nodata:!0,quicksearch:!1,rtl:!1,scrollOfs:{top:0,bottom:0},scrollParent:null,selectMode:2,strings:{loading:"Loading...",loadError:"Load error!",moreData:"More...",noData:"No data."},tabindex:"0",titlesTabbable:!1,tooltip:!1,treeId:null,_classNames:{node:"fancytree-node",folder:"fancytree-folder",animating:"fancytree-animating",combinedExpanderPrefix:"fancytree-exp-",combinedIconPrefix:"fancytree-ico-",hasChildren:"fancytree-has-children",active:"fancytree-active",selected:"fancytree-selected",expanded:"fancytree-expanded",lazy:"fancytree-lazy",focused:"fancytree-focused",partload:"fancytree-partload",partsel:"fancytree-partsel",radio:"fancytree-radio",unselectable:"fancytree-unselectable",lastsib:"fancytree-lastsib",loading:"fancytree-loading",error:"fancytree-error",statusNodePrefix:"fancytree-statusnode-"},lazyLoad:null,postProcess:null},_create:function(){this.tree=new A(this),this.$source=this.source||"json"===this.element.data("type")?this.element:this.element.find(">ul").first();var t,n,i,s=this.options,r=s.extensions;this.tree;for(i=0;i<r.length;i++)n=r[i],(t=e.ui.fancytree._extensions[n])||e.error("Could not apply extension '"+n+"' (it is not registered, did you forget to include it?)"),this.tree.options[n]=b({},t.options,this.tree.options[n]),_(void 0===this.tree.ext[n],"Extension name must not exist as Fancytree.ext attribute: '"+n+"'"),this.tree.ext[n]={},k(this.tree,0,t,n),t;void 0!==s.icons&&(!0===s.icon?(this.tree.warn("'icons' tree option is deprecated since v2.14.0: use 'icon' instead"),s.icon=s.icons):e.error("'icons' tree option is deprecated since v2.14.0: use 'icon' only instead")),void 0!==s.iconClass&&(s.icon?e.error("'iconClass' tree option is deprecated since v2.14.0: use 'icon' only instead"):(this.tree.warn("'iconClass' tree option is deprecated since v2.14.0: use 'icon' instead"),s.icon=s.iconClass)),void 0!==s.tabbable&&(s.tabindex=s.tabbable?"0":"-1",this.tree.warn("'tabbable' tree option is deprecated since v2.17.0: use 'tabindex='"+s.tabindex+"' instead")),this.tree._callHook("treeCreate",this.tree)},_init:function(){this.tree._callHook("treeInit",this.tree),this._bind()},_setOption:function(e,t){return this.tree._callHook("treeSetOption",this.tree,e,t)},destroy:function(){this._unbind(),this.tree._callHook("treeDestroy",this.tree),e.Widget.prototype.destroy.call(this)},_unbind:function(){var t=this.tree._ns;this.element.off(t),this.tree.$container.off(t),e(document).off(t)},_bind:function(){var t=this,n=this.options,s=this.tree,r=s._ns;this._unbind(),s.$container.on("focusin"+r+" focusout"+r,(function(t){var n=i.getNode(t),r="focusin"===t.type;if(!r&&n&&e(t.target).is("a"))n.debug("Ignored focusout on embedded <a> element.");else{if(r){if(s._getExpiringValue("focusin"))return void s.debug("Ignored double focusin.");s._setExpiringValue("focusin",!0,50),n||(n=s._getExpiringValue("mouseDownNode"))&&s.debug("Reconstruct mouse target for focusin from recent event.")}n?s._callHook("nodeSetFocus",s._makeHookContext(n,t),r):s.tbody&&e(t.target).parents("table.fancytree-container > thead").length?s.debug("Ignore focus event outside table body.",t):s._callHook("treeSetFocus",s,r)}})).on("selectstart"+r,"span.fancytree-title",(function(e){e.preventDefault()})).on("keydown"+r,(function(e){if(n.disabled||!1===n.keyboard)return!0;var t,i=s.focusNode,r=s._makeHookContext(i||s,e),o=s.phase;try{return s.phase="userEvent","preventNav"===(t=i?s._triggerNodeEvent("keydown",i,e):s._triggerTreeEvent("keydown",e))?t=!0:!1!==t&&(t=s._callHook("nodeKeydown",r)),t}finally{s.phase=o}})).on("mousedown"+r,(function(e){var t=i.getEventTarget(e);s._lastMousedownNode=t?t.node:null,s._setExpiringValue("mouseDownNode",s._lastMousedownNode)})).on("click"+r+" dblclick"+r,(function(e){if(n.disabled)return!0;var s,r=i.getEventTarget(e),o=r.node,a=t.tree,u=a.phase;if(!o)return!0;s=a._makeHookContext(o,e);try{switch(a.phase="userEvent",e.type){case"click":return s.targetType=r.type,o.isPagingNode()?!0===a._triggerNodeEvent("clickPaging",s,e):!1!==a._triggerNodeEvent("click",s,e)&&a._callHook("nodeClick",s);case"dblclick":return s.targetType=r.type,!1!==a._triggerNodeEvent("dblclick",s,e)&&a._callHook("nodeDblclick",s)}}finally{a.phase=u}}))},getActiveNode:function(){return this.tree.activeNode},getNodeByKey:function(e){return this.tree.getNodeByKey(e)},getRootNode:function(){return this.tree.rootNode},getTree:function(){return this.tree}}),i=e.ui.fancytree,e.extend(e.ui.fancytree,{version:"2.32.0",buildType:"production",debugLevel:3,_nextId:1,_nextNodeKey:1,_extensions:{},_FancytreeClass:A,_FancytreeNodeClass:L,jquerySupports:{positionMyOfs:function(t,n,i,s){var r,o,a,u=e.map(e.trim(t).split("."),(function(e){return parseInt(e,10)})),l=e.map(Array.prototype.slice.call(arguments,1),(function(e){return parseInt(e,10)}));for(r=0;r<l.length;r++)if(o=u[r]||0,a=l[r]||0,o!==a)return o>a;return!0}(e.ui.version,1,9)},assert:function(e,t){return _(e,t)},createTree:function(t,n){return e(t).fancytree(n).fancytree("getTree")},debounce:function(e,t,n,i){var s;return 3===arguments.length&&"boolean"!=typeof n&&(i=n,n=!1),function(){var r=arguments;i=i||this,n&&!s&&t.apply(i,r),clearTimeout(s),s=setTimeout((function(){n||t.apply(i,r),s=null}),e)}},debug:function(t){e.ui.fancytree.debugLevel>=4&&w("log",arguments)},error:function(t){e.ui.fancytree.debugLevel>=1&&w("error",arguments)},escapeHtml:function(e){return(""+e).replace(r,(function(e){return a[e]}))},fixPositionOptions:function(t){if((t.offset||(""+t.my+t.at).indexOf("%")>=0)&&e.error("expected new position syntax (but '%' is not supported)"),!e.ui.fancytree.jquerySupports.positionMyOfs){var n=/(\w+)([+-]?\d+)?\s+(\w+)([+-]?\d+)?/.exec(t.my),i=/(\w+)([+-]?\d+)?\s+(\w+)([+-]?\d+)?/.exec(t.at),s=(n[2]?+n[2]:0)+(i[2]?+i[2]:0),r=(n[4]?+n[4]:0)+(i[4]?+i[4]:0);t=e.extend({},t,{my:n[1]+" "+n[3],at:i[1]+" "+i[3]}),(s||r)&&(t.offset=s+" "+r)}return t},getEventTarget:function(t){var n,s=t&&t.target?t.target.className:"",r={node:this.getNode(t.target),type:void 0};return/\bfancytree-title\b/.test(s)?r.type="title":/\bfancytree-expander\b/.test(s)?r.type=!1===r.node.hasChildren()?"prefix":"expander":/\bfancytree-checkbox\b/.test(s)?r.type="checkbox":/\bfancytree(-custom)?-icon\b/.test(s)?r.type="icon":/\bfancytree-node\b/.test(s)?r.type="title":t&&t.target&&((n=e(t.target)).is("ul[role=group]")?((r.node&&r.node.tree||i).debug("Ignoring click on outer UL."),r.node=null):n.closest(".fancytree-title").length?r.type="title":n.closest(".fancytree-checkbox").length?r.type="checkbox":n.closest(".fancytree-expander").length&&(r.type="expander")),r},getEventTargetType:function(e){return this.getEventTarget(e).type},getNode:function(t){if(t instanceof L)return t;for(t instanceof e?t=t[0]:void 0!==t.originalEvent&&(t=t.target);t;){if(t.ftnode)return t.ftnode;t=t.parentNode}return null},getTree:function(t){var n,i=t;return t instanceof A?t:(void 0===t&&(t=0),"number"==typeof t?t=e(".fancytree-container").eq(t):"string"==typeof t?(t=e("#ft-id-"+i).eq(0)).length||(t=e(i).eq(0)):t instanceof e?t=t.eq(0):void 0!==t.originalEvent&&(t=e(t.target)),(n=(t=t.closest(":ui-fancytree")).data("ui-fancytree")||t.data("fancytree"))?n.tree:null)},evalOption:function(t,n,i,s,r){var o,a,u=n.tree,l=s[t],d=i[t];return e.isFunction(l)?(o={node:n,tree:u,widget:u.widget,options:u.widget.options,typeInfo:u.types[n.type]||{}},null==(a=l.call(u,{type:t},o))&&(a=d)):a=null==d?l:d,null==a&&(a=r),a},setSpanIcon:function(t,n,i){var s=e(t);"string"==typeof i?s.attr("class",n+" "+i):(i.text?s.text(""+i.text):i.html&&(t.innerHTML=i.html),s.attr("class",n+" "+(i.addClass||"")))},eventToString:function(e){var t=e.which,n=e.type,i=[];return e.altKey&&i.push("alt"),e.ctrlKey&&i.push("ctrl"),e.metaKey&&i.push("meta"),e.shiftKey&&i.push("shift"),"click"===n||"dblclick"===n?i.push(c[e.button]+n):"wheel"===n?i.push(n):u[t]||i.push(l[t]||String.fromCharCode(t).toLowerCase()),i.join("+")},info:function(t){e.ui.fancytree.debugLevel>=3&&w("info",arguments)},keyEventToString:function(e){return this.warn("keyEventToString() is deprecated: use eventToString()"),this.eventToString(e)},overrideMethod:function(t,n,i,s){var r,o=t[n]||e.noop;t[n]=function(){var e=s||this;try{return r=e._super,e._super=o,i.apply(e,arguments)}finally{e._super=r}}},parseHtml:function(t){var n,i,s,r,o,a,u,l,d=t.find(">li"),c=[];return d.each((function(){var d,f,g=e(this),y=g.find(">span",this).first(),_=y.length?null:g.find(">a").first(),w={tooltip:null,data:{}};for(y.length?w.title=y.html():_&&_.length?(w.title=_.html(),w.data.href=_.attr("href"),w.data.target=_.attr("target"),w.tooltip=_.attr("title")):(w.title=g.html(),(o=w.title.search(/<ul/i))>=0&&(w.title=w.title.substring(0,o))),w.title=e.trim(w.title),r=0,a=h.length;r<a;r++)w[h[r]]=void 0;for(n=this.className.split(" "),s=[],r=0,a=n.length;r<a;r++)i=n[r],p[i]?w[i]=!0:s.push(i);if(w.extraClasses=s.join(" "),(u=g.attr("title"))&&(w.tooltip=u),(u=g.attr("id"))&&(w.key=u),g.attr("hideCheckbox")&&(w.checkbox=!1),(d=N(g))&&!e.isEmptyObject(d)){for(f in v)d.hasOwnProperty(f)&&(d[v[f]]=d[f],delete d[f]);for(r=0,a=m.length;r<a;r++)u=m[r],null!=(l=d[u])&&(delete d[u],w[u]=l);e.extend(w.data,d)}(t=g.find(">ul").first()).length?w.children=e.ui.fancytree.parseHtml(t):w.children=w.lazy?void 0:null,c.push(w)})),c},registerExtension:function(t){_(null!=t.name,"extensions must have a `name` property."),_(null!=t.version,"extensions must have a `version` property."),e.ui.fancytree._extensions[t.name]=t},unescapeHtml:function(e){var t=document.createElement("div");return t.innerHTML=e,0===t.childNodes.length?"":t.childNodes[0].nodeValue},warn:function(t){e.ui.fancytree.debugLevel>=2&&w("warn",arguments)}}),e.ui.fancytree}function _(t,n){t||(n=n?": "+n:"",e.error("Fancytree assertion failed"+n))}function w(e,t){var n,i,s=window.console?window.console[e]:null;if(s)try{s.apply(window.console,t)}catch(e){for(i="",n=0;n<t.length;n++)i+=t[n];s(i)}}function b(){var t,n,i,s,r,o=arguments[0]||{},a=1,u=arguments.length;if("object"==typeof o||e.isFunction(o)||(o={}),a===u)throw Error("need at least two args");for(;a<u;a++)if(null!=(t=arguments[a]))for(n in t)if(t.hasOwnProperty(n)){if(i=o[n],o===(s=t[n]))continue;s&&e.isPlainObject(s)?(r=i&&e.isPlainObject(i)?i:{},o[n]=b(r,s)):void 0!==s&&(o[n]=s)}return o}function x(e,t,n,i,s){var r,o,a,u,l;return r=t[e],o=i[e],a=t.ext[s],u=function(){return r.apply(t,arguments)},l=function(e){return r.apply(t,e)},function(){var e=t._local,n=t._super,i=t._superApply;try{return t._local=a,t._super=u,t._superApply=l,o.apply(t,arguments)}finally{t._local=e,t._super=n,t._superApply=i}}}function k(t,n,i,s){for(var r in i)"function"==typeof i[r]?"function"==typeof t[r]?t[r]=x(r,t,0,i,s):"_"===r.charAt(0)?t.ext[s][r]=x(r,t,0,i,s):e.error("Could not override tree."+r+". Use prefix '_' to create tree."+s+"._"+r):"options"!==r&&(t.ext[s][r]=i[r])}function C(t,n){return void 0===t?e.Deferred((function(){this.resolve()})).promise():e.Deferred((function(){this.resolveWith(t,n)})).promise()}function S(t,n){return void 0===t?e.Deferred((function(){this.reject()})).promise():e.Deferred((function(){this.rejectWith(t,n)})).promise()}function T(e,t){return function(){e.resolveWith(t)}}function N(t){var n=e.extend({},t.data()),i=n.json;return delete n.fancytree,delete n.uiFancytree,i&&(delete n.json,n=e.extend(n,i)),n}function E(e){return(""+e).replace(o,(function(e){return a[e]}))}function j(e){return e=e.toLowerCase(),function(t){return t.title.toLowerCase().indexOf(e)>=0}}function L(t,n){var s,r,o,a;for(this.parent=t,this.tree=t.tree,this.ul=null,this.li=null,this.statusNodeType=null,this._isLoading=!1,this._error=null,this.data={},s=0,r=m.length;s<r;s++)this[o=m[s]]=n[o];for(o in null==this.unselectableIgnore&&null==this.unselectableStatus||(this.unselectable=!0),n.hideCheckbox&&e.error("'hideCheckbox' node option was removed in v2.23.0: use 'checkbox: false'"),n.data&&e.extend(this.data,n.data),n)g[o]||e.isFunction(n[o])||y[o]||(this.data[o]=n[o]);null==this.key?this.tree.options.defaultKey?(this.key=this.tree.options.defaultKey(this),_(this.key,"defaultKey() must return a unique key")):this.key="_"+i._nextNodeKey++:this.key=""+this.key,n.active&&(_(null===this.tree.activeNode,"only one active node allowed"),this.tree.activeNode=this),n.selected&&(this.tree.lastSelectedNode=this),(a=n.children)?a.length?this._setChildren(a):this.children=this.lazy?[]:null:this.children=null,this.tree._callHook("treeRegisterNode",this.tree,!0,this)}function A(t){this.widget=t,this.$div=t.element,this.options=t.options,this.options&&(void 0!==this.options.lazyload&&e.error("The 'lazyload' event is deprecated since 2014-02-25. Use 'lazyLoad' (with uppercase L) instead."),void 0!==this.options.loaderror&&e.error("The 'loaderror' event was renamed since 2014-07-03. Use 'loadError' (with uppercase E) instead."),void 0!==this.options.fx&&e.error("The 'fx' option was replaced by 'toggleEffect' since 2014-11-30."),void 0!==this.options.removeNode&&e.error("The 'removeNode' event was replaced by 'modifyChild' since 2.20 (2016-09-10).")),this.ext={},this.types={},this.columns={},this.data=N(this.$div),this._id=""+(this.options.treeId||e.ui.fancytree._nextId++),this._ns=".fancytree-"+this._id,this.activeNode=null,this.focusNode=null,this._hasFocus=null,this._tempCache={},this._lastMousedownNode=null,this._enableUpdate=!0,this.lastSelectedNode=null,this.systemFocusElement=null,this.lastQuicksearchTerm="",this.lastQuicksearchTime=0,this.viewport=null,this.statusClassPropName="span",this.ariaPropName="li",this.nodeContainerAttrName="li",this.$div.find(">ul.fancytree-container").remove();var n,s={tree:this};this.rootNode=new L(s,{title:"root",key:"root_"+this._id,children:null,expanded:!0}),this.rootNode.parent=null,n=e("<ul>",{id:"ft-id-"+this._id,class:"ui-fancytree fancytree-container fancytree-plain"}).appendTo(this.$div),this.$container=n,this.rootNode.ul=n[0],null==this.options.debugLevel&&(this.options.debugLevel=i.debugLevel)}e.ui.fancytree.warn("Fancytree: ignored duplicate include")})?i.apply(t,s):i)||(e.exports=r)},,,,,,,,,,function(e,t,n){var i=i||{};window.WP_Smush=i,String.prototype.includes||(String.prototype.includes=function(e,t){return"number"!=typeof t&&(t=0),!(t+e.length>this.length)&&-1!==this.indexOf(e,t)}),n(16),n(17),n(18),n(19),n(20),n(22),n(23),n(24),n(25)},function(e,t){!function(e){"use strict";WP_Smush.helpers={init:function(){},formatBytes:function(e,t){var n=["KB","MB","GB","TB","PB"];if(Math.abs(e)<1024)return e+" B";var i=-1;do{e/=1024,++i}while(Math.abs(e)>=1024&&i<n.length-1);return e.toFixed(t)+" "+n[i]},getSizeFromString:function(e){return e.replace(/[a-zA-Z]/g,"").trim()},getFormatFromString:function(e){return e.replace(/[0-9.]/g,"").trim()},precise_round:function(e,t){var n=e>=0?1:-1;return e=e>100?100:e,Math.round(e*Math.pow(10,t)+.001*n)/Math.pow(10,t)},findPos:function(e){var t=0;if(e.offsetParent){do{t+=e.offsetTop}while(e=e.offsetParent);return[t]}},geturlparam:function(e){for(var t=window.location.search.substring(1).split("&"),n=0;n<t.length;n++){var i=t[n].split("=");if(i[0]===e)return i[1]}},resetSettings:function(){var e=new XMLHttpRequest;e.open("POST",ajaxurl+"?action=reset_settings",!0),e.setRequestHeader("Content-type","application/x-www-form-urlencoded"),e.onload=function(){if(200===e.status){var t=JSON.parse(e.response);void 0!==t.success&&t.success&&(window.location.href=wp_smush_msgs.smush_url)}else console.log("Request failed. Returned status of "+e.status)},e.send("_ajax_nonce="+smush_vars.nonce.get_smush_status)}},WP_Smush.helpers.init()}(jQuery)},function(e,t,n){"use strict";n.r(t);var i=n(0),s=function(e,t){void 0===t&&(t=100),e.fadeTo(t,0,(function(){e.slideUp(t,(function(){e.remove()}))}))};jQuery((function(e){var t=function(t,n,s,r){if("disabled"==n.attr("disabled"))return!1;t.preventDefault(),e(".wp-smush-error").remove(),e(".smush-stats-wrapper").hide();var o="grid";"smush_restore_image"==s&&(o=e(document).find("div.media-modal.wp-core-ui").length>0?"grid":window.location.search.indexOf("item")>-1?"grid":"list");var a={action:s,attachment_id:n.data("id"),mode:o,_nonce:n.data("nonce")};!function(e){var t=e.parent();t.css({opacity:"0.5"}),t.find("a").attr("disabled","disabled")}(n),i.a.progressBar(n,wp_smush_msgs[r],"show"),e.post(ajaxurl,a,(function(e){i.a.progressBar(n,wp_smush_msgs[r],"hide"),function(e){var t=e.parent();t.css({opacity:"1"}),t.find("a").removeAttr("disabled")}(n),e.success&&void 0!==e.data.button?(void 0!==this.data&&this.data.indexOf("nextgen")>-1?n.parent().html(e.data.button):n.parents().eq(1).html(e.data.button),void 0!==e.data&&"restore"===r&&i.a.updateImageStats(e.data.new_size)):e.data.message&&n.parent().append(e.data.message)}))},n=function(t){var n=e(".wp-smush-scan");n.text("").addClass("sui-button-onload sui-icon-loader sui-loading").blur();var r=n.data("type");r=void 0===r?"media":r,e(".wp-smush-all").removeAttr("data-smush");var o=e(".sui-notice-top.sui-notice-success");o.slideUp(100,(function(){o.remove()})),e(".wp-smush-all").attr("disabled","disabled"),e(".wp-smush-settings-changed").hide();var a={action:"scan_for_resmush",type:r,get_ui:!0,process_settings:t,wp_smush_options_nonce:jQuery("#wp_smush_options_nonce").val()};e.get(ajaxurl,a,(function(t){if(void 0!==t.data){if(void 0!==t.data.resmush_ids){wp_smushit_data.resmush=t.data.resmush_ids,"undefinied"!=typeof wp_smushit_data&&(wp_smushit_data.count_smushed=void 0!==t.data.count_smushed?t.data.count_smushed:wp_smushit_data.count_smushed,wp_smushit_data.count_supersmushed=void 0!==t.data.count_supersmushed?t.data.count_supersmushed:wp_smushit_data.count_supersmushed,wp_smushit_data.count_images=void 0!==t.data.count_image?t.data.count_image:wp_smushit_data.count_images,wp_smushit_data.size_before=void 0!==t.data.size_before?t.data.size_before:wp_smushit_data.size_before,wp_smushit_data.size_after=void 0!==t.data.size_after?t.data.size_after:wp_smushit_data.size_after,wp_smushit_data.savings_resize=void 0!==t.data.savings_resize?t.data.savings_resize:wp_smushit_data.savings_resize,wp_smushit_data.savings_conversion=void 0!==t.data.savings_conversion?t.data.savings_conversion:wp_smushit_data.savings_conversion,wp_smushit_data.count_resize=void 0!==t.data.count_resize?t.data.count_resize:wp_smushit_data.count_resize),"nextgen"===r&&(wp_smushit_data.bytes=parseInt(wp_smushit_data.size_before)-parseInt(wp_smushit_data.size_after));var n=e(".bulk-smush-wrapper .sui-notice");n.length>0&&(n.hide(),e(".wp-smush-pagespeed-recommendation").hide()),e(".wp-smush-resmush-notice").remove(),e(".wp-smush-bulk-wrapper").show()}if(void 0!==t.data.content&&e(".bulk-smush-wrapper .sui-box-body > p:first-of-type").after(t.data.content),void 0!==t.data.notice&&e(".wp-smush-page-header").after(t.data.notice),e("div.smush-final-log").hide(),void 0!==t.data.super_smush&&t.data.super_smush){var s=jQuery(".wp-smush-enable-lossy");s.length>0&&s.remove(),"undefined"!==t.data.super_smush_stats&&e(".super-smush-attachments .wp-smush-stats").html(t.data.super_smush_stats)}i.a.updateStats(r)}})).always((function(){jQuery(".bulk-smush-wrapper .wp-smush-bulk-progress-bar-wrapper").hide(),n.text(wp_smush_msgs.resmush_complete).removeClass("sui-button-onload sui-icon-loader sui-loading").addClass("smush-button-check-success"),setTimeout((function(){n.removeClass("smush-button-check-success").html('<i class="sui-icon-update" aria-hidden="true"></i>'+wp_smush_msgs.resmush_check)}),2e3),e(".wp-smush-all").removeAttr("disabled");var t=e(".wp-smush-re-check-message");t.length&&s(t)}))},r=function(t){e(t).length>0&&e("html, body").animate({scrollTop:e(t).offset().top-100},"slow")};e("#all-image-sizes").on("change",(function(){e('input[name^="wp-smush-image_sizes"]').prop("checked",!0)})),e("#wp-smush-update-api-status").on("click",(function(t){t.preventDefault(),e(this).addClass("sui-button-onload"),e.post(ajaxurl,{action:"recheck_api_status"},(function(){location.reload()}))})),e("body").on("click","a.smush-stats-details",(function(t){if("disabled"==e(this).attr("disabled"))return!1;t.preventDefault();var n=e(this).find(".stats-toggle");e(this).parents().eq(1).find(".smush-stats-wrapper").slideToggle(),n.text("+"==n.text()?"-":"+")})),e("body").on("click",".wp-smush-send:not(.wp-smush-resmush)",(function(t){t.preventDefault(),new i.a(e(this),!1)})),e("body").on("click",".wp-smush-remove-skipped",(function(t){t.preventDefault(),e.post(ajaxurl,{action:"remove_from_skip_list",id:e(this).attr("data-id")}),s(e(this))})),e("body").on("click",".wp-smush-nextgen-send",(function(t){t.preventDefault(),new i.a(e(this),!1,"nextgen")})),e("body").on("click",".wp-smush-nextgen-bulk",(function(t){if(t.preventDefault(),e(".wp-smush-resmush-notice").remove(),"undefined"==typeof wp_smushit_data||0===wp_smushit_data.unsmushed.length&&0===wp_smushit_data.resmush.length)return!1;jQuery(".wp-smush-all, .wp-smush-scan").attr("disabled","disabled"),e(".wp-smush-notice.wp-smush-remaining").hide(),new i.a(e(this),!0,"nextgen")})),e("body").on("click",".wp-smush-action.wp-smush-restore",(function(n){var i=e(this);t(n,i,"smush_restore_image","restore");var s=i.parents().eq(1);s.hasClass("smushed")&&s.removeClass("smushed").addClass("unsmushed")})),e("body").on("click",".wp-smush-action.wp-smush-resmush",(function(n){t(n,e(this),"smush_resmush_image","smushing")})),e("body").on("click",".wp-smush-action.wp-smush-nextgen-restore",(function(n){t(n,e(this),"smush_restore_nextgen_image","restore")})),e("body").on("click",".wp-smush-action.wp-smush-nextgen-resmush",(function(n){t(n,e(this),"smush_resmush_nextgen_image","smushing")})),e(".wp-smush-scan").on("click",(function(e){e.preventDefault(),n(!1)})),e("#wp-smush-welcome-box .smush-dismiss-welcome").on("click",(function(t){t.preventDefault();var n=e(this).parents().eq(1);s(n);e.post(ajaxurl,{action:"dismiss_welcome_notice"})})),e("body").on("click",".wp-smush-notice .icon-fi-close",(function(t){t.preventDefault();var n=e(this).parent();s(n)})),e("input[name=wp-smush-keep_data]").on("change",(function(e){var t="keep_data-true"===e.target.id?"keep_data-false":"keep_data-true";e.target.parentNode.classList.add("active"),document.getElementById(t).parentNode.classList.remove("active")})),e("button#wp-smush-save-settings").on("click",(function(t){t.preventDefault();var n="",i=e('input[name="setting-type"]');i.length>0&&(n=i.val());var s=e(this);if(s.parent().find("span.sui-icon-loader.sui-loading").removeClass("sui-hidden"),""!=n&&"network"==n){var r={action:"save_settings",wp_smush_options_nonce:e("#wp_smush_options_nonce").val()};r=jQuery.param(r)+"&"+jQuery("form#wp-smush-settings-form").serialize(),jQuery.post(ajaxurl,r).done((function(){return jQuery("form#wp-smush-settings-form").submit(),!0}))}else{e(".wp-smush-hex-notice").hide(),s.attr("disabled","disabled").addClass("button-grey"),void 0!==s.attr("data-msg")&&s.attr("data-msg").length>0?s.html(s.attr("data-msg")):s.html(wp_smush_msgs.checking);var o=s.data("type");o=void 0===o?"media":o;var a={action:"scan_for_resmush",wp_smush_options_nonce:jQuery("#wp_smush_options_nonce").val(),type:o};a=jQuery.param(a)+"&"+jQuery("form#wp-smush-settings-form").serialize(),jQuery.post(ajaxurl,a).done((function(){return jQuery("form#wp-smush-settings-form").submit(),!0}))}})),e("body").on("click",".wp-smush-skip-resmush",(function(t){t.preventDefault();var n=jQuery(this),r=n.parents().eq(1),o=n.parent();s(o),e(".sui-notice-top.sui-notice-success").remove(),r.find(".wp-smush-all").attr("data-smush","skip_resmush"),wp_smushit_data.count_smushed=parseInt(wp_smushit_data.count_smushed)+wp_smushit_data.resmush.length,wp_smushit_data.count_supersmushed=parseInt(wp_smushit_data.count_supersmushed)+wp_smushit_data.resmush.length,wp_smushit_data.count_smushed===wp_smushit_data.count_total&&(e(".wp-smush-notice.wp-smush-all-done, .wp-smush-pagespeed-recommendation").show(),e(".wp-smush-bulk-wrapper ").hide()),e(".wp-smush-resmush-notice").remove();var a=e(".wp-smush-scan").data("type");a=void 0===a?"media":a;var u=(void 0!==wp_smushit_data.count_smushed?wp_smushit_data.count_smushed:0)/wp_smushit_data.count_total*100;u=WP_Smush.helpers.precise_round(u,1),e(".wp-smush-images-percent").html(u);var l=jQuery(".bulk-smush-wrapper .wp-smush-progress-inner");if(!(l.length<1)){l.css("width",u+"%"),e(".wp-smush-bulk-wrapper").show(),e(".wp-smush-bulk-wrapper .sui-notice").show();var d={action:"delete_resmush_list",type:a};e.post(ajaxurl,d,(function(t){if(t.success&&void 0!==t.data.stats){var n=t.data.stats;"undefinied"!=typeof wp_smushit_data&&(wp_smushit_data.count_images=void 0!==n.count_images?parseInt(wp_smushit_data.count_images)+n.count_images:wp_smushit_data.count_images,wp_smushit_data.size_before=void 0!==n.size_before?parseInt(wp_smushit_data.size_before)+n.size_before:wp_smushit_data.size_before,wp_smushit_data.size_after=void 0!==n.size_after?parseInt(wp_smushit_data.size_after)+n.size_after:wp_smushit_data.size_after,wp_smushit_data.savings_resize=void 0!==n.savings_resize?parseInt(wp_smushit_data.savings_resize)+n.savings_resize:wp_smushit_data.savings_resize,wp_smushit_data.savings_conversion=void 0!==n.savings_conversion?parseInt(wp_smushit_data.savings_conversion)+n.savings_conversion:wp_smushit_data.savings_conversion,void 0!==wp_smushit_data.savings_dir_smush&&void 0!==wp_smushit_data.savings_dir_smush.orig_size&&(wp_smushit_data.size_before=void 0!==wp_smushit_data.savings_dir_smush?parseInt(wp_smushit_data.size_before)+parseInt(wp_smushit_data.savings_dir_smush.orig_size):wp_smushit_data.size_before,wp_smushit_data.size_after=void 0!==wp_smushit_data.savings_dir_smush?parseInt(wp_smushit_data.size_after)+parseInt(wp_smushit_data.savings_dir_smush.image_size):wp_smushit_data.size_after),wp_smushit_data.count_resize=void 0!==n.count_resize?parseInt(wp_smushit_data.count_resize)+n.count_resize:wp_smushit_data.count_resize);var s=e(".bulk-smush-wrapper .wp-smush-remaining-count");s.length&&void 0!==wp_smushit_data.unsmushed&&s.html(wp_smushit_data.unsmushed.length),void 0===wp_smushit_data.unsmushed&&0!==wp_smushit_data.unsmushed.length||(e(".wp-smush-bulk-wrapper .sui-notice").hide(),e(".sui-notice-success.wp-smush-all-done").show()),i.a.updateStats()}}))}}));var o=function(){e("#wp-smush-resize").prop("checked",!0).focus(),e("div.wp-smush-resize-settings-wrap").show(),r("#column-wp-smush-resize")},a=function(){e("#wp-smush-lossy").prop("checked",!0).focus(),r("#column-wp-smush-lossy")};if(e("a.wp-smush-lossy-enable").on("click",(function(e){e.preventDefault(),a()})),e(".wp-smush-resize-enable").on("click",(function(e){e.preventDefault(),o()})),window.location.hash){var u=window.location.hash.substring(1);"enable-resize"===u?o():"enable-lossy"===u&&a()}if(e("body").on("click",".wp-smush-trigger-bulk",(function(t){t.preventDefault(),e(".wp-smush-all").click(),e("span.sui-notice-dismiss").click()})),e("body").on("click","#bulk-smush-top-notice-close",(function(t){t.preventDefault(),e(this).parent().parent().slideUp("slow")})),e(".wp-smush-setting-row .toggle-checkbox").focus((function(){e(this).keypress((function(t){32==t.keyCode&&(t.preventDefault(),e(this).find(".toggle-checkbox").click())}))})),e("body").on("blur",".wp-smush-resize-input",(function(){!function(e,t,n){var i=e.find("#wp-smush-resize, #wp-smush-resize-quick-setup");if(!n)var s=e.find("#wp-smush-resize_width, #quick-setup-resize_width"),r=e.find(".sui-notice-info.wp-smush-update-width");if(!t)var o=e.find("#wp-smush-resize_height, #quick-setup-resize_height"),a=e.find(".sui-notice-info.wp-smush-update-height");var u=!1,l=!1;!i.is(":checked")||(void 0===wp_smushit_data.resize_sizes||void 0===wp_smushit_data.resize_sizes.width||(!n&&void 0!==s&&parseInt(wp_smushit_data.resize_sizes.width)>parseInt(s.val())?(s.parent().addClass("sui-form-field-error"),r.show("slow"),u=!0):(s.parent().removeClass("sui-form-field-error"),r.hide(),o.hasClass("error")&&a.show("slow")),!t&&void 0!==o&&parseInt(wp_smushit_data.resize_sizes.height)>parseInt(o.val())?(o.parent().addClass("sui-form-field-error"),u||a.show("slow"),l=!0):(o.parent().removeClass("sui-form-field-error"),a.hide(),s.hasClass("error")&&r.show("slow"))))}(e(this).parents().eq(4),!1,!1)})),e("body").on("click","#wp-smush-resize, #wp-smush-resize-quick-setup",(function(){var t=e(this),n=e(".wp-smush-resize-settings-wrap");t.is(":checked")?n.show():n.hide()})),e("#column-wp-smush-auto").on("click","#wp-smush-auto",(function(){var t=e("#column-wp-smush-auto .auto-smush-notice");e(this).is(":checked")?t.show():t.hide()})),e("body").on("click","#wp-smush-detection",(function(){var t=e(this),n=e(".smush-highlighting-notice"),i=e(".smush-highlighting-warning");t.is(":checked")?n.length>0?n.show():i.show():(n.hide(),i.hide())})),e("#wp-smush-png_to_jpg").click((function(){var t=e(this),n=e(".wp-smush-png_to_jpg-wrap");t.is(":checked")?n.show():n.hide()})),e("#wp-smush-revalidate-member").on("click",(function(t){t.preventDefault();var n=e(this).parents().eq(1);n.addClass("loading-notice"),e.get(ajaxurl,{action:"smush_show_warning"},(function(e){n.removeClass("loading-notice").addClass("loaded-notice"),0==e?(n.attr("data-message",wp_smush_msgs.membership_valid),s(n,1e3)):(n.attr("data-message",wp_smush_msgs.membership_invalid),setTimeout((function(){n.removeClass("loaded-notice")}),1e3))}))})),"undefined"!=typeof wp_smush_run_re_check&&1==wp_smush_run_re_check&&e(".wp-smush-scan").length>0&&n(!1),e("li.smush-dir-savings").length>0){e.get(ajaxurl,{action:"get_dir_smush_stats"},(function(t){e("li.smush-dir-savings .sui-icon-loader").hide(),t.success||void 0===t.data.message?void 0===t.data||void 0===t.data.dir_smush?(e("li.smush-dir-savings span.wp-smush-stats").append(wp_smush_msgs.ajax_error),e("li.smush-dir-savings span.wp-smush-stats span").hide()):function(t){if(void 0!==t.dir_smush){var n=e("li.smush-dir-savings span.wp-smush-stats span.wp-smush-stats-human"),i=e("li.smush-dir-savings span.wp-smush-stats span.wp-smush-stats-percent");if(t.dir_smush.bytes>0){if(e("li.smush-dir-savings .wp-smush-stats-label-message").hide(),n.length>0)n.html(t.dir_smush.human);else t.dir_smush.bytes;if(t.dir_smush.percent>0)if(e("li.smush-dir-savings span.wp-smush-stats span.wp-smush-stats-sep").removeClass("sui-hidden"),i.length>0)i.html(t.dir_smush.percent+"%");else t.dir_smush.percent}}if(void 0!==t.combined_stats&&t.combined_stats.length>0){var s=t.combined_stats,r=s.smushed/s.total_count*100;(r=WP_Smush.helpers.precise_round(r,1))&&e("div.wp-smush-count-total span.wp-smush-images-percent").html(r),s.total_count&&e("span.wp-smush-count-total span.wp-smush-total-optimised").html(s.total_count),s.savings&&e("span.wp-smush-savings span.wp-smush-stats-human").html(s.savings),s.percent&&e("span.wp-smush-savings span.wp-smush-stats-percent").html(s.percent)}}(t.data):e("div.wp-smush-scan-result div.content").prepend(t.data.message)}))}e(document).keyup((function(t){if(27===t.keyCode){var n=e("div.dev-overlay.wp-smush-list-dialog, div.dev-overlay.wp-smush-get-pro");if(!n.is(":visible"))return;n.find("div.close").click()}})),e("span.dismiss-recommendation").on("click",(function(t){t.preventDefault();var n=e(this).parent();n.hide("slow",(function(){n.remove()})),e.ajax({type:"POST",url:ajaxurl,data:{action:"hide_pagespeed_suggestion"}})})),e("div.wp-smush-api-message i.icon-fi-close").on("click",(function(t){t.preventDefault();var n=e(this).parent();n.hide("slow",(function(){n.remove()})),e.ajax({type:"POST",url:ajaxurl,data:{action:"hide_api_message"}})}))}))},function(e,t,n){"use strict";n.r(t);var i,s=n(0);i=jQuery,WP_Smush.bulk={init:function(){i(".wp-smush-all").on("click",(function(e){e.preventDefault(),i(".sui-notice-top.sui-notice-success").remove();var t=document.getElementById("bulk_smush_warning");t.classList.add("sui-hidden");var n=i(".wp-smush-bulk-progress-bar-wrapper");if(n.removeClass("wp-smush-exceed-limit"),n.find(".sui-progress-block .wp-smush-all").addClass("sui-hidden"),n.find(".sui-progress-block .wp-smush-cancel-bulk").removeClass("sui-hidden"),t&&document.getElementById("bulk-smush-resume-button").classList.add("sui-hidden"),i(".wp-resmush.wp-smush-action, .wp-smush-scan, .wp-smush-all:not(.sui-progress-close), a.wp-smush-lossy-enable, button.wp-smush-resize-enable, button#wp-smush-save-settings").attr("disabled","disabled"),"undefined"==typeof wp_smushit_data||0===wp_smushit_data.unsmushed.length&&0===wp_smushit_data.resmush.length)return!1;i(".wp-smush-remaining").hide(),n.find("i.sui-icon-info").removeClass("sui-icon-info").addClass("sui-loading").addClass("sui-icon-loader"),new s.a(i(this),!0)})),i("body").on("click",".smush-ignore-image",(function(){i(this).attr("disabled",!0),i(this).attr("data-tooltip"),i(this).removeClass("sui-tooltip"),i.post(ajaxurl,{action:"ignore_bulk_image",id:i(this).attr("data-id")})}))}},WP_Smush.bulk.init()},function(e,t,n){(function(e){!function(){"use strict";WP_Smush.onboarding={membership:"free",onboardingModal:document.getElementById("smush-onboarding-dialog"),scanFilesModal:document.getElementById("checking-files-dialog"),settings:{first:!0,last:!1,slide:"start",value:!1},selection:{auto:!0,lossy:!0,strip_exif:!0,original:!1,lazy_load:!0,usage:!0},contentContainer:document.getElementById("smush-onboarding-content"),onboardingSlides:["start","auto","lossy","strip_exif","original","lazy_load","usage"],touchX:null,touchY:null,init:function(){if(this.onboardingModal){this.membership=document.getElementById("smush-onboarding").dataset.type,"pro"!==this.membership&&(this.onboardingSlides=["start","auto","strip_exif","lazy_load","usage"],this.selection.lossy=!1),this.renderTemplate();var t=this.onboardingModal.querySelector(".smush-onboarding-skip-link");t&&t.addEventListener("click",this.skipSetup),new e(this.onboardingModal).show()}},handleTouchStart:function(e){var t=e.touches[0];this.touchX=t.clientX,this.touchY=t.clientY},handleTouchMove:function(e){if(this.touchX&&this.touchY){var t=e.touches[0].clientX,n=e.touches[0].clientY,i=this.touchX-t,s=this.touchY-n;Math.abs(i)>Math.abs(s)&&(i>0?!1===WP_Smush.onboarding.settings.last&&WP_Smush.onboarding.next(null,"next"):!1===WP_Smush.onboarding.settings.first&&WP_Smush.onboarding.next(null,"prev")),this.touchX=null,this.touchY=null}},renderTemplate:function(e){var t=this,n=this.onboardingModal.querySelector('input[type="checkbox"]');n&&(this.selection[n.id]=n.checked);var i=WP_Smush.onboarding.template("smush-onboarding")(this.settings);i&&(this.contentContainer.innerHTML=i,void 0===e?this.contentContainer.classList.add("loaded"):(this.contentContainer.classList.remove("loaded"),this.contentContainer.classList.add(e),setTimeout((function(){t.contentContainer.classList.add("loaded"),t.contentContainer.classList.remove(e)}),600))),this.onboardingModal.addEventListener("touchstart",this.handleTouchStart,!1),this.onboardingModal.addEventListener("touchmove",this.handleTouchMove,!1),this.bindSubmit()},bindSubmit:function(){var e=this.onboardingModal.querySelector('button[type="submit"]'),t=this;e&&e.addEventListener("click",(function(e){e.preventDefault();var n=t.onboardingModal.querySelector('input[type="checkbox"]');n&&(t.selection[n.id]=n.checked);var i=document.getElementById("_wpnonce"),s=new XMLHttpRequest;s.open("POST",ajaxurl+"?action=smush_setup",!0),s.setRequestHeader("Content-type","application/x-www-form-urlencoded"),s.onload=function(){200===s.status?WP_Smush.onboarding.showScanDialog():console.log("Request failed. Returned status of "+s.status)},s.send("smush_settings="+JSON.stringify(t.selection)+"&_ajax_nonce="+i.value)}))},next:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=this.onboardingSlides.indexOf(this.settings.slide),i=0;i=t?"next"===t?n+1:n-1:null!==e&&e.classList.contains("next")?n+1:n-1;var s=null!==e&&e.classList.contains("next")?"fadeInRight":"fadeInLeft";this.settings={first:0===i,last:i+1===this.onboardingSlides.length,slide:this.onboardingSlides[i],value:this.selection[this.onboardingSlides[i]]},this.renderTemplate(s)},goTo:function(e){var t=this.onboardingSlides.indexOf(e);this.settings={first:0===t,last:t+1===this.onboardingSlides.length,slide:e,value:this.selection[e]},this.renderTemplate()},skipSetup:function(){var e=document.getElementById("_wpnonce"),t=new XMLHttpRequest;t.open("POST",ajaxurl+"?action=skip_smush_setup&_ajax_nonce="+e.value),t.onload=function(){200===t.status?WP_Smush.onboarding.showScanDialog():console.log("Request failed. Returned status of "+t.status)},t.send()},showScanDialog:function(){new e(this.onboardingModal).hide();var t=new e(this.scanFilesModal);t.show();var n=document.getElementById("wp_smush_options_nonce");setTimeout((function(){var e=new XMLHttpRequest;e.open("POST",ajaxurl+"?action=scan_for_resmush",!0),e.setRequestHeader("Content-type","application/x-www-form-urlencoded"),e.onload=function(){var n=document.querySelector("#smush-onboarding-dialog");n.parentNode.removeChild(n),t.hide(),200===e.status?setTimeout((function(){location.reload()}),1e3):console.log("Request failed. Returned status of "+e.status)},e.send("type=media&get_ui=false&process_settings=false&wp_smush_options_nonce="+n.value)}),3e3)}},WP_Smush.onboarding.template=_.memoize((function(e){var t,n={evaluate:/<#([\s\S]+?)#>/g,interpolate:/\{\{\{([\s\S]+?)\}\}\}/g,escape:/\{\{([^\}]+?)\}\}(?!\})/g,variable:"data"};return function(i){return _.templateSettings=n,(t=t||_.template(document.getElementById(e).innerHTML))(i)}})),window.addEventListener("load",(function(){return WP_Smush.onboarding.init()}))}()}).call(this,n(1))},function(e,t,n){"use strict";n.r(t),function(e){var t,i=n(5),s=n(3);t=jQuery,WP_Smush.directory={selected:[],tree:[],wp_smush_msgs:[],init:function(){var e=this,n=t("#wp-smush-progress-dialog"),i=0,r=0;void 0!==wp_smushit_data.dir_smush&&(i=wp_smushit_data.dir_smush.totalSteps,r=wp_smushit_data.dir_smush.currentScanStep),this.scanner=new s.a(i,r),wp_smush_msgs&&(this.wp_smush_msgs=wp_smush_msgs),t("div.sui-wrap").on("click","button.wp-smush-browse",(function(n){n.preventDefault(),t("div.wp-smush-scan-result div.wp-smush-notice").hide(),t(this).attr("disabled")||(t(this).attr("disabled","disabled"),t("div.wp-smush-info").remove(),e.showSmushDialog(),e.initFileTree())})),t("body").on("click","a.wp-smush-dir-link",(function(n){t("div.sui-wrap button.wp-smush-browse").length>0&&(n.preventDefault(),e.showSmushDialog(),e.initFileTree())})),t(".wp-smush-select-dir").on("click",(function(n){if(n.preventDefault(),!t(this).attr("disabled")){var i=t(this);t("div.wp-smush-list-dialog div.sui-box-body").css({opacity:"0.8"}),t("div.wp-smush-list-dialog div.sui-box-body a").unbind("click"),i.attr("disabled","disabled"),i.parent().find(".add-dir-loader").addClass("sui-icon-loader sui-loading");var r=e.tree.getSelectedNodes(),o=t('input[name="wp-smush-base-path"]').val(),a=[];r.forEach((function(e){a.push(o+"/"+e.key)}));var u={action:"image_list",smush_path:a,image_list_nonce:t('input[name="image_list_nonce"]').val()};t.get(ajaxurl,u,(function(t){e.hideSmushDialog(),e.scanner=new s.a(t.data,0),e.showProgressDialog(t.data),e.scanner.scan()}))}})),t("#wp-smush-list-dialog").on("click",".sui-dialog-close",(function(){t(".wp-smush-browse").removeAttr("disabled"),e.hideSmushDialog(),t(".wp-smush-select-dir, button.wp-smush-browse, a.wp-smush-dir-link").removeAttr("disabled"),t(".wp-smush-select-dir, .wp-smush-list-dialog .sui-box-body").css({opacity:"1"})})),n.on("click","#cancel-directory-smush, .sui-dialog-close, .wp-smush-cancel-dir",(function(n){n.preventDefault(),t(this).parent().find(".add-dir-loader").addClass("sui-icon-loader sui-loading"),e.scanner.cancel().done((function(){return window.location.href=e.wp_smush_msgs.directory_url}))})),n.on("click",".sui-icon-play, .wp-smush-resume-scan",(function(t){t.preventDefault(),e.scanner.resume()}))},initFileTree:function(){var e=this,n=t("button.wp-smush-select-dir"),s={type:"GET",url:ajaxurl,data:{action:"smush_get_directory_list",list_nonce:t('input[name="list_nonce"]').val()},cache:!1};e.tree=Object(i.createTree)(".wp-smush-list-dialog .content",{autoCollapse:!0,clickFolderMode:3,checkbox:!0,debugLevel:0,selectMode:3,tabindex:"0",keyboard:!0,quicksearch:!0,source:s,lazyLoad:function(i,r){r.result=new Promise((function(e,n){s.data.dir=r.node.key,t.ajax(s).done((function(t){return e(t)})).fail(n)})),r.result.then(n.html(e.wp_smush_msgs.add_dir))},loadChildren:function(e,t){return t.node.fixSelection3AfterClick()},select:function(){return n.attr("disabled",!+e.tree.getSelectedNodes().length)},init:function(){return n.attr("disabled",!0)}})},showSmushDialog:function(){var n=document.getElementById("wp-smush-list-dialog");new e(n).show(),t(".wp-smush-list-dialog div.close").focus()},hideSmushDialog:function(){var t=document.getElementById("wp-smush-list-dialog");new e(t).hide(),new e(document.getElementById("wp-smush-progress-dialog")).hide()},showProgressDialog:function(n){t(".wp-smush-progress-dialog .sui-progress-state-text").html("0/"+n+" "+self.wp_smush_msgs.progress_smushed);var i=document.getElementById("wp-smush-progress-dialog");new e(i).show(),t(".wp-smush-progress-dialog div.close").focus()},updateProgressBar:function(e){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];e>100&&(e=100),t(".sui-progress-block .sui-progress-text span").text(e+"%"),t(".sui-progress-block .sui-progress-bar span").width(e+"%"),e>=90&&t(".sui-progress-state .sui-progress-state-text").text("Finalizing..."),n&&t(".sui-progress-state .sui-progress-state-text").text("Cancelling...")}},WP_Smush.directory.init()}.call(this,n(1))},function(e,t,n){var i,s,r;
|
38 |
/*! jQuery UI - v1.12.1 - 2018-05-20
|
39 |
* http://jqueryui.com
|
40 |
* Includes: widget.js, position.js, keycode.js, scroll-parent.js, unique-id.js
|
22 |
*
|
23 |
* Date: 2019-04-08
|
24 |
*/
|
25 |
+
function(e){var t,n,i,s,r,o,a,u,l,d,c,h,p,f,m,g,v,y,_,w="sizzle"+1*new Date,b=e.document,x=0,k=0,C=ue(),S=ue(),T=ue(),N=ue(),E=function(e,t){return e===t&&(c=!0),0},j={}.hasOwnProperty,L=[],D=L.pop,A=L.push,P=L.push,I=L.slice,z=function(e,t){for(var n=0,i=e.length;n<i;n++)if(e[n]===t)return n;return-1},H="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",O="[\\x20\\t\\r\\n\\f]",q="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",R="\\["+O+"*("+q+")(?:"+O+"*([*^$|!~]?=)"+O+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+q+"))|)"+O+"*\\]",M=":("+q+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+R+")*)|.*)\\)|)",W=new RegExp(O+"+","g"),F=new RegExp("^"+O+"+|((?:^|[^\\\\])(?:\\\\.)*)"+O+"+$","g"),B=new RegExp("^"+O+"*,"+O+"*"),Q=new RegExp("^"+O+"*([>+~]|"+O+")"+O+"*"),$=new RegExp(O+"|>"),U=new RegExp(M),V=new RegExp("^"+q+"$"),K={ID:new RegExp("^#("+q+")"),CLASS:new RegExp("^\\.("+q+")"),TAG:new RegExp("^("+q+"|[*])"),ATTR:new RegExp("^"+R),PSEUDO:new RegExp("^"+M),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+O+"*(even|odd|(([+-]|)(\\d*)n|)"+O+"*(?:([+-]|)"+O+"*(\\d+)|))"+O+"*\\)|)","i"),bool:new RegExp("^(?:"+H+")$","i"),needsContext:new RegExp("^"+O+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+O+"*((?:-\\d)?\\d*)"+O+"*\\)|)(?=[^-]|$)","i")},X=/HTML$/i,G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,J=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+O+"?|("+O+")|.)","ig"),ne=function(e,t,n){var i="0x"+t-65536;return i!=i||n?t:i<0?String.fromCharCode(i+65536):String.fromCharCode(i>>10|55296,1023&i|56320)},ie=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,se=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){h()},oe=we((function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()}),{dir:"parentNode",next:"legend"});try{P.apply(L=I.call(b.childNodes),b.childNodes),L[b.childNodes.length].nodeType}catch(e){P={apply:L.length?function(e,t){A.apply(e,I.call(t))}:function(e,t){for(var n=e.length,i=0;e[n++]=t[i++];);e.length=n-1}}}function ae(e,t,i,s){var r,a,l,d,c,f,v,y=t&&t.ownerDocument,x=t?t.nodeType:9;if(i=i||[],"string"!=typeof e||!e||1!==x&&9!==x&&11!==x)return i;if(!s&&((t?t.ownerDocument||t:b)!==p&&h(t),t=t||p,m)){if(11!==x&&(c=Z.exec(e)))if(r=c[1]){if(9===x){if(!(l=t.getElementById(r)))return i;if(l.id===r)return i.push(l),i}else if(y&&(l=y.getElementById(r))&&_(t,l)&&l.id===r)return i.push(l),i}else{if(c[2])return P.apply(i,t.getElementsByTagName(e)),i;if((r=c[3])&&n.getElementsByClassName&&t.getElementsByClassName)return P.apply(i,t.getElementsByClassName(r)),i}if(n.qsa&&!N[e+" "]&&(!g||!g.test(e))&&(1!==x||"object"!==t.nodeName.toLowerCase())){if(v=e,y=t,1===x&&$.test(e)){for((d=t.getAttribute("id"))?d=d.replace(ie,se):t.setAttribute("id",d=w),a=(f=o(e)).length;a--;)f[a]="#"+d+" "+_e(f[a]);v=f.join(","),y=ee.test(e)&&ve(t.parentNode)||t}try{return P.apply(i,y.querySelectorAll(v)),i}catch(t){N(e,!0)}finally{d===w&&t.removeAttribute("id")}}}return u(e.replace(F,"$1"),t,i,s)}function ue(){var e=[];return function t(n,s){return e.push(n+" ")>i.cacheLength&&delete t[e.shift()],t[n+" "]=s}}function le(e){return e[w]=!0,e}function de(e){var t=p.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ce(e,t){for(var n=e.split("|"),s=n.length;s--;)i.attrHandle[n[s]]=t}function he(e,t){var n=t&&e,i=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(i)return i;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function pe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function fe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function me(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&oe(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function ge(e){return le((function(t){return t=+t,le((function(n,i){for(var s,r=e([],n.length,t),o=r.length;o--;)n[s=r[o]]&&(n[s]=!(i[s]=n[s]))}))}))}function ve(e){return e&&void 0!==e.getElementsByTagName&&e}for(t in n=ae.support={},r=ae.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!X.test(t||n&&n.nodeName||"HTML")},h=ae.setDocument=function(e){var t,s,o=e?e.ownerDocument||e:b;return o!==p&&9===o.nodeType&&o.documentElement?(f=(p=o).documentElement,m=!r(p),b!==p&&(s=p.defaultView)&&s.top!==s&&(s.addEventListener?s.addEventListener("unload",re,!1):s.attachEvent&&s.attachEvent("onunload",re)),n.attributes=de((function(e){return e.className="i",!e.getAttribute("className")})),n.getElementsByTagName=de((function(e){return e.appendChild(p.createComment("")),!e.getElementsByTagName("*").length})),n.getElementsByClassName=J.test(p.getElementsByClassName),n.getById=de((function(e){return f.appendChild(e).id=w,!p.getElementsByName||!p.getElementsByName(w).length})),n.getById?(i.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},i.find.ID=function(e,t){if(void 0!==t.getElementById&&m){var n=t.getElementById(e);return n?[n]:[]}}):(i.filter.ID=function(e){var t=e.replace(te,ne);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},i.find.ID=function(e,t){if(void 0!==t.getElementById&&m){var n,i,s,r=t.getElementById(e);if(r){if((n=r.getAttributeNode("id"))&&n.value===e)return[r];for(s=t.getElementsByName(e),i=0;r=s[i++];)if((n=r.getAttributeNode("id"))&&n.value===e)return[r]}return[]}}),i.find.TAG=n.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,i=[],s=0,r=t.getElementsByTagName(e);if("*"===e){for(;n=r[s++];)1===n.nodeType&&i.push(n);return i}return r},i.find.CLASS=n.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&m)return t.getElementsByClassName(e)},v=[],g=[],(n.qsa=J.test(p.querySelectorAll))&&(de((function(e){f.appendChild(e).innerHTML="<a id='"+w+"'></a><select id='"+w+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&g.push("[*^$]="+O+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||g.push("\\["+O+"*(?:value|"+H+")"),e.querySelectorAll("[id~="+w+"-]").length||g.push("~="),e.querySelectorAll(":checked").length||g.push(":checked"),e.querySelectorAll("a#"+w+"+*").length||g.push(".#.+[+~]")})),de((function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=p.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&g.push("name"+O+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&g.push(":enabled",":disabled"),f.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")}))),(n.matchesSelector=J.test(y=f.matches||f.webkitMatchesSelector||f.mozMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&de((function(e){n.disconnectedMatch=y.call(e,"*"),y.call(e,"[s!='']:x"),v.push("!=",M)})),g=g.length&&new RegExp(g.join("|")),v=v.length&&new RegExp(v.join("|")),t=J.test(f.compareDocumentPosition),_=t||J.test(f.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,i=t&&t.parentNode;return e===i||!(!i||1!==i.nodeType||!(n.contains?n.contains(i):e.compareDocumentPosition&&16&e.compareDocumentPosition(i)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},E=t?function(e,t){if(e===t)return c=!0,0;var i=!e.compareDocumentPosition-!t.compareDocumentPosition;return i||(1&(i=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===i?e===p||e.ownerDocument===b&&_(b,e)?-1:t===p||t.ownerDocument===b&&_(b,t)?1:d?z(d,e)-z(d,t):0:4&i?-1:1)}:function(e,t){if(e===t)return c=!0,0;var n,i=0,s=e.parentNode,r=t.parentNode,o=[e],a=[t];if(!s||!r)return e===p?-1:t===p?1:s?-1:r?1:d?z(d,e)-z(d,t):0;if(s===r)return he(e,t);for(n=e;n=n.parentNode;)o.unshift(n);for(n=t;n=n.parentNode;)a.unshift(n);for(;o[i]===a[i];)i++;return i?he(o[i],a[i]):o[i]===b?-1:a[i]===b?1:0},p):p},ae.matches=function(e,t){return ae(e,null,null,t)},ae.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&h(e),n.matchesSelector&&m&&!N[t+" "]&&(!v||!v.test(t))&&(!g||!g.test(t)))try{var i=y.call(e,t);if(i||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return i}catch(e){N(t,!0)}return ae(t,p,null,[e]).length>0},ae.contains=function(e,t){return(e.ownerDocument||e)!==p&&h(e),_(e,t)},ae.attr=function(e,t){(e.ownerDocument||e)!==p&&h(e);var s=i.attrHandle[t.toLowerCase()],r=s&&j.call(i.attrHandle,t.toLowerCase())?s(e,t,!m):void 0;return void 0!==r?r:n.attributes||!m?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},ae.escape=function(e){return(e+"").replace(ie,se)},ae.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},ae.uniqueSort=function(e){var t,i=[],s=0,r=0;if(c=!n.detectDuplicates,d=!n.sortStable&&e.slice(0),e.sort(E),c){for(;t=e[r++];)t===e[r]&&(s=i.push(r));for(;s--;)e.splice(i[s],1)}return d=null,e},s=ae.getText=function(e){var t,n="",i=0,r=e.nodeType;if(r){if(1===r||9===r||11===r){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=s(e)}else if(3===r||4===r)return e.nodeValue}else for(;t=e[i++];)n+=s(t);return n},(i=ae.selectors={cacheLength:50,createPseudo:le,match:K,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]||ae.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]&&ae.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return K.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&U.test(n)&&(t=o(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=C[e+" "];return t||(t=new RegExp("(^|"+O+")"+e+"("+O+"|$)"))&&C(e,(function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")}))},ATTR:function(e,t,n){return function(i){var s=ae.attr(i,e);return null==s?"!="===t:!t||(s+="","="===t?s===n:"!="===t?s!==n:"^="===t?n&&0===s.indexOf(n):"*="===t?n&&s.indexOf(n)>-1:"$="===t?n&&s.slice(-n.length)===n:"~="===t?(" "+s.replace(W," ")+" ").indexOf(n)>-1:"|="===t&&(s===n||s.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,i,s){var r="nth"!==e.slice(0,3),o="last"!==e.slice(-4),a="of-type"===t;return 1===i&&0===s?function(e){return!!e.parentNode}:function(t,n,u){var l,d,c,h,p,f,m=r!==o?"nextSibling":"previousSibling",g=t.parentNode,v=a&&t.nodeName.toLowerCase(),y=!u&&!a,_=!1;if(g){if(r){for(;m;){for(h=t;h=h[m];)if(a?h.nodeName.toLowerCase()===v:1===h.nodeType)return!1;f=m="only"===e&&!f&&"nextSibling"}return!0}if(f=[o?g.firstChild:g.lastChild],o&&y){for(_=(p=(l=(d=(c=(h=g)[w]||(h[w]={}))[h.uniqueID]||(c[h.uniqueID]={}))[e]||[])[0]===x&&l[1])&&l[2],h=p&&g.childNodes[p];h=++p&&h&&h[m]||(_=p=0)||f.pop();)if(1===h.nodeType&&++_&&h===t){d[e]=[x,p,_];break}}else if(y&&(_=p=(l=(d=(c=(h=t)[w]||(h[w]={}))[h.uniqueID]||(c[h.uniqueID]={}))[e]||[])[0]===x&&l[1]),!1===_)for(;(h=++p&&h&&h[m]||(_=p=0)||f.pop())&&((a?h.nodeName.toLowerCase()!==v:1!==h.nodeType)||!++_||(y&&((d=(c=h[w]||(h[w]={}))[h.uniqueID]||(c[h.uniqueID]={}))[e]=[x,_]),h!==t)););return(_-=s)===i||_%i==0&&_/i>=0}}},PSEUDO:function(e,t){var n,s=i.pseudos[e]||i.setFilters[e.toLowerCase()]||ae.error("unsupported pseudo: "+e);return s[w]?s(t):s.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?le((function(e,n){for(var i,r=s(e,t),o=r.length;o--;)e[i=z(e,r[o])]=!(n[i]=r[o])})):function(e){return s(e,0,n)}):s}},pseudos:{not:le((function(e){var t=[],n=[],i=a(e.replace(F,"$1"));return i[w]?le((function(e,t,n,s){for(var r,o=i(e,null,s,[]),a=e.length;a--;)(r=o[a])&&(e[a]=!(t[a]=r))})):function(e,s,r){return t[0]=e,i(t,null,r,n),t[0]=null,!n.pop()}})),has:le((function(e){return function(t){return ae(e,t).length>0}})),contains:le((function(e){return e=e.replace(te,ne),function(t){return(t.textContent||s(t)).indexOf(e)>-1}})),lang:le((function(e){return V.test(e||"")||ae.error("unsupported lang: "+e),e=e.replace(te,ne).toLowerCase(),function(t){var n;do{if(n=m?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}})),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:me(!1),disabled:me(!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!i.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.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:ge((function(){return[0]})),last:ge((function(e,t){return[t-1]})),eq:ge((function(e,t,n){return[n<0?n+t:n]})),even:ge((function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e})),odd:ge((function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e})),lt:ge((function(e,t,n){for(var i=n<0?n+t:n>t?t:n;--i>=0;)e.push(i);return e})),gt:ge((function(e,t,n){for(var i=n<0?n+t:n;++i<t;)e.push(i);return e}))}}).pseudos.nth=i.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[t]=pe(t);for(t in{submit:!0,reset:!0})i.pseudos[t]=fe(t);function ye(){}function _e(e){for(var t=0,n=e.length,i="";t<n;t++)i+=e[t].value;return i}function we(e,t,n){var i=t.dir,s=t.next,r=s||i,o=n&&"parentNode"===r,a=k++;return t.first?function(t,n,s){for(;t=t[i];)if(1===t.nodeType||o)return e(t,n,s);return!1}:function(t,n,u){var l,d,c,h=[x,a];if(u){for(;t=t[i];)if((1===t.nodeType||o)&&e(t,n,u))return!0}else for(;t=t[i];)if(1===t.nodeType||o)if(d=(c=t[w]||(t[w]={}))[t.uniqueID]||(c[t.uniqueID]={}),s&&s===t.nodeName.toLowerCase())t=t[i]||t;else{if((l=d[r])&&l[0]===x&&l[1]===a)return h[2]=l[2];if(d[r]=h,h[2]=e(t,n,u))return!0}return!1}}function be(e){return e.length>1?function(t,n,i){for(var s=e.length;s--;)if(!e[s](t,n,i))return!1;return!0}:e[0]}function xe(e,t,n,i,s){for(var r,o=[],a=0,u=e.length,l=null!=t;a<u;a++)(r=e[a])&&(n&&!n(r,i,s)||(o.push(r),l&&t.push(a)));return o}function ke(e,t,n,i,s,r){return i&&!i[w]&&(i=ke(i)),s&&!s[w]&&(s=ke(s,r)),le((function(r,o,a,u){var l,d,c,h=[],p=[],f=o.length,m=r||function(e,t,n){for(var i=0,s=t.length;i<s;i++)ae(e,t[i],n);return n}(t||"*",a.nodeType?[a]:a,[]),g=!e||!r&&t?m:xe(m,h,e,a,u),v=n?s||(r?e:f||i)?[]:o:g;if(n&&n(g,v,a,u),i)for(l=xe(v,p),i(l,[],a,u),d=l.length;d--;)(c=l[d])&&(v[p[d]]=!(g[p[d]]=c));if(r){if(s||e){if(s){for(l=[],d=v.length;d--;)(c=v[d])&&l.push(g[d]=c);s(null,v=[],l,u)}for(d=v.length;d--;)(c=v[d])&&(l=s?z(r,c):h[d])>-1&&(r[l]=!(o[l]=c))}}else v=xe(v===o?v.splice(f,v.length):v),s?s(null,o,v,u):P.apply(o,v)}))}function Ce(e){for(var t,n,s,r=e.length,o=i.relative[e[0].type],a=o||i.relative[" "],u=o?1:0,d=we((function(e){return e===t}),a,!0),c=we((function(e){return z(t,e)>-1}),a,!0),h=[function(e,n,i){var s=!o&&(i||n!==l)||((t=n).nodeType?d(e,n,i):c(e,n,i));return t=null,s}];u<r;u++)if(n=i.relative[e[u].type])h=[we(be(h),n)];else{if((n=i.filter[e[u].type].apply(null,e[u].matches))[w]){for(s=++u;s<r&&!i.relative[e[s].type];s++);return ke(u>1&&be(h),u>1&&_e(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(F,"$1"),n,u<s&&Ce(e.slice(u,s)),s<r&&Ce(e=e.slice(s)),s<r&&_e(e))}h.push(n)}return be(h)}return ye.prototype=i.filters=i.pseudos,i.setFilters=new ye,o=ae.tokenize=function(e,t){var n,s,r,o,a,u,l,d=S[e+" "];if(d)return t?0:d.slice(0);for(a=e,u=[],l=i.preFilter;a;){for(o in n&&!(s=B.exec(a))||(s&&(a=a.slice(s[0].length)||a),u.push(r=[])),n=!1,(s=Q.exec(a))&&(n=s.shift(),r.push({value:n,type:s[0].replace(F," ")}),a=a.slice(n.length)),i.filter)!(s=K[o].exec(a))||l[o]&&!(s=l[o](s))||(n=s.shift(),r.push({value:n,type:o,matches:s}),a=a.slice(n.length));if(!n)break}return t?a.length:a?ae.error(e):S(e,u).slice(0)},a=ae.compile=function(e,t){var n,s=[],r=[],a=T[e+" "];if(!a){for(t||(t=o(e)),n=t.length;n--;)(a=Ce(t[n]))[w]?s.push(a):r.push(a);(a=T(e,function(e,t){var n=t.length>0,s=e.length>0,r=function(r,o,a,u,d){var c,f,g,v=0,y="0",_=r&&[],w=[],b=l,k=r||s&&i.find.TAG("*",d),C=x+=null==b?1:Math.random()||.1,S=k.length;for(d&&(l=o===p||o||d);y!==S&&null!=(c=k[y]);y++){if(s&&c){for(f=0,o||c.ownerDocument===p||(h(c),a=!m);g=e[f++];)if(g(c,o||p,a)){u.push(c);break}d&&(x=C)}n&&((c=!g&&c)&&v--,r&&_.push(c))}if(v+=y,n&&y!==v){for(f=0;g=t[f++];)g(_,w,o,a);if(r){if(v>0)for(;y--;)_[y]||w[y]||(w[y]=D.call(u));w=xe(w)}P.apply(u,w),d&&!r&&w.length>0&&v+t.length>1&&ae.uniqueSort(u)}return d&&(x=C,l=b),_};return n?le(r):r}(r,s))).selector=e}return a},u=ae.select=function(e,t,n,s){var r,u,l,d,c,h="function"==typeof e&&e,p=!s&&o(e=h.selector||e);if(n=n||[],1===p.length){if((u=p[0]=p[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&m&&i.relative[u[1].type]){if(!(t=(i.find.ID(l.matches[0].replace(te,ne),t)||[])[0]))return n;h&&(t=t.parentNode),e=e.slice(u.shift().value.length)}for(r=K.needsContext.test(e)?0:u.length;r--&&(l=u[r],!i.relative[d=l.type]);)if((c=i.find[d])&&(s=c(l.matches[0].replace(te,ne),ee.test(u[0].type)&&ve(t.parentNode)||t))){if(u.splice(r,1),!(e=s.length&&_e(u)))return P.apply(n,s),n;break}}return(h||a(e,p))(s,t,!m,n,!t||ee.test(e)&&ve(t.parentNode)||t),n},n.sortStable=w.split("").sort(E).join("")===w,n.detectDuplicates=!!c,h(),n.sortDetached=de((function(e){return 1&e.compareDocumentPosition(p.createElement("fieldset"))})),de((function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")}))||ce("type|href|height|width",(function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)})),n.attributes&&de((function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")}))||ce("value",(function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue})),de((function(e){return null==e.getAttribute("disabled")}))||ce(H,(function(e,t,n){var i;if(!n)return!0===e[t]?t.toLowerCase():(i=e.getAttributeNode(t))&&i.specified?i.value:null})),ae}(n);k.find=T,k.expr=T.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=T.uniqueSort,k.text=T.getText,k.isXMLDoc=T.isXML,k.contains=T.contains,k.escapeSelector=T.escape;var N=function(e,t,n){for(var i=[],s=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(s&&k(e).is(n))break;i.push(e)}return i},E=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},j=k.expr.match.needsContext;function L(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function A(e,t,n){return y(t)?k.grep(e,(function(e,i){return!!t.call(e,i,e)!==n})):t.nodeType?k.grep(e,(function(e){return e===t!==n})):"string"!=typeof t?k.grep(e,(function(e){return c.call(t,e)>-1!==n})):k.filter(t,e,n)}k.filter=function(e,t,n){var i=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===i.nodeType?k.find.matchesSelector(i,e)?[i]:[]:k.find.matches(e,k.grep(t,(function(e){return 1===e.nodeType})))},k.fn.extend({find:function(e){var t,n,i=this.length,s=this;if("string"!=typeof e)return this.pushStack(k(e).filter((function(){for(t=0;t<i;t++)if(k.contains(s[t],this))return!0})));for(n=this.pushStack([]),t=0;t<i;t++)k.find(e,s[t],n);return i>1?k.uniqueSort(n):n},filter:function(e){return this.pushStack(A(this,e||[],!1))},not:function(e){return this.pushStack(A(this,e||[],!0))},is:function(e){return!!A(this,"string"==typeof e&&j.test(e)?k(e):e||[],!1).length}});var P,I=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var i,s;if(!e)return this;if(n=n||P,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:I.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:o,!0)),D.test(i[1])&&k.isPlainObject(t))for(i in t)y(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(s=o.getElementById(i[2]))&&(this[0]=s,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):y(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,P=k(o);var z=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter((function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0}))},closest:function(e,t){var n,i=0,s=this.length,r=[],o="string"!=typeof e&&k(e);if(!j.test(e))for(;i<s;i++)for(n=this[i];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(o?o.index(n)>-1:1===n.nodeType&&k.find.matchesSelector(n,e))){r.push(n);break}return this.pushStack(r.length>1?k.uniqueSort(r):r)},index:function(e){return e?"string"==typeof e?c.call(k(e),this[0]):c.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return N(e,"parentNode")},parentsUntil:function(e,t,n){return N(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return N(e,"nextSibling")},prevAll:function(e){return N(e,"previousSibling")},nextUntil:function(e,t,n){return N(e,"nextSibling",n)},prevUntil:function(e,t,n){return N(e,"previousSibling",n)},siblings:function(e){return E((e.parentNode||{}).firstChild,e)},children:function(e){return E(e.firstChild)},contents:function(e){return void 0!==e.contentDocument?e.contentDocument:(L(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},(function(e,t){k.fn[e]=function(n,i){var s=k.map(this,t,n);return"Until"!==e.slice(-5)&&(i=n),i&&"string"==typeof i&&(s=k.filter(i,s)),this.length>1&&(H[e]||k.uniqueSort(s),z.test(e)&&s.reverse()),this.pushStack(s)}}));var q=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function W(e,t,n,i){var s;try{e&&y(s=e.promise)?s.call(e).done(t).fail(n):e&&y(s=e.then)?s.call(e,t,n):t.apply(void 0,[e].slice(i))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(e){e="string"==typeof e?function(e){var t={};return k.each(e.match(q)||[],(function(e,n){t[n]=!0})),t}(e):k.extend({},e);var t,n,i,s,r=[],o=[],a=-1,u=function(){for(s=s||e.once,i=t=!0;o.length;a=-1)for(n=o.shift();++a<r.length;)!1===r[a].apply(n[0],n[1])&&e.stopOnFalse&&(a=r.length,n=!1);e.memory||(n=!1),t=!1,s&&(r=n?[]:"")},l={add:function(){return r&&(n&&!t&&(a=r.length-1,o.push(n)),function t(n){k.each(n,(function(n,i){y(i)?e.unique&&l.has(i)||r.push(i):i&&i.length&&"string"!==x(i)&&t(i)}))}(arguments),n&&!t&&u()),this},remove:function(){return k.each(arguments,(function(e,t){for(var n;(n=k.inArray(t,r,n))>-1;)r.splice(n,1),n<=a&&a--})),this},has:function(e){return e?k.inArray(e,r)>-1:r.length>0},empty:function(){return r&&(r=[]),this},disable:function(){return s=o=[],r=n="",this},disabled:function(){return!r},lock:function(){return s=o=[],n||t||(r=n=""),this},locked:function(){return!!s},fireWith:function(e,n){return s||(n=[e,(n=n||[]).slice?n.slice():n],o.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!i}};return l},k.extend({Deferred:function(e){var t=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",s={state:function(){return i},always:function(){return r.done(arguments).fail(arguments),this},catch:function(e){return s.then(null,e)},pipe:function(){var e=arguments;return k.Deferred((function(n){k.each(t,(function(t,i){var s=y(e[i[4]])&&e[i[4]];r[i[1]]((function(){var e=s&&s.apply(this,arguments);e&&y(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[i[0]+"With"](this,s?[e]:arguments)}))})),e=null})).promise()},then:function(e,i,s){var r=0;function o(e,t,i,s){return function(){var a=this,u=arguments,l=function(){var n,l;if(!(e<r)){if((n=i.apply(a,u))===t.promise())throw new TypeError("Thenable self-resolution");l=n&&("object"==typeof n||"function"==typeof n)&&n.then,y(l)?s?l.call(n,o(r,t,R,s),o(r,t,M,s)):(r++,l.call(n,o(r,t,R,s),o(r,t,M,s),o(r,t,R,t.notifyWith))):(i!==R&&(a=void 0,u=[n]),(s||t.resolveWith)(a,u))}},d=s?l:function(){try{l()}catch(n){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(n,d.stackTrace),e+1>=r&&(i!==M&&(a=void 0,u=[n]),t.rejectWith(a,u))}};e?d():(k.Deferred.getStackHook&&(d.stackTrace=k.Deferred.getStackHook()),n.setTimeout(d))}}return k.Deferred((function(n){t[0][3].add(o(0,n,y(s)?s:R,n.notifyWith)),t[1][3].add(o(0,n,y(e)?e:R)),t[2][3].add(o(0,n,y(i)?i:M))})).promise()},promise:function(e){return null!=e?k.extend(e,s):s}},r={};return k.each(t,(function(e,n){var o=n[2],a=n[5];s[n[1]]=o.add,a&&o.add((function(){i=a}),t[3-e][2].disable,t[3-e][3].disable,t[0][2].lock,t[0][3].lock),o.add(n[3].fire),r[n[0]]=function(){return r[n[0]+"With"](this===r?void 0:this,arguments),this},r[n[0]+"With"]=o.fireWith})),s.promise(r),e&&e.call(r,r),r},when:function(e){var t=arguments.length,n=t,i=Array(n),s=u.call(arguments),r=k.Deferred(),o=function(e){return function(n){i[e]=this,s[e]=arguments.length>1?u.call(arguments):n,--t||r.resolveWith(i,s)}};if(t<=1&&(W(e,r.done(o(n)).resolve,r.reject,!t),"pending"===r.state()||y(s[n]&&s[n].then)))return r.then();for(;n--;)W(s[n],o(n),r.reject);return r.promise()}});var F=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){n.console&&n.console.warn&&e&&F.test(e.name)&&n.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){n.setTimeout((function(){throw e}))};var B=k.Deferred();function Q(){o.removeEventListener("DOMContentLoaded",Q),n.removeEventListener("load",Q),k.ready()}k.fn.ready=function(e){return B.then(e).catch((function(e){k.readyException(e)})),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0,!0!==e&&--k.readyWait>0||B.resolveWith(o,[k]))}}),k.ready.then=B.then,"complete"===o.readyState||"loading"!==o.readyState&&!o.documentElement.doScroll?n.setTimeout(k.ready):(o.addEventListener("DOMContentLoaded",Q),n.addEventListener("load",Q));var $=function(e,t,n,i,s,r,o){var a=0,u=e.length,l=null==n;if("object"===x(n))for(a in s=!0,n)$(e,t,a,n[a],!0,r,o);else if(void 0!==i&&(s=!0,y(i)||(o=!0),l&&(o?(t.call(e,i),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;a<u;a++)t(e[a],n,o?i:i.call(e[a],a,t(e[a],n)));return s?e:l?t.call(e):u?t(e[0],n):r},U=/^-ms-/,V=/-([a-z])/g;function K(e,t){return t.toUpperCase()}function X(e){return e.replace(U,"ms-").replace(V,K)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var i,s=this.cache(e);if("string"==typeof t)s[X(t)]=n;else for(i in t)s[X(i)]=t[i];return s},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,i=e[this.expando];if(void 0!==i){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in i?[t]:t.match(q)||[]).length;for(;n--;)delete i[t[n]]}(void 0===t||k.isEmptyObject(i))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var J=new Y,Z=new Y,ee=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,te=/[A-Z]/g;function ne(e,t,n){var i;if(void 0===n&&1===e.nodeType)if(i="data-"+t.replace(te,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(i))){try{n=function(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:ee.test(e)?JSON.parse(e):e)}(n)}catch(e){}Z.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return Z.hasData(e)||J.hasData(e)},data:function(e,t,n){return Z.access(e,t,n)},removeData:function(e,t){Z.remove(e,t)},_data:function(e,t,n){return J.access(e,t,n)},_removeData:function(e,t){J.remove(e,t)}}),k.fn.extend({data:function(e,t){var n,i,s,r=this[0],o=r&&r.attributes;if(void 0===e){if(this.length&&(s=Z.get(r),1===r.nodeType&&!J.get(r,"hasDataAttrs"))){for(n=o.length;n--;)o[n]&&0===(i=o[n].name).indexOf("data-")&&(i=X(i.slice(5)),ne(r,i,s[i]));J.set(r,"hasDataAttrs",!0)}return s}return"object"==typeof e?this.each((function(){Z.set(this,e)})):$(this,(function(t){var n;if(r&&void 0===t)return void 0!==(n=Z.get(r,e))?n:void 0!==(n=ne(r,e))?n:void 0;this.each((function(){Z.set(this,e,t)}))}),null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each((function(){Z.remove(this,e)}))}}),k.extend({queue:function(e,t,n){var i;if(e)return t=(t||"fx")+"queue",i=J.get(e,t),n&&(!i||Array.isArray(n)?i=J.access(e,t,k.makeArray(n)):i.push(n)),i||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),i=n.length,s=n.shift(),r=k._queueHooks(e,t);"inprogress"===s&&(s=n.shift(),i--),s&&("fx"===t&&n.unshift("inprogress"),delete r.stop,s.call(e,(function(){k.dequeue(e,t)}),r)),!i&&r&&r.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:k.Callbacks("once memory").add((function(){J.remove(e,[t+"queue",n])}))})}}),k.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?k.queue(this[0],e):void 0===t?this:this.each((function(){var n=k.queue(this,e,t);k._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&k.dequeue(this,e)}))},dequeue:function(e){return this.each((function(){k.dequeue(this,e)}))},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,i=1,s=k.Deferred(),r=this,o=this.length,a=function(){--i||s.resolveWith(r,[r])};for("string"!=typeof e&&(t=e,e=void 0),e=e||"fx";o--;)(n=J.get(r[o],e+"queueHooks"))&&n.empty&&(i++,n.empty.add(a));return a(),s.promise(t)}});var ie=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,se=new RegExp("^(?:([+-])=|)("+ie+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],oe=o.documentElement,ae=function(e){return k.contains(e.ownerDocument,e)},ue={composed:!0};oe.getRootNode&&(ae=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ue)===e.ownerDocument});var le=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ae(e)&&"none"===k.css(e,"display")},de=function(e,t,n,i){var s,r,o={};for(r in t)o[r]=e.style[r],e.style[r]=t[r];for(r in s=n.apply(e,i||[]),t)e.style[r]=o[r];return s};function ce(e,t,n,i){var s,r,o=20,a=i?function(){return i.cur()}:function(){return k.css(e,t,"")},u=a(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),d=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&se.exec(k.css(e,t));if(d&&d[3]!==l){for(u/=2,l=l||d[3],d=+u||1;o--;)k.style(e,t,d+l),(1-r)*(1-(r=a()/u||.5))<=0&&(o=0),d/=r;d*=2,k.style(e,t,d+l),n=n||[]}return n&&(d=+d||+u||0,s=n[1]?d+(n[1]+1)*n[2]:+n[2],i&&(i.unit=l,i.start=d,i.end=s)),s}var he={};function pe(e){var t,n=e.ownerDocument,i=e.nodeName,s=he[i];return s||(t=n.body.appendChild(n.createElement(i)),s=k.css(t,"display"),t.parentNode.removeChild(t),"none"===s&&(s="block"),he[i]=s,s)}function fe(e,t){for(var n,i,s=[],r=0,o=e.length;r<o;r++)(i=e[r]).style&&(n=i.style.display,t?("none"===n&&(s[r]=J.get(i,"display")||null,s[r]||(i.style.display="")),""===i.style.display&&le(i)&&(s[r]=pe(i))):"none"!==n&&(s[r]="none",J.set(i,"display",n)));for(r=0;r<o;r++)null!=s[r]&&(e[r].style.display=s[r]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each((function(){le(this)?k(this).show():k(this).hide()}))}});var me=/^(?:checkbox|radio)$/i,ge=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,ve=/^$|^module$|\/(?:java|ecma)script/i,ye={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function _e(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&L(e,t)?k.merge([e],n):n}function we(e,t){for(var n=0,i=e.length;n<i;n++)J.set(e[n],"globalEval",!t||J.get(t[n],"globalEval"))}ye.optgroup=ye.option,ye.tbody=ye.tfoot=ye.colgroup=ye.caption=ye.thead,ye.th=ye.td;var be,xe,ke=/<|&#?\w+;/;function Ce(e,t,n,i,s){for(var r,o,a,u,l,d,c=t.createDocumentFragment(),h=[],p=0,f=e.length;p<f;p++)if((r=e[p])||0===r)if("object"===x(r))k.merge(h,r.nodeType?[r]:r);else if(ke.test(r)){for(o=o||c.appendChild(t.createElement("div")),a=(ge.exec(r)||["",""])[1].toLowerCase(),u=ye[a]||ye._default,o.innerHTML=u[1]+k.htmlPrefilter(r)+u[2],d=u[0];d--;)o=o.lastChild;k.merge(h,o.childNodes),(o=c.firstChild).textContent=""}else h.push(t.createTextNode(r));for(c.textContent="",p=0;r=h[p++];)if(i&&k.inArray(r,i)>-1)s&&s.push(r);else if(l=ae(r),o=_e(c.appendChild(r),"script"),l&&we(o),n)for(d=0;r=o[d++];)ve.test(r.type||"")&&n.push(r);return c}be=o.createDocumentFragment().appendChild(o.createElement("div")),(xe=o.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),be.appendChild(xe),v.checkClone=be.cloneNode(!0).cloneNode(!0).lastChild.checked,be.innerHTML="<textarea>x</textarea>",v.noCloneChecked=!!be.cloneNode(!0).lastChild.defaultValue;var Se=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ne=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function je(){return!1}function Le(e,t){return e===function(){try{return o.activeElement}catch(e){}}()==("focus"===t)}function De(e,t,n,i,s,r){var o,a;if("object"==typeof t){for(a in"string"!=typeof n&&(i=i||n,n=void 0),t)De(e,a,n,i,t[a],r);return e}if(null==i&&null==s?(s=n,i=n=void 0):null==s&&("string"==typeof n?(s=i,i=void 0):(s=i,i=n,n=void 0)),!1===s)s=je;else if(!s)return e;return 1===r&&(o=s,(s=function(e){return k().off(e),o.apply(this,arguments)}).guid=o.guid||(o.guid=k.guid++)),e.each((function(){k.event.add(this,t,s,i,n)}))}function Ae(e,t,n){n?(J.set(e,t,!1),k.event.add(e,t,{namespace:!1,handler:function(e){var i,s,r=J.get(this,t);if(1&e.isTrigger&&this[t]){if(r.length)(k.event.special[t]||{}).delegateType&&e.stopPropagation();else if(r=u.call(arguments),J.set(this,t,r),i=n(this,t),this[t](),r!==(s=J.get(this,t))||i?J.set(this,t,!1):s={},r!==s)return e.stopImmediatePropagation(),e.preventDefault(),s.value}else r.length&&(J.set(this,t,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===J.get(e,t)&&k.event.add(e,t,Ee)}k.event={global:{},add:function(e,t,n,i,s){var r,o,a,u,l,d,c,h,p,f,m,g=J.get(e);if(g)for(n.handler&&(n=(r=n).handler,s=r.selector),s&&k.find.matchesSelector(oe,s),n.guid||(n.guid=k.guid++),(u=g.events)||(u=g.events={}),(o=g.handle)||(o=g.handle=function(t){return void 0!==k&&k.event.triggered!==t.type?k.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(q)||[""]).length;l--;)p=m=(a=Ne.exec(t[l])||[])[1],f=(a[2]||"").split(".").sort(),p&&(c=k.event.special[p]||{},p=(s?c.delegateType:c.bindType)||p,c=k.event.special[p]||{},d=k.extend({type:p,origType:m,data:i,handler:n,guid:n.guid,selector:s,needsContext:s&&k.expr.match.needsContext.test(s),namespace:f.join(".")},r),(h=u[p])||((h=u[p]=[]).delegateCount=0,c.setup&&!1!==c.setup.call(e,i,f,o)||e.addEventListener&&e.addEventListener(p,o)),c.add&&(c.add.call(e,d),d.handler.guid||(d.handler.guid=n.guid)),s?h.splice(h.delegateCount++,0,d):h.push(d),k.event.global[p]=!0)},remove:function(e,t,n,i,s){var r,o,a,u,l,d,c,h,p,f,m,g=J.hasData(e)&&J.get(e);if(g&&(u=g.events)){for(l=(t=(t||"").match(q)||[""]).length;l--;)if(p=m=(a=Ne.exec(t[l])||[])[1],f=(a[2]||"").split(".").sort(),p){for(c=k.event.special[p]||{},h=u[p=(i?c.delegateType:c.bindType)||p]||[],a=a[2]&&new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"),o=r=h.length;r--;)d=h[r],!s&&m!==d.origType||n&&n.guid!==d.guid||a&&!a.test(d.namespace)||i&&i!==d.selector&&("**"!==i||!d.selector)||(h.splice(r,1),d.selector&&h.delegateCount--,c.remove&&c.remove.call(e,d));o&&!h.length&&(c.teardown&&!1!==c.teardown.call(e,f,g.handle)||k.removeEvent(e,p,g.handle),delete u[p])}else for(p in u)k.event.remove(e,p+t[l],n,i,!0);k.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t,n,i,s,r,o,a=k.event.fix(e),u=new Array(arguments.length),l=(J.get(this,"events")||{})[a.type]||[],d=k.event.special[a.type]||{};for(u[0]=a,t=1;t<arguments.length;t++)u[t]=arguments[t];if(a.delegateTarget=this,!d.preDispatch||!1!==d.preDispatch.call(this,a)){for(o=k.event.handlers.call(this,a,l),t=0;(s=o[t++])&&!a.isPropagationStopped();)for(a.currentTarget=s.elem,n=0;(r=s.handlers[n++])&&!a.isImmediatePropagationStopped();)a.rnamespace&&!1!==r.namespace&&!a.rnamespace.test(r.namespace)||(a.handleObj=r,a.data=r.data,void 0!==(i=((k.event.special[r.origType]||{}).handle||r.handler).apply(s.elem,u))&&!1===(a.result=i)&&(a.preventDefault(),a.stopPropagation()));return d.postDispatch&&d.postDispatch.call(this,a),a.result}},handlers:function(e,t){var n,i,s,r,o,a=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&e.button>=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(r=[],o={},n=0;n<u;n++)void 0===o[s=(i=t[n]).selector+" "]&&(o[s]=i.needsContext?k(s,this).index(l)>-1:k.find(s,this,null,[l]).length),o[s]&&r.push(i);r.length&&a.push({elem:l,handlers:r})}return l=this,u<t.length&&a.push({elem:l,handlers:t.slice(u)}),a},addProp:function(e,t){Object.defineProperty(k.Event.prototype,e,{enumerable:!0,configurable:!0,get:y(t)?function(){if(this.originalEvent)return t(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[e]},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return me.test(t.type)&&t.click&&L(t,"input")&&Ae(t,"click",Ee),!1},trigger:function(e){var t=this||e;return me.test(t.type)&&t.click&&L(t,"input")&&Ae(t,"click"),!0},_default:function(e){var t=e.target;return me.test(t.type)&&t.click&&L(t,"input")&&J.get(t,"click")||L(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ee:je,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&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:je,isPropagationStopped:je,isImmediatePropagationStopped:je,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ee,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ee,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ee,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Se.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Te.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},(function(e,t){k.event.special[e]={setup:function(){return Ae(this,e,Le),!1},trigger:function(){return Ae(this,e),!0},delegateType:t}})),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},(function(e,t){k.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,i=this,s=e.relatedTarget,r=e.handleObj;return s&&(s===i||k.contains(i,s))||(e.type=r.origType,n=r.handler.apply(this,arguments),e.type=t),n}}})),k.fn.extend({on:function(e,t,n,i){return De(this,e,t,n,i)},one:function(e,t,n,i){return De(this,e,t,n,i,1)},off:function(e,t,n){var i,s;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,k(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(s in e)this.off(s,t,e[s]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=je),this.each((function(){k.event.remove(this,e,n,t)}))}});var Pe=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Ie=/<script|<style|<link/i,ze=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return L(e,"table")&&L(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function qe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,i,s,r,o,a,u,l;if(1===t.nodeType){if(J.hasData(e)&&(r=J.access(e),o=J.set(t,r),l=r.events))for(s in delete o.handle,o.events={},l)for(n=0,i=l[s].length;n<i;n++)k.event.add(t,s,l[s][n]);Z.hasData(e)&&(a=Z.access(e),u=k.extend({},a),Z.set(t,u))}}function We(e,t){var n=t.nodeName.toLowerCase();"input"===n&&me.test(e.type)?t.checked=e.checked:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}function Fe(e,t,n,i){t=l.apply([],t);var s,r,o,a,u,d,c=0,h=e.length,p=h-1,f=t[0],m=y(f);if(m||h>1&&"string"==typeof f&&!v.checkClone&&ze.test(f))return e.each((function(s){var r=e.eq(s);m&&(t[0]=f.call(this,s,r.html())),Fe(r,t,n,i)}));if(h&&(r=(s=Ce(t,e[0].ownerDocument,!1,e,i)).firstChild,1===s.childNodes.length&&(s=r),r||i)){for(a=(o=k.map(_e(s,"script"),qe)).length;c<h;c++)u=s,c!==p&&(u=k.clone(u,!0,!0),a&&k.merge(o,_e(u,"script"))),n.call(e[c],u,c);if(a)for(d=o[o.length-1].ownerDocument,k.map(o,Re),c=0;c<a;c++)u=o[c],ve.test(u.type||"")&&!J.access(u,"globalEval")&&k.contains(d,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,d))}return e}function Be(e,t,n){for(var i,s=t?k.filter(t,e):e,r=0;null!=(i=s[r]);r++)n||1!==i.nodeType||k.cleanData(_e(i)),i.parentNode&&(n&&ae(i)&&we(_e(i,"script")),i.parentNode.removeChild(i));return e}k.extend({htmlPrefilter:function(e){return e.replace(Pe,"<$1></$2>")},clone:function(e,t,n){var i,s,r,o,a=e.cloneNode(!0),u=ae(e);if(!(v.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(o=_e(a),i=0,s=(r=_e(e)).length;i<s;i++)We(r[i],o[i]);if(t)if(n)for(r=r||_e(e),o=o||_e(a),i=0,s=r.length;i<s;i++)Me(r[i],o[i]);else Me(e,a);return(o=_e(a,"script")).length>0&&we(o,!u&&_e(e,"script")),a},cleanData:function(e){for(var t,n,i,s=k.event.special,r=0;void 0!==(n=e[r]);r++)if(G(n)){if(t=n[J.expando]){if(t.events)for(i in t.events)s[i]?k.event.remove(n,i):k.removeEvent(n,i,t.handle);n[J.expando]=void 0}n[Z.expando]&&(n[Z.expando]=void 0)}}}),k.fn.extend({detach:function(e){return Be(this,e,!0)},remove:function(e){return Be(this,e)},text:function(e){return $(this,(function(e){return void 0===e?k.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 Fe(this,arguments,(function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)}))},prepend:function(){return Fe(this,arguments,(function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}}))},before:function(){return Fe(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this)}))},after:function(){return Fe(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&&(k.cleanData(_e(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map((function(){return k.clone(this,e,t)}))},html:function(e){return $(this,(function(e){var t=this[0]||{},n=0,i=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ie.test(e)&&!ye[(ge.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<i;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(_e(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)}),null,e,arguments.length)},replaceWith:function(){var e=[];return Fe(this,arguments,(function(t){var n=this.parentNode;k.inArray(this,e)<0&&(k.cleanData(_e(this)),n&&n.replaceChild(t,this))}),e)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},(function(e,t){k.fn[e]=function(e){for(var n,i=[],s=k(e),r=s.length-1,o=0;o<=r;o++)n=o===r?this:this.clone(!0),k(s[o])[t](n),d.apply(i,n.get());return this.pushStack(i)}}));var Qe=new RegExp("^("+ie+")(?!px)[a-z%]+$","i"),$e=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=n),t.getComputedStyle(e)},Ue=new RegExp(re.join("|"),"i");function Ve(e,t,n){var i,s,r,o,a=e.style;return(n=n||$e(e))&&(""!==(o=n.getPropertyValue(t)||n[t])||ae(e)||(o=k.style(e,t)),!v.pixelBoxStyles()&&Qe.test(o)&&Ue.test(t)&&(i=a.width,s=a.minWidth,r=a.maxWidth,a.minWidth=a.maxWidth=a.width=o,o=n.width,a.width=i,a.minWidth=s,a.maxWidth=r)),void 0!==o?o+"":o}function Ke(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(d){l.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",d.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",oe.appendChild(l).appendChild(d);var e=n.getComputedStyle(d);i="1%"!==e.top,u=12===t(e.marginLeft),d.style.right="60%",a=36===t(e.right),s=36===t(e.width),d.style.position="absolute",r=12===t(d.offsetWidth/3),oe.removeChild(l),d=null}}function t(e){return Math.round(parseFloat(e))}var i,s,r,a,u,l=o.createElement("div"),d=o.createElement("div");d.style&&(d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",v.clearCloneStyle="content-box"===d.style.backgroundClip,k.extend(v,{boxSizingReliable:function(){return e(),s},pixelBoxStyles:function(){return e(),a},pixelPosition:function(){return e(),i},reliableMarginLeft:function(){return e(),u},scrollboxSize:function(){return e(),r}}))}();var Xe=["Webkit","Moz","ms"],Ge=o.createElement("div").style,Ye={};function Je(e){var t=k.cssProps[e]||Ye[e];return t||(e in Ge?e:Ye[e]=function(e){for(var t=e[0].toUpperCase()+e.slice(1),n=Xe.length;n--;)if((e=Xe[n]+t)in Ge)return e}(e)||e)}var Ze=/^(none|table(?!-c[ea]).+)/,et=/^--/,tt={position:"absolute",visibility:"hidden",display:"block"},nt={letterSpacing:"0",fontWeight:"400"};function it(e,t,n){var i=se.exec(t);return i?Math.max(0,i[2]-(n||0))+(i[3]||"px"):t}function st(e,t,n,i,s,r){var o="width"===t?1:0,a=0,u=0;if(n===(i?"border":"content"))return 0;for(;o<4;o+=2)"margin"===n&&(u+=k.css(e,n+re[o],!0,s)),i?("content"===n&&(u-=k.css(e,"padding"+re[o],!0,s)),"margin"!==n&&(u-=k.css(e,"border"+re[o]+"Width",!0,s))):(u+=k.css(e,"padding"+re[o],!0,s),"padding"!==n?u+=k.css(e,"border"+re[o]+"Width",!0,s):a+=k.css(e,"border"+re[o]+"Width",!0,s));return!i&&r>=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-r-u-a-.5))||0),u}function rt(e,t,n){var i=$e(e),s=(!v.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,i),r=s,o=Ve(e,t,i),a="offset"+t[0].toUpperCase()+t.slice(1);if(Qe.test(o)){if(!n)return o;o="auto"}return(!v.boxSizingReliable()&&s||"auto"===o||!parseFloat(o)&&"inline"===k.css(e,"display",!1,i))&&e.getClientRects().length&&(s="border-box"===k.css(e,"boxSizing",!1,i),(r=a in e)&&(o=e[a])),(o=parseFloat(o)||0)+st(e,t,n||(s?"border":"content"),r,i,o)+"px"}function ot(e,t,n,i,s){return new ot.prototype.init(e,t,n,i,s)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Ve(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,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var s,r,o,a=X(t),u=et.test(t),l=e.style;if(u||(t=Je(a)),o=k.cssHooks[t]||k.cssHooks[a],void 0===n)return o&&"get"in o&&void 0!==(s=o.get(e,!1,i))?s:l[t];"string"===(r=typeof n)&&(s=se.exec(n))&&s[1]&&(n=ce(e,t,s),r="number"),null!=n&&n==n&&("number"!==r||u||(n+=s&&s[3]||(k.cssNumber[a]?"":"px")),v.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),o&&"set"in o&&void 0===(n=o.set(e,n,i))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,i){var s,r,o,a=X(t);return et.test(t)||(t=Je(a)),(o=k.cssHooks[t]||k.cssHooks[a])&&"get"in o&&(s=o.get(e,!0,n)),void 0===s&&(s=Ve(e,t,i)),"normal"===s&&t in nt&&(s=nt[t]),""===n||n?(r=parseFloat(s),!0===n||isFinite(r)?r||0:s):s}}),k.each(["height","width"],(function(e,t){k.cssHooks[t]={get:function(e,n,i){if(n)return!Ze.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?rt(e,t,i):de(e,tt,(function(){return rt(e,t,i)}))},set:function(e,n,i){var s,r=$e(e),o=!v.scrollboxSize()&&"absolute"===r.position,a=(o||i)&&"border-box"===k.css(e,"boxSizing",!1,r),u=i?st(e,t,i,a,r):0;return a&&o&&(u-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(r[t])-st(e,t,"border",!1,r)-.5)),u&&(s=se.exec(n))&&"px"!==(s[3]||"px")&&(e.style[t]=n,n=k.css(e,t)),it(0,n,u)}}})),k.cssHooks.marginLeft=Ke(v.reliableMarginLeft,(function(e,t){if(t)return(parseFloat(Ve(e,"marginLeft"))||e.getBoundingClientRect().left-de(e,{marginLeft:0},(function(){return e.getBoundingClientRect().left})))+"px"})),k.each({margin:"",padding:"",border:"Width"},(function(e,t){k.cssHooks[e+t]={expand:function(n){for(var i=0,s={},r="string"==typeof n?n.split(" "):[n];i<4;i++)s[e+re[i]+t]=r[i]||r[i-2]||r[0];return s}},"margin"!==e&&(k.cssHooks[e+t].set=it)})),k.fn.extend({css:function(e,t){return $(this,(function(e,t,n){var i,s,r={},o=0;if(Array.isArray(t)){for(i=$e(e),s=t.length;o<s;o++)r[t[o]]=k.css(e,t[o],!1,i);return r}return void 0!==n?k.style(e,t,n):k.css(e,t)}),e,t,arguments.length>1)}}),k.Tween=ot,ot.prototype={constructor:ot,init:function(e,t,n,i,s,r){this.elem=e,this.prop=n,this.easing=s||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=i,this.unit=r||(k.cssNumber[n]?"":"px")},cur:function(){var e=ot.propHooks[this.prop];return e&&e.get?e.get(this):ot.propHooks._default.get(this)},run:function(e){var t,n=ot.propHooks[this.prop];return this.options.duration?this.pos=t=k.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):ot.propHooks._default.set(this),this}},ot.prototype.init.prototype=ot.prototype,ot.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=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Je(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}},ot.propHooks.scrollTop=ot.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=ot.prototype.init,k.fx.step={};var at,ut,lt=/^(?:toggle|show|hide)$/,dt=/queueHooks$/;function ct(){ut&&(!1===o.hidden&&n.requestAnimationFrame?n.requestAnimationFrame(ct):n.setTimeout(ct,k.fx.interval),k.fx.tick())}function ht(){return n.setTimeout((function(){at=void 0})),at=Date.now()}function pt(e,t){var n,i=0,s={height:e};for(t=t?1:0;i<4;i+=2-t)s["margin"+(n=re[i])]=s["padding"+n]=e;return t&&(s.opacity=s.width=e),s}function ft(e,t,n){for(var i,s=(mt.tweeners[t]||[]).concat(mt.tweeners["*"]),r=0,o=s.length;r<o;r++)if(i=s[r].call(n,t,e))return i}function mt(e,t,n){var i,s,r=0,o=mt.prefilters.length,a=k.Deferred().always((function(){delete u.elem})),u=function(){if(s)return!1;for(var t=at||ht(),n=Math.max(0,l.startTime+l.duration-t),i=1-(n/l.duration||0),r=0,o=l.tweens.length;r<o;r++)l.tweens[r].run(i);return a.notifyWith(e,[l,i,n]),i<1&&o?n:(o||a.notifyWith(e,[l,1,0]),a.resolveWith(e,[l]),!1)},l=a.promise({elem:e,props:k.extend({},t),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},n),originalProperties:t,originalOptions:n,startTime:at||ht(),duration:n.duration,tweens:[],createTween:function(t,n){var i=k.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(i),i},stop:function(t){var n=0,i=t?l.tweens.length:0;if(s)return this;for(s=!0;n<i;n++)l.tweens[n].run(1);return t?(a.notifyWith(e,[l,1,0]),a.resolveWith(e,[l,t])):a.rejectWith(e,[l,t]),this}}),d=l.props;for(!function(e,t){var n,i,s,r,o;for(n in e)if(s=t[i=X(n)],r=e[n],Array.isArray(r)&&(s=r[1],r=e[n]=r[0]),n!==i&&(e[i]=r,delete e[n]),(o=k.cssHooks[i])&&"expand"in o)for(n in r=o.expand(r),delete e[i],r)n in e||(e[n]=r[n],t[n]=s);else t[i]=s}(d,l.opts.specialEasing);r<o;r++)if(i=mt.prefilters[r].call(l,e,d,l.opts))return y(i.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=i.stop.bind(i)),i;return k.map(d,ft,l),y(l.opts.start)&&l.opts.start.call(e,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(mt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return ce(n.elem,e,se.exec(t),n),n}]},tweener:function(e,t){y(e)?(t=e,e=["*"]):e=e.match(q);for(var n,i=0,s=e.length;i<s;i++)n=e[i],mt.tweeners[n]=mt.tweeners[n]||[],mt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var i,s,r,o,a,u,l,d,c="width"in t||"height"in t,h=this,p={},f=e.style,m=e.nodeType&&le(e),g=J.get(e,"fxshow");for(i in n.queue||(null==(o=k._queueHooks(e,"fx")).unqueued&&(o.unqueued=0,a=o.empty.fire,o.empty.fire=function(){o.unqueued||a()}),o.unqueued++,h.always((function(){h.always((function(){o.unqueued--,k.queue(e,"fx").length||o.empty.fire()}))}))),t)if(s=t[i],lt.test(s)){if(delete t[i],r=r||"toggle"===s,s===(m?"hide":"show")){if("show"!==s||!g||void 0===g[i])continue;m=!0}p[i]=g&&g[i]||k.style(e,i)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(p))for(i in c&&1===e.nodeType&&(n.overflow=[f.overflow,f.overflowX,f.overflowY],null==(l=g&&g.display)&&(l=J.get(e,"display")),"none"===(d=k.css(e,"display"))&&(l?d=l:(fe([e],!0),l=e.style.display||l,d=k.css(e,"display"),fe([e]))),("inline"===d||"inline-block"===d&&null!=l)&&"none"===k.css(e,"float")&&(u||(h.done((function(){f.display=l})),null==l&&(d=f.display,l="none"===d?"":d)),f.display="inline-block")),n.overflow&&(f.overflow="hidden",h.always((function(){f.overflow=n.overflow[0],f.overflowX=n.overflow[1],f.overflowY=n.overflow[2]}))),u=!1,p)u||(g?"hidden"in g&&(m=g.hidden):g=J.access(e,"fxshow",{display:l}),r&&(g.hidden=!m),m&&fe([e],!0),h.done((function(){for(i in m||fe([e]),J.remove(e,"fxshow"),p)k.style(e,i,p[i])}))),u=ft(m?g[i]:0,i,h),i in g||(g[i]=u.start,m&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?mt.prefilters.unshift(e):mt.prefilters.push(e)}}),k.speed=function(e,t,n){var i=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||y(e)&&e,duration:e,easing:n&&t||t&&!y(t)&&t};return k.fx.off?i.duration=0:"number"!=typeof i.duration&&(i.duration in k.fx.speeds?i.duration=k.fx.speeds[i.duration]:i.duration=k.fx.speeds._default),null!=i.queue&&!0!==i.queue||(i.queue="fx"),i.old=i.complete,i.complete=function(){y(i.old)&&i.old.call(this),i.queue&&k.dequeue(this,i.queue)},i},k.fn.extend({fadeTo:function(e,t,n,i){return this.filter(le).css("opacity",0).show().end().animate({opacity:t},e,n,i)},animate:function(e,t,n,i){var s=k.isEmptyObject(e),r=k.speed(t,n,i),o=function(){var t=mt(this,k.extend({},e),r);(s||J.get(this,"finish"))&&t.stop(!0)};return o.finish=o,s||!1===r.queue?this.each(o):this.queue(r.queue,o)},stop:function(e,t,n){var i=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&!1!==e&&this.queue(e||"fx",[]),this.each((function(){var t=!0,s=null!=e&&e+"queueHooks",r=k.timers,o=J.get(this);if(s)o[s]&&o[s].stop&&i(o[s]);else for(s in o)o[s]&&o[s].stop&&dt.test(s)&&i(o[s]);for(s=r.length;s--;)r[s].elem!==this||null!=e&&r[s].queue!==e||(r[s].anim.stop(n),t=!1,r.splice(s,1));!t&&n||k.dequeue(this,e)}))},finish:function(e){return!1!==e&&(e=e||"fx"),this.each((function(){var t,n=J.get(this),i=n[e+"queue"],s=n[e+"queueHooks"],r=k.timers,o=i?i.length:0;for(n.finish=!0,k.queue(this,e,[]),s&&s.stop&&s.stop.call(this,!0),t=r.length;t--;)r[t].elem===this&&r[t].queue===e&&(r[t].anim.stop(!0),r.splice(t,1));for(t=0;t<o;t++)i[t]&&i[t].finish&&i[t].finish.call(this);delete n.finish}))}}),k.each(["toggle","show","hide"],(function(e,t){var n=k.fn[t];k.fn[t]=function(e,i,s){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(pt(t,!0),e,i,s)}})),k.each({slideDown:pt("show"),slideUp:pt("hide"),slideToggle:pt("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},(function(e,t){k.fn[e]=function(e,n,i){return this.animate(t,e,n,i)}})),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(at=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),at=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){ut||(ut=!0,ct())},k.fx.stop=function(){ut=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(e,t){return e=k.fx&&k.fx.speeds[e]||e,t=t||"fx",this.queue(t,(function(t,i){var s=n.setTimeout(t,e);i.stop=function(){n.clearTimeout(s)}}))},function(){var e=o.createElement("input"),t=o.createElement("select").appendChild(o.createElement("option"));e.type="checkbox",v.checkOn=""!==e.value,v.optSelected=t.selected,(e=o.createElement("input")).value="t",e.type="radio",v.radioValue="t"===e.value}();var gt,vt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return $(this,k.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each((function(){k.removeAttr(this,e)}))}}),k.extend({attr:function(e,t,n){var i,s,r=e.nodeType;if(3!==r&&8!==r&&2!==r)return void 0===e.getAttribute?k.prop(e,t,n):(1===r&&k.isXMLDoc(e)||(s=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?gt:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):s&&"set"in s&&void 0!==(i=s.set(e,n,t))?i:(e.setAttribute(t,n+""),n):s&&"get"in s&&null!==(i=s.get(e,t))?i:null==(i=k.find.attr(e,t))?void 0:i)},attrHooks:{type:{set:function(e,t){if(!v.radioValue&&"radio"===t&&L(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,i=0,s=t&&t.match(q);if(s&&1===e.nodeType)for(;n=s[i++];)e.removeAttribute(n)}}),gt={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),(function(e,t){var n=vt[t]||k.find.attr;vt[t]=function(e,t,i){var s,r,o=t.toLowerCase();return i||(r=vt[o],vt[o]=s,s=null!=n(e,t,i)?o:null,vt[o]=r),s}}));var yt=/^(?:input|select|textarea|button)$/i,_t=/^(?:a|area)$/i;function wt(e){return(e.match(q)||[]).join(" ")}function bt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(q)||[]}k.fn.extend({prop:function(e,t){return $(this,k.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each((function(){delete this[k.propFix[e]||e]}))}}),k.extend({prop:function(e,t,n){var i,s,r=e.nodeType;if(3!==r&&8!==r&&2!==r)return 1===r&&k.isXMLDoc(e)||(t=k.propFix[t]||t,s=k.propHooks[t]),void 0!==n?s&&"set"in s&&void 0!==(i=s.set(e,n,t))?i:e[t]=n:s&&"get"in s&&null!==(i=s.get(e,t))?i:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):yt.test(e.nodeName)||_t.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),v.optSelected||(k.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)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],(function(){k.propFix[this.toLowerCase()]=this})),k.fn.extend({addClass:function(e){var t,n,i,s,r,o,a,u=0;if(y(e))return this.each((function(t){k(this).addClass(e.call(this,t,bt(this)))}));if((t=xt(e)).length)for(;n=this[u++];)if(s=bt(n),i=1===n.nodeType&&" "+wt(s)+" "){for(o=0;r=t[o++];)i.indexOf(" "+r+" ")<0&&(i+=r+" ");s!==(a=wt(i))&&n.setAttribute("class",a)}return this},removeClass:function(e){var t,n,i,s,r,o,a,u=0;if(y(e))return this.each((function(t){k(this).removeClass(e.call(this,t,bt(this)))}));if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)for(;n=this[u++];)if(s=bt(n),i=1===n.nodeType&&" "+wt(s)+" "){for(o=0;r=t[o++];)for(;i.indexOf(" "+r+" ")>-1;)i=i.replace(" "+r+" "," ");s!==(a=wt(i))&&n.setAttribute("class",a)}return this},toggleClass:function(e,t){var n=typeof e,i="string"===n||Array.isArray(e);return"boolean"==typeof t&&i?t?this.addClass(e):this.removeClass(e):y(e)?this.each((function(n){k(this).toggleClass(e.call(this,n,bt(this),t),t)})):this.each((function(){var t,s,r,o;if(i)for(s=0,r=k(this),o=xt(e);t=o[s++];)r.hasClass(t)?r.removeClass(t):r.addClass(t);else void 0!==e&&"boolean"!==n||((t=bt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))}))},hasClass:function(e){var t,n,i=0;for(t=" "+e+" ";n=this[i++];)if(1===n.nodeType&&(" "+wt(bt(n))+" ").indexOf(t)>-1)return!0;return!1}});var kt=/\r/g;k.fn.extend({val:function(e){var t,n,i,s=this[0];return arguments.length?(i=y(e),this.each((function(n){var s;1===this.nodeType&&(null==(s=i?e.call(this,n,k(this).val()):e)?s="":"number"==typeof s?s+="":Array.isArray(s)&&(s=k.map(s,(function(e){return null==e?"":e+""}))),(t=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,s,"value")||(this.value=s))}))):s?(t=k.valHooks[s.type]||k.valHooks[s.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(s,"value"))?n:"string"==typeof(n=s.value)?n.replace(kt,""):null==n?"":n:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:wt(k.text(e))}},select:{get:function(e){var t,n,i,s=e.options,r=e.selectedIndex,o="select-one"===e.type,a=o?null:[],u=o?r+1:s.length;for(i=r<0?u:o?r:0;i<u;i++)if(((n=s[i]).selected||i===r)&&!n.disabled&&(!n.parentNode.disabled||!L(n.parentNode,"optgroup"))){if(t=k(n).val(),o)return t;a.push(t)}return a},set:function(e,t){for(var n,i,s=e.options,r=k.makeArray(t),o=s.length;o--;)((i=s[o]).selected=k.inArray(k.valHooks.option.get(i),r)>-1)&&(n=!0);return n||(e.selectedIndex=-1),r}}}}),k.each(["radio","checkbox"],(function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=k.inArray(k(e).val(),t)>-1}},v.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})})),v.focusin="onfocusin"in n;var Ct=/^(?:focusinfocus|focusoutblur)$/,St=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,i,s){var r,a,u,l,d,c,h,p,m=[i||o],g=f.call(e,"type")?e.type:e,v=f.call(e,"namespace")?e.namespace.split("."):[];if(a=p=u=i=i||o,3!==i.nodeType&&8!==i.nodeType&&!Ct.test(g+k.event.triggered)&&(g.indexOf(".")>-1&&(v=g.split("."),g=v.shift(),v.sort()),d=g.indexOf(":")<0&&"on"+g,(e=e[k.expando]?e:new k.Event(g,"object"==typeof e&&e)).isTrigger=s?2:3,e.namespace=v.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+v.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=i),t=null==t?[e]:k.makeArray(t,[e]),h=k.event.special[g]||{},s||!h.trigger||!1!==h.trigger.apply(i,t))){if(!s&&!h.noBubble&&!_(i)){for(l=h.delegateType||g,Ct.test(l+g)||(a=a.parentNode);a;a=a.parentNode)m.push(a),u=a;u===(i.ownerDocument||o)&&m.push(u.defaultView||u.parentWindow||n)}for(r=0;(a=m[r++])&&!e.isPropagationStopped();)p=a,e.type=r>1?l:h.bindType||g,(c=(J.get(a,"events")||{})[e.type]&&J.get(a,"handle"))&&c.apply(a,t),(c=d&&a[d])&&c.apply&&G(a)&&(e.result=c.apply(a,t),!1===e.result&&e.preventDefault());return e.type=g,s||e.isDefaultPrevented()||h._default&&!1!==h._default.apply(m.pop(),t)||!G(i)||d&&y(i[g])&&!_(i)&&((u=i[d])&&(i[d]=null),k.event.triggered=g,e.isPropagationStopped()&&p.addEventListener(g,St),i[g](),e.isPropagationStopped()&&p.removeEventListener(g,St),k.event.triggered=void 0,u&&(i[d]=u)),e.result}},simulate:function(e,t,n){var i=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(i,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each((function(){k.event.trigger(e,t,this)}))},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),v.focusin||k.each({focus:"focusin",blur:"focusout"},(function(e,t){var n=function(e){k.event.simulate(t,e.target,k.event.fix(e))};k.event.special[t]={setup:function(){var i=this.ownerDocument||this,s=J.access(i,t);s||i.addEventListener(e,n,!0),J.access(i,t,(s||0)+1)},teardown:function(){var i=this.ownerDocument||this,s=J.access(i,t)-1;s?J.access(i,t,s):(i.removeEventListener(e,n,!0),J.remove(i,t))}}}));var Tt=n.location,Nt=Date.now(),Et=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new n.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var jt=/\[\]$/,Lt=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function Pt(e,t,n,i){var s;if(Array.isArray(t))k.each(t,(function(t,s){n||jt.test(e)?i(e,s):Pt(e+"["+("object"==typeof s&&null!=s?t:"")+"]",s,n,i)}));else if(n||"object"!==x(t))i(e,t);else for(s in t)Pt(e+"["+s+"]",t[s],n,i)}k.param=function(e,t){var n,i=[],s=function(e,t){var n=y(t)?t():t;i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,(function(){s(this.name,this.value)}));else for(n in e)Pt(n,e[n],t,s);return i.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this})).filter((function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&At.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!me.test(e))})).map((function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,(function(e){return{name:t.name,value:e.replace(Lt,"\r\n")}})):{name:t.name,value:n.replace(Lt,"\r\n")}})).get()}});var It=/%20/g,zt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,qt=/^(?:GET|HEAD)$/,Rt=/^\/\//,Mt={},Wt={},Ft="*/".concat("*"),Bt=o.createElement("a");function Qt(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var i,s=0,r=t.toLowerCase().match(q)||[];if(y(n))for(;i=r[s++];)"+"===i[0]?(i=i.slice(1)||"*",(e[i]=e[i]||[]).unshift(n)):(e[i]=e[i]||[]).push(n)}}function $t(e,t,n,i){var s={},r=e===Wt;function o(a){var u;return s[a]=!0,k.each(e[a]||[],(function(e,a){var l=a(t,n,i);return"string"!=typeof l||r||s[l]?r?!(u=l):void 0:(t.dataTypes.unshift(l),o(l),!1)})),u}return o(t.dataTypes[0])||!s["*"]&&o("*")}function Ut(e,t){var n,i,s=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((s[n]?e:i||(i={}))[n]=t[n]);return i&&k.extend(!0,e,i),e}Bt.href=Tt.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Tt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Tt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Ft,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":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ut(Ut(e,k.ajaxSettings),t):Ut(k.ajaxSettings,e)},ajaxPrefilter:Qt(Mt),ajaxTransport:Qt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var i,s,r,a,u,l,d,c,h,p,f=k.ajaxSetup({},t),m=f.context||f,g=f.context&&(m.nodeType||m.jquery)?k(m):k.event,v=k.Deferred(),y=k.Callbacks("once memory"),_=f.statusCode||{},w={},b={},x="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(d){if(!a)for(a={};t=Ot.exec(r);)a[t[1].toLowerCase()+" "]=(a[t[1].toLowerCase()+" "]||[]).concat(t[2]);t=a[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return d?r:null},setRequestHeader:function(e,t){return null==d&&(e=b[e.toLowerCase()]=b[e.toLowerCase()]||e,w[e]=t),this},overrideMimeType:function(e){return null==d&&(f.mimeType=e),this},statusCode:function(e){var t;if(e)if(d)C.always(e[C.status]);else for(t in e)_[t]=[_[t],e[t]];return this},abort:function(e){var t=e||x;return i&&i.abort(t),S(0,t),this}};if(v.promise(C),f.url=((e||f.url||Tt.href)+"").replace(Rt,Tt.protocol+"//"),f.type=t.method||t.type||f.method||f.type,f.dataTypes=(f.dataType||"*").toLowerCase().match(q)||[""],null==f.crossDomain){l=o.createElement("a");try{l.href=f.url,l.href=l.href,f.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){f.crossDomain=!0}}if(f.data&&f.processData&&"string"!=typeof f.data&&(f.data=k.param(f.data,f.traditional)),$t(Mt,f,t,C),d)return C;for(h in(c=k.event&&f.global)&&0==k.active++&&k.event.trigger("ajaxStart"),f.type=f.type.toUpperCase(),f.hasContent=!qt.test(f.type),s=f.url.replace(zt,""),f.hasContent?f.data&&f.processData&&0===(f.contentType||"").indexOf("application/x-www-form-urlencoded")&&(f.data=f.data.replace(It,"+")):(p=f.url.slice(s.length),f.data&&(f.processData||"string"==typeof f.data)&&(s+=(Et.test(s)?"&":"?")+f.data,delete f.data),!1===f.cache&&(s=s.replace(Ht,"$1"),p=(Et.test(s)?"&":"?")+"_="+Nt+++p),f.url=s+p),f.ifModified&&(k.lastModified[s]&&C.setRequestHeader("If-Modified-Since",k.lastModified[s]),k.etag[s]&&C.setRequestHeader("If-None-Match",k.etag[s])),(f.data&&f.hasContent&&!1!==f.contentType||t.contentType)&&C.setRequestHeader("Content-Type",f.contentType),C.setRequestHeader("Accept",f.dataTypes[0]&&f.accepts[f.dataTypes[0]]?f.accepts[f.dataTypes[0]]+("*"!==f.dataTypes[0]?", "+Ft+"; q=0.01":""):f.accepts["*"]),f.headers)C.setRequestHeader(h,f.headers[h]);if(f.beforeSend&&(!1===f.beforeSend.call(m,C,f)||d))return C.abort();if(x="abort",y.add(f.complete),C.done(f.success),C.fail(f.error),i=$t(Wt,f,t,C)){if(C.readyState=1,c&&g.trigger("ajaxSend",[C,f]),d)return C;f.async&&f.timeout>0&&(u=n.setTimeout((function(){C.abort("timeout")}),f.timeout));try{d=!1,i.send(w,S)}catch(e){if(d)throw e;S(-1,e)}}else S(-1,"No Transport");function S(e,t,o,a){var l,h,p,w,b,x=t;d||(d=!0,u&&n.clearTimeout(u),i=void 0,r=a||"",C.readyState=e>0?4:0,l=e>=200&&e<300||304===e,o&&(w=function(e,t,n){for(var i,s,r,o,a=e.contents,u=e.dataTypes;"*"===u[0];)u.shift(),void 0===i&&(i=e.mimeType||t.getResponseHeader("Content-Type"));if(i)for(s in a)if(a[s]&&a[s].test(i)){u.unshift(s);break}if(u[0]in n)r=u[0];else{for(s in n){if(!u[0]||e.converters[s+" "+u[0]]){r=s;break}o||(o=s)}r=r||o}if(r)return r!==u[0]&&u.unshift(r),n[r]}(f,C,o)),w=function(e,t,n,i){var s,r,o,a,u,l={},d=e.dataTypes.slice();if(d[1])for(o in e.converters)l[o.toLowerCase()]=e.converters[o];for(r=d.shift();r;)if(e.responseFields[r]&&(n[e.responseFields[r]]=t),!u&&i&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=r,r=d.shift())if("*"===r)r=u;else if("*"!==u&&u!==r){if(!(o=l[u+" "+r]||l["* "+r]))for(s in l)if((a=s.split(" "))[1]===r&&(o=l[u+" "+a[0]]||l["* "+a[0]])){!0===o?o=l[s]:!0!==l[s]&&(r=a[0],d.unshift(a[1]));break}if(!0!==o)if(o&&e.throws)t=o(t);else try{t=o(t)}catch(e){return{state:"parsererror",error:o?e:"No conversion from "+u+" to "+r}}}return{state:"success",data:t}}(f,w,C,l),l?(f.ifModified&&((b=C.getResponseHeader("Last-Modified"))&&(k.lastModified[s]=b),(b=C.getResponseHeader("etag"))&&(k.etag[s]=b)),204===e||"HEAD"===f.type?x="nocontent":304===e?x="notmodified":(x=w.state,h=w.data,l=!(p=w.error))):(p=x,!e&&x||(x="error",e<0&&(e=0))),C.status=e,C.statusText=(t||x)+"",l?v.resolveWith(m,[h,x,C]):v.rejectWith(m,[C,x,p]),C.statusCode(_),_=void 0,c&&g.trigger(l?"ajaxSuccess":"ajaxError",[C,f,l?h:p]),y.fireWith(m,[C,x]),c&&(g.trigger("ajaxComplete",[C,f]),--k.active||k.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],(function(e,t){k[t]=function(e,n,i,s){return y(n)&&(s=s||i,i=n,n=void 0),k.ajax(k.extend({url:e,type:t,dataType:s,data:n,success:i},k.isPlainObject(e)&&e))}})),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(y(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map((function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e})).append(this)),this},wrapInner:function(e){return y(e)?this.each((function(t){k(this).wrapInner(e.call(this,t))})):this.each((function(){var t=k(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)}))},wrap:function(e){var t=y(e);return this.each((function(n){k(this).wrapAll(t?e.call(this,n):e)}))},unwrap:function(e){return this.parent(e).not("body").each((function(){k(this).replaceWith(this.childNodes)})),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new n.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Kt=k.ajaxSettings.xhr();v.cors=!!Kt&&"withCredentials"in Kt,v.ajax=Kt=!!Kt,k.ajaxTransport((function(e){var t,i;if(v.cors||Kt&&!e.crossDomain)return{send:function(s,r){var o,a=e.xhr();if(a.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(o in e.xhrFields)a[o]=e.xhrFields[o];for(o in e.mimeType&&a.overrideMimeType&&a.overrideMimeType(e.mimeType),e.crossDomain||s["X-Requested-With"]||(s["X-Requested-With"]="XMLHttpRequest"),s)a.setRequestHeader(o,s[o]);t=function(e){return function(){t&&(t=i=a.onload=a.onerror=a.onabort=a.ontimeout=a.onreadystatechange=null,"abort"===e?a.abort():"error"===e?"number"!=typeof a.status?r(0,"error"):r(a.status,a.statusText):r(Vt[a.status]||a.status,a.statusText,"text"!==(a.responseType||"text")||"string"!=typeof a.responseText?{binary:a.response}:{text:a.responseText},a.getAllResponseHeaders()))}},a.onload=t(),i=a.onerror=a.ontimeout=t("error"),void 0!==a.onabort?a.onabort=i:a.onreadystatechange=function(){4===a.readyState&&n.setTimeout((function(){t&&i()}))},t=t("abort");try{a.send(e.hasContent&&e.data||null)}catch(e){if(t)throw e}},abort:function(){t&&t()}}})),k.ajaxPrefilter((function(e){e.crossDomain&&(e.contents.script=!1)})),k.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 k.globalEval(e),e}}}),k.ajaxPrefilter("script",(function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")})),k.ajaxTransport("script",(function(e){var t,n;if(e.crossDomain||e.scriptAttrs)return{send:function(i,s){t=k("<script>").attr(e.scriptAttrs||{}).prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&s("error"===e.type?404:200,e.type)}),o.head.appendChild(t[0])},abort:function(){n&&n()}}}));var Xt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+Nt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",(function(e,t,i){var s,r,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return s=e.jsonpCallback=y(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+s):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+s),e.converters["script json"]=function(){return o||k.error(s+" was not called"),o[0]},e.dataTypes[0]="json",r=n[s],n[s]=function(){o=arguments},i.always((function(){void 0===r?k(n).removeProp(s):n[s]=r,e[s]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(s)),o&&y(r)&&r(o[0]),o=r=void 0})),"script"})),v.createHTMLDocument=((Xt=o.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Xt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((i=(t=o.implementation.createHTMLDocument("")).createElement("base")).href=o.location.href,t.head.appendChild(i)):t=o),r=!n&&[],(s=D.exec(e))?[t.createElement(s[1])]:(s=Ce([e],t,r),r&&r.length&&k(r).remove(),k.merge([],s.childNodes)));var i,s,r},k.fn.load=function(e,t,n){var i,s,r,o=this,a=e.indexOf(" ");return a>-1&&(i=wt(e.slice(a)),e=e.slice(0,a)),y(t)?(n=t,t=void 0):t&&"object"==typeof t&&(s="POST"),o.length>0&&k.ajax({url:e,type:s||"GET",dataType:"html",data:t}).done((function(e){r=arguments,o.html(i?k("<div>").append(k.parseHTML(e)).find(i):e)})).always(n&&function(e,t){o.each((function(){n.apply(this,r||[e.responseText,t,e])}))}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],(function(e,t){k.fn[t]=function(e){return this.on(t,e)}})),k.expr.pseudos.animated=function(e){return k.grep(k.timers,(function(t){return e===t.elem})).length},k.offset={setOffset:function(e,t,n){var i,s,r,o,a,u,l=k.css(e,"position"),d=k(e),c={};"static"===l&&(e.style.position="relative"),a=d.offset(),r=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&(r+u).indexOf("auto")>-1?(o=(i=d.position()).top,s=i.left):(o=parseFloat(r)||0,s=parseFloat(u)||0),y(t)&&(t=t.call(e,n,k.extend({},a))),null!=t.top&&(c.top=t.top-a.top+o),null!=t.left&&(c.left=t.left-a.left+s),"using"in t?t.using.call(e,c):d.css(c)}},k.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each((function(t){k.offset.setOffset(this,e,t)}));var t,n,i=this[0];return i?i.getClientRects().length?(t=i.getBoundingClientRect(),n=i.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,i=this[0],s={top:0,left:0};if("fixed"===k.css(i,"position"))t=i.getBoundingClientRect();else{for(t=this.offset(),n=i.ownerDocument,e=i.offsetParent||n.documentElement;e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position");)e=e.parentNode;e&&e!==i&&1===e.nodeType&&((s=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),s.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-s.top-k.css(i,"marginTop",!0),left:t.left-s.left-k.css(i,"marginLeft",!0)}}},offsetParent:function(){return this.map((function(){for(var e=this.offsetParent;e&&"static"===k.css(e,"position");)e=e.offsetParent;return e||oe}))}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},(function(e,t){var n="pageYOffset"===t;k.fn[e]=function(i){return $(this,(function(e,i,s){var r;if(_(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===s)return r?r[t]:e[i];r?r.scrollTo(n?r.pageXOffset:s,n?s:r.pageYOffset):e[i]=s}),e,i,arguments.length)}})),k.each(["top","left"],(function(e,t){k.cssHooks[t]=Ke(v.pixelPosition,(function(e,n){if(n)return n=Ve(e,t),Qe.test(n)?k(e).position()[t]+"px":n}))})),k.each({Height:"height",Width:"width"},(function(e,t){k.each({padding:"inner"+e,content:t,"":"outer"+e},(function(n,i){k.fn[i]=function(s,r){var o=arguments.length&&(n||"boolean"!=typeof s),a=n||(!0===s||!0===r?"margin":"border");return $(this,(function(t,n,s){var r;return _(t)?0===i.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(r=t.documentElement,Math.max(t.body["scroll"+e],r["scroll"+e],t.body["offset"+e],r["offset"+e],r["client"+e])):void 0===s?k.css(t,n,a):k.style(t,n,s,a)}),t,o?s:void 0,o)}}))})),k.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,t){k.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}})),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.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,i){return this.on(t,e,n,i)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,i,s;if("string"==typeof t&&(n=e[t],t=e,e=n),y(e))return i=u.call(arguments,2),(s=function(){return e.apply(t||this,i.concat(u.call(arguments)))}).guid=e.guid=e.guid||k.guid++,s},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=L,k.isFunction=y,k.isWindow=_,k.camelCase=X,k.type=x,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},void 0===(i=function(){return k}.apply(t,[]))||(e.exports=i);var Jt=n.jQuery,Zt=n.$;return k.noConflict=function(e){return n.$===k&&(n.$=Zt),e&&n.jQuery===k&&(n.jQuery=Jt),k},s||(n.jQuery=n.$=k),k}))},function(e,t,n){var i,s,r;
|
26 |
/*!
|
27 |
* jquery.fancytree.js
|
28 |
* Tree view control with support for lazy loading and much more.
|
34 |
*
|
35 |
* @version 2.32.0
|
36 |
* @date 2019-09-10T07:42:12Z
|
37 |
+
*/s=[n(4),n(21)],void 0===(r="function"==typeof(i=function(e){"use strict";if(!e.ui||!e.ui.fancytree){var t,n,i=null,s=new RegExp(/\.|\//),r=/[&<>"'/]/g,o=/[<>"'/]/g,a={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"},u={16:!0,17:!0,18:!0},l={8:"backspace",9:"tab",10:"return",13:"return",19:"pause",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"insert",46:"del",59:";",61:"=",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9",106:"*",107:"+",109:"-",110:".",111:"/",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12",144:"numlock",145:"scroll",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},d={16:"shift",17:"ctrl",18:"alt",91:"meta",93:"meta"},c={0:"",1:"left",2:"middle",3:"right"},h="active expanded focus folder lazy radiogroup selected unselectable unselectableIgnore".split(" "),p={},f="columns types".split(" "),m="checkbox expanded extraClasses folder icon iconTooltip key lazy partsel radiogroup refKey selected statusNodeType title tooltip type unselectable unselectableIgnore unselectableStatus".split(" "),g={},v={},y={active:!0,children:!0,data:!0,focus:!0};for(t=0;t<h.length;t++)p[h[t]]=!0;for(t=0;t<m.length;t++)n=m[t],g[n]=!0,n!==n.toLowerCase()&&(v[n.toLowerCase()]=n);return _(e.ui,"Fancytree requires jQuery UI (http://jqueryui.com)"),Date.now||(Date.now=function(){return(new Date).getTime()}),L.prototype={_findDirectChild:function(e){var t,n,i=this.children;if(i)if("string"==typeof e){for(t=0,n=i.length;t<n;t++)if(i[t].key===e)return i[t]}else{if("number"==typeof e)return this.children[e];if(e.parent===this)return e}return null},_setChildren:function(e){_(e&&(!this.children||0===this.children.length),"only init supported"),this.children=[];for(var t=0,n=e.length;t<n;t++)this.children.push(new L(this,e[t]));this.tree._callHook("treeStructureChanged",this.tree,"setChildren")},addChildren:function(t,n){var i,s,r,o,a=this.getFirstChild(),u=this.getLastChild(),l=[];for(e.isPlainObject(t)&&(t=[t]),this.children||(this.children=[]),i=0,s=t.length;i<s;i++)l.push(new L(this,t[i]));if(o=l[0],null==n?this.children=this.children.concat(l):(n=this._findDirectChild(n),_((r=e.inArray(n,this.children))>=0,"insertBefore must be an existing child"),this.children.splice.apply(this.children,[r,0].concat(l))),a&&!n){for(i=0,s=l.length;i<s;i++)l[i].render();a!==this.getFirstChild()&&a.renderStatus(),u!==this.getLastChild()&&u.renderStatus()}else(!this.parent||this.parent.ul||this.tr)&&this.render();return 3===this.tree.options.selectMode&&this.fixSelection3FromEndNodes(),this.triggerModifyChild("add",1===l.length?l[0]:null),o},addClass:function(e){return this.toggleClass(e,!0)},addNode:function(e,t){switch(void 0!==t&&"over"!==t||(t="child"),t){case"after":return this.getParent().addChildren(e,this.getNextSibling());case"before":return this.getParent().addChildren(e,this);case"firstChild":var n=this.children?this.children[0]:null;return this.addChildren(e,n);case"child":case"over":return this.addChildren(e)}_(!1,"Invalid mode: "+t)},addPagingNode:function(t,n){var i,s;if(n=n||"child",!1!==t)return t=e.extend({title:this.tree.options.strings.moreData,statusNodeType:"paging",icon:!1},t),this.partload=!0,this.addNode(t,n);for(i=this.children.length-1;i>=0;i--)"paging"===(s=this.children[i]).statusNodeType&&this.removeChild(s);this.partload=!1},appendSibling:function(e){return this.addNode(e,"after")},applyCommand:function(e,t){return this.tree.applyCommand(e,this,t)},applyPatch:function(t){if(null===t)return this.remove(),C(this);var n,i,s={children:!0,expanded:!0,parent:!0};for(n in t)t.hasOwnProperty(n)&&(i=t[n],s[n]||e.isFunction(i)||(g[n]?this[n]=i:this.data[n]=i));return t.hasOwnProperty("children")&&(this.removeChildren(),t.children&&this._setChildren(t.children)),this.isVisible()&&(this.renderTitle(),this.renderStatus()),t.hasOwnProperty("expanded")?this.setExpanded(t.expanded):C(this)},collapseSiblings:function(){return this.tree._callHook("nodeCollapseSiblings",this)},copyTo:function(e,t,n){return e.addNode(this.toDict(!0,n),t)},countChildren:function(e){var t,n,i,s=this.children;if(!s)return 0;if(i=s.length,!1!==e)for(t=0,n=i;t<n;t++)i+=s[t].countChildren();return i},debug:function(e){this.tree.options.debugLevel>=4&&(Array.prototype.unshift.call(arguments,this.toString()),w("log",arguments))},discard:function(){return this.warn("FancytreeNode.discard() is deprecated since 2014-02-16. Use .resetLazy() instead."),this.resetLazy()},discardMarkup:function(e){var t=e?"nodeRemoveMarkup":"nodeRemoveChildMarkup";this.tree._callHook(t,this)},error:function(e){this.tree.options.debugLevel>=1&&(Array.prototype.unshift.call(arguments,this.toString()),w("error",arguments))},findAll:function(t){t=e.isFunction(t)?t:j(t);var n=[];return this.visit((function(e){t(e)&&n.push(e)})),n},findFirst:function(t){t=e.isFunction(t)?t:j(t);var n=null;return this.visit((function(e){if(t(e))return n=e,!1})),n},findRelatedNode:function(e,t){return this.tree.findRelatedNode(this,e,t)},_changeSelectStatusAttrs:function(e){var t=!1,n=this.tree.options,s=i.evalOption("unselectable",this,this,n,!1),r=i.evalOption("unselectableStatus",this,this,n,void 0);switch(s&&null!=r&&(e=r),e){case!1:t=this.selected||this.partsel,this.selected=!1,this.partsel=!1;break;case!0:t=!this.selected||!this.partsel,this.selected=!0,this.partsel=!0;break;case void 0:t=this.selected||!this.partsel,this.selected=!1,this.partsel=!0;break;default:_(!1,"invalid state: "+e)}return t&&this.renderStatus(),t},fixSelection3AfterClick:function(e){var t=this.isSelected();this.visit((function(e){if(e._changeSelectStatusAttrs(t),e.radiogroup)return"skip"})),this.fixSelection3FromEndNodes(e)},fixSelection3FromEndNodes:function(e){var t=this.tree.options;_(3===t.selectMode,"expected selectMode 3"),function e(n){var s,r,o,a,u,l,d,c,h=n.children;if(h&&h.length){for(l=!0,d=!1,s=0,r=h.length;s<r;s++)a=e(o=h[s]),i.evalOption("unselectableIgnore",o,o,t,!1)||(!1!==a&&(d=!0),!0!==a&&(l=!1));u=!!l||!!d&&void 0}else u=null==(c=i.evalOption("unselectableStatus",n,n,t,void 0))?!!n.selected:!!c;return n.partsel&&!n.selected&&n.lazy&&null==n.children&&(u=void 0),n._changeSelectStatusAttrs(u),u}(this),this.visitParents((function(e){var n,s,r,o,a,u=e.children,l=!0,d=!1;for(n=0,s=u.length;n<s;n++)r=u[n],i.evalOption("unselectableIgnore",r,r,t,!1)||(((o=null==(a=i.evalOption("unselectableStatus",r,r,t,void 0))?!!r.selected:!!a)||r.partsel)&&(d=!0),o||(l=!1));o=!!l||!!d&&void 0,e._changeSelectStatusAttrs(o)}))},fromDict:function(t){for(var n in t)g[n]?this[n]=t[n]:"data"===n?e.extend(this.data,t.data):e.isFunction(t[n])||y[n]||(this.data[n]=t[n]);t.children&&(this.removeChildren(),this.addChildren(t.children)),this.renderTitle()},getChildren:function(){if(void 0!==this.hasChildren())return this.children},getFirstChild:function(){return this.children?this.children[0]:null},getIndex:function(){return e.inArray(this,this.parent.children)},getIndexHier:function(t,n){t=t||".";var i,s=[];return e.each(this.getParentList(!1,!0),(function(e,t){i=""+(t.getIndex()+1),n&&(i=("0000000"+i).substr(-n)),s.push(i)})),s.join(t)},getKeyPath:function(e){var t=this.tree.options.keyPathSeparator;return t+this.getPath(!e,"key",t)},getLastChild:function(){return this.children?this.children[this.children.length-1]:null},getLevel:function(){for(var e=0,t=this.parent;t;)e++,t=t.parent;return e},getNextSibling:function(){if(this.parent){var e,t,n=this.parent.children;for(e=0,t=n.length-1;e<t;e++)if(n[e]===this)return n[e+1]}return null},getParent:function(){return this.parent},getParentList:function(e,t){for(var n=[],i=t?this:this.parent;i;)(e||i.parent)&&n.unshift(i),i=i.parent;return n},getPath:function(t,n,i){t=!1!==t,n=n||"title",i=i||"/";var s,r=[],o=e.isFunction(n);return this.visitParents((function(e){e.parent&&(s=o?n(e):e[n],r.unshift(s))}),t),r.join(i)},getPrevSibling:function(){if(this.parent){var e,t,n=this.parent.children;for(e=1,t=n.length;e<t;e++)if(n[e]===this)return n[e-1]}return null},getSelectedNodes:function(e){var t=[];return this.visit((function(n){if(n.selected&&(t.push(n),!0===e))return"skip"})),t},hasChildren:function(){if(this.lazy){if(null==this.children)return;if(0===this.children.length)return!1;if(1===this.children.length&&this.children[0].isStatusNode())return;return!0}return!(!this.children||!this.children.length)},hasClass:function(e){return(" "+(this.extraClasses||"")+" ").indexOf(" "+e+" ")>=0},hasFocus:function(){return this.tree.hasFocus()&&this.tree.focusNode===this},info:function(e){this.tree.options.debugLevel>=3&&(Array.prototype.unshift.call(arguments,this.toString()),w("info",arguments))},isActive:function(){return this.tree.activeNode===this},isBelowOf:function(e){return this.getIndexHier(".",5)>e.getIndexHier(".",5)},isChildOf:function(e){return this.parent&&this.parent===e},isDescendantOf:function(t){if(!t||t.tree!==this.tree)return!1;for(var n=this.parent;n;){if(n===t)return!0;n===n.parent&&e.error("Recursive parent link: "+n),n=n.parent}return!1},isExpanded:function(){return!!this.expanded},isFirstSibling:function(){var e=this.parent;return!e||e.children[0]===this},isFolder:function(){return!!this.folder},isLastSibling:function(){var e=this.parent;return!e||e.children[e.children.length-1]===this},isLazy:function(){return!!this.lazy},isLoaded:function(){return!this.lazy||void 0!==this.hasChildren()},isLoading:function(){return!!this._isLoading},isRoot:function(){return this.isRootNode()},isPartsel:function(){return!this.selected&&!!this.partsel},isPartload:function(){return!!this.partload},isRootNode:function(){return this.tree.rootNode===this},isSelected:function(){return!!this.selected},isStatusNode:function(){return!!this.statusNodeType},isPagingNode:function(){return"paging"===this.statusNodeType},isTopLevel:function(){return this.tree.rootNode===this.parent},isUndefined:function(){return void 0===this.hasChildren()},isVisible:function(){var e,t,n=this.tree.enableFilter,i=this.getParentList(!1,!1);if(n&&!this.match&&!this.subMatchCount)return this.debug("isVisible: HIDDEN ("+n+", "+this.match+", "+this.match+")"),!1;for(e=0,t=i.length;e<t;e++)if(!i[e].expanded)return this.debug("isVisible: HIDDEN (parent collapsed)"),!1;return this.debug("isVisible: VISIBLE"),!0},lazyLoad:function(e){return this.warn("FancytreeNode.lazyLoad() is deprecated since 2014-02-16. Use .load() instead."),this.load(e)},load:function(e){var t,n,i=this,s=this.isExpanded();return _(this.isLazy(),"load() requires a lazy node"),e||this.isUndefined()?(this.isLoaded()&&this.resetLazy(),!1===(n=this.tree._triggerNodeEvent("lazyLoad",this))?C(this):(_("boolean"!=typeof n,"lazyLoad event must return source in data.result"),t=this.tree._callHook("nodeLoadChildren",this,n),s?(this.expanded=!0,t.always((function(){i.render()}))):t.always((function(){i.renderStatus()})),t)):C(this)},makeVisible:function(t){var n,i=this,s=[],r=new e.Deferred,o=this.getParentList(!1,!1),a=o.length,u=!(t&&!0===t.noAnimation),l=!(t&&!1===t.scrollIntoView);for(n=a-1;n>=0;n--)s.push(o[n].setExpanded(!0,t));return e.when.apply(e,s).done((function(){l?i.scrollIntoView(u).done((function(){r.resolve()})):r.resolve()})),r.promise()},moveTo:function(t,n,i){void 0===n||"over"===n?n="child":"firstChild"===n&&(t.children&&t.children.length?(n="before",t=t.children[0]):n="child");var s,r=this.tree,o=this.parent,a="child"===n?t:t.parent;if(this!==t){if(this.parent?a.isDescendantOf(this)&&e.error("Cannot move a node to its own descendant"):e.error("Cannot move system root"),a!==o&&o.triggerModifyChild("remove",this),1===this.parent.children.length){if(this.parent===a)return;this.parent.children=this.parent.lazy?[]:null,this.parent.expanded=!1}else _((s=e.inArray(this,this.parent.children))>=0,"invalid source parent"),this.parent.children.splice(s,1);if(this.parent=a,a.hasChildren())switch(n){case"child":a.children.push(this);break;case"before":_((s=e.inArray(t,a.children))>=0,"invalid target parent"),a.children.splice(s,0,this);break;case"after":_((s=e.inArray(t,a.children))>=0,"invalid target parent"),a.children.splice(s+1,0,this);break;default:e.error("Invalid mode "+n)}else a.children=[this];i&&t.visit(i,!0),a===o?a.triggerModifyChild("move",this):a.triggerModifyChild("add",this),r!==t.tree&&(this.warn("Cross-tree moveTo is experimental!"),this.visit((function(e){e.tree=t.tree}),!0)),r._callHook("treeStructureChanged",r,"moveTo"),o.isDescendantOf(a)||o.render(),a.isDescendantOf(o)||a===o||a.render()}},navigate:function(t,n){var i,s=e.ui.keyCode;switch(t){case"left":case s.LEFT:if(this.expanded)return this.setExpanded(!1);break;case"right":case s.RIGHT:if(!this.expanded&&(this.children||this.lazy))return this.setExpanded()}if(i=this.findRelatedNode(t)){try{i.makeVisible({scrollIntoView:!1})}catch(e){}return!1===n?(i.setFocus(),C()):i.setActive()}return this.warn("Could not find related node '"+t+"'."),C()},remove:function(){return this.parent.removeChild(this)},removeChild:function(e){return this.tree._callHook("nodeRemoveChild",this,e)},removeChildren:function(){return this.tree._callHook("nodeRemoveChildren",this)},removeClass:function(e){return this.toggleClass(e,!1)},render:function(e,t){return this.tree._callHook("nodeRender",this,e,t)},renderTitle:function(){return this.tree._callHook("nodeRenderTitle",this)},renderStatus:function(){return this.tree._callHook("nodeRenderStatus",this)},replaceWith:function(n){var i,s=this.parent,r=e.inArray(this,s.children),o=this;return _(this.isPagingNode(),"replaceWith() currently requires a paging status node"),(i=this.tree._callHook("nodeLoadChildren",this,n)).done((function(e){var n=o.children;for(t=0;t<n.length;t++)n[t].parent=s;s.children.splice.apply(s.children,[r+1,0].concat(n)),o.children=null,o.remove(),s.render()})).fail((function(){o.setExpanded()})),i},resetLazy:function(){this.removeChildren(),this.expanded=!1,this.lazy=!0,this.children=void 0,this.renderStatus()},scheduleAction:function(t,n){this.tree.timer&&(clearTimeout(this.tree.timer),this.tree.debug("clearTimeout(%o)",this.tree.timer)),this.tree.timer=null;var i=this;switch(t){case"cancel":break;case"expand":this.tree.timer=setTimeout((function(){i.tree.debug("setTimeout: trigger expand"),i.setExpanded(!0)}),n);break;case"activate":this.tree.timer=setTimeout((function(){i.tree.debug("setTimeout: trigger activate"),i.setActive(!0)}),n);break;default:e.error("Invalid mode "+t)}},scrollIntoView:function(t,n){if(void 0!==n&&(i=n).tree&&void 0!==i.statusNodeType)throw Error("scrollIntoView() with 'topNode' option is deprecated since 2014-05-08. Use 'options.topNode' instead.");var i,s=e.extend({effects:!0===t?{duration:200,queue:!1}:t,scrollOfs:this.tree.options.scrollOfs,scrollParent:this.tree.options.scrollParent,topNode:null},n),r=s.scrollParent,o=this.tree.$container,a=o.css("overflow-y");r?r.jquery||(r=e(r)):r=this.tree.tbody?o.scrollParent():"scroll"===a||"auto"===a?o:o.scrollParent(),r[0]!==document&&r[0]!==document.body||(this.debug("scrollIntoView(): normalizing scrollParent to 'window':",r[0]),r=e(window));var u,l,d,c=new e.Deferred,h=this,p=e(this.span).height(),f=s.scrollOfs.top||0,m=s.scrollOfs.bottom||0,g=r.height(),v=r.scrollTop(),y=r,w=r[0]===window,b=s.topNode||null,x=null;return this.isVisible()?(w?(l=e(this.span).offset().top,u=b&&b.span?e(b.span).offset().top:0,y=e("html,body")):(_(r[0]!==document&&r[0]!==document.body,"scrollParent should be a simple element or `window`, not document or body."),d=r.offset().top,l=e(this.span).offset().top-d+v,u=b?e(b.span).offset().top-d+v:0,g-=Math.max(0,r.innerHeight()-r[0].clientHeight)),l<v+f?x=l-f:l+p>v+g-m&&(x=l+p-g+m,b&&(_(b.isRootNode()||b.isVisible(),"topNode must be visible"),u<x&&(x=u-f))),null===x?c.resolveWith(this):s.effects?(s.effects.complete=function(){c.resolveWith(h)},y.stop(!0).animate({scrollTop:x},s.effects)):(y[0].scrollTop=x,c.resolveWith(this)),c.promise()):(this.warn("scrollIntoView(): node is invisible."),C())},setActive:function(e,t){return this.tree._callHook("nodeSetActive",this,e,t)},setExpanded:function(e,t){return this.tree._callHook("nodeSetExpanded",this,e,t)},setFocus:function(e){return this.tree._callHook("nodeSetFocus",this,e)},setSelected:function(e,t){return this.tree._callHook("nodeSetSelected",this,e,t)},setStatus:function(e,t,n){return this.tree._callHook("nodeSetStatus",this,e,t,n)},setTitle:function(e){this.title=e,this.renderTitle(),this.triggerModify("rename")},sortChildren:function(e,t){var n,i,s=this.children;if(s){if(e=e||function(e,t){var n=e.title.toLowerCase(),i=t.title.toLowerCase();return n===i?0:n>i?1:-1},s.sort(e),t)for(n=0,i=s.length;n<i;n++)s[n].children&&s[n].sortChildren(e,"$norender$");"$norender$"!==t&&this.render(),this.triggerModifyChild("sort")}},toDict:function(t,n){var i,s,r,o,a={},u=this;if(e.each(m,(function(e,t){(u[t]||!1===u[t])&&(a[t]=u[t])})),e.isEmptyObject(this.data)||(a.data=e.extend({},this.data),e.isEmptyObject(a.data)&&delete a.data),n){if(!1===(o=n(a,u)))return!1;"skip"===o&&(t=!1)}if(t&&this.hasChildren())for(a.children=[],i=0,s=this.children.length;i<s;i++)(r=this.children[i]).isStatusNode()||!1!==(o=r.toDict(!0,n))&&a.children.push(o);return a},toggleClass:function(t,n){var i,s,r=t.match(/\S+/g)||[],o=0,a=!1,u=this[this.tree.statusClassPropName],l=" "+(this.extraClasses||"")+" ";for(u&&e(u).toggleClass(t,n);i=r[o++];)if(s=l.indexOf(" "+i+" ")>=0,n=void 0===n?!s:!!n)s||(l+=i+" ",a=!0);else for(;l.indexOf(" "+i+" ")>-1;)l=l.replace(" "+i+" "," ");return this.extraClasses=e.trim(l),a},toggleExpanded:function(){return this.tree._callHook("nodeToggleExpanded",this)},toggleSelected:function(){return this.tree._callHook("nodeToggleSelected",this)},toString:function(){return"FancytreeNode@"+this.key+"[title='"+this.title+"']"},triggerModifyChild:function(t,n,i){var s,r=this.tree.options.modifyChild;r&&(n&&n.parent!==this&&e.error("childNode "+n+" is not a child of "+this),s={node:this,tree:this.tree,operation:t,childNode:n||null},i&&e.extend(s,i),r({type:"modifyChild"},s))},triggerModify:function(e,t){this.parent.triggerModifyChild(e,this,t)},visit:function(e,t){var n,i,s=!0,r=this.children;if(!0===t&&(!1===(s=e(this))||"skip"===s))return s;if(r)for(n=0,i=r.length;n<i&&!1!==(s=r[n].visit(e,!0));n++);return s},visitAndLoad:function(t,n,i){var s,r,o,a=this;return!t||!0!==n||!1!==(r=t(a))&&"skip"!==r?a.children||a.lazy?(s=new e.Deferred,o=[],a.load().done((function(){for(var n=0,i=a.children.length;n<i;n++){if(!1===(r=a.children[n].visitAndLoad(t,!0,!0))){s.reject();break}"skip"!==r&&o.push(r)}e.when.apply(this,o).then((function(){s.resolve()}))})),s.promise()):C():i?r:C()},visitParents:function(e,t){if(t&&!1===e(this))return!1;for(var n=this.parent;n;){if(!1===e(n))return!1;n=n.parent}return!0},visitSiblings:function(e,t){var n,i,s,r=this.parent.children;for(n=0,i=r.length;n<i;n++)if(s=r[n],(t||s!==this)&&!1===e(s))return!1;return!0},warn:function(e){this.tree.options.debugLevel>=2&&(Array.prototype.unshift.call(arguments,this.toString()),w("warn",arguments))}},D.prototype={_makeHookContext:function(t,n,i){var s,r;return void 0!==t.node?(n&&t.originalEvent!==n&&e.error("invalid args"),s=t):t.tree?s={node:t,tree:r=t.tree,widget:r.widget,options:r.widget.options,originalEvent:n,typeInfo:r.types[t.type]||{}}:t.widget?s={node:null,tree:t,widget:t.widget,options:t.widget.options,originalEvent:n}:e.error("invalid args"),i&&e.extend(s,i),s},_callHook:function(t,n,i){var s=this._makeHookContext(n),r=this[t],o=Array.prototype.slice.call(arguments,2);return e.isFunction(r)||e.error("_callHook('"+t+"') is not a function"),o.unshift(s),r.apply(this,o)},_setExpiringValue:function(e,t,n){this._tempCache[e]={value:t,expire:Date.now()+(+n||50)}},_getExpiringValue:function(e){var t=this._tempCache[e];return t&&t.expire>Date.now()?t.value:(delete this._tempCache[e],null)},_requireExtension:function(t,n,i,s){null!=i&&(i=!!i);var r=this._local.name,o=this.options.extensions,a=e.inArray(t,o)<e.inArray(r,o),u=n&&null==this.ext[t],l=!u&&null!=i&&i!==a;return _(r&&r!==t,"invalid or same name '"+r+"' (require yourself?)"),!u&&!l||(s||(u||n?(s="'"+r+"' extension requires '"+t+"'",l&&(s+=" to be registered "+(i?"before":"after")+" itself")):s="If used together, `"+t+"` must be registered "+(i?"before":"after")+" `"+r+"`"),e.error(s),!1)},activateKey:function(e,t){var n=this.getNodeByKey(e);return n?n.setActive(!0,t):this.activeNode&&this.activeNode.setActive(!1,t),n},addPagingNode:function(e,t){return this.rootNode.addPagingNode(e,t)},applyCommand:function(t,n,i){var s;switch(n=n||this.getActiveNode(),t){case"moveUp":(s=n.getPrevSibling())&&(n.moveTo(s,"before"),n.setActive());break;case"moveDown":(s=n.getNextSibling())&&(n.moveTo(s,"after"),n.setActive());break;case"indent":(s=n.getPrevSibling())&&(n.moveTo(s,"child"),s.setExpanded(),n.setActive());break;case"outdent":n.isTopLevel()||(n.moveTo(n.getParent(),"after"),n.setActive());break;case"remove":s=n.getPrevSibling()||n.getParent(),n.remove(),s&&s.setActive();break;case"addChild":n.editCreateNode("child","");break;case"addSibling":n.editCreateNode("after","");break;case"rename":n.editStart();break;case"down":case"first":case"last":case"left":case"parent":case"right":case"up":return n.navigate(t);default:e.error("Unhandled command: '"+t+"'")}},applyPatch:function(t){var n,i,s,r,o,a,u=t.length,l=[];for(i=0;i<u;i++)_(2===(s=t[i]).length,"patchList must be an array of length-2-arrays"),r=s[0],o=s[1],(a=null===r?this.rootNode:this.getNodeByKey(r))?(n=new e.Deferred,l.push(n),a.applyPatch(o).always(T(n,a))):this.warn("could not find node with key '"+r+"'");return e.when.apply(e,l).promise()},clear:function(e){this._callHook("treeClear",this)},count:function(){return this.rootNode.countChildren()},debug:function(e){this.options.debugLevel>=4&&(Array.prototype.unshift.call(arguments,this.toString()),w("log",arguments))},enable:function(e){!1===e?this.widget.disable():this.widget.enable()},enableUpdate:function(e){return e=!1!==e,!!this._enableUpdate==!!e?e:(this._enableUpdate=e,e?(this.debug("enableUpdate(true): redraw "),this._callHook("treeStructureChanged",this,"enableUpdate"),this.render()):this.debug("enableUpdate(false)..."),!e)},error:function(e){this.options.debugLevel>=1&&(Array.prototype.unshift.call(arguments,this.toString()),w("error",arguments))},expandAll:function(e,t){var n=this.enableUpdate(!1);e=!1!==e,this.visit((function(n){!1!==n.hasChildren()&&n.isExpanded()!==e&&n.setExpanded(e,t)})),this.enableUpdate(n)},findAll:function(e){return this.rootNode.findAll(e)},findFirst:function(e){return this.rootNode.findFirst(e)},findNextNode:function(e,t){var n,i=null,s=this.getFirstChild();function r(n){if(e(n)&&(i=n),i||n===t)return!1}return e="string"==typeof e?(n=new RegExp("^"+e,"i"),function(e){return n.test(e.title)}):e,t=t||s,this.visitRows(r,{start:t,includeSelf:!1}),i||t===s||this.visitRows(r,{start:s,includeSelf:!0}),i},findRelatedNode:function(t,n,i){var s=null,r=e.ui.keyCode;switch(n){case"parent":case r.BACKSPACE:t.parent&&t.parent.parent&&(s=t.parent);break;case"first":case r.HOME:this.visit((function(e){if(e.isVisible())return s=e,!1}));break;case"last":case r.END:this.visit((function(e){e.isVisible()&&(s=e)}));break;case"left":case r.LEFT:t.expanded?t.setExpanded(!1):t.parent&&t.parent.parent&&(s=t.parent);break;case"right":case r.RIGHT:t.expanded||!t.children&&!t.lazy?t.children&&t.children.length&&(s=t.children[0]):(t.setExpanded(),s=t);break;case"up":case r.UP:this.visitRows((function(e){return s=e,!1}),{start:t,reverse:!0,includeSelf:!1});break;case"down":case r.DOWN:this.visitRows((function(e){return s=e,!1}),{start:t,includeSelf:!1});break;default:this.tree.warn("Unknown relation '"+n+"'.")}return s},generateFormElements:function(t,n,i){i=i||{};var s,r="string"==typeof t?t:"ft_"+this._id+"[]",o="string"==typeof n?n:"ft_"+this._id+"_active",a="fancytree_result_"+this._id,u=e("#"+a),l=3===this.options.selectMode&&!1!==i.stopOnParents;function d(t){u.append(e("<input>",{type:"checkbox",name:r,value:t.key,checked:!0}))}u.length?u.empty():u=e("<div>",{id:a}).hide().insertAfter(this.$container),!1!==n&&this.activeNode&&u.append(e("<input>",{type:"radio",name:o,value:this.activeNode.key,checked:!0})),i.filter?this.visit((function(e){var t=i.filter(e);if("skip"===t)return t;!1!==t&&d(e)})):!1!==t&&(s=this.getSelectedNodes(l),e.each(s,(function(e,t){d(t)})))},getActiveNode:function(){return this.activeNode},getFirstChild:function(){return this.rootNode.getFirstChild()},getFocusNode:function(){return this.focusNode},getOption:function(e){return this.widget.option(e)},getNodeByKey:function(e,t){var n,i;return!t&&(n=document.getElementById(this.options.idPrefix+e))?n.ftnode?n.ftnode:null:(t=t||this.rootNode,i=null,t.visit((function(t){if(t.key===e)return i=t,!1}),!0),i)},getRootNode:function(){return this.rootNode},getSelectedNodes:function(e){return this.rootNode.getSelectedNodes(e)},hasFocus:function(){return!!this._hasFocus},info:function(e){this.options.debugLevel>=3&&(Array.prototype.unshift.call(arguments,this.toString()),w("info",arguments))},isLoading:function(){var e=!1;return this.rootNode.visit((function(t){if(t._isLoading||t._requestId)return e=!0,!1}),!0),e},loadKeyPath:function(t,n){var i,s,r,o=this,a=new e.Deferred,u=this.getRootNode(),l=this.options.keyPathSeparator,d=[],c=e.extend({},n);for("function"==typeof n?i=n:n&&n.callback&&(i=n.callback),c.callback=function(e,t,n){i&&i.call(e,t,n),a.notifyWith(e,[{node:t,status:n}])},null==c.matchKey&&(c.matchKey=function(e,t){return e.key===t}),e.isArray(t)||(t=[t]),s=0;s<t.length;s++)(r=t[s]).charAt(0)===l&&(r=r.substr(1)),d.push(r.split(l));return setTimeout((function(){o._loadKeyPathImpl(a,c,u,d).done((function(){a.resolve()}))}),0),a.promise()},_loadKeyPathImpl:function(t,n,i,s){var r,o,a,u,l,d,c,h,p,f,m=this;function g(e,t){var i,s,r=e.children;if(r)for(i=0,s=r.length;i<s;i++)if(n.matchKey(r[i],t))return r[i];return null}for(c={},o=0;o<s.length;o++)for(p=s[o],h=i;p.length;){if(a=p.shift(),!(u=g(h,a))){this.warn("loadKeyPath: key not found: "+a+" (parent: "+h+")"),n.callback(this,a,"error");break}if(0===p.length){n.callback(this,u,"ok");break}if(u.lazy&&void 0===u.hasChildren()){n.callback(this,u,"loaded"),c[a=u.key]?c[a].pathSegList.push(p):c[a]={parent:u,pathSegList:[p]};break}n.callback(this,u,"loaded"),h=u}function v(e,t,i){n.callback(m,t,"loading"),t.load().done((function(){m._loadKeyPathImpl.call(m,e,n,t,i).always(T(e,m))})).fail((function(i){m.warn("loadKeyPath: error loading lazy "+t),n.callback(m,u,"error"),e.rejectWith(m)}))}for(l in r=[],c)c.hasOwnProperty(l)&&(d=c[l],f=new e.Deferred,r.push(f),v(f,d.parent,d.pathSegList));return e.when.apply(e,r).promise()},reactivate:function(e){var t,n=this.activeNode;return n?(this.activeNode=null,t=n.setActive(!0,{noFocus:!0}),e&&n.setFocus(),t):C()},reload:function(e){return this._callHook("treeClear",this),this._callHook("treeLoad",this,e)},render:function(e,t){return this.rootNode.render(e,t)},selectAll:function(e){this.visit((function(t){t.setSelected(e)}))},setFocus:function(e){return this._callHook("treeSetFocus",this,e)},setOption:function(e,t){return this.widget.option(e,t)},toDict:function(e,t){var n=this.rootNode.toDict(!0,t);return e?n:n.children},toString:function(){return"Fancytree@"+this._id},_triggerNodeEvent:function(e,t,n,i){var s=this._makeHookContext(t,n,i),r=this.widget._trigger(e,n,s);return!1!==r&&void 0!==s.result?s.result:r},_triggerTreeEvent:function(e,t,n){var i=this._makeHookContext(this,t,n),s=this.widget._trigger(e,t,i);return!1!==s&&void 0!==i.result?i.result:s},visit:function(e){return this.rootNode.visit(e,!1)},visitRows:function(e,t){if(!this.rootNode.children)return!1;if(t&&t.reverse)return delete t.reverse,this._visitRowsUp(e,t);var n,i,s,r=0,o=!1===(t=t||{}).includeSelf,a=!!t.includeHidden,u=!a&&this.enableFilter,l=t.start||this.rootNode.children[0];for(i=l.parent;i;){for(n=(s=i.children).indexOf(l)+r;n<s.length;n++)if(l=s[n],!u||l.match||l.subMatchCount){if(!o&&!1===e(l))return!1;if(o=!1,l.children&&l.children.length&&(a||l.expanded)&&!1===l.visit((function(t){return!u||t.match||t.subMatchCount?!1!==e(t)&&(a||!t.children||t.expanded?void 0:"skip"):"skip"}),!1))return!1}l=i,i=i.parent,r=1}return!0},_visitRowsUp:function(e,t){for(var n,i,s,r=!!t.includeHidden,o=t.start||this.rootNode.children[0];;){if((n=(s=o.parent).children)[0]===o){if(!(o=s).parent)break;n=s.children}else for(i=n.indexOf(o),o=n[i-1];(r||o.expanded)&&o.children&&o.children.length;)s=o,o=(n=o.children)[n.length-1];if((r||o.isVisible())&&!1===e(o))return!1}},warn:function(e){this.options.debugLevel>=2&&(Array.prototype.unshift.call(arguments,this.toString()),w("warn",arguments))}},e.extend(D.prototype,{nodeClick:function(e){var t,n,i=e.targetType,s=e.node;if("expander"===i){if(s.isLoading())return void s.debug("Got 2nd click while loading: ignored");this._callHook("nodeToggleExpanded",e)}else if("checkbox"===i)this._callHook("nodeToggleSelected",e),e.options.focusOnSelect&&this._callHook("nodeSetFocus",e,!0);else{if(n=!1,t=!0,s.folder)switch(e.options.clickFolderMode){case 2:n=!0,t=!1;break;case 3:t=!0,n=!0}t&&(this.nodeSetFocus(e),this._callHook("nodeSetActive",e,!0)),n&&this._callHook("nodeToggleExpanded",e)}},nodeCollapseSiblings:function(e,t){var n,i,s,r=e.node;if(r.parent)for(i=0,s=(n=r.parent.children).length;i<s;i++)n[i]!==r&&n[i].expanded&&this._callHook("nodeSetExpanded",n[i],!1,t)},nodeDblclick:function(e){"title"===e.targetType&&4===e.options.clickFolderMode&&this._callHook("nodeToggleExpanded",e),"title"===e.targetType&&e.originalEvent.preventDefault()},nodeKeydown:function(t){var n,s,r,o=t.originalEvent,a=t.node,u=t.tree,c=t.options,h=o.which,p=o.key||String.fromCharCode(h),f=!!(o.altKey||o.ctrlKey||o.metaKey),m=!d[h]&&!l[h]&&!f,g=e(o.target),v=!0,y=!(o.ctrlKey||!c.autoActivate);if(a||(r=this.getActiveNode()||this.getFirstChild())&&(r.setFocus(),(a=t.node=this.focusNode).debug("Keydown force focus on active node")),c.quicksearch&&m&&!g.is(":input:enabled"))return(s=Date.now())-u.lastQuicksearchTime>500&&(u.lastQuicksearchTerm=""),u.lastQuicksearchTime=s,u.lastQuicksearchTerm+=p,(n=u.findNextNode(u.lastQuicksearchTerm,u.getActiveNode()))&&n.setActive(),void o.preventDefault();switch(i.eventToString(o)){case"+":case"=":u.nodeSetExpanded(t,!0);break;case"-":u.nodeSetExpanded(t,!1);break;case"space":a.isPagingNode()?u._triggerNodeEvent("clickPaging",t,o):i.evalOption("checkbox",a,a,c,!1)?u.nodeToggleSelected(t):u.nodeSetActive(t,!0);break;case"return":u.nodeSetActive(t,!0);break;case"home":case"end":case"backspace":case"left":case"right":case"up":case"down":a.navigate(o.which,y);break;default:v=!1}v&&o.preventDefault()},nodeLoadChildren:function(t,n){var i,s,r,o,a=t.tree,u=t.node,l=Date.now();return e.isFunction(n)&&(n=n.call(a,{type:"source"},t),_(!e.isFunction(n),"source callback must not return another function")),n.url&&(u._requestId&&u.warn("Recursive load request #"+l+" while #"+u._requestId+" is pending."),i=e.extend({},t.options.ajax,n),u._requestId=l,i.debugDelay?(s=i.debugDelay,delete i.debugDelay,e.isArray(s)&&(s=s[0]+Math.random()*(s[1]-s[0])),u.warn("nodeLoadChildren waiting debugDelay "+Math.round(s)+" ms ..."),r=e.Deferred((function(t){setTimeout((function(){e.ajax(i).done((function(){t.resolveWith(this,arguments)})).fail((function(){t.rejectWith(this,arguments)}))}),s)}))):r=e.ajax(i),n=new e.Deferred,r.done((function(i,s,r){var o,d;if("json"!==this.dataType&&"jsonp"!==this.dataType||"string"!=typeof i||e.error("Ajax request returned a string (did you get the JSON dataType wrong?)."),u._requestId&&u._requestId>l)n.rejectWith(this,["$recursive_request"]);else{if(t.options.postProcess){try{d=a._triggerNodeEvent("postProcess",t,t.originalEvent,{response:i,error:null,dataType:this.dataType})}catch(e){d={error:e,message:""+e,details:"postProcess failed"}}if(d.error)return o=e.isPlainObject(d.error)?d.error:{message:d.error},o=a._makeHookContext(u,null,o),void n.rejectWith(this,[o]);(e.isArray(d)||e.isPlainObject(d)&&e.isArray(d.children))&&(i=d)}else i&&i.hasOwnProperty("d")&&t.options.enableAspx&&(i="string"==typeof i.d?e.parseJSON(i.d):i.d);n.resolveWith(this,[i])}})).fail((function(e,t,i){var s=a._makeHookContext(u,null,{error:e,args:Array.prototype.slice.call(arguments),message:i,details:e.status+": "+i});n.rejectWith(this,[s])}))),e.isFunction(n.then)&&e.isFunction(n.catch)&&(r=n,n=new e.Deferred,r.then((function(e){n.resolve(e)}),(function(e){n.reject(e)}))),e.isFunction(n.promise)?(a.nodeSetStatus(t,"loading"),n.done((function(e){a.nodeSetStatus(t,"ok"),u._requestId=null})).fail((function(e){var n;"$recursive_request"!==e?(e.node&&e.error&&e.message?n=e:"[object Object]"===(n=a._makeHookContext(u,null,{error:e,args:Array.prototype.slice.call(arguments),message:e?e.message||e.toString():""})).message&&(n.message=""),u.warn("Load children failed ("+n.message+")",n),!1!==a._triggerNodeEvent("loadError",n,null)&&a.nodeSetStatus(t,"error",n.message,n.details)):u.warn("Ignored response for obsolete load request #"+l+" (expected #"+u._requestId+")")}))):t.options.postProcess&&(o=a._triggerNodeEvent("postProcess",t,t.originalEvent,{response:n,error:null,dataType:typeof n}),(e.isArray(o)||e.isPlainObject(o)&&e.isArray(o.children))&&(n=o)),e.when(n).done((function(n){var i,s;e.isPlainObject(n)&&(_(u.isRootNode(),"source may only be an object for root nodes (expecting an array of child objects otherwise)"),_(e.isArray(n.children),"if an object is passed as source, it must contain a 'children' array (all other properties are added to 'tree.data')"),i=n,n=n.children,delete i.children,e.each(f,(function(e,t){void 0!==i[t]&&(a[t]=i[t],delete i[t])})),e.extend(a.data,i)),_(e.isArray(n),"expected array of children"),u._setChildren(n),a.options.nodata&&0===n.length&&(e.isFunction(a.options.nodata)?s=a.options.nodata.call(a,{type:"nodata"},t):!0===a.options.nodata&&u.isRootNode()?s=a.options.strings.nodata:"string"==typeof a.options.nodata&&u.isRootNode()&&(s=a.options.nodata),s&&u.setStatus("nodata",s)),a._triggerNodeEvent("loadChildren",u)}))},nodeLoadKeyPath:function(e,t){},nodeRemoveChild:function(t,n){var i,s=t.node,r=e.extend({},t,{node:n}),o=s.children;if(1===o.length)return _(n===o[0],"invalid single child"),this.nodeRemoveChildren(t);this.activeNode&&(n===this.activeNode||this.activeNode.isDescendantOf(n))&&this.activeNode.setActive(!1),this.focusNode&&(n===this.focusNode||this.focusNode.isDescendantOf(n))&&(this.focusNode=null),this.nodeRemoveMarkup(r),this.nodeRemoveChildren(r),_((i=e.inArray(n,o))>=0,"invalid child"),s.triggerModifyChild("remove",n),n.visit((function(e){e.parent=null}),!0),this._callHook("treeRegisterNode",this,!1,n),o.splice(i,1)},nodeRemoveChildMarkup:function(t){var n=t.node;n.ul&&(n.isRootNode()?e(n.ul).empty():(e(n.ul).remove(),n.ul=null),n.visit((function(e){e.li=e.ul=null})))},nodeRemoveChildren:function(e){var t=e.tree,n=e.node;n.children&&(this.activeNode&&this.activeNode.isDescendantOf(n)&&this.activeNode.setActive(!1),this.focusNode&&this.focusNode.isDescendantOf(n)&&(this.focusNode=null),this.nodeRemoveChildMarkup(e),n.triggerModifyChild("remove",null),n.visit((function(e){e.parent=null,t._callHook("treeRegisterNode",t,!1,e)})),n.lazy?n.children=[]:n.children=null,n.isRootNode()||(n.expanded=!1),this.nodeRenderStatus(e))},nodeRemoveMarkup:function(t){var n=t.node;n.li&&(e(n.li).remove(),n.li=null),this.nodeRemoveChildMarkup(t)},nodeRender:function(t,n,i,s,r){var o,a,u,l,d,c,h,p=t.node,f=t.tree,m=t.options,g=m.aria,v=!1,y=p.parent,w=!y,b=p.children,x=null;if(!1!==f._enableUpdate&&(w||y.ul)){if(_(w||y.ul,"parent UL must exist"),w||(p.li&&(n||p.li.parentNode!==p.parent.ul)&&(p.li.parentNode===p.parent.ul?x=p.li.nextSibling:this.debug("Unlinking "+p+" (must be child of "+p.parent+")"),this.nodeRemoveMarkup(t)),p.li?this.nodeRenderStatus(t):(v=!0,p.li=document.createElement("li"),p.li.ftnode=p,p.key&&m.generateIds&&(p.li.id=m.idPrefix+p.key),p.span=document.createElement("span"),p.span.className="fancytree-node",g&&!p.tr&&e(p.li).attr("role","treeitem"),p.li.appendChild(p.span),this.nodeRenderTitle(t),m.createNode&&m.createNode.call(f,{type:"createNode"},t)),m.renderNode&&m.renderNode.call(f,{type:"renderNode"},t)),b){if(w||p.expanded||!0===i){for(p.ul||(p.ul=document.createElement("ul"),(!0!==s||r)&&p.expanded||(p.ul.style.display="none"),g&&e(p.ul).attr("role","group"),p.li?p.li.appendChild(p.ul):p.tree.$div.append(p.ul)),l=0,d=b.length;l<d;l++)h=e.extend({},t,{node:b[l]}),this.nodeRender(h,n,i,!1,!0);for(o=p.ul.firstChild;o;)(u=o.ftnode)&&u.parent!==p?(p.debug("_fixParent: remove missing "+u,o),c=o.nextSibling,o.parentNode.removeChild(o),o=c):o=o.nextSibling;for(o=p.ul.firstChild,l=0,d=b.length-1;l<d;l++)(a=b[l])===(u=o.ftnode)?o=o.nextSibling:p.ul.insertBefore(a.li,u.li)}}else p.ul&&(this.warn("remove child markup for "+p),this.nodeRemoveChildMarkup(t));w||v&&y.ul.insertBefore(p.li,x)}},nodeRenderTitle:function(t,n){var r,o,a,u,l,d,c,h=t.node,p=t.tree,f=t.options,m=f.aria,g=h.getLevel(),v=[];void 0!==n&&(h.title=n),h.span&&!1!==p._enableUpdate&&(l=m&&!1!==h.hasChildren()?" role='button'":"",g<f.minExpandLevel?(h.lazy||(h.expanded=!0),g>1&&v.push("<span "+l+" class='fancytree-expander fancytree-expander-fixed'></span>")):v.push("<span "+l+" class='fancytree-expander'></span>"),(r=i.evalOption("checkbox",h,h,f,!1))&&!h.isStatusNode()&&(l=m?" role='checkbox'":"",o="fancytree-checkbox",("radio"===r||h.parent&&h.parent.radiogroup)&&(o+=" fancytree-radio"),v.push("<span "+l+" class='"+o+"'></span>")),void 0!==h.data.iconClass&&(h.icon?e.error("'iconClass' node option is deprecated since v2.14.0: use 'icon' only instead"):(h.warn("'iconClass' node option is deprecated since v2.14.0: use 'icon' instead"),h.icon=h.data.iconClass)),!1!==(a=i.evalOption("icon",h,h,f,!0))&&(l=m?" role='presentation'":"",c=(c=i.evalOption("iconTooltip",h,h,f,null))?" title='"+E(c)+"'":"","string"==typeof a?s.test(a)?(a="/"===a.charAt(0)?a:(f.imagePath||"")+a,v.push("<img src='"+a+"' class='fancytree-icon'"+c+" alt='' />")):v.push("<span "+l+" class='fancytree-custom-icon "+a+"'"+c+"></span>"):a.text?v.push("<span "+l+" class='fancytree-custom-icon "+(a.addClass||"")+"'"+c+">"+i.escapeHtml(a.text)+"</span>"):a.html?v.push("<span "+l+" class='fancytree-custom-icon "+(a.addClass||"")+"'"+c+">"+a.html+"</span>"):v.push("<span "+l+" class='fancytree-icon'"+c+"></span>")),u="",f.renderTitle&&(u=f.renderTitle.call(p,{type:"renderTitle"},t)||""),u||(!0===(d=i.evalOption("tooltip",h,h,f,null))&&(d=h.title),u="<span class='fancytree-title'"+(d=d?" title='"+E(d)+"'":"")+(f.titlesTabbable?" tabindex='0'":"")+">"+(f.escapeTitles?i.escapeHtml(h.title):h.title)+"</span>"),v.push(u),h.span.innerHTML=v.join(""),this.nodeRenderStatus(t),f.enhanceTitle&&(t.$title=e(">span.fancytree-title",h.span),u=f.enhanceTitle.call(p,{type:"enhanceTitle"},t)||""))},nodeRenderStatus:function(t){var n,s=t.node,r=t.tree,o=t.options,a=s.hasChildren(),u=s.isLastSibling(),l=o.aria,d=o._classNames,c=[],h=s[r.statusClassPropName];h&&!1!==r._enableUpdate&&(l&&(n=e(s.tr||s.li)),c.push(d.node),r.activeNode===s&&c.push(d.active),r.focusNode===s&&c.push(d.focused),s.expanded&&c.push(d.expanded),l&&(!1===a?n.removeAttr("aria-expanded"):n.attr("aria-expanded",Boolean(s.expanded))),s.folder&&c.push(d.folder),!1!==a&&c.push(d.hasChildren),u&&c.push(d.lastsib),s.lazy&&null==s.children&&c.push(d.lazy),s.partload&&c.push(d.partload),s.partsel&&c.push(d.partsel),i.evalOption("unselectable",s,s,o,!1)&&c.push(d.unselectable),s._isLoading&&c.push(d.loading),s._error&&c.push(d.error),s.statusNodeType&&c.push(d.statusNodePrefix+s.statusNodeType),s.selected?(c.push(d.selected),l&&n.attr("aria-selected",!0)):l&&n.attr("aria-selected",!1),s.extraClasses&&c.push(s.extraClasses),!1===a?c.push(d.combinedExpanderPrefix+"n"+(u?"l":"")):c.push(d.combinedExpanderPrefix+(s.expanded?"e":"c")+(s.lazy&&null==s.children?"d":"")+(u?"l":"")),c.push(d.combinedIconPrefix+(s.expanded?"e":"c")+(s.folder?"f":"")),h.className=c.join(" "),s.li&&e(s.li).toggleClass(d.lastsib,u))},nodeSetActive:function(t,n,i){i=i||{};var s,r=t.node,o=t.tree,a=t.options,u=!0===i.noEvents,l=!0===i.noFocus,d=!1!==i.scrollIntoView;return r===o.activeNode==(n=!1!==n)?C(r):n&&!u&&!1===this._triggerNodeEvent("beforeActivate",r,t.originalEvent)?S(r,["rejected"]):(n?(o.activeNode&&(_(o.activeNode!==r,"node was active (inconsistency)"),s=e.extend({},t,{node:o.activeNode}),o.nodeSetActive(s,!1),_(null===o.activeNode,"deactivate was out of sync?")),a.activeVisible&&r.makeVisible({scrollIntoView:d}),o.activeNode=r,o.nodeRenderStatus(t),l||o.nodeSetFocus(t),u||o._triggerNodeEvent("activate",r,t.originalEvent)):(_(o.activeNode===r,"node was not active (inconsistency)"),o.activeNode=null,this.nodeRenderStatus(t),u||t.tree._triggerNodeEvent("deactivate",r,t.originalEvent)),C(r))},nodeSetExpanded:function(t,n,i){i=i||{};var s,r,o,a,u,l,d=t.node,c=t.tree,h=t.options,p=!0===i.noAnimation,f=!0===i.noEvents;if(n=!1!==n,d.expanded&&n||!d.expanded&&!n)return C(d);if(n&&!d.lazy&&!d.hasChildren())return C(d);if(!n&&d.getLevel()<h.minExpandLevel)return S(d,["locked"]);if(!f&&!1===this._triggerNodeEvent("beforeExpand",d,t.originalEvent))return S(d,["rejected"]);if(p||d.isVisible()||(p=i.noAnimation=!0),r=new e.Deferred,n&&!d.expanded&&h.autoCollapse){u=d.getParentList(!1,!0),l=h.autoCollapse;try{for(h.autoCollapse=!1,o=0,a=u.length;o<a;o++)this._callHook("nodeCollapseSiblings",u[o],i)}finally{h.autoCollapse=l}}return r.done((function(){var e=d.getLastChild();n&&h.autoScroll&&!p&&e?e.scrollIntoView(!0,{topNode:d}).always((function(){f||t.tree._triggerNodeEvent(n?"expand":"collapse",t)})):f||t.tree._triggerNodeEvent(n?"expand":"collapse",t)})),s=function(i){var s=h._classNames,r=h.toggleEffect;if(d.expanded=n,c._callHook("treeStructureChanged",t,n?"expand":"collapse"),c._callHook("nodeRender",t,!1,!1,!0),d.ul)if("none"!==d.ul.style.display==!!d.expanded)d.warn("nodeSetExpanded: UL.style.display already set");else{if(r&&!p)return e(d.li).addClass(s.animating),void(e.isFunction(e(d.ul)[r.effect])?(c.debug("use jquery."+r.effect+" method"),e(d.ul)[r.effect]({duration:r.duration,always:function(){e(this).removeClass(s.animating),e(d.li).removeClass(s.animating),i()}})):(e(d.ul).stop(!0,!0),e(d.ul).parent().find(".ui-effects-placeholder").remove(),e(d.ul).toggle(r.effect,r.options,r.duration,(function(){e(this).removeClass(s.animating),e(d.li).removeClass(s.animating),i()}))));d.ul.style.display=d.expanded||!parent?"":"none"}i()},n&&d.lazy&&void 0===d.hasChildren()?d.load().done((function(){r.notifyWith&&r.notifyWith(d,["loaded"]),s((function(){r.resolveWith(d)}))})).fail((function(e){s((function(){r.rejectWith(d,["load failed ("+e+")"])}))})):s((function(){r.resolveWith(d)})),r.promise()},nodeSetFocus:function(t,n){var i,s=t.tree,r=t.node,o=s.options,a=!!t.originalEvent&&e(t.originalEvent.target).is(":input");if(n=!1!==n,s.focusNode){if(s.focusNode===r&&n)return;i=e.extend({},t,{node:s.focusNode}),s.focusNode=null,this._triggerNodeEvent("blur",i),this._callHook("nodeRenderStatus",i)}n&&(this.hasFocus()||(r.debug("nodeSetFocus: forcing container focus"),this._callHook("treeSetFocus",t,!0,{calledByNode:!0})),r.makeVisible({scrollIntoView:!1}),s.focusNode=r,o.titlesTabbable&&(a||e(r.span).find(".fancytree-title").focus()),o.aria&&e(s.$container).attr("aria-activedescendant",e(r.tr||r.li).uniqueId().attr("id")),this._triggerNodeEvent("focus",t),document.activeElement===s.$container.get(0)||e(document.activeElement,s.$container).length>=1||e(s.$container).focus(),o.autoScroll&&r.scrollIntoView(),this._callHook("nodeRenderStatus",t))},nodeSetSelected:function(e,t,n){n=n||{};var s=e.node,r=e.tree,o=e.options,a=!0===n.noEvents,u=s.parent;if(t=!1!==t,!i.evalOption("unselectable",s,s,o,!1)){if(s._lastSelectIntent=t,!!s.selected===t&&(3!==o.selectMode||!s.partsel||t))return t;if(!a&&!1===this._triggerNodeEvent("beforeSelect",s,e.originalEvent))return!!s.selected;t&&1===o.selectMode?(r.lastSelectedNode&&r.lastSelectedNode.setSelected(!1),s.selected=t):3!==o.selectMode||!u||u.radiogroup||s.radiogroup?u&&u.radiogroup?s.visitSiblings((function(e){e._changeSelectStatusAttrs(t&&e===s)}),!0):s.selected=t:(s.selected=t,s.fixSelection3AfterClick(n)),this.nodeRenderStatus(e),r.lastSelectedNode=t?s:null,a||r._triggerNodeEvent("select",e)}},nodeSetStatus:function(t,n,i,s){var r=t.node,o=t.tree;function a(n,i){var s=r.children?r.children[0]:null;return s&&s.isStatusNode()?(e.extend(s,n),s.statusNodeType=i,o._callHook("nodeRenderTitle",s)):(r._setChildren([n]),o._callHook("treeStructureChanged",t,"setStatusNode"),r.children[0].statusNodeType=i,o.render()),r.children[0]}switch(n){case"ok":!function(){var e=r.children?r.children[0]:null;if(e&&e.isStatusNode()){try{r.ul&&(r.ul.removeChild(e.li),e.li=null)}catch(e){}1===r.children.length?r.children=[]:r.children.shift(),o._callHook("treeStructureChanged",t,"clearStatusNode")}}(),r._isLoading=!1,r._error=null,r.renderStatus();break;case"loading":r.parent||a({title:o.options.strings.loading+(i?" ("+i+")":""),checkbox:!1,tooltip:s},n),r._isLoading=!0,r._error=null,r.renderStatus();break;case"error":a({title:o.options.strings.loadError+(i?" ("+i+")":""),checkbox:!1,tooltip:s},n),r._isLoading=!1,r._error={message:i,details:s},r.renderStatus();break;case"nodata":a({title:i||o.options.strings.noData,checkbox:!1,tooltip:s},n),r._isLoading=!1,r._error=null,r.renderStatus();break;default:e.error("invalid node status "+n)}},nodeToggleExpanded:function(e){return this.nodeSetExpanded(e,!e.node.expanded)},nodeToggleSelected:function(e){var t=e.node,n=!t.selected;return t.partsel&&!t.selected&&!0===t._lastSelectIntent&&(n=!1,t.selected=!0),t._lastSelectIntent=n,this.nodeSetSelected(e,n)},treeClear:function(e){var t=e.tree;t.activeNode=null,t.focusNode=null,t.$div.find(">ul.fancytree-container").empty(),t.rootNode.children=null,t._callHook("treeStructureChanged",e,"clear")},treeCreate:function(e){},treeDestroy:function(e){this.$div.find(">ul.fancytree-container").remove(),this.$source&&this.$source.removeClass("fancytree-helper-hidden")},treeInit:function(t){var n=t.tree,i=n.options;n.$container.attr("tabindex",i.tabindex),e.each(f,(function(e,t){void 0!==i[t]&&(n.info("Move option "+t+" to tree"),n[t]=i[t],delete i[t])})),i.checkboxAutoHide&&n.$container.addClass("fancytree-checkbox-auto-hide"),i.rtl?n.$container.attr("DIR","RTL").addClass("fancytree-rtl"):n.$container.removeAttr("DIR").removeClass("fancytree-rtl"),i.aria&&(n.$container.attr("role","tree"),1!==i.selectMode&&n.$container.attr("aria-multiselectable",!0)),this.treeLoad(t)},treeLoad:function(t,n){var i,s,r,o=t.tree,a=t.widget.element,u=e.extend({},t,{node:this.rootNode});if(o.rootNode.children&&this.treeClear(t),n=n||this.options.source)"string"==typeof n&&e.error("Not implemented");else switch(s=a.data("type")||"html"){case"html":(r=a.find(">ul").first()).addClass("ui-fancytree-source fancytree-helper-hidden"),n=e.ui.fancytree.parseHtml(r),this.data=e.extend(this.data,N(r));break;case"json":n=e.parseJSON(a.text()),a.contents().filter((function(){return 3===this.nodeType})).remove(),e.isPlainObject(n)&&(_(e.isArray(n.children),"if an object is passed as source, it must contain a 'children' array (all other properties are added to 'tree.data')"),i=n,n=n.children,delete i.children,e.each(f,(function(e,t){void 0!==i[t]&&(o[t]=i[t],delete i[t])})),e.extend(o.data,i));break;default:e.error("Invalid data-type: "+s)}return this.nodeLoadChildren(u,n).done((function(){o._callHook("treeStructureChanged",t,"loadChildren"),o.render(),3===t.options.selectMode&&o.rootNode.fixSelection3FromEndNodes(),o.activeNode&&o.options.activeVisible&&o.activeNode.makeVisible(),o._triggerTreeEvent("init",null,{status:!0})})).fail((function(){o.render(),o._triggerTreeEvent("init",null,{status:!1})}))},treeRegisterNode:function(e,t,n){e.tree._callHook("treeStructureChanged",e,t?"addNode":"removeNode")},treeSetFocus:function(t,n,i){var s;(n=!1!==n)!==this.hasFocus()&&(this._hasFocus=n,!n&&this.focusNode?this.focusNode.setFocus(!1):!n||i&&i.calledByNode||e(this.$container).focus(),this.$container.toggleClass("fancytree-treefocus",n),this._triggerTreeEvent(n?"focusTree":"blurTree"),n&&!this.activeNode&&(s=this._lastMousedownNode||this.getFirstChild())&&s.setFocus())},treeSetOption:function(t,n,i){var s=t.tree,r=!0,o=!1,a=!1;switch(n){case"aria":case"checkbox":case"icon":case"minExpandLevel":case"tabindex":o=!0,a=!0;break;case"checkboxAutoHide":s.$container.toggleClass("fancytree-checkbox-auto-hide",!!i);break;case"escapeTitles":case"tooltip":a=!0;break;case"rtl":!1===i?s.$container.removeAttr("DIR").removeClass("fancytree-rtl"):s.$container.attr("DIR","RTL").addClass("fancytree-rtl"),a=!0;break;case"source":r=!1,s._callHook("treeLoad",s,i),a=!0}s.debug("set option "+n+"="+i+" <"+typeof i+">"),r&&(this.widget._super?this.widget._super.call(this.widget,n,i):e.Widget.prototype._setOption.call(this.widget,n,i)),o&&s._callHook("treeCreate",s),a&&s.render(!0,!1)},treeStructureChanged:function(e,t){}}),e.widget("ui.fancytree",{options:{activeVisible:!0,ajax:{type:"GET",cache:!1,dataType:"json"},aria:!0,autoActivate:!0,autoCollapse:!1,autoScroll:!1,checkbox:!1,clickFolderMode:4,debugLevel:null,disabled:!1,enableAspx:!0,escapeTitles:!1,extensions:[],toggleEffect:{effect:"slideToggle",duration:200},generateIds:!1,icon:!0,idPrefix:"ft_",focusOnSelect:!1,keyboard:!0,keyPathSeparator:"/",minExpandLevel:1,nodata:!0,quicksearch:!1,rtl:!1,scrollOfs:{top:0,bottom:0},scrollParent:null,selectMode:2,strings:{loading:"Loading...",loadError:"Load error!",moreData:"More...",noData:"No data."},tabindex:"0",titlesTabbable:!1,tooltip:!1,treeId:null,_classNames:{node:"fancytree-node",folder:"fancytree-folder",animating:"fancytree-animating",combinedExpanderPrefix:"fancytree-exp-",combinedIconPrefix:"fancytree-ico-",hasChildren:"fancytree-has-children",active:"fancytree-active",selected:"fancytree-selected",expanded:"fancytree-expanded",lazy:"fancytree-lazy",focused:"fancytree-focused",partload:"fancytree-partload",partsel:"fancytree-partsel",radio:"fancytree-radio",unselectable:"fancytree-unselectable",lastsib:"fancytree-lastsib",loading:"fancytree-loading",error:"fancytree-error",statusNodePrefix:"fancytree-statusnode-"},lazyLoad:null,postProcess:null},_create:function(){this.tree=new D(this),this.$source=this.source||"json"===this.element.data("type")?this.element:this.element.find(">ul").first();var t,n,i,s=this.options,r=s.extensions;this.tree;for(i=0;i<r.length;i++)n=r[i],(t=e.ui.fancytree._extensions[n])||e.error("Could not apply extension '"+n+"' (it is not registered, did you forget to include it?)"),this.tree.options[n]=b({},t.options,this.tree.options[n]),_(void 0===this.tree.ext[n],"Extension name must not exist as Fancytree.ext attribute: '"+n+"'"),this.tree.ext[n]={},k(this.tree,0,t,n),t;void 0!==s.icons&&(!0===s.icon?(this.tree.warn("'icons' tree option is deprecated since v2.14.0: use 'icon' instead"),s.icon=s.icons):e.error("'icons' tree option is deprecated since v2.14.0: use 'icon' only instead")),void 0!==s.iconClass&&(s.icon?e.error("'iconClass' tree option is deprecated since v2.14.0: use 'icon' only instead"):(this.tree.warn("'iconClass' tree option is deprecated since v2.14.0: use 'icon' instead"),s.icon=s.iconClass)),void 0!==s.tabbable&&(s.tabindex=s.tabbable?"0":"-1",this.tree.warn("'tabbable' tree option is deprecated since v2.17.0: use 'tabindex='"+s.tabindex+"' instead")),this.tree._callHook("treeCreate",this.tree)},_init:function(){this.tree._callHook("treeInit",this.tree),this._bind()},_setOption:function(e,t){return this.tree._callHook("treeSetOption",this.tree,e,t)},destroy:function(){this._unbind(),this.tree._callHook("treeDestroy",this.tree),e.Widget.prototype.destroy.call(this)},_unbind:function(){var t=this.tree._ns;this.element.off(t),this.tree.$container.off(t),e(document).off(t)},_bind:function(){var t=this,n=this.options,s=this.tree,r=s._ns;this._unbind(),s.$container.on("focusin"+r+" focusout"+r,(function(t){var n=i.getNode(t),r="focusin"===t.type;if(!r&&n&&e(t.target).is("a"))n.debug("Ignored focusout on embedded <a> element.");else{if(r){if(s._getExpiringValue("focusin"))return void s.debug("Ignored double focusin.");s._setExpiringValue("focusin",!0,50),n||(n=s._getExpiringValue("mouseDownNode"))&&s.debug("Reconstruct mouse target for focusin from recent event.")}n?s._callHook("nodeSetFocus",s._makeHookContext(n,t),r):s.tbody&&e(t.target).parents("table.fancytree-container > thead").length?s.debug("Ignore focus event outside table body.",t):s._callHook("treeSetFocus",s,r)}})).on("selectstart"+r,"span.fancytree-title",(function(e){e.preventDefault()})).on("keydown"+r,(function(e){if(n.disabled||!1===n.keyboard)return!0;var t,i=s.focusNode,r=s._makeHookContext(i||s,e),o=s.phase;try{return s.phase="userEvent","preventNav"===(t=i?s._triggerNodeEvent("keydown",i,e):s._triggerTreeEvent("keydown",e))?t=!0:!1!==t&&(t=s._callHook("nodeKeydown",r)),t}finally{s.phase=o}})).on("mousedown"+r,(function(e){var t=i.getEventTarget(e);s._lastMousedownNode=t?t.node:null,s._setExpiringValue("mouseDownNode",s._lastMousedownNode)})).on("click"+r+" dblclick"+r,(function(e){if(n.disabled)return!0;var s,r=i.getEventTarget(e),o=r.node,a=t.tree,u=a.phase;if(!o)return!0;s=a._makeHookContext(o,e);try{switch(a.phase="userEvent",e.type){case"click":return s.targetType=r.type,o.isPagingNode()?!0===a._triggerNodeEvent("clickPaging",s,e):!1!==a._triggerNodeEvent("click",s,e)&&a._callHook("nodeClick",s);case"dblclick":return s.targetType=r.type,!1!==a._triggerNodeEvent("dblclick",s,e)&&a._callHook("nodeDblclick",s)}}finally{a.phase=u}}))},getActiveNode:function(){return this.tree.activeNode},getNodeByKey:function(e){return this.tree.getNodeByKey(e)},getRootNode:function(){return this.tree.rootNode},getTree:function(){return this.tree}}),i=e.ui.fancytree,e.extend(e.ui.fancytree,{version:"2.32.0",buildType:"production",debugLevel:3,_nextId:1,_nextNodeKey:1,_extensions:{},_FancytreeClass:D,_FancytreeNodeClass:L,jquerySupports:{positionMyOfs:function(t,n,i,s){var r,o,a,u=e.map(e.trim(t).split("."),(function(e){return parseInt(e,10)})),l=e.map(Array.prototype.slice.call(arguments,1),(function(e){return parseInt(e,10)}));for(r=0;r<l.length;r++)if(o=u[r]||0,a=l[r]||0,o!==a)return o>a;return!0}(e.ui.version,1,9)},assert:function(e,t){return _(e,t)},createTree:function(t,n){return e(t).fancytree(n).fancytree("getTree")},debounce:function(e,t,n,i){var s;return 3===arguments.length&&"boolean"!=typeof n&&(i=n,n=!1),function(){var r=arguments;i=i||this,n&&!s&&t.apply(i,r),clearTimeout(s),s=setTimeout((function(){n||t.apply(i,r),s=null}),e)}},debug:function(t){e.ui.fancytree.debugLevel>=4&&w("log",arguments)},error:function(t){e.ui.fancytree.debugLevel>=1&&w("error",arguments)},escapeHtml:function(e){return(""+e).replace(r,(function(e){return a[e]}))},fixPositionOptions:function(t){if((t.offset||(""+t.my+t.at).indexOf("%")>=0)&&e.error("expected new position syntax (but '%' is not supported)"),!e.ui.fancytree.jquerySupports.positionMyOfs){var n=/(\w+)([+-]?\d+)?\s+(\w+)([+-]?\d+)?/.exec(t.my),i=/(\w+)([+-]?\d+)?\s+(\w+)([+-]?\d+)?/.exec(t.at),s=(n[2]?+n[2]:0)+(i[2]?+i[2]:0),r=(n[4]?+n[4]:0)+(i[4]?+i[4]:0);t=e.extend({},t,{my:n[1]+" "+n[3],at:i[1]+" "+i[3]}),(s||r)&&(t.offset=s+" "+r)}return t},getEventTarget:function(t){var n,s=t&&t.target?t.target.className:"",r={node:this.getNode(t.target),type:void 0};return/\bfancytree-title\b/.test(s)?r.type="title":/\bfancytree-expander\b/.test(s)?r.type=!1===r.node.hasChildren()?"prefix":"expander":/\bfancytree-checkbox\b/.test(s)?r.type="checkbox":/\bfancytree(-custom)?-icon\b/.test(s)?r.type="icon":/\bfancytree-node\b/.test(s)?r.type="title":t&&t.target&&((n=e(t.target)).is("ul[role=group]")?((r.node&&r.node.tree||i).debug("Ignoring click on outer UL."),r.node=null):n.closest(".fancytree-title").length?r.type="title":n.closest(".fancytree-checkbox").length?r.type="checkbox":n.closest(".fancytree-expander").length&&(r.type="expander")),r},getEventTargetType:function(e){return this.getEventTarget(e).type},getNode:function(t){if(t instanceof L)return t;for(t instanceof e?t=t[0]:void 0!==t.originalEvent&&(t=t.target);t;){if(t.ftnode)return t.ftnode;t=t.parentNode}return null},getTree:function(t){var n,i=t;return t instanceof D?t:(void 0===t&&(t=0),"number"==typeof t?t=e(".fancytree-container").eq(t):"string"==typeof t?(t=e("#ft-id-"+i).eq(0)).length||(t=e(i).eq(0)):t instanceof e?t=t.eq(0):void 0!==t.originalEvent&&(t=e(t.target)),(n=(t=t.closest(":ui-fancytree")).data("ui-fancytree")||t.data("fancytree"))?n.tree:null)},evalOption:function(t,n,i,s,r){var o,a,u=n.tree,l=s[t],d=i[t];return e.isFunction(l)?(o={node:n,tree:u,widget:u.widget,options:u.widget.options,typeInfo:u.types[n.type]||{}},null==(a=l.call(u,{type:t},o))&&(a=d)):a=null==d?l:d,null==a&&(a=r),a},setSpanIcon:function(t,n,i){var s=e(t);"string"==typeof i?s.attr("class",n+" "+i):(i.text?s.text(""+i.text):i.html&&(t.innerHTML=i.html),s.attr("class",n+" "+(i.addClass||"")))},eventToString:function(e){var t=e.which,n=e.type,i=[];return e.altKey&&i.push("alt"),e.ctrlKey&&i.push("ctrl"),e.metaKey&&i.push("meta"),e.shiftKey&&i.push("shift"),"click"===n||"dblclick"===n?i.push(c[e.button]+n):"wheel"===n?i.push(n):u[t]||i.push(l[t]||String.fromCharCode(t).toLowerCase()),i.join("+")},info:function(t){e.ui.fancytree.debugLevel>=3&&w("info",arguments)},keyEventToString:function(e){return this.warn("keyEventToString() is deprecated: use eventToString()"),this.eventToString(e)},overrideMethod:function(t,n,i,s){var r,o=t[n]||e.noop;t[n]=function(){var e=s||this;try{return r=e._super,e._super=o,i.apply(e,arguments)}finally{e._super=r}}},parseHtml:function(t){var n,i,s,r,o,a,u,l,d=t.find(">li"),c=[];return d.each((function(){var d,f,g=e(this),y=g.find(">span",this).first(),_=y.length?null:g.find(">a").first(),w={tooltip:null,data:{}};for(y.length?w.title=y.html():_&&_.length?(w.title=_.html(),w.data.href=_.attr("href"),w.data.target=_.attr("target"),w.tooltip=_.attr("title")):(w.title=g.html(),(o=w.title.search(/<ul/i))>=0&&(w.title=w.title.substring(0,o))),w.title=e.trim(w.title),r=0,a=h.length;r<a;r++)w[h[r]]=void 0;for(n=this.className.split(" "),s=[],r=0,a=n.length;r<a;r++)i=n[r],p[i]?w[i]=!0:s.push(i);if(w.extraClasses=s.join(" "),(u=g.attr("title"))&&(w.tooltip=u),(u=g.attr("id"))&&(w.key=u),g.attr("hideCheckbox")&&(w.checkbox=!1),(d=N(g))&&!e.isEmptyObject(d)){for(f in v)d.hasOwnProperty(f)&&(d[v[f]]=d[f],delete d[f]);for(r=0,a=m.length;r<a;r++)u=m[r],null!=(l=d[u])&&(delete d[u],w[u]=l);e.extend(w.data,d)}(t=g.find(">ul").first()).length?w.children=e.ui.fancytree.parseHtml(t):w.children=w.lazy?void 0:null,c.push(w)})),c},registerExtension:function(t){_(null!=t.name,"extensions must have a `name` property."),_(null!=t.version,"extensions must have a `version` property."),e.ui.fancytree._extensions[t.name]=t},unescapeHtml:function(e){var t=document.createElement("div");return t.innerHTML=e,0===t.childNodes.length?"":t.childNodes[0].nodeValue},warn:function(t){e.ui.fancytree.debugLevel>=2&&w("warn",arguments)}}),e.ui.fancytree}function _(t,n){t||(n=n?": "+n:"",e.error("Fancytree assertion failed"+n))}function w(e,t){var n,i,s=window.console?window.console[e]:null;if(s)try{s.apply(window.console,t)}catch(e){for(i="",n=0;n<t.length;n++)i+=t[n];s(i)}}function b(){var t,n,i,s,r,o=arguments[0]||{},a=1,u=arguments.length;if("object"==typeof o||e.isFunction(o)||(o={}),a===u)throw Error("need at least two args");for(;a<u;a++)if(null!=(t=arguments[a]))for(n in t)if(t.hasOwnProperty(n)){if(i=o[n],o===(s=t[n]))continue;s&&e.isPlainObject(s)?(r=i&&e.isPlainObject(i)?i:{},o[n]=b(r,s)):void 0!==s&&(o[n]=s)}return o}function x(e,t,n,i,s){var r,o,a,u,l;return r=t[e],o=i[e],a=t.ext[s],u=function(){return r.apply(t,arguments)},l=function(e){return r.apply(t,e)},function(){var e=t._local,n=t._super,i=t._superApply;try{return t._local=a,t._super=u,t._superApply=l,o.apply(t,arguments)}finally{t._local=e,t._super=n,t._superApply=i}}}function k(t,n,i,s){for(var r in i)"function"==typeof i[r]?"function"==typeof t[r]?t[r]=x(r,t,0,i,s):"_"===r.charAt(0)?t.ext[s][r]=x(r,t,0,i,s):e.error("Could not override tree."+r+". Use prefix '_' to create tree."+s+"._"+r):"options"!==r&&(t.ext[s][r]=i[r])}function C(t,n){return void 0===t?e.Deferred((function(){this.resolve()})).promise():e.Deferred((function(){this.resolveWith(t,n)})).promise()}function S(t,n){return void 0===t?e.Deferred((function(){this.reject()})).promise():e.Deferred((function(){this.rejectWith(t,n)})).promise()}function T(e,t){return function(){e.resolveWith(t)}}function N(t){var n=e.extend({},t.data()),i=n.json;return delete n.fancytree,delete n.uiFancytree,i&&(delete n.json,n=e.extend(n,i)),n}function E(e){return(""+e).replace(o,(function(e){return a[e]}))}function j(e){return e=e.toLowerCase(),function(t){return t.title.toLowerCase().indexOf(e)>=0}}function L(t,n){var s,r,o,a;for(this.parent=t,this.tree=t.tree,this.ul=null,this.li=null,this.statusNodeType=null,this._isLoading=!1,this._error=null,this.data={},s=0,r=m.length;s<r;s++)this[o=m[s]]=n[o];for(o in null==this.unselectableIgnore&&null==this.unselectableStatus||(this.unselectable=!0),n.hideCheckbox&&e.error("'hideCheckbox' node option was removed in v2.23.0: use 'checkbox: false'"),n.data&&e.extend(this.data,n.data),n)g[o]||e.isFunction(n[o])||y[o]||(this.data[o]=n[o]);null==this.key?this.tree.options.defaultKey?(this.key=this.tree.options.defaultKey(this),_(this.key,"defaultKey() must return a unique key")):this.key="_"+i._nextNodeKey++:this.key=""+this.key,n.active&&(_(null===this.tree.activeNode,"only one active node allowed"),this.tree.activeNode=this),n.selected&&(this.tree.lastSelectedNode=this),(a=n.children)?a.length?this._setChildren(a):this.children=this.lazy?[]:null:this.children=null,this.tree._callHook("treeRegisterNode",this.tree,!0,this)}function D(t){this.widget=t,this.$div=t.element,this.options=t.options,this.options&&(void 0!==this.options.lazyload&&e.error("The 'lazyload' event is deprecated since 2014-02-25. Use 'lazyLoad' (with uppercase L) instead."),void 0!==this.options.loaderror&&e.error("The 'loaderror' event was renamed since 2014-07-03. Use 'loadError' (with uppercase E) instead."),void 0!==this.options.fx&&e.error("The 'fx' option was replaced by 'toggleEffect' since 2014-11-30."),void 0!==this.options.removeNode&&e.error("The 'removeNode' event was replaced by 'modifyChild' since 2.20 (2016-09-10).")),this.ext={},this.types={},this.columns={},this.data=N(this.$div),this._id=""+(this.options.treeId||e.ui.fancytree._nextId++),this._ns=".fancytree-"+this._id,this.activeNode=null,this.focusNode=null,this._hasFocus=null,this._tempCache={},this._lastMousedownNode=null,this._enableUpdate=!0,this.lastSelectedNode=null,this.systemFocusElement=null,this.lastQuicksearchTerm="",this.lastQuicksearchTime=0,this.viewport=null,this.statusClassPropName="span",this.ariaPropName="li",this.nodeContainerAttrName="li",this.$div.find(">ul.fancytree-container").remove();var n,s={tree:this};this.rootNode=new L(s,{title:"root",key:"root_"+this._id,children:null,expanded:!0}),this.rootNode.parent=null,n=e("<ul>",{id:"ft-id-"+this._id,class:"ui-fancytree fancytree-container fancytree-plain"}).appendTo(this.$div),this.$container=n,this.rootNode.ul=n[0],null==this.options.debugLevel&&(this.options.debugLevel=i.debugLevel)}e.ui.fancytree.warn("Fancytree: ignored duplicate include")})?i.apply(t,s):i)||(e.exports=r)},,,,,,,,,,function(e,t,n){var i=i||{};window.WP_Smush=i,String.prototype.includes||(String.prototype.includes=function(e,t){return"number"!=typeof t&&(t=0),!(t+e.length>this.length)&&-1!==this.indexOf(e,t)}),n(16),n(17),n(18),n(19),n(20),n(22),n(23),n(24),n(25)},function(e,t){!function(e){"use strict";WP_Smush.helpers={init:function(){},formatBytes:function(e,t){var n=["KB","MB","GB","TB","PB"];if(Math.abs(e)<1024)return e+" B";var i=-1;do{e/=1024,++i}while(Math.abs(e)>=1024&&i<n.length-1);return e.toFixed(t)+" "+n[i]},getSizeFromString:function(e){return e.replace(/[a-zA-Z]/g,"").trim()},getFormatFromString:function(e){return e.replace(/[0-9.]/g,"").trim()},precise_round:function(e,t){var n=e>=0?1:-1;return e=e>100?100:e,Math.round(e*Math.pow(10,t)+.001*n)/Math.pow(10,t)},findPos:function(e){var t=0;if(e.offsetParent){do{t+=e.offsetTop}while(e=e.offsetParent);return[t]}},geturlparam:function(e){for(var t=window.location.search.substring(1).split("&"),n=0;n<t.length;n++){var i=t[n].split("=");if(i[0]===e)return i[1]}},resetSettings:function(){var e=new XMLHttpRequest;e.open("POST",ajaxurl+"?action=reset_settings",!0),e.setRequestHeader("Content-type","application/x-www-form-urlencoded"),e.onload=function(){if(200===e.status){var t=JSON.parse(e.response);void 0!==t.success&&t.success&&(window.location.href=wp_smush_msgs.smush_url)}else console.log("Request failed. Returned status of "+e.status)},e.send("_ajax_nonce="+smush_vars.nonce.get_smush_status)}},WP_Smush.helpers.init()}(jQuery)},function(e,t,n){"use strict";n.r(t);var i=n(0),s=function(e,t){void 0===t&&(t=100),e.fadeTo(t,0,(function(){e.slideUp(t,(function(){e.remove()}))}))};jQuery((function(e){var t=function(t,n,s,r){if("disabled"==n.attr("disabled"))return!1;t.preventDefault(),e(".wp-smush-error").remove(),e(".smush-stats-wrapper").hide();var o="grid";"smush_restore_image"==s&&(o=e(document).find("div.media-modal.wp-core-ui").length>0?"grid":window.location.search.indexOf("item")>-1?"grid":"list");var a={action:s,attachment_id:n.data("id"),mode:o,_nonce:n.data("nonce")};!function(e){var t=e.parent();t.css({opacity:"0.5"}),t.find("a").attr("disabled","disabled")}(n),i.a.progressBar(n,wp_smush_msgs[r],"show"),e.post(ajaxurl,a,(function(e){i.a.progressBar(n,wp_smush_msgs[r],"hide"),function(e){var t=e.parent();t.css({opacity:"1"}),t.find("a").removeAttr("disabled")}(n),e.success&&void 0!==e.data.button?(void 0!==this.data&&this.data.indexOf("nextgen")>-1?n.parent().html(e.data.button):n.parents().eq(1).html(e.data.button),void 0!==e.data&&"restore"===r&&i.a.updateImageStats(e.data.new_size)):e.data.message&&n.parent().append(e.data.message)}))},n=function(t){var n=e(".wp-smush-scan");n.text("").addClass("sui-button-onload sui-icon-loader sui-loading").blur();var r=n.data("type");r=void 0===r?"media":r,e(".wp-smush-all").removeAttr("data-smush");var o=e(".sui-notice-top.sui-notice-success");o.slideUp(100,(function(){o.remove()})),e(".wp-smush-all").attr("disabled","disabled"),e(".wp-smush-settings-changed").hide();var a={action:"scan_for_resmush",type:r,get_ui:!0,process_settings:t,wp_smush_options_nonce:jQuery("#wp_smush_options_nonce").val()};e.get(ajaxurl,a,(function(t){if(void 0!==t.data){if(void 0!==t.data.resmush_ids){wp_smushit_data.resmush=t.data.resmush_ids,"undefinied"!=typeof wp_smushit_data&&(wp_smushit_data.count_smushed=void 0!==t.data.count_smushed?t.data.count_smushed:wp_smushit_data.count_smushed,wp_smushit_data.count_supersmushed=void 0!==t.data.count_supersmushed?t.data.count_supersmushed:wp_smushit_data.count_supersmushed,wp_smushit_data.count_images=void 0!==t.data.count_image?t.data.count_image:wp_smushit_data.count_images,wp_smushit_data.size_before=void 0!==t.data.size_before?t.data.size_before:wp_smushit_data.size_before,wp_smushit_data.size_after=void 0!==t.data.size_after?t.data.size_after:wp_smushit_data.size_after,wp_smushit_data.savings_resize=void 0!==t.data.savings_resize?t.data.savings_resize:wp_smushit_data.savings_resize,wp_smushit_data.savings_conversion=void 0!==t.data.savings_conversion?t.data.savings_conversion:wp_smushit_data.savings_conversion,wp_smushit_data.count_resize=void 0!==t.data.count_resize?t.data.count_resize:wp_smushit_data.count_resize),"nextgen"===r&&(wp_smushit_data.bytes=parseInt(wp_smushit_data.size_before)-parseInt(wp_smushit_data.size_after));var n=e(".bulk-smush-wrapper .sui-notice");n.length>0&&(n.hide(),e(".wp-smush-pagespeed-recommendation").hide()),e(".wp-smush-resmush-notice").remove(),e(".wp-smush-bulk-wrapper").show()}if(void 0!==t.data.content&&e(".bulk-smush-wrapper .sui-box-body > p:first-of-type").after(t.data.content),void 0!==t.data.notice&&e(".wp-smush-page-header").after(t.data.notice),e("div.smush-final-log").hide(),void 0!==t.data.super_smush&&t.data.super_smush){var s=jQuery(".wp-smush-enable-lossy");s.length>0&&s.remove(),"undefined"!==t.data.super_smush_stats&&e(".super-smush-attachments .wp-smush-stats").html(t.data.super_smush_stats)}i.a.updateStats(r)}})).always((function(){jQuery(".bulk-smush-wrapper .wp-smush-bulk-progress-bar-wrapper").hide(),n.text(wp_smush_msgs.resmush_complete).removeClass("sui-button-onload sui-icon-loader sui-loading").addClass("smush-button-check-success"),setTimeout((function(){n.removeClass("smush-button-check-success").html('<i class="sui-icon-update" aria-hidden="true"></i>'+wp_smush_msgs.resmush_check)}),2e3),e(".wp-smush-all").removeAttr("disabled");var t=e(".wp-smush-re-check-message");t.length&&s(t)}))},r=function(t){e(t).length>0&&e("html, body").animate({scrollTop:e(t).offset().top-100},"slow")};e("#all-image-sizes").on("change",(function(){e('input[name^="wp-smush-image_sizes"]').prop("checked",!0)})),e("#wp-smush-update-api-status").on("click",(function(t){t.preventDefault(),e(this).addClass("sui-button-onload"),e.post(ajaxurl,{action:"recheck_api_status"},(function(){location.reload()}))})),e("body").on("click","a.smush-stats-details",(function(t){if("disabled"==e(this).attr("disabled"))return!1;t.preventDefault();var n=e(this).find(".stats-toggle");e(this).parents().eq(1).find(".smush-stats-wrapper").slideToggle(),n.text("+"==n.text()?"-":"+")})),e("body").on("click",".wp-smush-send:not(.wp-smush-resmush)",(function(t){t.preventDefault(),new i.a(e(this),!1)})),e("body").on("click",".wp-smush-remove-skipped",(function(t){t.preventDefault(),e.post(ajaxurl,{action:"remove_from_skip_list",id:e(this).attr("data-id")}),s(e(this))})),e("body").on("click",".wp-smush-nextgen-send",(function(t){t.preventDefault(),new i.a(e(this),!1,"nextgen")})),e("body").on("click",".wp-smush-nextgen-bulk",(function(t){if(t.preventDefault(),e(".wp-smush-resmush-notice").remove(),"undefined"==typeof wp_smushit_data||0===wp_smushit_data.unsmushed.length&&0===wp_smushit_data.resmush.length)return!1;jQuery(".wp-smush-all, .wp-smush-scan").attr("disabled","disabled"),e(".wp-smush-notice.wp-smush-remaining").hide(),new i.a(e(this),!0,"nextgen")})),e("body").on("click",".wp-smush-action.wp-smush-restore",(function(n){var i=e(this);t(n,i,"smush_restore_image","restore");var s=i.parents().eq(1);s.hasClass("smushed")&&s.removeClass("smushed").addClass("unsmushed")})),e("body").on("click",".wp-smush-action.wp-smush-resmush",(function(n){t(n,e(this),"smush_resmush_image","smushing")})),e("body").on("click",".wp-smush-action.wp-smush-nextgen-restore",(function(n){t(n,e(this),"smush_restore_nextgen_image","restore")})),e("body").on("click",".wp-smush-action.wp-smush-nextgen-resmush",(function(n){t(n,e(this),"smush_resmush_nextgen_image","smushing")})),e(".wp-smush-scan").on("click",(function(e){e.preventDefault(),n(!1)})),e("#wp-smush-welcome-box .smush-dismiss-welcome").on("click",(function(t){t.preventDefault();var n=e(this).parents().eq(1);s(n);e.post(ajaxurl,{action:"dismiss_welcome_notice"})})),e("body").on("click",".wp-smush-notice .icon-fi-close",(function(t){t.preventDefault();var n=e(this).parent();s(n)})),e("input[name=wp-smush-keep_data]").on("change",(function(e){var t="keep_data-true"===e.target.id?"keep_data-false":"keep_data-true";e.target.parentNode.classList.add("active"),document.getElementById(t).parentNode.classList.remove("active")})),e("button#wp-smush-save-settings").on("click",(function(t){t.preventDefault();var n="",i=e('input[name="setting-type"]');i.length>0&&(n=i.val());var s=e(this);if(s.parent().find("span.sui-icon-loader.sui-loading").removeClass("sui-hidden"),""!=n&&"network"==n){var r={action:"save_settings",wp_smush_options_nonce:e("#wp_smush_options_nonce").val()};r=jQuery.param(r)+"&"+jQuery("form#wp-smush-settings-form").serialize(),jQuery.post(ajaxurl,r).done((function(){return jQuery("form#wp-smush-settings-form").submit(),!0}))}else{e(".wp-smush-hex-notice").hide(),s.attr("disabled","disabled").addClass("button-grey"),void 0!==s.attr("data-msg")&&s.attr("data-msg").length>0?s.html(s.attr("data-msg")):s.html(wp_smush_msgs.checking);var o=s.data("type");o=void 0===o?"media":o;var a={action:"scan_for_resmush",wp_smush_options_nonce:jQuery("#wp_smush_options_nonce").val(),type:o};a=jQuery.param(a)+"&"+jQuery("form#wp-smush-settings-form").serialize(),jQuery.post(ajaxurl,a).done((function(){return jQuery("form#wp-smush-settings-form").submit(),!0}))}})),e("body").on("click",".wp-smush-skip-resmush",(function(t){t.preventDefault();var n=jQuery(this),r=n.parents().eq(1),o=n.parent();s(o),e(".sui-notice-top.sui-notice-success").remove(),r.find(".wp-smush-all").attr("data-smush","skip_resmush"),wp_smushit_data.count_smushed=parseInt(wp_smushit_data.count_smushed)+wp_smushit_data.resmush.length,wp_smushit_data.count_supersmushed=parseInt(wp_smushit_data.count_supersmushed)+wp_smushit_data.resmush.length,wp_smushit_data.count_smushed===wp_smushit_data.count_total&&(e(".wp-smush-notice.wp-smush-all-done, .wp-smush-pagespeed-recommendation").show(),e(".wp-smush-bulk-wrapper ").hide()),e(".wp-smush-resmush-notice").remove();var a=e(".wp-smush-scan").data("type");a=void 0===a?"media":a;var u=(void 0!==wp_smushit_data.count_smushed?wp_smushit_data.count_smushed:0)/wp_smushit_data.count_total*100;u=WP_Smush.helpers.precise_round(u,1),e(".wp-smush-images-percent").html(u);var l=jQuery(".bulk-smush-wrapper .wp-smush-progress-inner");if(!(l.length<1)){l.css("width",u+"%"),e(".wp-smush-bulk-wrapper").show(),e(".wp-smush-bulk-wrapper .sui-notice").show();var d={action:"delete_resmush_list",type:a};e.post(ajaxurl,d,(function(t){if(t.success&&void 0!==t.data.stats){var n=t.data.stats;"undefinied"!=typeof wp_smushit_data&&(wp_smushit_data.count_images=void 0!==n.count_images?parseInt(wp_smushit_data.count_images)+n.count_images:wp_smushit_data.count_images,wp_smushit_data.size_before=void 0!==n.size_before?parseInt(wp_smushit_data.size_before)+n.size_before:wp_smushit_data.size_before,wp_smushit_data.size_after=void 0!==n.size_after?parseInt(wp_smushit_data.size_after)+n.size_after:wp_smushit_data.size_after,wp_smushit_data.savings_resize=void 0!==n.savings_resize?parseInt(wp_smushit_data.savings_resize)+n.savings_resize:wp_smushit_data.savings_resize,wp_smushit_data.savings_conversion=void 0!==n.savings_conversion?parseInt(wp_smushit_data.savings_conversion)+n.savings_conversion:wp_smushit_data.savings_conversion,void 0!==wp_smushit_data.savings_dir_smush&&void 0!==wp_smushit_data.savings_dir_smush.orig_size&&(wp_smushit_data.size_before=void 0!==wp_smushit_data.savings_dir_smush?parseInt(wp_smushit_data.size_before)+parseInt(wp_smushit_data.savings_dir_smush.orig_size):wp_smushit_data.size_before,wp_smushit_data.size_after=void 0!==wp_smushit_data.savings_dir_smush?parseInt(wp_smushit_data.size_after)+parseInt(wp_smushit_data.savings_dir_smush.image_size):wp_smushit_data.size_after),wp_smushit_data.count_resize=void 0!==n.count_resize?parseInt(wp_smushit_data.count_resize)+n.count_resize:wp_smushit_data.count_resize);var s=e(".bulk-smush-wrapper .wp-smush-remaining-count");s.length&&void 0!==wp_smushit_data.unsmushed&&s.html(wp_smushit_data.unsmushed.length),void 0===wp_smushit_data.unsmushed&&0!==wp_smushit_data.unsmushed.length||(e(".wp-smush-bulk-wrapper .sui-notice").hide(),e(".sui-notice-success.wp-smush-all-done").show()),i.a.updateStats()}}))}}));var o=function(){e("#wp-smush-resize").prop("checked",!0).focus(),e("div.wp-smush-resize-settings-wrap").show(),r("#column-wp-smush-resize")},a=function(){e("#wp-smush-lossy").prop("checked",!0).focus(),r("#column-wp-smush-lossy")};if(e("a.wp-smush-lossy-enable").on("click",(function(e){e.preventDefault(),a()})),e(".wp-smush-resize-enable").on("click",(function(e){e.preventDefault(),o()})),window.location.hash){var u=window.location.hash.substring(1);"enable-resize"===u?o():"enable-lossy"===u&&a()}if(e("body").on("click",".wp-smush-trigger-bulk",(function(t){t.preventDefault(),e(".wp-smush-all").click(),e("span.sui-notice-dismiss").click()})),e("body").on("click","#bulk-smush-top-notice-close",(function(t){t.preventDefault(),e(this).parent().parent().slideUp("slow")})),e(".wp-smush-setting-row .toggle-checkbox").focus((function(){e(this).keypress((function(t){32==t.keyCode&&(t.preventDefault(),e(this).find(".toggle-checkbox").click())}))})),e("body").on("blur",".wp-smush-resize-input",(function(){!function(e,t,n){var i=e.find("#wp-smush-resize, #wp-smush-resize-quick-setup");if(!n)var s=e.find("#wp-smush-resize_width, #quick-setup-resize_width"),r=e.find(".sui-notice-info.wp-smush-update-width");if(!t)var o=e.find("#wp-smush-resize_height, #quick-setup-resize_height"),a=e.find(".sui-notice-info.wp-smush-update-height");var u=!1,l=!1;!i.is(":checked")||(void 0===wp_smushit_data.resize_sizes||void 0===wp_smushit_data.resize_sizes.width||(!n&&void 0!==s&&parseInt(wp_smushit_data.resize_sizes.width)>parseInt(s.val())?(s.parent().addClass("sui-form-field-error"),r.show("slow"),u=!0):(s.parent().removeClass("sui-form-field-error"),r.hide(),o.hasClass("error")&&a.show("slow")),!t&&void 0!==o&&parseInt(wp_smushit_data.resize_sizes.height)>parseInt(o.val())?(o.parent().addClass("sui-form-field-error"),u||a.show("slow"),l=!0):(o.parent().removeClass("sui-form-field-error"),a.hide(),s.hasClass("error")&&r.show("slow"))))}(e(this).parents().eq(4),!1,!1)})),e("body").on("click","#wp-smush-resize, #wp-smush-resize-quick-setup",(function(){var t=e(this),n=e(".wp-smush-resize-settings-wrap");t.is(":checked")?n.show():n.hide()})),e("#column-wp-smush-auto").on("click","#wp-smush-auto",(function(){var t=e("#column-wp-smush-auto .auto-smush-notice");e(this).is(":checked")?t.show():t.hide()})),e("body").on("click","#wp-smush-detection",(function(){var t=e(this),n=e(".smush-highlighting-notice"),i=e(".smush-highlighting-warning");t.is(":checked")?n.length>0?n.show():i.show():(n.hide(),i.hide())})),e("#wp-smush-png_to_jpg").click((function(){var t=e(this),n=e(".wp-smush-png_to_jpg-wrap");t.is(":checked")?n.show():n.hide()})),e("#wp-smush-revalidate-member").on("click",(function(t){t.preventDefault();var n=e(this).parents().eq(1);n.addClass("loading-notice"),e.get(ajaxurl,{action:"smush_show_warning"},(function(e){n.removeClass("loading-notice").addClass("loaded-notice"),0==e?(n.attr("data-message",wp_smush_msgs.membership_valid),s(n,1e3)):(n.attr("data-message",wp_smush_msgs.membership_invalid),setTimeout((function(){n.removeClass("loaded-notice")}),1e3))}))})),"undefined"!=typeof wp_smush_run_re_check&&1==wp_smush_run_re_check&&e(".wp-smush-scan").length>0&&n(!1),e("li.smush-dir-savings").length>0){e.get(ajaxurl,{action:"get_dir_smush_stats"},(function(t){e("li.smush-dir-savings .sui-icon-loader").hide(),t.success||void 0===t.data.message?void 0===t.data||void 0===t.data.dir_smush?(e("li.smush-dir-savings span.wp-smush-stats").append(wp_smush_msgs.ajax_error),e("li.smush-dir-savings span.wp-smush-stats span").hide()):function(t){if(void 0!==t.dir_smush){var n=e("li.smush-dir-savings span.wp-smush-stats span.wp-smush-stats-human"),i=e("li.smush-dir-savings span.wp-smush-stats span.wp-smush-stats-percent");if(t.dir_smush.bytes>0){if(e("li.smush-dir-savings .wp-smush-stats-label-message").hide(),n.length>0)n.html(t.dir_smush.human);else t.dir_smush.bytes;if(t.dir_smush.percent>0)if(e("li.smush-dir-savings span.wp-smush-stats span.wp-smush-stats-sep").removeClass("sui-hidden"),i.length>0)i.html(t.dir_smush.percent+"%");else t.dir_smush.percent}}if(void 0!==t.combined_stats&&t.combined_stats.length>0){var s=t.combined_stats,r=s.smushed/s.total_count*100;(r=WP_Smush.helpers.precise_round(r,1))&&e("div.wp-smush-count-total span.wp-smush-images-percent").html(r),s.total_count&&e("span.wp-smush-count-total span.wp-smush-total-optimised").html(s.total_count),s.savings&&e("span.wp-smush-savings span.wp-smush-stats-human").html(s.savings),s.percent&&e("span.wp-smush-savings span.wp-smush-stats-percent").html(s.percent)}}(t.data):e("div.wp-smush-scan-result div.content").prepend(t.data.message)}))}e(document).keyup((function(t){if(27===t.keyCode){var n=e("div.dev-overlay.wp-smush-list-dialog, div.dev-overlay.wp-smush-get-pro");if(!n.is(":visible"))return;n.find("div.close").click()}})),e("span.dismiss-recommendation").on("click",(function(t){t.preventDefault();var n=e(this).parent();n.hide("slow",(function(){n.remove()})),e.ajax({type:"POST",url:ajaxurl,data:{action:"hide_pagespeed_suggestion"}})})),e("div.wp-smush-api-message i.icon-fi-close").on("click",(function(t){t.preventDefault();var n=e(this).parent();n.hide("slow",(function(){n.remove()})),e.ajax({type:"POST",url:ajaxurl,data:{action:"hide_api_message"}})})),e("#close-resize-update-dialog").on("click",(function(e){e.preventDefault(),window.SUI.dialogs["resizing-update"].hide(),r("#column-wp-smush-resize")}))}))},function(e,t,n){"use strict";n.r(t);var i,s=n(0);i=jQuery,WP_Smush.bulk={init:function(){i(".wp-smush-all").on("click",(function(e){e.preventDefault(),i(".sui-notice-top.sui-notice-success").remove();var t=document.getElementById("bulk_smush_warning");t.classList.add("sui-hidden");var n=i(".wp-smush-bulk-progress-bar-wrapper");if(n.removeClass("wp-smush-exceed-limit"),n.find(".sui-progress-block .wp-smush-all").addClass("sui-hidden"),n.find(".sui-progress-block .wp-smush-cancel-bulk").removeClass("sui-hidden"),t&&document.getElementById("bulk-smush-resume-button").classList.add("sui-hidden"),i(".wp-resmush.wp-smush-action, .wp-smush-scan, .wp-smush-all:not(.sui-progress-close), a.wp-smush-lossy-enable, button.wp-smush-resize-enable, button#wp-smush-save-settings").attr("disabled","disabled"),"undefined"==typeof wp_smushit_data||0===wp_smushit_data.unsmushed.length&&0===wp_smushit_data.resmush.length)return!1;i(".wp-smush-remaining").hide(),n.find("i.sui-icon-info").removeClass("sui-icon-info").addClass("sui-loading").addClass("sui-icon-loader"),new s.a(i(this),!0)})),i("body").on("click",".smush-ignore-image",(function(){i(this).attr("disabled",!0),i(this).attr("data-tooltip"),i(this).removeClass("sui-tooltip"),i.post(ajaxurl,{action:"ignore_bulk_image",id:i(this).attr("data-id")})}))}},WP_Smush.bulk.init()},function(e,t,n){(function(e){!function(){"use strict";WP_Smush.onboarding={membership:"free",onboardingModal:document.getElementById("smush-onboarding-dialog"),scanFilesModal:document.getElementById("checking-files-dialog"),settings:{first:!0,last:!1,slide:"start",value:!1},selection:{auto:!0,lossy:!0,strip_exif:!0,original:!1,lazy_load:!0,usage:!0},contentContainer:document.getElementById("smush-onboarding-content"),onboardingSlides:["start","auto","lossy","strip_exif","original","lazy_load","usage"],touchX:null,touchY:null,init:function(){if(this.onboardingModal){this.membership=document.getElementById("smush-onboarding").dataset.type,"pro"!==this.membership&&(this.onboardingSlides=["start","auto","strip_exif","lazy_load","usage"],this.selection.lossy=!1),this.renderTemplate();var t=this.onboardingModal.querySelector(".smush-onboarding-skip-link");t&&t.addEventListener("click",this.skipSetup),new e(this.onboardingModal).show()}},handleTouchStart:function(e){var t=e.touches[0];this.touchX=t.clientX,this.touchY=t.clientY},handleTouchMove:function(e){if(this.touchX&&this.touchY){var t=e.touches[0].clientX,n=e.touches[0].clientY,i=this.touchX-t,s=this.touchY-n;Math.abs(i)>Math.abs(s)&&(i>0?!1===WP_Smush.onboarding.settings.last&&WP_Smush.onboarding.next(null,"next"):!1===WP_Smush.onboarding.settings.first&&WP_Smush.onboarding.next(null,"prev")),this.touchX=null,this.touchY=null}},renderTemplate:function(e){var t=this,n=this.onboardingModal.querySelector('input[type="checkbox"]');n&&(this.selection[n.id]=n.checked);var i=WP_Smush.onboarding.template("smush-onboarding")(this.settings);i&&(this.contentContainer.innerHTML=i,void 0===e?this.contentContainer.classList.add("loaded"):(this.contentContainer.classList.remove("loaded"),this.contentContainer.classList.add(e),setTimeout((function(){t.contentContainer.classList.add("loaded"),t.contentContainer.classList.remove(e)}),600))),this.onboardingModal.addEventListener("touchstart",this.handleTouchStart,!1),this.onboardingModal.addEventListener("touchmove",this.handleTouchMove,!1),this.bindSubmit()},bindSubmit:function(){var e=this.onboardingModal.querySelector('button[type="submit"]'),t=this;e&&e.addEventListener("click",(function(e){e.preventDefault();var n=t.onboardingModal.querySelector('input[type="checkbox"]');n&&(t.selection[n.id]=n.checked);var i=document.getElementById("_wpnonce"),s=new XMLHttpRequest;s.open("POST",ajaxurl+"?action=smush_setup",!0),s.setRequestHeader("Content-type","application/x-www-form-urlencoded"),s.onload=function(){200===s.status?WP_Smush.onboarding.showScanDialog():console.log("Request failed. Returned status of "+s.status)},s.send("smush_settings="+JSON.stringify(t.selection)+"&_ajax_nonce="+i.value)}))},next:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=this.onboardingSlides.indexOf(this.settings.slide),i=0;i=t?"next"===t?n+1:n-1:null!==e&&e.classList.contains("next")?n+1:n-1;var s=null!==e&&e.classList.contains("next")?"fadeInRight":"fadeInLeft";this.settings={first:0===i,last:i+1===this.onboardingSlides.length,slide:this.onboardingSlides[i],value:this.selection[this.onboardingSlides[i]]},this.renderTemplate(s)},goTo:function(e){var t=this.onboardingSlides.indexOf(e);this.settings={first:0===t,last:t+1===this.onboardingSlides.length,slide:e,value:this.selection[e]},this.renderTemplate()},skipSetup:function(){var e=document.getElementById("_wpnonce"),t=new XMLHttpRequest;t.open("POST",ajaxurl+"?action=skip_smush_setup&_ajax_nonce="+e.value),t.onload=function(){200===t.status?WP_Smush.onboarding.showScanDialog():console.log("Request failed. Returned status of "+t.status)},t.send()},showScanDialog:function(){new e(this.onboardingModal).hide();var t=new e(this.scanFilesModal);t.show();var n=document.getElementById("wp_smush_options_nonce");setTimeout((function(){var e=new XMLHttpRequest;e.open("POST",ajaxurl+"?action=scan_for_resmush",!0),e.setRequestHeader("Content-type","application/x-www-form-urlencoded"),e.onload=function(){var n=document.querySelector("#smush-onboarding-dialog");n.parentNode.removeChild(n),t.hide(),200===e.status?setTimeout((function(){location.reload()}),1e3):console.log("Request failed. Returned status of "+e.status)},e.send("type=media&get_ui=false&process_settings=false&wp_smush_options_nonce="+n.value)}),3e3)}},WP_Smush.onboarding.template=_.memoize((function(e){var t,n={evaluate:/<#([\s\S]+?)#>/g,interpolate:/\{\{\{([\s\S]+?)\}\}\}/g,escape:/\{\{([^\}]+?)\}\}(?!\})/g,variable:"data"};return function(i){return _.templateSettings=n,(t=t||_.template(document.getElementById(e).innerHTML))(i)}})),window.addEventListener("load",(function(){return WP_Smush.onboarding.init()}))}()}).call(this,n(1))},function(e,t,n){"use strict";n.r(t),function(e){var t,i=n(5),s=n(3);t=jQuery,WP_Smush.directory={selected:[],tree:[],wp_smush_msgs:[],init:function(){var e=this,n=t("#wp-smush-progress-dialog"),i=0,r=0;void 0!==wp_smushit_data.dir_smush&&(i=wp_smushit_data.dir_smush.totalSteps,r=wp_smushit_data.dir_smush.currentScanStep),this.scanner=new s.a(i,r),wp_smush_msgs&&(this.wp_smush_msgs=wp_smush_msgs),t("div.sui-wrap").on("click","button.wp-smush-browse",(function(n){n.preventDefault(),t("div.wp-smush-scan-result div.wp-smush-notice").hide(),t(this).attr("disabled")||(t(this).attr("disabled","disabled"),t("div.wp-smush-info").remove(),e.showSmushDialog(),e.initFileTree())})),t("body").on("click","a.wp-smush-dir-link",(function(n){t("div.sui-wrap button.wp-smush-browse").length>0&&(n.preventDefault(),e.showSmushDialog(),e.initFileTree())})),t(".wp-smush-select-dir").on("click",(function(n){if(n.preventDefault(),!t(this).attr("disabled")){var i=t(this);t("div.wp-smush-list-dialog div.sui-box-body").css({opacity:"0.8"}),t("div.wp-smush-list-dialog div.sui-box-body a").unbind("click"),i.attr("disabled","disabled"),i.parent().find(".add-dir-loader").addClass("sui-icon-loader sui-loading");var r=e.tree.getSelectedNodes(),o=t('input[name="wp-smush-base-path"]').val(),a=[];r.forEach((function(e){a.push(o+"/"+e.key)}));var u={action:"image_list",smush_path:a,image_list_nonce:t('input[name="image_list_nonce"]').val()};t.get(ajaxurl,u,(function(t){e.hideSmushDialog(),e.scanner=new s.a(t.data,0),e.showProgressDialog(t.data),e.scanner.scan()}))}})),t("#wp-smush-list-dialog").on("click",".sui-dialog-close",(function(){t(".wp-smush-browse").removeAttr("disabled"),e.hideSmushDialog(),t(".wp-smush-select-dir, button.wp-smush-browse, a.wp-smush-dir-link").removeAttr("disabled"),t(".wp-smush-select-dir, .wp-smush-list-dialog .sui-box-body").css({opacity:"1"})})),n.on("click","#cancel-directory-smush, .sui-dialog-close, .wp-smush-cancel-dir",(function(n){n.preventDefault(),t(this).parent().find(".add-dir-loader").addClass("sui-icon-loader sui-loading"),e.scanner.cancel().done((function(){return window.location.href=e.wp_smush_msgs.directory_url}))})),n.on("click",".sui-icon-play, .wp-smush-resume-scan",(function(t){t.preventDefault(),e.scanner.resume()}))},initFileTree:function(){var e=this,n=t("button.wp-smush-select-dir"),s={type:"GET",url:ajaxurl,data:{action:"smush_get_directory_list",list_nonce:t('input[name="list_nonce"]').val()},cache:!1};e.tree=Object(i.createTree)(".wp-smush-list-dialog .content",{autoCollapse:!0,clickFolderMode:3,checkbox:!0,debugLevel:0,selectMode:3,tabindex:"0",keyboard:!0,quicksearch:!0,source:s,lazyLoad:function(i,r){r.result=new Promise((function(e,n){s.data.dir=r.node.key,t.ajax(s).done((function(t){return e(t)})).fail(n)})),r.result.then(n.html(e.wp_smush_msgs.add_dir))},loadChildren:function(e,t){return t.node.fixSelection3AfterClick()},select:function(){return n.attr("disabled",!+e.tree.getSelectedNodes().length)},init:function(){return n.attr("disabled",!0)}})},showSmushDialog:function(){var n=document.getElementById("wp-smush-list-dialog");new e(n).show(),t(".wp-smush-list-dialog div.close").focus()},hideSmushDialog:function(){var t=document.getElementById("wp-smush-list-dialog");new e(t).hide(),new e(document.getElementById("wp-smush-progress-dialog")).hide()},showProgressDialog:function(n){t(".wp-smush-progress-dialog .sui-progress-state-text").html("0/"+n+" "+self.wp_smush_msgs.progress_smushed);var i=document.getElementById("wp-smush-progress-dialog");new e(i).show(),t(".wp-smush-progress-dialog div.close").focus()},updateProgressBar:function(e){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];e>100&&(e=100),t(".sui-progress-block .sui-progress-text span").text(e+"%"),t(".sui-progress-block .sui-progress-bar span").width(e+"%"),e>=90&&t(".sui-progress-state .sui-progress-state-text").text("Finalizing..."),n&&t(".sui-progress-state .sui-progress-state-text").text("Cancelling...")}},WP_Smush.directory.init()}.call(this,n(1))},function(e,t,n){var i,s,r;
|
38 |
/*! jQuery UI - v1.12.1 - 2018-05-20
|
39 |
* http://jqueryui.com
|
40 |
* Includes: widget.js, position.js, keycode.js, scroll-parent.js, unique-id.js
|
app/assets/js/smush-admin.min.js.map
CHANGED
@@ -1 +1 @@
|
|
1 |
-
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./_src/js/smush/smush.js","webpack:///./node_modules/@wpmudev/shared-ui/js/a11y-dialog.js","webpack:///(webpack)/buildin/global.js","webpack:///./_src/js/smush/directory-scanner.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./node_modules/jquery.fancytree/dist/modules/jquery.fancytree.js","webpack:///./_src/js/app.js","webpack:///./_src/js/modules/helpers.js","webpack:///./_src/js/modules/admin.js","webpack:///./_src/js/modules/bulk-smush.js","webpack:///./_src/js/modules/onboarding.js","webpack:///./_src/js/modules/directory-smush.js","webpack:///./node_modules/jquery.fancytree/dist/modules/jquery.fancytree.ui-deps.js","webpack:///./_src/js/smush/cdn.js","webpack:///./_src/js/smush/lazy-load.js","webpack:///./_src/js/modules/bulk-restore.js","webpack:///./_src/js/modules/notice.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","Smush","button","bulk","type","this","errors","progressBar","jQuery","smushed","parseInt","find","html","total","skip_resmush","data","is_bulk","url","ajaxurl","log","deferred","Deferred","ids","wp_smushit_data","resmush","length","unsmushed","concat","filter","itm","a","indexOf","is_bulk_resmush","status","parent","smush_type","single_ajax_suffix","bulk_ajax_suffix","smushAddParams","action","start","run","bindDeferredEvents","cancelAjax","isEmptyObject","param","memberValidityNotice","show_warning","show","hide","isBulkResmush","id","sendUrl","nonce","attachment_id","_nonce","ajax","timeout","dataType","curEle","txt","state","progressButton","parents","eq","wp_smush_msgs","all_done","toggleClass","savings","savings_percent","savingsBytes","savings_bytes","origDiff","pro_savings","percent","WP_Smush","helpers","precise_round","formatBytes","scanType","isNextgen","superSavings","size_before","size_after","formattedSize","statsHuman","getFormatFromString","getSizeFromString","isNaN","savings_resize","count_images","count_resize","smushedCountDiv","count_supersmushed","smushConversionSavings","savings_conversion","conversionSavings","smushResizeSavings","savingsValue","resizeSavings","resizeMessage","setProSavings","smushProSavings","proSavingsPercent","proSavingsBytes","sidenavCountDiv","count","addClass","removeClass","newSize","attachmentSize","contents","nodeType","text","sizeStrongEl","imageStats","is_lossy","bytes","errorMsg","fileName","thumbnail","tableDiv","error_ignore","currentId","uIndex","splice","index","attr","bulkStart","singleStart","remove","smushing","prop","removeAttr","self","request","done","response","replaceWith","membershipValidity","success","error_msg","append","stats","updateImageStats","new_size","enableButton","fail","messageHolder","progressMessage","sync_stats","extend","count_smushed","count_total","updateStats","always","statusIcon","notice","progress","document","getElementById","classList","resumeCountDiv","wrapperCountDiv","_res","updateLocalizedStats","syncStats","updateRemainingCount","_updateProgress","width","css","continueSmush","nonceValue","current_id","shift","updateSmushIds","nonceField","val","res","error","push","prepareErrorRow","error_message","file_name","unshift","freeExceeded","updateProgress","singleDone","continue","callAjax","resolve","msg","error_in_bulk","replace","bulkDone","on","abort","global","focusedBeforeDialog","FOCUSABLE_ELEMENTS","A11yDialog","node","targets","_show","_hide","_bindKeypress","_listeners","toArray","collection","Array","slice","$$","selector","context","querySelectorAll","setFocusToFirstItem","focusableChildren","getFocusableChildren","focus","join","child","offsetWidth","offsetHeight","getClientRects","siblings","_targets","target","NodeList","isPrototypeOf","Element","collect","parentNode","childNodes","setAttribute","shown","_openers","forEach","opener","addEventListener","_closers","closer","_fire","event","add","getElementsByClassName","className","removeAttribute","original","getAttribute","activeElement","getElementsByTagName","timeout_node","setTimeout","removeEventListener","destroy","handler","off","listener","which","preventDefault","focusedItemIndex","shiftKey","trapTabKey","_maintainFocus","contains","window","g","Function","e","DirectoryScanner","totalSteps","currentStep","cancelling","failedItems","obj","scan","remainingSteps","step","post","cancel","getProgress","Math","min","round","onFinishStep","progress_smushed","directory","updateProgressBar","onFinish","location","href","directory_url","limitReached","dialog","bulk_resume","resume","items","failed","factory","w","Error","noGlobal","arr","getProto","getPrototypeOf","class2type","toString","hasOwn","fnToString","ObjectFunctionString","support","isFunction","isWindow","preservedScriptAttributes","src","noModule","DOMEval","code","doc","script","createElement","head","appendChild","removeChild","toType","fn","init","rtrim","isArrayLike","jquery","constructor","num","pushStack","elems","ret","merge","prevObject","each","callback","map","elem","apply","arguments","first","last","len","j","end","sort","options","copy","copyIsArray","clone","deep","isPlainObject","isArray","undefined","expando","random","isReady","noop","proto","Ctor","globalEval","trim","makeArray","results","inArray","second","grep","invert","matches","callbackExpect","arg","guid","iterator","split","toLowerCase","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","Date","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","b","pop","push_native","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","inDisabledFieldset","addCombinator","disabled","nodeName","dir","next","els","seed","nid","match","groups","newSelector","newContext","ownerDocument","exec","qsa","test","toSelector","testContext","qsaError","keys","cache","cacheLength","markFunction","assert","el","addHandle","attrs","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","documentElement","hasCompare","subWindow","defaultView","top","attachEvent","createComment","getById","getElementsByName","attrId","getAttributeNode","tag","tmp","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","expr","elements","specified","escape","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","useCache","lastChild","uniqueID","pseudo","args","setFilters","idx","matched","matcher","unmatched","lang","elemLang","hash","hasFocus","tabIndex","checked","selected","selectedIndex","radio","checkbox","file","password","image","submit","reset","tokens","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","token","compiled","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","is","rneedsContext","needsContext","rsingleTag","winnow","qualifier","not","rootjQuery","root","parseHTML","ready","rparentsprev","guaranteedUnique","children","prev","sibling","has","closest","prevAll","addBack","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","Identity","v","Thrower","ex","adoptValue","reject","noValue","method","promise","then","Callbacks","flag","createOptions","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","empty","disable","lock","fireWith","func","tuples","pipe","fns","newDefer","tuple","returned","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","when","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","stack","console","warn","message","readyException","readyList","completed","catch","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","camelCase","string","acceptData","owner","Data","uid","configurable","set","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","JSON","parse","getData","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","defer","pnum","source","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","style","display","swap","old","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","body","showHide","values","toggle","rcheckableType","rtagName","rscriptType","wrapMap","option","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","optgroup","tbody","tfoot","colgroup","caption","th","div","buildFragment","scripts","selection","ignored","wrap","attached","fragment","createDocumentFragment","nodes","htmlPrefilter","createTextNode","checkClone","cloneNode","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","expectSync","err","safeActiveElement","types","one","origFn","leverageNative","notAsync","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","trigger","Event","handleObjIn","eventHandle","events","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","originalEvent","writable","load","noBubble","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","now","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","view","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","blur","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rxhtmlTag","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","fixInput","domManip","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","prepend","insertBefore","before","after","replaceChild","appendTo","prependTo","insertAfter","replaceAll","insert","rnumnonpx","getStyles","getComputedStyle","rboxStyle","curCSS","computed","minWidth","maxWidth","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","position","scrollboxSizeVal","measure","parseFloat","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","max","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","Tween","easing","cssHooks","opacity","origName","isCustomProp","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","left","margin","padding","border","prefix","suffix","expand","expanded","parts","propHooks","eased","duration","pos","fx","scrollTop","scrollLeft","linear","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","height","createTween","animation","Animation","tweeners","properties","stopped","prefilters","currentTime","startTime","tweens","opts","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","complete","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","time","clearTimeout","checkOn","optSelected","radioValue","boolHook","nType","attrHooks","bool","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","classes","curValue","clazz","finalValue","stateVal","isValidValue","classNames","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","isLocal","protocol","processData","async","contentType","accepts","json","responseFields","converters","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","send","nativeStatusText","responses","isSuccess","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","params","animated","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","hover","fnOver","fnOut","unbind","delegate","undelegate","proxy","holdReady","hold","parseJSON","isNumeric","_jQuery","_$","$","noConflict","ui","fancytree","FT","TEST_IMG","REX_HTML","REX_TOOLTIP","ENTITY_MAP","IGNORE_KEYCODES","16","17","18","SPECIAL_KEYCODES","8","9","10","13","19","20","27","32","33","34","35","36","37","38","39","40","45","46","59","61","96","97","98","99","100","101","102","103","104","105","106","107","109","110","111","112","113","114","115","116","117","118","119","120","121","122","123","144","145","173","186","187","188","189","190","191","192","219","220","221","222","MODIFIERS","91","93","MOUSE_BUTTONS","1","2","3","CLASS_ATTRS","CLASS_ATTR_MAP","TREE_ATTRS","NODE_ATTRS","NODE_ATTR_MAP","NODE_ATTR_LOWERCASE_MAP","NONE_NODE_DATA_MAP","_assert","getTime","FancytreeNode","_findDirectChild","ptr","cl","_setChildren","tree","_callHook","addChildren","firstNode","origFirstChild","getFirstChild","origLastChild","getLastChild","nodeList","render","renderStatus","ul","selectMode","fixSelection3FromEndNodes","triggerModifyChild","addNode","getParent","getNextSibling","addPagingNode","title","strings","moreData","statusNodeType","icon","partload","appendSibling","applyCommand","cmd","applyPatch","patch","_getResolvedPromise","IGNORE_MAP","removeChildren","isVisible","renderTitle","setExpanded","collapseSiblings","copyTo","toDict","countChildren","debug","debugLevel","consoleApply","discard","resetLazy","discardMarkup","includeSelf","findAll","_makeNodeTitleMatcher","visit","findFirst","findRelatedNode","where","includeHidden","_changeSelectStatusAttrs","changed","unselectable","evalOption","unselectableStatus","partsel","fixSelection3AfterClick","callOpts","isSelected","radiogroup","_walk","allSelected","someSelected","unselState","lazy","visitParents","fromDict","dict","getChildren","hasChildren","getIndex","getIndexHier","separator","digits","getParentList","substr","getKeyPath","excludeSelf","sep","keyPathSeparator","getPath","getLevel","level","dtn","ac","includeRoot","part","path","isFunc","getPrevSibling","getSelectedNodes","stopOnParents","isStatusNode","extraClasses","focusNode","info","isActive","activeNode","isBelowOf","otherNode","isChildOf","isDescendantOf","isExpanded","isFirstSibling","isFolder","folder","isLastSibling","isLazy","isLoaded","isLoading","_isLoading","isRoot","isRootNode","isPartsel","isPartload","rootNode","isPagingNode","isTopLevel","isUndefined","hasFilter","enableFilter","subMatchCount","lazyLoad","forceReload","wasExpanded","_triggerNodeEvent","makeVisible","deferreds","dfd","effects","noAnimation","scroll","scrollIntoView","moveTo","targetNode","prevParent","targetParent","navigate","activate","KC","LEFT","RIGHT","setFocus","setActive","childNode","force","scheduleAction","ms","x","scrollOfs","scrollParent","topNode","$scrollParent","$container","topNodeY","nodeY","containerOffsetTop","nodeHeight","span","topOfs","bottomOfs","bottom","containerHeight","$animateTarget","isParentWindow","newScrollTop","innerHeight","clientHeight","setSelected","setStatus","details","setTitle","triggerModify","sortChildren","cmp","y","recursive","wasAdded","statusElem","statusClassPropName","curClasses","toggleExpanded","toggleSelected","operation","modifyChild","visitAndLoad","_recursion","loaders","visitSiblings","Fancytree","_makeHookContext","ctx","widget","typeInfo","contextObject","_extraArgs","_setExpiringValue","_tempCache","expire","_getExpiringValue","entry","_requireExtension","required","thisName","_local","extList","extensions","isBefore","isMissing","ext","badOrder","activateKey","getNodeByKey","opts_","refNode","getActiveNode","editCreateNode","editStart","patchList","p2","patchCount","deferredList","_makeResolveFunc","clear","enable","enableUpdate","_enableUpdate","expandAll","findNextNode","startNode","reMatch","_checkNode","visitRows","BACKSPACE","HOME","END","UP","DOWN","generateFormElements","selectedName","_id","activeName","$result","_appender","getFocusNode","getOption","optionName","searchRoot","idPrefix","ftnode","_hasFocus","_requestId","loadKeyPath","keyPathList","optsOrCallback","pathSegList","matchKey","charAt","_loadKeyPathImpl","nodeKey","remain","remainMap","tmpParent","segList","subDfd","__findChild","__lazyload","errMsg","reactivate","noFocus","reload","selectAll","setOption","_trigger","_triggerTreeEvent","_visitRowsUp","siblingOfs","skipFirstNode","checkFilter","nodeClick","targetType","focusOnSelect","clickFolderMode","nodeSetFocus","nodeCollapseSiblings","nodeDblclick","nodeKeydown","matchNode","stamp","specialModifiers","isAlnum","$target","handled","autoActivate","quicksearch","lastQuicksearchTime","lastQuicksearchTerm","eventToString","nodeSetExpanded","nodeToggleSelected","nodeSetActive","nodeLoadChildren","requestId","debugDelay","textStatus","errorObj","postProcess","enableAspx","errorThrown","reason","nodeSetStatus","ctxErr","metaData","noDataRes","nodata","nodeLoadKeyPath","nodeRemoveChild","subCtx","nodeRemoveChildren","nodeRemoveMarkup","nodeRemoveChildMarkup","li","nodeRenderStatus","nodeRender","collapsed","_recursive","childLI","childNode1","childNode2","aria","firstTime","successorLi","generateIds","nodeRenderTitle","createNode","renderNode","$div","nodeTitle","role","tooltip","iconTooltip","ares","minExpandLevel","iconClass","_escapeTooltip","imagePath","escapeHtml","titlesTabbable","escapeTitles","enhanceTitle","$title","$ariaElem","isLastSib","cn","_classNames","cnList","focused","Boolean","lastsib","loading","_error","statusNodePrefix","combinedExpanderPrefix","combinedIconPrefix","noEvents","_getRejectedPromise","activeVisible","_afterLoad","prevAC","autoCollapse","autoScroll","effect","toggleEffect","animating","ctx2","isInput","calledByNode","uniqueId","nodeSetSelected","_lastSelectIntent","lastSelectedNode","_setStatusNode","_clearStatusNode","loadError","noData","nodeToggleExpanded","treeClear","treeCreate","treeDestroy","$source","treeInit","checkboxAutoHide","rtl","treeLoad","$ul","element","rootCtx","parseHtml","_getElementDataAsDict","treeRegisterNode","treeSetFocus","_lastMousedownNode","treeSetOption","callDefault","callCreate","callRender","_super","Widget","_setOption","treeStructureChanged","keyboard","treeId","_create","extension","extName","_extensions","_simpleDeepMerge","_subclassObject","icons","tabbable","_init","_bind","_unbind","_ns","getNode","prevPhase","phase","et","getEventTarget","getTree","version","buildType","_nextId","_nextNodeKey","_FancytreeClass","_FancytreeNodeClass","jquerySupports","positionMyOfs","dottedVersion","major","minor","verParts","testParts","isVersionAtLeast","cond","createTree","debounce","invokeAsap","fixPositionOptions","my","at","myParts","atParts","dx","dy","tcn","getEventTargetType","orgEl","nodeObject","treeOptions","treeOpt","nodeOpt","setSpanIcon","baseClass","$span","keyEventToString","overrideMethod","instance","methodName","prevSuper","iPos","tmp2","$children","allData","lowerCaseAttr","$li","$liSpan","$liA","search","substring","registerExtension","definition","unescapeHtml","_makeVirtualFunction","prevFunc","baseFunc","_superApply","prevLocal","prevSuperApply","attrName","argArray","$el","uiFancytree","unselectableIgnore","hideCheckbox","defaultKey","lazyload","loaderror","removeNode","columns","systemFocusElement","viewport","ariaPropName","nodeContainerAttrName","fakeParent","class","includes","require","units","abs","u","toFixed","formatted_size","decimals","sign","pow","findPos","cur_top","offsetTop","geturlparam","sURLVariables","sParameterName","resetSettings","smush_url","smush_vars","get_smush_status","remove_element","process_smush_action","current_button","smush_action","c_element","disable_links","enable_links","run_re_check","process_settings","scan_type","notices","get_ui","wp_smush_options_nonce","resmush_ids","count_image","super_smush","enable_lossy","super_smush_stats","resmush_complete","resmush_check","reCheckMessage","goToByScroll","slide_symbol","otherClass","setting_type","setting_input","checking","smush_percent","progress_bar","savings_dir_smush","orig_size","image_size","remainingCountDiv","scroll_and_enable_resize","scroll_and_enable_lossy","setting_hash","keypress","wrapper_div","width_only","height_only","resize_checkbox","width_input","width_error_note","height_input","height_error_note","width_error","height_error","resize_sizes","validate_resize_settings","settings_wrap","notice_wrap","warning_wrap","membership_valid","membership_invalid","wp_smush_run_re_check","dir_smush","ajax_error","stats_human","stats_percent","human","combined_stats","c_stats","total_count","update_cummulative_stats","keyup","modal","bulkWarning","onboarding","membership","onboardingModal","scanFilesModal","slide","auto","lossy","strip_exif","lazy_load","usage","contentContainer","onboardingSlides","touchX","touchY","dataset","renderTemplate","skipButton","querySelector","skipSetup","handleTouchStart","firstTouch","handleTouchMove","xUp","yUp","xDiff","yDiff","directionClass","template","bindSubmit","submitButton","showScanDialog","stringify","whereTo","newIndex","goTo","scanDialog","memoize","evaluate","interpolate","variable","templateSettings","progress_dialog","currentScanStep","scanner","Scanner","showSmushDialog","initFileTree","selectedFolders","abs_path","paths","smush_path","image_list_nonce","hideSmushDialog","showProgressDialog","smushButton","list_nonce","Promise","add_dir","loadChildren","uuid","widgetUuid","widgetSlice","existingConstructor","basePrototype","proxiedPrototype","fullName","_createWidget","_proto","_childConstructors","__super","__superApply","widgetEventPrefix","widgetName","widgetFullName","childPrototype","bridge","inputIndex","inputLength","isMethodCall","methodValue","defaultElement","eventNamespace","bindings","hoverable","focusable","classesElementLookup","_on","_getCreateOptions","_setOptionDisabled","_getCreateEventData","_destroy","_removeClass","curOption","_setOptions","_setOptionClasses","classKey","currentElements","_classes","_toggleClass","full","processClassString","checkOption","_untrackClassesElement","_addClass","suppressDisabledCheck","delegateElement","handlerProxy","eventName","_off","_delay","_hoverable","_focusable","focusout","defaultEffect","hasOptions","effectName","cachedScrollbarWidth","rhorizontal","rvertical","roffset","rposition","rpercent","_position","getOffsets","offsets","parseCss","getDimensions","outerWidth","outerHeight","scrollbarWidth","w1","w2","innerDiv","clientWidth","getScrollInfo","within","isDocument","hasOverflowX","scrollWidth","scrollHeight","getWithinInfo","withinElement","of","atOffset","targetWidth","targetHeight","targetOffset","basePosition","dimensions","scrollInfo","collision","horizontalOffset","verticalOffset","collisionPosition","elemWidth","elemHeight","marginTop","collisionWidth","collisionHeight","myOffset","feedback","horizontal","vertical","important","fit","newOverRight","withinOffset","collisionPosLeft","overLeft","overRight","newOverBottom","collisionPosTop","overTop","overBottom","flip","newOverLeft","offsetLeft","newOverTop","flipfit","COMMA","DELETE","ENTER","ESCAPE","PAGE_DOWN","PAGE_UP","PERIOD","SPACE","TAB","excludeStaticParent","overflowRegex","removeUniqueId","CDN","cdnEnableButton","cdnDisableButton","cdnStatsBox","loader","toggle_cdn","updateStatsBox","showNotice","toggleElements","spinner","Lazyload","lazyloadEnableButton","lazyloadDisableButton","toggle_lazy_load","removeSpinner","removeLoaderIcon","removePlaceholder","addLoaderIcon","frame","wp","media","multiple","attachment","toJSON","imageIcon","backgroundImage","removeDiv","filename","restore","confirmButton","initScan","statusDiv","item","thumb","link","el_notice","btn_act","btn_dismiss","remove_notice","notify_wordpress","send_dismiss_request","ev"],"mappings":"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","file":"smush-admin.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 15);\n","/* global WP_Smush */\n/* global ajaxurl */\n/* global wp_smushit_data */\n/* global wp_smush_msgs */\n/**\n * Smush class.\n *\n * @since 2.9.0 Moved from admin.js into a dedicated ES6 class.\n */\n\nclass Smush {\n\t/**\n\t * Class constructor.\n\t *\n\t * @param {Object} button Button object that made the call.\n\t * @param {boolean} bulk Bulk smush or not.\n\t * @param {string} type Accepts: 'nextgen', 'media'.\n\t */\n\tconstructor( button, bulk, type = 'media' ) {\n\t\t// TODO: errors will reset after bulk smush limit is reached and user clicks continue.\n\t\tthis.errors = [];\n\t\t// Smushed and total we take from the progress bar... I don't like this :-(\n\t\tconst progressBar = jQuery( '.bulk-smush-wrapper .sui-progress-state-text' );\n\t\tthis.smushed = parseInt( progressBar.find( 'span:first-child' ).html() );\n\t\tthis.total = parseInt( progressBar.find( 'span:last-child' ).html() );\n\n\t\t//If smush attribute is not defined, Need not skip re-Smush IDs.\n\t\tthis.skip_resmush = ! ( 'undefined' === typeof button.data( 'smush' ) || ! button.data( 'smush' ) );\n\t\tthis.button = jQuery( button[ 0 ] );\n\t\tthis.is_bulk = typeof bulk ? bulk : false;\n\t\tthis.url = ajaxurl;\n\t\tthis.log = jQuery( '.smush-final-log' );\n\t\tthis.deferred = jQuery.Deferred();\n\t\tthis.deferred.errors = [];\n\n\t\tconst ids = 0 < wp_smushit_data.resmush.length && ! this.skip_resmush ? ( wp_smushit_data.unsmushed.length > 0 ? wp_smushit_data.resmush.concat( wp_smushit_data.unsmushed ) : wp_smushit_data.resmush ) : wp_smushit_data.unsmushed;\n\t\tif ( 'object' === typeof ids ) {\n\t\t\t// If button has re-Smush class, and we do have ids that needs to re-Smushed, put them in the list.\n\t\t\tthis.ids = ids.filter( function( itm, i, a ) {\n\t\t\t\treturn i === a.indexOf( itm );\n\t\t\t} );\n\t\t} else {\n\t\t\tthis.ids = ids;\n\t\t}\n\n\t\tthis.is_bulk_resmush = 0 < wp_smushit_data.resmush.length && ! this.skip_resmush;\n\n\t\tthis.status = this.button.parent().find( '.smush-status' );\n\n\t\t// Added for NextGen support.\n\t\tthis.smush_type = type;\n\t\tthis.single_ajax_suffix = 'nextgen' === this.smush_type ? 'smush_manual_nextgen' : 'wp_smushit_manual';\n\t\tthis.bulk_ajax_suffix = 'nextgen' === this.smush_type ? 'wp_smushit_nextgen_bulk' : 'wp_smushit_bulk';\n\t\tthis.url = this.is_bulk ? Smush.smushAddParams( this.url, { action: this.bulk_ajax_suffix } ) : Smush.smushAddParams( this.url, { action: this.single_ajax_suffix } );\n\n\t\tthis.start();\n\t\tthis.run();\n\t\tthis.bindDeferredEvents();\n\n\t\t// Handle cancel ajax.\n\t\tthis.cancelAjax();\n\n\t\treturn this.deferred;\n\t}\n\n\t/**\n\t * Add params to the URL.\n\t *\n\t * @param {string} url URL to add the params to.\n\t * @param {Object} data Object with params.\n\t * @return {string} URL with params.\n\t */\n\tstatic smushAddParams( url, data ) {\n\t\tif ( ! jQuery.isEmptyObject( data ) ) {\n\t\t\turl += ( url.indexOf( '?' ) >= 0 ? '&' : '?' ) + jQuery.param( data );\n\t\t}\n\n\t\treturn url;\n\t}\n\n\t/**\n\t * Check membership validity.\n\t *\n\t * @param {Object} data\n\t * @param {number} data.show_warning\n\t */\n\tstatic membershipValidity( data ) {\n\t\tconst memberValidityNotice = jQuery( '#wp-smush-invalid-member' );\n\n\t\t// Check for membership warning.\n\t\tif ( 'undefined' !== typeof data && 'undefined' !== typeof data.show_warning && memberValidityNotice.length > 0 ) {\n\t\t\tif ( data.show_warning ) {\n\t\t\t\tmemberValidityNotice.show();\n\t\t\t} else {\n\t\t\t\tmemberValidityNotice.hide();\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Send Ajax request for compressing the image.\n\t *\n\t * @param {boolean} isBulkResmush\n\t * @param {number} id\n\t * @param {string} sendUrl\n\t * @param {string} nonce\n\t * @return {*|jQuery.promise|void} Compression results.\n\t */\n\tstatic ajax( isBulkResmush, id, sendUrl, nonce ) {\n\t\tconst param = jQuery.param( {\n\t\t\tis_bulk_resmush: isBulkResmush,\n\t\t\tattachment_id: id,\n\t\t\t_nonce: nonce,\n\t\t} );\n\n\t\treturn jQuery.ajax( {\n\t\t\ttype: 'GET',\n\t\t\tdata: param,\n\t\t\turl: sendUrl,\n\t\t\t/** @var {array} wp_smushit_data */\n\t\t\ttimeout: wp_smushit_data.timeout,\n\t\t\tdataType: 'json',\n\t\t} );\n\t}\n\n\t/**\n\t * Show loader in button for single and bulk Smush.\n\t */\n\tstart() {\n\t\tthis.button.attr( 'disabled', 'disabled' );\n\t\tthis.button.addClass( 'wp-smush-started' );\n\n\t\tthis.bulkStart();\n\t\tthis.singleStart();\n\t}\n\n\t/**\n\t * Start bulk Smush.\n\t */\n\tbulkStart() {\n\t\tif ( ! this.is_bulk ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Hide the bulk div.\n\t\tjQuery( '.wp-smush-bulk-wrapper' ).hide();\n\n\t\t// Remove any global notices if there.\n\t\tjQuery( '.sui-notice-top' ).remove();\n\n\t\t// Hide the bulk limit message.\n\t\tjQuery( '.wp-smush-bulk-progress-bar-wrapper .sui-notice-warning:first-of-type' ).hide();\n\n\t\t// Hide parent wrapper, if there are no other messages.\n\t\tif ( 0 >= jQuery( 'div.smush-final-log .smush-bulk-error-row' ).length ) {\n\t\t\tjQuery( 'div.smush-final-log' ).hide();\n\t\t}\n\n\t\t// Show the progress bar.\n\t\tjQuery( '.bulk-smush-wrapper .wp-smush-bulk-progress-bar-wrapper' ).show();\n\t}\n\n\t/**\n\t * Start single image Smush.\n\t */\n\tsingleStart() {\n\t\tif ( this.is_bulk ) {\n\t\t\treturn;\n\t\t}\n\t\tSmush.progressBar( this.button, wp_smush_msgs.smushing, 'show' );\n\t\tthis.status.removeClass( 'error' );\n\t}\n\n\t/**\n\t * Enable button.\n\t */\n\tenableButton() {\n\t\tthis.button.prop( 'disabled', false );\n\t\t// For bulk process, enable other buttons.\n\t\tjQuery( '.wp-smush-all' ).removeAttr( 'disabled' );\n\t\tjQuery( 'button.wp-smush-scan, a.wp-smush-lossy-enable, button.wp-smush-resize-enable, button#wp-smush-save-settings' ).removeAttr( 'disabled' );\n\t}\n\n\t/**\n\t * Show/hide the progress bar for Smushing/Restore/SuperSmush.\n\t *\n\t * @param {Object} curEle Current element.\n\t * @param {string} txt Message to be displayed.\n\t * @param {string} state Show/hide.\n\t */\n\tstatic progressBar( curEle, txt, state ) {\n\t\t// Update progress bar text and show it.\n\t\tconst progressButton = curEle.parents().eq( 1 ).find( '.wp-smush-progress' );\n\n\t\tif ( 'show' === state ) {\n\t\t\tprogressButton.html( txt );\n\t\t} else {\n\t\t\t/** @var {string} wp_smush_msgs.all_done */\n\t\t\tprogressButton.html( wp_smush_msgs.all_done );\n\t\t}\n\n\t\tprogressButton.toggleClass( 'visible' );\n\t}\n\n\t/**\n\t * Finish single image Smush.\n\t */\n\tsingleDone() {\n\t\tif ( this.is_bulk ) {\n\t\t\treturn;\n\t\t}\n\n\t\tSmush.progressBar( this.button, wp_smush_msgs.smushing, 'hide' );\n\n\t\tconst self = this;\n\n\t\tthis.request.done( function( response ) {\n\t\t\tif ( 'undefined' !== typeof response.data ) {\n\t\t\t\t// Check if stats div exists.\n\t\t\t\tconst parent = self.status.parent();\n\n\t\t\t\t// If we've updated status, replace the content.\n\t\t\t\tif ( response.data.status ) {\n\t\t\t\t\t//remove Links\n\t\t\t\t\tparent.find( '.smush-status-links' ).remove();\n\t\t\t\t\tself.status.replaceWith( response.data.status );\n\t\t\t\t}\n\n\t\t\t\t// Check whether to show membership validity notice or not.\n\t\t\t\tSmush.membershipValidity( response.data );\n\n\t\t\t\tif ( response.success && 'Not processed' !== response.data ) {\n\t\t\t\t\tself.status.removeClass( 'sui-hidden' );\n\t\t\t\t\tself.button.parent().removeClass( 'unsmushed' ).addClass( 'smushed' );\n\t\t\t\t\tself.button.remove();\n\t\t\t\t} else {\n\t\t\t\t\tself.status.addClass( 'error' );\n\t\t\t\t\t/** @var {string} response.data.error_msg */\n\t\t\t\t\tself.status.html( response.data.error_msg );\n\t\t\t\t\tself.status.show();\n\t\t\t\t}\n\n\t\t\t\tparent.append( response.data.stats );\n\n\t\t\t\t/**\n\t\t\t\t * Update image size in attachment info panel.\n\t\t\t\t * @var {string|int} response.data.new_size\n\t\t\t\t */\n\t\t\t\tSmush.updateImageStats( response.data.new_size );\n\t\t\t}\n\t\t\tself.enableButton();\n\t\t} ).fail( function( response ) {\n\t\t\tself.status.html( response.data );\n\t\t\tself.status.addClass( 'error' );\n\t\t\tself.enableButton();\n\t\t} );\n\t}\n\n\t/**\n\t * Set pro savings stats if not premium user.\n\t *\n\t * For non-premium users, show expected average savings based\n\t * on the free version savings.\n\t */\n\tstatic setProSavings() {\n\t\t// Default values.\n\t\tlet savings = wp_smushit_data.savings_percent > 0 ? wp_smushit_data.savings_percent : 0,\n\t\t\tsavingsBytes = wp_smushit_data.savings_bytes > 0 ? wp_smushit_data.savings_bytes : 0,\n\t\t\torigDiff = 2.22058824;\n\n\t\tif ( savings > 49 ) {\n\t\t\torigDiff = 1.22054412;\n\t\t}\n\n\t\t// Calculate Pro savings.\n\t\tif ( savings > 0 ) {\n\t\t\tsavings = origDiff * savings;\n\t\t\tsavingsBytes = origDiff * savingsBytes;\n\t\t}\n\n\t\twp_smushit_data.pro_savings = {\n\t\t\tpercent: WP_Smush.helpers.precise_round( savings, 1 ),\n\t\t\tsavings_bytes: WP_Smush.helpers.formatBytes( savingsBytes, 1 ),\n\t\t};\n\t}\n\n\t/**\n\t * Update all stats sections based on the response.\n\t *\n\t * @param {string} scanType Current scan type.\n\t */\n\tstatic updateStats( scanType ) {\n\t\tconst isNextgen = 'undefined' !== typeof scanType && 'nextgen' === scanType;\n\t\tlet superSavings = 0;\n\n\t\t// Calculate updated savings in bytes.\n\t\twp_smushit_data.savings_bytes = parseInt( wp_smushit_data.size_before ) - parseInt( wp_smushit_data.size_after );\n\n\t\tconst formattedSize = WP_Smush.helpers.formatBytes( wp_smushit_data.savings_bytes, 1 );\n\t\tconst statsHuman = jQuery( '.wp-smush-savings .wp-smush-stats-human' );\n\n\t\tif ( isNextgen ) {\n\t\t\tstatsHuman.html( formattedSize );\n\t\t} else {\n\t\t\tstatsHuman.html( WP_Smush.helpers.getFormatFromString( formattedSize ) );\n\t\t\tjQuery( '.sui-summary-large.wp-smush-stats-human' ).html( WP_Smush.helpers.getSizeFromString( formattedSize ) );\n\t\t}\n\n\t\t// Update the savings percent.\n\t\twp_smushit_data.savings_percent = WP_Smush.helpers.precise_round( ( parseInt( wp_smushit_data.savings_bytes ) / parseInt( wp_smushit_data.size_before ) ) * 100, 1 );\n\t\tif ( ! isNaN( wp_smushit_data.savings_percent ) ) {\n\t\t\tjQuery( '.wp-smush-savings .wp-smush-stats-percent' ).html( wp_smushit_data.savings_percent );\n\t\t}\n\n\t\t// Super-Smush savings.\n\t\tif ( 'undefined' !== typeof wp_smushit_data.savings_bytes && 'undefined' !== typeof wp_smushit_data.savings_resize ) {\n\t\t\tsuperSavings = parseInt( wp_smushit_data.savings_bytes ) - parseInt( wp_smushit_data.savings_resize );\n\t\t\tif ( superSavings > 0 ) {\n\t\t\t\tjQuery( 'li.super-smush-attachments span.smushed-savings' ).html( WP_Smush.helpers.formatBytes( superSavings, 1 ) );\n\t\t\t}\n\t\t}\n\n\t\t// Update image count.\n\t\tif ( isNextgen ) {\n\t\t\tjQuery( '.sui-summary-details span.wp-smush-total-optimised' ).html( wp_smushit_data.count_images );\n\t\t} else {\n\t\t\tjQuery( 'span.smushed-items-count span.wp-smush-count-total span.wp-smush-total-optimised' ).html( wp_smushit_data.count_images );\n\t\t}\n\n\t\t// Update resize image count.\n\t\tjQuery( 'span.smushed-items-count span.wp-smush-count-resize-total span.wp-smush-total-optimised' ).html( wp_smushit_data.count_resize );\n\n\t\t// Update super-Smushed image count.\n\t\tconst smushedCountDiv = jQuery( 'li.super-smush-attachments .smushed-count' );\n\t\tif ( smushedCountDiv.length && 'undefined' !== typeof wp_smushit_data.count_supersmushed ) {\n\t\t\tsmushedCountDiv.html( wp_smushit_data.count_supersmushed );\n\t\t}\n\n\t\t// Update conversion savings.\n\t\tconst smushConversionSavings = jQuery( '.smush-conversion-savings' );\n\t\tif ( smushConversionSavings.length > 0 && 'undefined' !== typeof ( wp_smushit_data.savings_conversion ) && wp_smushit_data.savings_conversion !== '' ) {\n\t\t\tconst conversionSavings = smushConversionSavings.find( '.wp-smush-stats' );\n\t\t\tif ( conversionSavings.length > 0 ) {\n\t\t\t\tconversionSavings.html( WP_Smush.helpers.formatBytes( wp_smushit_data.savings_conversion, 1 ) );\n\t\t\t}\n\t\t}\n\n\t\t// Update resize savings.\n\t\tconst smushResizeSavings = jQuery( '.smush-resize-savings' );\n\t\tif ( smushResizeSavings.length > 0 && 'undefined' !== typeof ( wp_smushit_data.savings_resize ) && wp_smushit_data.savings_resize !== '' ) {\n\t\t\t// Get the resize savings in number.\n\t\t\tconst savingsValue = parseInt( wp_smushit_data.savings_resize );\n\t\t\tconst resizeSavings = smushResizeSavings.find( '.wp-smush-stats' );\n\t\t\tconst resizeMessage = smushResizeSavings.find( '.wp-smush-stats-label-message' );\n\t\t\t// Replace only if value is grater than 0.\n\t\t\tif ( savingsValue > 0 && resizeSavings.length > 0 ) {\n\t\t\t\t// Hide message.\n\t\t\t\tif ( resizeMessage.length > 0 ) {\n\t\t\t\t\tresizeMessage.hide();\n\t\t\t\t}\n\t\t\t\tresizeSavings.html( WP_Smush.helpers.formatBytes( wp_smushit_data.savings_resize, 1 ) );\n\t\t\t}\n\t\t}\n\n\t\t//Update pro Savings\n\t\tSmush.setProSavings();\n\n\t\t// Updating pro savings stats.\n\t\tif ( 'undefined' !== typeof wp_smushit_data.pro_savings ) {\n\t\t\t// Pro stats section.\n\t\t\tconst smushProSavings = jQuery( '.smush-avg-pro-savings' );\n\t\t\tif ( smushProSavings.length > 0 ) {\n\t\t\t\tconst proSavingsPercent = smushProSavings.find( '.wp-smush-stats-percent' );\n\t\t\t\tconst proSavingsBytes = smushProSavings.find( '.wp-smush-stats-human' );\n\t\t\t\tif ( proSavingsPercent.length > 0 && 'undefined' !== typeof wp_smushit_data.pro_savings.percent && wp_smushit_data.pro_savings.percent !== '' ) {\n\t\t\t\t\tproSavingsPercent.html( wp_smushit_data.pro_savings.percent );\n\t\t\t\t}\n\t\t\t\tif ( proSavingsBytes.length > 0 && 'undefined' !== typeof wp_smushit_data.pro_savings.savings_bytes && wp_smushit_data.pro_savings.savings_bytes !== '' ) {\n\t\t\t\t\tproSavingsBytes.html( wp_smushit_data.pro_savings.savings_bytes );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Update remaining count.\n\t\t// Update sidebar count.\n\t\tconst sidenavCountDiv = jQuery( '.smush-sidenav .wp-smush-remaining-count' );\n\t\tif ( sidenavCountDiv.length ) {\n\t\t\tlet count = 0;\n\n\t\t\t// Unsmushed\n\t\t\tif ( 'undefined' !== typeof wp_smushit_data.unsmushed && wp_smushit_data.unsmushed.length > 0 ) {\n\t\t\t\tcount += wp_smushit_data.unsmushed.length;\n\t\t\t}\n\n\t\t\t// Re-smush\n\t\t\tif ( 'undefined' !== typeof wp_smushit_data.resmush && wp_smushit_data.resmush.length > 0 ) {\n\t\t\t\tcount += wp_smushit_data.resmush.length;\n\t\t\t}\n\n\t\t\tif ( count > 0 ) {\n\t\t\t\tsidenavCountDiv.html( count );\n\t\t\t} else {\n\t\t\t\tjQuery( '.sui-summary-smush .smush-stats-icon' ).addClass( 'sui-hidden' );\n\t\t\t\tsidenavCountDiv.removeClass( 'sui-tag sui-tag-warning' ).html( '' );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Update image size in attachment info panel.\n\t *\n\t * @since 2.8\n\t *\n\t * @param {number} newSize\n\t */\n\tstatic updateImageStats( newSize ) {\n\t\tif ( 0 === newSize ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst attachmentSize = jQuery( '.attachment-info .file-size' );\n\t\tconst currentSize = attachmentSize.contents().filter( function() {\n\t\t\treturn this.nodeType === 3;\n\t\t} ).text();\n\n\t\t// There is a space before the size.\n\t\tif ( currentSize !== ( ' ' + newSize ) ) {\n\t\t\tconst sizeStrongEl = attachmentSize.contents().filter( function() {\n\t\t\t\treturn this.nodeType === 1;\n\t\t\t} ).text();\n\t\t\tattachmentSize.html( '<strong>' + sizeStrongEl + '</strong> ' + newSize );\n\t\t}\n\t}\n\n\t/**\n\t * Sync stats.\n\t */\n\tsyncStats() {\n\t\tconst messageHolder = jQuery( 'div.wp-smush-bulk-progress-bar-wrapper div.wp-smush-count.tc' );\n\t\t// Store the existing content in a variable.\n\t\tconst progressMessage = messageHolder.html();\n\t\t/** @var {string} wp_smush_msgs.sync_stats */\n\t\tmessageHolder.html( wp_smush_msgs.sync_stats );\n\n\t\t// Send ajax.\n\t\tjQuery.ajax( {\n\t\t\ttype: 'GET',\n\t\t\turl: this.url,\n\t\t\tdata: {\n\t\t\t\taction: 'get_stats',\n\t\t\t},\n\t\t\tsuccess( response ) {\n\t\t\t\tif ( response && 'undefined' !== typeof response ) {\n\t\t\t\t\tresponse = response.data;\n\t\t\t\t\tjQuery.extend( wp_smushit_data, {\n\t\t\t\t\t\tcount_images: response.count_images,\n\t\t\t\t\t\tcount_smushed: response.count_smushed,\n\t\t\t\t\t\tcount_total: response.count_total,\n\t\t\t\t\t\tcount_resize: response.count_resize,\n\t\t\t\t\t\tcount_supersmushed: response.count_supersmushed,\n\t\t\t\t\t\tsavings_bytes: response.savings_bytes,\n\t\t\t\t\t\tsavings_conversion: response.savings_conversion,\n\t\t\t\t\t\tsavings_resize: response.savings_resize,\n\t\t\t\t\t\tsize_before: response.size_before,\n\t\t\t\t\t\tsize_after: response.size_after,\n\t\t\t\t\t} );\n\t\t\t\t\t// Got the stats, update it.\n\t\t\t\t\tSmush.updateStats( this.smush_type );\n\t\t\t\t}\n\t\t\t},\n\t\t} ).always( () => messageHolder.html( progressMessage ) );\n\t}\n\n\t/**\n\t * After the bulk optimization has been finished.\n\t */\n\tbulkDone() {\n\t\tif ( ! this.is_bulk ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Enable the button.\n\t\tthis.enableButton();\n\n\t\tconst statusIcon = jQuery( '.sui-summary-smush .smush-stats-icon' );\n\n\t\t// Show notice.\n\t\tif ( 0 === this.ids.length ) {\n\t\t\tstatusIcon.addClass( 'sui-hidden' );\n\t\t\tjQuery( '.bulk-smush-wrapper .wp-smush-all-done, .wp-smush-pagespeed-recommendation' ).show();\n\t\t\tjQuery( '.wp-smush-bulk-wrapper' ).hide();\n\t\t\t// Hide the progress bar if scan is finished.\n\t\t\tjQuery( '.wp-smush-bulk-progress-bar-wrapper' ).hide();\n\t\t} else {\n\t\t\t// Show loader.\n\t\t\tstatusIcon.removeClass( 'sui-icon-loader sui-loading sui-hidden' ).addClass( 'sui-icon-info sui-warning' );\n\n\t\t\tconst notice = jQuery( '.bulk-smush-wrapper .wp-smush-resmush-notice' );\n\n\t\t\tif ( notice.length > 0 ) {\n\t\t\t\tnotice.show();\n\t\t\t} else {\n\t\t\t\tjQuery( '.bulk-smush-wrapper .wp-smush-remaining' ).show();\n\t\t\t}\n\t\t}\n\n\t\t// Enable re-Smush and scan button.\n\t\tjQuery( '.wp-resmush.wp-smush-action, .wp-smush-scan' ).removeAttr( 'disabled' );\n\t}\n\n\t/**\n\t * Free Smush limit exceeded.\n\t */\n\tfreeExceeded() {\n\t\tconst progress = jQuery( '.wp-smush-bulk-progress-bar-wrapper' );\n\t\tprogress.addClass( 'wp-smush-exceed-limit' );\n\t\tprogress.find( '.sui-progress-block .wp-smush-cancel-bulk' ).addClass( 'sui-hidden' );\n\t\tprogress.find( '.sui-progress-block .wp-smush-all' ).removeClass( 'sui-hidden' );\n\n\t\tprogress.find( 'i.sui-icon-loader' ).addClass( 'sui-icon-info' )\n\t\t\t.removeClass( 'sui-icon-loader' )\n\t\t\t.removeClass( 'sui-loading' );\n\n\t\tdocument.getElementById( 'bulk-smush-resume-button' ).classList.remove( 'sui-hidden' );\n\t}\n\n\t/**\n\t * Update remaining count.\n\t */\n\tupdateRemainingCount() {\n\t\tif ( this.is_bulk_resmush ) {\n\t\t\t// Re-Smush notice.\n\t\t\tconst resumeCountDiv = jQuery( '.wp-smush-resmush-notice .wp-smush-remaining-count' );\n\t\t\tif ( resumeCountDiv.length && 'undefined' !== typeof this.ids ) {\n\t\t\t\tresumeCountDiv.html( this.ids.length );\n\t\t\t}\n\t\t} else {\n\t\t\t// Smush notice.\n\t\t\tconst wrapperCountDiv = jQuery( '.bulk-smush-wrapper .wp-smush-remaining-count' );\n\t\t\tif ( wrapperCountDiv.length && 'undefined' !== typeof this.ids ) {\n\t\t\t\twrapperCountDiv.html( this.ids.length );\n\t\t\t}\n\t\t}\n\n\t\t// Update sidebar count.\n\t\tconst sidenavCountDiv = jQuery( '.smush-sidenav .wp-smush-remaining-count' );\n\t\tif ( sidenavCountDiv.length && 'undefined' !== typeof this.ids ) {\n\t\t\tif ( this.ids.length > 0 ) {\n\t\t\t\tsidenavCountDiv.html( this.ids.length );\n\t\t\t} else {\n\t\t\t\tjQuery( '.sui-summary-smush .smush-stats-icon' ).addClass( 'sui-hidden' );\n\t\t\t\tsidenavCountDiv.removeClass( 'sui-tag sui-tag-warning' ).html( '' );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Adds the stats for the current image to existing stats.\n\t *\n\t * @param {Array} imageStats\n\t * @param {string} imageStats.count\n\t * @param {boolean} imageStats.is_lossy\n\t * @param {Array} imageStats.savings_resize\n\t * @param {Array} imageStats.savings_conversion\n\t * @param {string} imageStats.size_before\n\t * @param {string} imageStats.size_after\n\t * @param {string} type\n\t */\n\tstatic updateLocalizedStats( imageStats, type ) {\n\t\t// Increase the Smush count.\n\t\tif ( 'undefined' === typeof wp_smushit_data ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// No need to increase attachment count, resize, conversion savings for directory Smush.\n\t\tif ( 'media' === type ) {\n\t\t\t// Increase Smushed image count.\n\t\t\twp_smushit_data.count_images = parseInt( wp_smushit_data.count_images ) + parseInt( imageStats.count );\n\n\t\t\t// Increase super Smush count, if applicable.\n\t\t\tif ( imageStats.is_lossy ) {\n\t\t\t\twp_smushit_data.count_supersmushed = parseInt( wp_smushit_data.count_supersmushed ) + 1;\n\t\t\t}\n\n\t\t\t// Add to resize savings.\n\t\t\twp_smushit_data.savings_resize = 'undefined' !== typeof imageStats.savings_resize.bytes ? parseInt( wp_smushit_data.savings_resize ) + parseInt( imageStats.savings_resize.bytes ) : parseInt( wp_smushit_data.savings_resize );\n\n\t\t\t// Update resize count.\n\t\t\twp_smushit_data.count_resize = 'undefined' !== typeof imageStats.savings_resize.bytes ? parseInt( wp_smushit_data.count_resize ) + 1 : wp_smushit_data.count_resize;\n\n\t\t\t// Add to conversion savings.\n\t\t\twp_smushit_data.savings_conversion = 'undefined' !== typeof imageStats.savings_conversion && 'undefined' !== typeof imageStats.savings_conversion.bytes ? parseInt( wp_smushit_data.savings_conversion ) + parseInt( imageStats.savings_conversion.bytes ) : parseInt( wp_smushit_data.savings_conversion );\n\t\t} else if ( 'directory_smush' === type ) {\n\t\t\t//Increase smushed image count\n\t\t\twp_smushit_data.count_images = parseInt( wp_smushit_data.count_images ) + 1;\n\t\t} else if ( 'nextgen' === type ) {\n\t\t\twp_smushit_data.count_supersmushed = parseInt( wp_smushit_data.count_supersmushed ) + 1;\n\n\t\t\t// Increase Smushed image count.\n\t\t\twp_smushit_data.count_images = parseInt( wp_smushit_data.count_images ) + parseInt( imageStats.count );\n\t\t}\n\n\t\t// If we have savings. Update savings.\n\t\tif ( imageStats.size_before > imageStats.size_after ) {\n\t\t\twp_smushit_data.size_before = 'undefined' !== typeof imageStats.size_before ? parseInt( wp_smushit_data.size_before ) + parseInt( imageStats.size_before ) : parseInt( wp_smushit_data.size_before );\n\t\t\twp_smushit_data.size_after = 'undefined' !== typeof imageStats.size_after ? parseInt( wp_smushit_data.size_after ) + parseInt( imageStats.size_after ) : parseInt( wp_smushit_data.size_after );\n\t\t}\n\n\t\t// Add stats for resizing. Update savings.\n\t\tif ( 'undefined' !== typeof imageStats.savings_resize ) {\n\t\t\twp_smushit_data.size_before = 'undefined' !== typeof imageStats.savings_resize.size_before ? parseInt( wp_smushit_data.size_before ) + parseInt( imageStats.savings_resize.size_before ) : parseInt( wp_smushit_data.size_before );\n\t\t\twp_smushit_data.size_after = 'undefined' !== typeof imageStats.savings_resize.size_after ? parseInt( wp_smushit_data.size_after ) + parseInt( imageStats.savings_resize.size_after ) : parseInt( wp_smushit_data.size_after );\n\t\t}\n\n\t\t// Add stats for conversion. Update savings.\n\t\tif ( 'undefined' !== typeof imageStats.savings_conversion ) {\n\t\t\twp_smushit_data.size_before = 'undefined' !== typeof imageStats.savings_conversion.size_before ? parseInt( wp_smushit_data.size_before ) + parseInt( imageStats.savings_conversion.size_before ) : parseInt( wp_smushit_data.size_before );\n\t\t\twp_smushit_data.size_after = 'undefined' !== typeof imageStats.savings_conversion.size_after ? parseInt( wp_smushit_data.size_after ) + parseInt( imageStats.savings_conversion.size_after ) : parseInt( wp_smushit_data.size_after );\n\t\t}\n\t}\n\n\t/**\n\t * Update progress.\n\t *\n\t * @param {Object} _res\n\t */\n\tupdateProgress( _res ) {\n\t\tif ( ! this.is_bulk_resmush && ! this.is_bulk ) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet progress = '';\n\n\t\t// Update localized stats.\n\t\tif ( _res && ( 'undefined' !== typeof _res.data && 'undefined' !== typeof _res.data.stats ) ) {\n\t\t\tSmush.updateLocalizedStats( _res.data.stats, this.smush_type );\n\t\t}\n\n\t\tif ( ! this.is_bulk_resmush ) {\n\t\t\t// Handle progress for normal bulk smush.\n\t\t\tprogress = ( ( this.smushed + this.errors.length ) / this.total ) * 100;\n\t\t} else {\n\t\t\t// If the request was successful, update the progress bar.\n\t\t\tif ( _res.success ) {\n\t\t\t\t// Handle progress for super Smush progress bar.\n\t\t\t\tif ( wp_smushit_data.resmush.length > 0 ) {\n\t\t\t\t\t// Update the count.\n\t\t\t\t\tjQuery( '.wp-smush-images-remaining' ).html( wp_smushit_data.resmush.length );\n\t\t\t\t} else if ( 0 === wp_smushit_data.resmush.length && 0 === this.ids.length ) {\n\t\t\t\t\t// If all images are re-Smushed, show the All Smushed message.\n\t\t\t\t\tjQuery( '.bulk-resmush-wrapper .wp-smush-all-done, .wp-smush-pagespeed-recommendation' ).removeClass( 'sui-hidden' );\n\n\t\t\t\t\t// Hide everything else.\n\t\t\t\t\tjQuery( '.wp-smush-resmush-wrap, .wp-smush-bulk-progress-bar-wrapper' ).hide();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Handle progress for normal bulk Smush. Set progress bar width.\n\t\t\tif ( 'undefined' !== typeof this.ids && 'undefined' !== typeof this.total && this.total > 0 ) {\n\t\t\t\tprogress = ( ( this.smushed + this.errors.length ) / this.total ) * 100;\n\t\t\t}\n\t\t}\n\n\t\t// No more images left. Show bulk wrapper and Smush notice.\n\t\tif ( 0 === this.ids.length ) {\n\t\t\t// Sync stats for bulk Smush media library ( skip for Nextgen ).\n\t\t\tif ( 'nextgen' !== this.smush_type ) {\n\t\t\t\tthis.syncStats();\n\t\t\t}\n\t\t\tjQuery( '.bulk-smush-wrapper .wp-smush-all-done, .wp-smush-pagespeed-recommendation' ).show();\n\t\t\tjQuery( '.wp-smush-bulk-wrapper' ).hide();\n\t\t}\n\n\t\t// Update remaining count.\n\t\tthis.updateRemainingCount();\n\n\t\t// Increase the progress bar and counter.\n\t\tthis._updateProgress( this.smushed + this.errors.length, WP_Smush.helpers.precise_round( progress, 1 ) );\n\n\t\t// Update stats and counts.\n\t\tSmush.updateStats( this.smush_type );\n\t}\n\n\t/**\n\t * Update progress.\n\t *\n\t * @param {number} count Number of images optimized.\n\t * @param {string} width Percentage complete.\n\t * @private\n\t */\n\t_updateProgress( count, width ) {\n\t\tif ( ! this.is_bulk && ! this.is_bulk_resmush ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Progress bar label.\n\t\tjQuery( 'span.wp-smush-images-percent' ).html( width + '%' );\n\t\t// Progress bar.\n\t\tjQuery( '.bulk-smush-wrapper .wp-smush-progress-inner' ).css( 'width', width + '%' );\n\n\t\t// Progress bar status.\n\t\tjQuery( '.bulk-smush-wrapper .sui-progress-state-text' )\n\t\t\t.find( 'span:first-child' ).html( count )\n\t\t\t.find( 'span:last-child' ).html( this.total );\n\t}\n\n\t/**\n\t * Whether to send the ajax requests further or not.\n\t *\n\t * @return {*|boolean} Should continue or not.\n\t */\n\tcontinue() {\n\t\tlet continueSmush = this.button.attr( 'continue_smush' );\n\n\t\tif ( 'undefined' === typeof continueSmush ) {\n\t\t\tcontinueSmush = true;\n\t\t}\n\n\t\tif ( 'false' === continueSmush || ! continueSmush ) {\n\t\t\tcontinueSmush = false;\n\t\t}\n\n\t\treturn continueSmush && this.ids.length > 0 && this.is_bulk;\n\t}\n\n\t/**\n\t * Send ajax request for optimizing single and bulk, call update_progress on ajax response.\n\t *\n\t * @return {*} Ajax call response.\n\t */\n\tcallAjax() {\n\t\tlet nonceValue = '';\n\t\t// Remove from array while processing so we can continue where left off.\n\t\tthis.current_id = this.is_bulk ? this.ids.shift() : this.button.data( 'id' );\n\n\t\t// Remove the ID from respective variable as well.\n\t\tSmush.updateSmushIds( this.current_id );\n\n\t\tconst nonceField = this.button.parent().find( '#_wp_smush_nonce' );\n\t\tif ( nonceField ) {\n\t\t\tnonceValue = nonceField.val();\n\t\t}\n\n\t\tconst self = this;\n\n\t\tthis.request = Smush.ajax( this.is_bulk_resmush, this.current_id, this.url, nonceValue )\n\t\t\t.done( function( res ) {\n\t\t\t\t// If no response or success is false, do not process further. Increase the error count except if bulk request limit exceeded.\n\t\t\t\tif ( 'undefined' === typeof res.success || ( 'undefined' !== typeof res.success && false === res.success && 'undefined' !== typeof res.data && 'limit_exceeded' !== res.data.error ) ) {\n\t\t\t\t\tself.errors.push( self.current_id );\n\n\t\t\t\t\t/** @var {string} res.data.file_name */\n\t\t\t\t\tconst errorMsg = Smush.prepareErrorRow( res.data.error_message, res.data.file_name, res.data.thumbnail, self.current_id, self.smush_type );\n\n\t\t\t\t\tself.log.show();\n\n\t\t\t\t\tif ( self.errors.length > 5 ) {\n\t\t\t\t\t\tjQuery( '.smush-bulk-errors-actions' ).removeClass( 'sui-hidden' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Print the error on screen.\n\t\t\t\t\t\tself.log.find( '.smush-bulk-errors' ).append( errorMsg );\n\t\t\t\t\t}\n\t\t\t\t} else if ( 'undefined' !== typeof res.success && res.success ) {\n\t\t\t\t\t// Increment the smushed count if image smushed without errors.\n\t\t\t\t\tself.smushed++;\n\t\t\t\t}\n\n\t\t\t\t// Check whether to show the warning notice or not.\n\t\t\t\tSmush.membershipValidity( res.data );\n\n\t\t\t\t/**\n\t\t\t\t * Bulk Smush limit exceeded: Stop ajax requests, remove progress bar, append the last image ID\n\t\t\t\t * back to Smush variable, and reset variables to allow the user to continue bulk Smush.\n\t\t\t\t */\n\t\t\t\tif ( 'undefined' !== typeof res.data && 'limit_exceeded' === res.data.error && 'resolved' !== self.deferred.state() ) {\n\t\t\t\t\t// Show error message.\n\t\t\t\t\tconst bulkWarning = document.getElementById( 'bulk_smush_warning' );\n\t\t\t\t\tbulkWarning.classList.remove( 'sui-hidden' );\n\n\t\t\t\t\t// Add a data attribute to the Smush button, to stop sending ajax.\n\t\t\t\t\tself.button.attr( 'continue_smush', false );\n\n\t\t\t\t\t// Reinsert the current ID.\n\t\t\t\t\twp_smushit_data.unsmushed.unshift( self.current_id );\n\t\t\t\t\tself.ids.unshift( self.current_id );\n\n\t\t\t\t\tself.freeExceeded();\n\t\t\t\t} else if ( self.is_bulk ) {\n\t\t\t\t\tself.updateProgress( res );\n\t\t\t\t} else if ( 0 === self.ids.length ) {\n\t\t\t\t\t// Sync stats anyway.\n\t\t\t\t\tself.syncStats();\n\t\t\t\t}\n\n\t\t\t\tself.singleDone();\n\t\t\t} )\n\t\t\t.always( function() {\n\t\t\t\tif ( ! self.continue() || ! self.is_bulk ) {\n\t\t\t\t\t// Calls deferred.done()\n\t\t\t\t\tself.deferred.resolve();\n\t\t\t\t} else {\n\t\t\t\t\tself.callAjax();\n\t\t\t\t}\n\t\t\t} );\n\n\t\tthis.deferred.errors = this.errors;\n\t\treturn this.deferred;\n\t}\n\n\t/**\n\t * Prepare error row. Will only allow to hide errors for WP media attachments (not nextgen).\n\t *\n\t * @since 1.9.0\n\t *\n\t * @param {string} errorMsg Error message.\n\t * @param {string} fileName File name.\n\t * @param {string} thumbnail Thumbnail for image (if available).\n\t * @param {number} id Image ID.\n\t * @param {string} type Smush type: media or netxgen.\n\t *\n\t * @return {string} Row with error.\n\t */\n\tstatic prepareErrorRow( errorMsg, fileName, thumbnail, id, type ) {\n\t\tconst thumbDiv = ( 'undefined' === typeof thumbnail ) ? '<i class=\"sui-icon-photo-picture\" aria-hidden=\"true\"></i>' : thumbnail;\n\t\tconst fileLink = ( 'undefined' === fileName || 'undefined' === typeof fileName ) ? 'undefined' : fileName;\n\n\t\tlet tableDiv =\n\t\t\t'<div class=\"smush-bulk-error-row\">' +\n\t\t\t\t'<div class=\"smush-bulk-image-data\">' + thumbDiv +\n\t\t\t\t\t'<span class=\"smush-image-name\">' + fileLink + '</span>' +\n\t\t\t\t\t'<span class=\"smush-image-error\">' + errorMsg + '</span>' +\n\t\t\t\t'</div>';\n\n\t\tif ( 'media' === type ) {\n\t\t\ttableDiv = tableDiv +\n\t\t\t\t'<div class=\"smush-bulk-image-actions\">' +\n\t\t\t\t\t'<button type=\"button\" class=\"sui-button-icon sui-tooltip sui-tooltip-constrained sui-tooltip-top-right smush-ignore-image\" data-tooltip=\"' + wp_smush_msgs.error_ignore + '\" data-id=\"' + id + '\">' +\n\t\t\t\t\t\t'<i class=\"sui-icon-eye-hide\" aria-hidden=\"true\"></i>' +\n\t\t\t\t\t'</button>' +\n\t\t\t\t'</div>';\n\t\t}\n\n\t\ttableDiv = tableDiv + '</div>';\n\n\t\treturn tableDiv;\n\t}\n\n\t/**\n\t * Send ajax request for single and bulk Smushing.\n\t */\n\trun() {\n\t\t// If bulk and we have a definite number of IDs.\n\t\tif ( this.is_bulk && this.ids.length > 0 ) {\n\t\t\tthis.callAjax();\n\t\t}\n\n\t\tif ( ! this.is_bulk ) {\n\t\t\tthis.callAjax();\n\t\t}\n\t}\n\n\t/**\n\t * Show bulk Smush errors, and disable bulk Smush button on completion.\n\t */\n\tbindDeferredEvents() {\n\t\tconst self = this;\n\n\t\tthis.deferred.done( function() {\n\t\t\tself.button.removeAttr( 'continue_smush' );\n\n\t\t\tif ( self.errors.length ) {\n\t\t\t\t/** @var {string} wp_smush_msgs.error_in_bulk */\n\t\t\t\tconst msg = wp_smush_msgs.error_in_bulk\n\t\t\t\t\t.replace( '{{errors}}', self.errors.length )\n\t\t\t\t\t.replace( '{{total}}', self.total )\n\t\t\t\t\t.replace( '{{smushed}}', self.smushed );\n\n\t\t\t\tjQuery( '.wp-smush-all-done' )\n\t\t\t\t\t.addClass( 'sui-notice-warning' )\n\t\t\t\t\t.removeClass( 'sui-notice-success' )\n\t\t\t\t\t.find( 'p' ).html( msg );\n\t\t\t}\n\n\t\t\tself.bulkDone();\n\n\t\t\t// Re-enable the buttons.\n\t\t\tjQuery( '.wp-smush-all:not(.wp-smush-finished), .wp-smush-scan' ).removeAttr( 'disabled' );\n\t\t} );\n\t}\n\n\t/**\n\t * Handles the cancel button click.\n\t * Update the UI, and enable the bulk Smush button.\n\t */\n\tcancelAjax() {\n\t\tconst self = this;\n\n\t\tjQuery( '.wp-smush-cancel-bulk' ).on( 'click', function() {\n\t\t\t// Add a data attribute to the Smush button, to stop sending ajax.\n\t\t\tself.button.attr( 'continue_smush', false );\n\t\t\t// Sync and update stats.\n\t\t\tself.syncStats();\n\t\t\tSmush.updateStats( this.smush_type );\n\n\t\t\tself.request.abort();\n\t\t\tself.enableButton();\n\t\t\tself.button.removeClass( 'wp-smush-started' );\n\t\t\twp_smushit_data.unsmushed.unshift( self.current_id );\n\t\t\tjQuery( '.wp-smush-bulk-wrapper' ).show();\n\n\t\t\t// Hide the progress bar.\n\t\t\tjQuery( '.wp-smush-bulk-progress-bar-wrapper' ).hide();\n\t\t} );\n\t}\n\n\t/**\n\t * Remove the current ID from the unSmushed/re-Smush variable.\n\t *\n\t * @param {number} currentId\n\t */\n\tstatic updateSmushIds( currentId ) {\n\t\tif ( 'undefined' !== typeof wp_smushit_data.unsmushed && wp_smushit_data.unsmushed.length > 0 ) {\n\t\t\tconst uIndex = wp_smushit_data.unsmushed.indexOf( currentId );\n\t\t\tif ( uIndex > -1 ) {\n\t\t\t\twp_smushit_data.unsmushed.splice( uIndex, 1 );\n\t\t\t}\n\t\t}\n\n\t\t// Remove from the re-Smush list.\n\t\tif ( 'undefined' !== typeof wp_smushit_data.resmush && wp_smushit_data.resmush.length > 0 ) {\n\t\t\tconst index = wp_smushit_data.resmush.indexOf( currentId );\n\t\t\tif ( index > -1 ) {\n\t\t\t\twp_smushit_data.resmush.splice( index, 1 );\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport default Smush;\n","/* global NodeList, Element, define */\n\n(function (global) {\n 'use strict';\n\n var FOCUSABLE_ELEMENTS = ['a[href]', 'area[href]', 'input:not([disabled])', 'select:not([disabled])', 'textarea:not([disabled])', 'button:not([disabled])', 'iframe', 'object', 'embed', '[contenteditable]', '[tabindex]:not([tabindex^=\"-\"])'];\n var TAB_KEY = 9;\n var ESCAPE_KEY = 27;\n var focusedBeforeDialog;\n\n /**\n * Define the constructor to instantiate a dialog\n *\n * @constructor\n * @param {Element} node\n * @param {(NodeList | Element | string)} targets\n */\n function A11yDialog(node, targets) {\n // Prebind the functions that will be bound in addEventListener and\n // removeEventListener to avoid losing references\n this._show = this.show.bind(this);\n this._hide = this.hide.bind(this);\n // this._maintainFocus = this._maintainFocus.bind(this);\n this._bindKeypress = this._bindKeypress.bind(this);\n\n // Keep a reference of the node on the instance\n this.node = node;\n\n // Keep an object of listener types mapped to callback functions\n this._listeners = {};\n\n // Initialise everything needed for the dialog to work properly\n this.create(targets);\n }\n\n /**\n * Set up everything necessary for the dialog to be functioning\n *\n * @param {(NodeList | Element | string)} targets\n * @return {this}\n */\n A11yDialog.prototype.create = function (targets) {\n // Keep a collection of nodes to disable/enable when toggling the dialog\n this._targets = this._targets || collect(targets) || getSiblings(this.node);\n\n // Make sure the dialog element is disabled on load, and that the `shown`\n // property is synced with its value\n this.node.setAttribute('aria-hidden', true);\n this.shown = false;\n\n // Keep a collection of dialog openers, each of which will be bound a click\n // event listener to open the dialog\n this._openers = $$('[data-a11y-dialog-show=\"' + this.node.id + '\"]');\n this._openers.forEach(function (opener) {\n opener.addEventListener('click', this._show);\n }.bind(this));\n\n // Keep a collection of dialog closers, each of which will be bound a click\n // event listener to close the dialog\n this._closers = $$('[data-a11y-dialog-hide]', this.node)\n .concat($$('[data-a11y-dialog-hide=\"' + this.node.id + '\"]'));\n this._closers.forEach(function (closer) {\n closer.addEventListener('click', this._hide);\n }.bind(this));\n\n // Execute all callbacks registered for the `create` event\n this._fire('create');\n\n return this;\n };\n\n /**\n * Show the dialog element, disable all the targets (siblings), trap the\n * current focus within it, listen for some specific key presses and fire all\n * registered callbacks for `show` event\n *\n * @param {Event} event\n * @return {this}\n */\n A11yDialog.prototype.show = function (event) {\n // If the dialog is already open, abort\n if (this.shown) {\n return this;\n }\n\n this.node.classList.add('sui-fade-in');\n this.node.classList.remove('sui-fade-out');\n var content = this.node.getElementsByClassName('sui-dialog-content');\n content[0].className = 'sui-dialog-content sui-content-fade-in';\n\n // Execute all callbacks registered for the `show` event\n this._fire('show', event);\n\n this.shown = true;\n this.node.removeAttribute('aria-hidden');\n\n // Iterate over the targets to disable them by setting their `aria-hidden`\n // attribute to `true`; in case they already have this attribute, keep a\n // reference of their original value to be able to restore it later\n this._targets.forEach(function (target) {\n var original = target.getAttribute('aria-hidden');\n\n if (original) {\n target.setAttribute('data-a11y-dialog-original', original);\n }\n\n target.setAttribute('aria-hidden', 'true');\n });\n\n // Keep a reference to the currently focused element to be able to restore\n // it later, then set the focus to the first focusable child of the dialog\n // element\n focusedBeforeDialog = document.activeElement;\n setFocusToFirstItem(this.node);\n\n // Bind a focus event listener to the body element to make sure the focus\n // stays trapped inside the dialog while open, and start listening for some\n // specific key presses (TAB and ESC)\n // document.body.addEventListener('focus', this._maintainFocus, true);\n document.addEventListener('keydown', this._bindKeypress);\n\n // Add overlay class to document body.\n document.getElementsByTagName('html')[0].classList.add('sui-has-overlay');\n\n\n return this;\n };\n\n /**\n * Hide the dialog element, enable all the targets (siblings), restore the\n * focus to the previously active element, stop listening for some specific\n * key presses and fire all registered callbacks for `hide` event\n *\n * @param {Event} event\n * @return {this}\n */\n A11yDialog.prototype.hide = function (event) {\n // If the dialog is already closed, abort\n if (!this.shown) {\n return this;\n }\n\n\n var content = this.node.getElementsByClassName('sui-dialog-content');\n\n content[0].className = 'sui-dialog-content sui-content-fade-out';\n this.node.classList.add('sui-fade-out');\n this.node.classList.remove('sui-fade-in');\n\n // Execute all callbacks registered for the `hide` event\n this._fire('hide', event);\n\n this.shown = false;\n // This has been set so there is enough time for the animation to show\n var timeout_node = this.node;\n setTimeout(function () {\n timeout_node.setAttribute('aria-hidden', 'true');\n }, 300);\n\n // Iterate over the targets to enable them by remove their `aria-hidden`\n // attribute or resetting them to their initial value\n this._targets.forEach(function (target) {\n var original = target.getAttribute('data-a11y-dialog-original');\n\n\n if (original) {\n target.setAttribute('aria-hidden', original);\n target.removeAttribute('data-a11y-dialog-original');\n } else {\n target.removeAttribute('aria-hidden');\n }\n });\n\n // If their was a focused element before the dialog was opened, restore the\n // focus back to it\n if (focusedBeforeDialog) {\n focusedBeforeDialog.focus();\n }\n\n // Remove the focus event listener to the body element and stop listening\n // for specific key presses\n // document.body.removeEventListener('focus', this._maintainFocus, true);\n document.removeEventListener('keydown', this._bindKeypress);\n\n // Remove overlay class to document body.\n document.getElementsByTagName('html')[0].classList.remove('sui-has-overlay');\n\n\n return this;\n };\n\n /**\n * Destroy the current instance (after making sure the dialog has been hidden)\n * and remove all associated listeners from dialog openers and closers\n *\n * @return {this}\n */\n A11yDialog.prototype.destroy = function () {\n // Hide the dialog to avoid destroying an open instance\n this.hide();\n\n // Remove the click event listener from all dialog openers\n this._openers.forEach(function (opener) {\n opener.removeEventListener('click', this._show);\n }.bind(this));\n\n // Remove the click event listener from all dialog closers\n this._closers.forEach(function (closer) {\n closer.removeEventListener('click', this._hide);\n }.bind(this));\n\n // Execute all callbacks registered for the `destroy` event\n this._fire('destroy');\n\n // Keep an object of listener types mapped to callback functions\n this._listeners = {};\n\n return this;\n };\n\n /**\n * Register a new callback for the given event type\n *\n * @param {string} type\n * @param {Function} handler\n */\n A11yDialog.prototype.on = function (type, handler) {\n if (typeof this._listeners[type] === 'undefined') {\n this._listeners[type] = [];\n }\n\n this._listeners[type].push(handler);\n\n return this;\n };\n\n /**\n * Unregister an existing callback for the given event type\n *\n * @param {string} type\n * @param {Function} handler\n */\n A11yDialog.prototype.off = function (type, handler) {\n var index = this._listeners[type].indexOf(handler);\n\n if (index > -1) {\n this._listeners[type].splice(index, 1);\n }\n\n return this;\n };\n\n /**\n * Iterate over all registered handlers for given type and call them all with\n * the dialog element as first argument, event as second argument (if any).\n *\n * @access private\n * @param {string} type\n * @param {Event} event\n */\n A11yDialog.prototype._fire = function (type, event) {\n var listeners = this._listeners[type] || [];\n\n listeners.forEach(function (listener) {\n listener(this.node, event);\n }.bind(this));\n };\n\n /**\n * Private event handler used when listening to some specific key presses\n * (namely ESCAPE and TAB)\n *\n * @access private\n * @param {Event} event\n */\n A11yDialog.prototype._bindKeypress = function (event) {\n // If the dialog is shown and the ESCAPE key is being pressed, prevent any\n // further effects from the ESCAPE key and hide the dialog\n if (this.shown && event.which === ESCAPE_KEY) {\n event.preventDefault();\n this.hide();\n }\n\n // If the dialog is shown and the TAB key is being pressed, make sure the\n // focus stays trapped within the dialog element\n if (this.shown && event.which === TAB_KEY) {\n trapTabKey(this.node, event);\n }\n };\n\n /**\n * Private event handler used when making sure the focus stays within the\n * currently open dialog\n *\n * @access private\n * @param {Event} event\n */\n A11yDialog.prototype._maintainFocus = function (event) {\n // If the dialog is shown and the focus is not within the dialog element,\n // move it back to its first focusable child\n if (this.shown && !this.node.contains(event.target)) {\n setFocusToFirstItem(this.node);\n }\n };\n\n /**\n * Convert a NodeList into an array\n *\n * @param {NodeList} collection\n * @return {Array<Element>}\n */\n function toArray(collection) {\n return Array.prototype.slice.call(collection);\n }\n\n /**\n * Query the DOM for nodes matching the given selector, scoped to context (or\n * the whole document)\n *\n * @param {String} selector\n * @param {Element} [context = document]\n * @return {Array<Element>}\n */\n function $$(selector, context) {\n return toArray((context || document).querySelectorAll(selector));\n }\n\n /**\n * Return an array of Element based on given argument (NodeList, Element or\n * string representing a selector)\n *\n * @param {(NodeList | Element | string)} target\n * @return {Array<Element>}\n */\n function collect(target) {\n if (NodeList.prototype.isPrototypeOf(target)) {\n return toArray(target);\n }\n\n if (Element.prototype.isPrototypeOf(target)) {\n return [target];\n }\n\n if (typeof target === 'string') {\n return $$(target);\n }\n }\n\n /**\n * Set the focus to the first focusable child of the given element\n *\n * @param {Element} node\n */\n function setFocusToFirstItem(node) {\n var focusableChildren = getFocusableChildren(node);\n\n if (focusableChildren.length) {\n focusableChildren[0].focus();\n }\n }\n\n /**\n * Get the focusable children of the given element\n *\n * @param {Element} node\n * @return {Array<Element>}\n */\n function getFocusableChildren(node) {\n return $$(FOCUSABLE_ELEMENTS.join(','), node).filter(function (child) {\n return !!(child.offsetWidth || child.offsetHeight || child.getClientRects().length);\n });\n }\n\n /**\n * Trap the focus inside the given element\n *\n * @param {Element} node\n * @param {Event} event\n */\n function trapTabKey(node, event) {\n var focusableChildren = getFocusableChildren(node);\n var focusedItemIndex = focusableChildren.indexOf(document.activeElement);\n\n // If the SHIFT key is being pressed while tabbing (moving backwards) and\n // the currently focused item is the first one, move the focus to the last\n // focusable item from the dialog element\n if (event.shiftKey && focusedItemIndex === 0) {\n focusableChildren[focusableChildren.length - 1].focus();\n event.preventDefault();\n // If the SHIFT key is not being pressed (moving forwards) and the currently\n // focused item is the last one, move the focus to the first focusable item\n // from the dialog element\n } else if (!event.shiftKey && focusedItemIndex === focusableChildren.length - 1) {\n focusableChildren[0].focus();\n event.preventDefault();\n }\n }\n\n /**\n * Retrieve siblings from given element\n *\n * @param {Element} node\n * @return {Array<Element>}\n */\n function getSiblings(node) {\n var nodes = toArray(node.parentNode.childNodes);\n var siblings = nodes.filter(function (node) {\n return node.nodeType === 1;\n });\n\n siblings.splice(siblings.indexOf(node), 1);\n\n return siblings;\n }\n\n if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n module.exports = A11yDialog;\n } else if (typeof define === 'function' && define.amd) {\n define('A11yDialog', [], function () {\n return A11yDialog;\n });\n } else if (typeof global === 'object') {\n global.A11yDialog = A11yDialog;\n }\n}(typeof global !== 'undefined' ? global : window));\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/* global ajaxurl */\n/* global wp_smush_msgs */\n\n/**\n * Directory scanner module that will Smush images in the Directory Smush modal.\n *\n * @since 2.8.1\n *\n * @param {string|number} totalSteps\n * @param {string|number} currentStep\n * @return {Object} Scan object.\n * @constructor\n */\nconst DirectoryScanner = ( totalSteps, currentStep ) => {\n\ttotalSteps = parseInt( totalSteps );\n\tcurrentStep = parseInt( currentStep );\n\n\tlet cancelling = false,\n\t\tfailedItems = 0;\n\n\tconst obj = {\n\t\tscan() {\n\t\t\tconst remainingSteps = totalSteps - currentStep;\n\t\t\tif ( currentStep !== 0 ) {\n\t\t\t\t// Scan started on a previous page load.\n\t\t\t\tstep( remainingSteps );\n\t\t\t} else {\n\t\t\t\tjQuery.post( ajaxurl, { action: 'directory_smush_start' },\n\t\t\t\t\t() => step( remainingSteps ) );\n\t\t\t}\n\t\t},\n\n\t\tcancel() {\n\t\t\tcancelling = true;\n\t\t\treturn jQuery.post( ajaxurl, { action: 'directory_smush_cancel' } );\n\t\t},\n\n\t\tgetProgress() {\n\t\t\tif ( cancelling ) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\t// O M G ... Logic at it's finest!\n\t\t\tconst remainingSteps = totalSteps - currentStep;\n\t\t\treturn Math.min( Math.round( ( parseInt( ( totalSteps - remainingSteps ) ) * 100 ) / totalSteps ), 99 );\n\t\t},\n\n\t\tonFinishStep( progress ) {\n\t\t\tjQuery( '.wp-smush-progress-dialog .sui-progress-state-text' ).html( ( currentStep - failedItems ) + '/' + totalSteps + ' ' + wp_smush_msgs.progress_smushed );\n\t\t\tWP_Smush.directory.updateProgressBar( progress );\n\t\t},\n\n\t\tonFinish() {\n\t\t\tWP_Smush.directory.updateProgressBar( 100 );\n\t\t\twindow.location.href = wp_smush_msgs.directory_url + '&scan=done';\n\t\t},\n\n\t\tlimitReached() {\n\t\t\tconst dialog = jQuery( '#wp-smush-progress-dialog' );\n\n\t\t\tdialog.addClass( 'wp-smush-exceed-limit' );\n\t\t\tdialog.find( '#cancel-directory-smush' ).attr( 'data-tooltip', wp_smush_msgs.bulk_resume );\n\t\t\tdialog.find( '.sui-icon-close' ).removeClass( 'sui-icon-close' ).addClass( 'sui-icon-play' );\n\t\t\tdialog.find( '#cancel-directory-smush' ).attr( 'id', 'cancel-directory-smush-disabled' );\n\t\t},\n\n\t\tresume() {\n\t\t\tconst dialog = jQuery( '#wp-smush-progress-dialog' );\n\t\t\tconst resume = dialog.find( '#cancel-directory-smush-disabled' );\n\n\t\t\tdialog.removeClass( 'wp-smush-exceed-limit' );\n\t\t\tdialog.find( '.sui-icon-play' ).removeClass( 'sui-icon-play' ).addClass( 'sui-icon-close' );\n\t\t\tresume.attr( 'data-tooltip', 'Cancel' );\n\t\t\tresume.attr( 'id', 'cancel-directory-smush' );\n\n\t\t\tobj.scan();\n\t\t},\n\t};\n\n\t/**\n\t * Execute a scan step recursively\n\t *\n\t * Private to avoid overriding\n\t *\n\t * @param {number} remainingSteps\n\t */\n\tconst step = function( remainingSteps ) {\n\t\tif ( remainingSteps >= 0 ) {\n\t\t\tcurrentStep = totalSteps - remainingSteps;\n\t\t\tjQuery.post( ajaxurl, {\n\t\t\t\taction: 'directory_smush_check_step',\n\t\t\t\tstep: currentStep,\n\t\t\t}, ( response ) => {\n\t\t\t\t// We're good - continue on.\n\t\t\t\tif ( 'undefined' !== typeof response.success && response.success ) {\n\t\t\t\t\tcurrentStep++;\n\t\t\t\t\tremainingSteps = remainingSteps - 1;\n\t\t\t\t\tobj.onFinishStep( obj.getProgress() );\n\t\t\t\t\tstep( remainingSteps );\n\t\t\t\t} else if ( 'undefined' !== typeof response.data.error && 'dir_smush_limit_exceeded' === response.data.error ) {\n\t\t\t\t\t// Limit reached. Stop.\n\t\t\t\t\tobj.limitReached();\n\t\t\t\t} else {\n\t\t\t\t\t// Error? never mind, continue, but count them.\n\t\t\t\t\tfailedItems++;\n\t\t\t\t\tcurrentStep++;\n\t\t\t\t\tremainingSteps = remainingSteps - 1;\n\t\t\t\t\tobj.onFinishStep( obj.getProgress() );\n\t\t\t\t\tstep( remainingSteps );\n\t\t\t\t}\n\t\t\t} );\n\t\t} else {\n\t\t\tjQuery.post( ajaxurl, {\n\t\t\t\taction: 'directory_smush_finish',\n\t\t\t\titems: ( totalSteps - failedItems ),\n\t\t\t\tfailed: failedItems,\n\t\t\t}, ( response ) => obj.onFinish( response ) );\n\t\t}\n\t};\n\n\treturn obj;\n};\n\nexport default DirectoryScanner;\n","/*!\n * jQuery JavaScript Library v3.4.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2019-05-01T21:04Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar document = window.document;\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML <object> elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\n };\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.4.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android <=4.0 only\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code, options ) {\n\t\tDOMEval( code, { nonce: options && options.nonce } );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android <=4.0 only\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.4\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2019-04-08\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t(nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\") ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 && rdescend.test( selector ) ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = \"#\" + nid + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement(\"fieldset\");\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem.namespaceURI,\n\t\tdocElem = (elem.ownerDocument || elem).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( preferredDoc !== document &&\n\t\t(subWindow = document.defaultView) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( el ) {\n\t\tel.appendChild( document.createComment(\"\") );\n\t\treturn !el.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( (elem = elems[i++]) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( el ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll(\":enabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll(\":disabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( el ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn (sel + \"\").replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( (oldCache = uniqueCache[ key ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( el ) {\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement(\"fieldset\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( el ) {\n\treturn el.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n};\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( typeof elem.contentDocument !== \"undefined\" ) {\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\nvar swap = function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE <=9 only\n\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\n// Support: IE <=9 only\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tvar event = jQuery.event.fix( nativeEvent );\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\treturn result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t/* eslint-disable max-len */\n\n\t// See https://github.com/eslint/eslint/issues/3229\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n\n\t/* eslint-enable */\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1></$2>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t// This happens for inline elements with no explicit setting (gh-3571)\n\t// Support: Android <=4.1 - 4.3 only\n\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t// Support: IE 9-11 only\n\t// Also use offsetWidth/offsetHeight for when box sizing is unreliable\n\t// We use getClientRects() to check for hidden/disconnected.\n\t// In those cases, the computed value can be trusted to be border-box\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\t\tval === \"auto\" ||\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || {} )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = Date.now();\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\toriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce++ ) + uncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\n\njQuery._evalUrl = function( url, options ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t// documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name },\n\t\tfunction( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( ( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n} );\n\njQuery.fn.extend( {\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t}\n} );\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( !noGlobal ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n","/*!\n * jquery.fancytree.js\n * Tree view control with support for lazy loading and much more.\n * https://github.com/mar10/fancytree/\n *\n * Copyright (c) 2008-2019, Martin Wendt (https://wwWendt.de)\n * Released under the MIT license\n * https://github.com/mar10/fancytree/wiki/LicenseInfo\n *\n * @version 2.32.0\n * @date 2019-09-10T07:42:12Z\n */\n\n/** Core Fancytree module.\n */\n\n// UMD wrapper for the Fancytree core module\n(function(factory) {\n\tif (typeof define === \"function\" && define.amd) {\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine([\"jquery\", \"./jquery.fancytree.ui-deps\"], factory);\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\t// Node/CommonJS\n\t\trequire(\"./jquery.fancytree.ui-deps\");\n\t\tmodule.exports = factory(require(\"jquery\"));\n\t} else {\n\t\t// Browser globals\n\t\tfactory(jQuery);\n\t}\n})(function($) {\n\t\"use strict\";\n\n\t// prevent duplicate loading\n\tif ($.ui && $.ui.fancytree) {\n\t\t$.ui.fancytree.warn(\"Fancytree: ignored duplicate include\");\n\t\treturn;\n\t}\n\n\t/******************************************************************************\n\t * Private functions and variables\n\t */\n\n\tvar i,\n\t\tattr,\n\t\tFT = null, // initialized below\n\t\tTEST_IMG = new RegExp(/\\.|\\//), // strings are considered image urls if they contain '.' or '/'\n\t\tREX_HTML = /[&<>\"'/]/g, // Escape those characters\n\t\tREX_TOOLTIP = /[<>\"'/]/g, // Don't escape `&` in tooltips\n\t\tRECURSIVE_REQUEST_ERROR = \"$recursive_request\",\n\t\t// CLIPBOARD = null,\n\t\tENTITY_MAP = {\n\t\t\t\"&\": \"&\",\n\t\t\t\"<\": \"<\",\n\t\t\t\">\": \">\",\n\t\t\t'\"': \""\",\n\t\t\t\"'\": \"'\",\n\t\t\t\"/\": \"/\",\n\t\t},\n\t\tIGNORE_KEYCODES = { 16: true, 17: true, 18: true },\n\t\tSPECIAL_KEYCODES = {\n\t\t\t8: \"backspace\",\n\t\t\t9: \"tab\",\n\t\t\t10: \"return\",\n\t\t\t13: \"return\",\n\t\t\t// 16: null, 17: null, 18: null, // ignore shift, ctrl, alt\n\t\t\t19: \"pause\",\n\t\t\t20: \"capslock\",\n\t\t\t27: \"esc\",\n\t\t\t32: \"space\",\n\t\t\t33: \"pageup\",\n\t\t\t34: \"pagedown\",\n\t\t\t35: \"end\",\n\t\t\t36: \"home\",\n\t\t\t37: \"left\",\n\t\t\t38: \"up\",\n\t\t\t39: \"right\",\n\t\t\t40: \"down\",\n\t\t\t45: \"insert\",\n\t\t\t46: \"del\",\n\t\t\t59: \";\",\n\t\t\t61: \"=\",\n\t\t\t// 91: null, 93: null, // ignore left and right meta\n\t\t\t96: \"0\",\n\t\t\t97: \"1\",\n\t\t\t98: \"2\",\n\t\t\t99: \"3\",\n\t\t\t100: \"4\",\n\t\t\t101: \"5\",\n\t\t\t102: \"6\",\n\t\t\t103: \"7\",\n\t\t\t104: \"8\",\n\t\t\t105: \"9\",\n\t\t\t106: \"*\",\n\t\t\t107: \"+\",\n\t\t\t109: \"-\",\n\t\t\t110: \".\",\n\t\t\t111: \"/\",\n\t\t\t112: \"f1\",\n\t\t\t113: \"f2\",\n\t\t\t114: \"f3\",\n\t\t\t115: \"f4\",\n\t\t\t116: \"f5\",\n\t\t\t117: \"f6\",\n\t\t\t118: \"f7\",\n\t\t\t119: \"f8\",\n\t\t\t120: \"f9\",\n\t\t\t121: \"f10\",\n\t\t\t122: \"f11\",\n\t\t\t123: \"f12\",\n\t\t\t144: \"numlock\",\n\t\t\t145: \"scroll\",\n\t\t\t173: \"-\",\n\t\t\t186: \";\",\n\t\t\t187: \"=\",\n\t\t\t188: \",\",\n\t\t\t189: \"-\",\n\t\t\t190: \".\",\n\t\t\t191: \"/\",\n\t\t\t192: \"`\",\n\t\t\t219: \"[\",\n\t\t\t220: \"\\\\\",\n\t\t\t221: \"]\",\n\t\t\t222: \"'\",\n\t\t},\n\t\tMODIFIERS = {\n\t\t\t16: \"shift\",\n\t\t\t17: \"ctrl\",\n\t\t\t18: \"alt\",\n\t\t\t91: \"meta\",\n\t\t\t93: \"meta\",\n\t\t},\n\t\tMOUSE_BUTTONS = { 0: \"\", 1: \"left\", 2: \"middle\", 3: \"right\" },\n\t\t// Boolean attributes that can be set with equivalent class names in the LI tags\n\t\t// Note: v2.23: checkbox and hideCheckbox are *not* in this list\n\t\tCLASS_ATTRS = \"active expanded focus folder lazy radiogroup selected unselectable unselectableIgnore\".split(\n\t\t\t\" \"\n\t\t),\n\t\tCLASS_ATTR_MAP = {},\n\t\t// Top-level Fancytree attributes, that can be set by dict\n\t\tTREE_ATTRS = \"columns types\".split(\" \"),\n\t\t// TREE_ATTR_MAP = {},\n\t\t// Top-level FancytreeNode attributes, that can be set by dict\n\t\tNODE_ATTRS = \"checkbox expanded extraClasses folder icon iconTooltip key lazy partsel radiogroup refKey selected statusNodeType title tooltip type unselectable unselectableIgnore unselectableStatus\".split(\n\t\t\t\" \"\n\t\t),\n\t\tNODE_ATTR_MAP = {},\n\t\t// Mapping of lowercase -> real name (because HTML5 data-... attribute only supports lowercase)\n\t\tNODE_ATTR_LOWERCASE_MAP = {},\n\t\t// Attribute names that should NOT be added to node.data\n\t\tNONE_NODE_DATA_MAP = {\n\t\t\tactive: true,\n\t\t\tchildren: true,\n\t\t\tdata: true,\n\t\t\tfocus: true,\n\t\t};\n\n\tfor (i = 0; i < CLASS_ATTRS.length; i++) {\n\t\tCLASS_ATTR_MAP[CLASS_ATTRS[i]] = true;\n\t}\n\tfor (i = 0; i < NODE_ATTRS.length; i++) {\n\t\tattr = NODE_ATTRS[i];\n\t\tNODE_ATTR_MAP[attr] = true;\n\t\tif (attr !== attr.toLowerCase()) {\n\t\t\tNODE_ATTR_LOWERCASE_MAP[attr.toLowerCase()] = attr;\n\t\t}\n\t}\n\t// for(i=0; i<TREE_ATTRS.length; i++) {\n\t// \tTREE_ATTR_MAP[TREE_ATTRS[i]] = true;\n\t// }\n\n\tfunction _assert(cond, msg) {\n\t\t// TODO: see qunit.js extractStacktrace()\n\t\tif (!cond) {\n\t\t\tmsg = msg ? \": \" + msg : \"\";\n\t\t\t// consoleApply(\"assert\", [!!cond, msg]);\n\t\t\t$.error(\"Fancytree assertion failed\" + msg);\n\t\t}\n\t}\n\n\t_assert($.ui, \"Fancytree requires jQuery UI (http://jqueryui.com)\");\n\n\tfunction consoleApply(method, args) {\n\t\tvar i,\n\t\t\ts,\n\t\t\tfn = window.console ? window.console[method] : null;\n\n\t\tif (fn) {\n\t\t\ttry {\n\t\t\t\tfn.apply(window.console, args);\n\t\t\t} catch (e) {\n\t\t\t\t// IE 8?\n\t\t\t\ts = \"\";\n\t\t\t\tfor (i = 0; i < args.length; i++) {\n\t\t\t\t\ts += args[i];\n\t\t\t\t}\n\t\t\t\tfn(s);\n\t\t\t}\n\t\t}\n\t}\n\n\t/* support: IE8 Polyfil for Date.now() */\n\tif (!Date.now) {\n\t\tDate.now = function now() {\n\t\t\treturn new Date().getTime();\n\t\t};\n\t}\n\n\t/*Return true if x is a FancytreeNode.*/\n\tfunction _isNode(x) {\n\t\treturn !!(x.tree && x.statusNodeType !== undefined);\n\t}\n\n\t/** Return true if dotted version string is equal or higher than requested version.\n\t *\n\t * See http://jsfiddle.net/mar10/FjSAN/\n\t */\n\tfunction isVersionAtLeast(dottedVersion, major, minor, patch) {\n\t\tvar i,\n\t\t\tv,\n\t\t\tt,\n\t\t\tverParts = $.map($.trim(dottedVersion).split(\".\"), function(e) {\n\t\t\t\treturn parseInt(e, 10);\n\t\t\t}),\n\t\t\ttestParts = $.map(\n\t\t\t\tArray.prototype.slice.call(arguments, 1),\n\t\t\t\tfunction(e) {\n\t\t\t\t\treturn parseInt(e, 10);\n\t\t\t\t}\n\t\t\t);\n\n\t\tfor (i = 0; i < testParts.length; i++) {\n\t\t\tv = verParts[i] || 0;\n\t\t\tt = testParts[i] || 0;\n\t\t\tif (v !== t) {\n\t\t\t\treturn v > t;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t/**\n\t * Deep-merge a list of objects (but replace array-type options).\n\t *\n\t * jQuery's $.extend(true, ...) method does a deep merge, that also merges Arrays.\n\t * This variant is used to merge extension defaults with user options, and should\n\t * merge objects, but override arrays (for example the `triggerStart: [...]` option\n\t * of ext-edit). Also `null` values are copied over and not skipped.\n\t *\n\t * See issue #876\n\t *\n\t * Example:\n\t * _simpleDeepMerge({}, o1, o2);\n\t */\n\tfunction _simpleDeepMerge() {\n\t\tvar options,\n\t\t\tname,\n\t\t\tsrc,\n\t\t\tcopy,\n\t\t\tclone,\n\t\t\ttarget = arguments[0] || {},\n\t\t\ti = 1,\n\t\t\tlength = arguments.length;\n\n\t\t// Handle case when target is a string or something (possible in deep copy)\n\t\tif (typeof target !== \"object\" && !$.isFunction(target)) {\n\t\t\ttarget = {};\n\t\t}\n\t\tif (i === length) {\n\t\t\tthrow Error(\"need at least two args\");\n\t\t}\n\t\tfor (; i < length; i++) {\n\t\t\t// Only deal with non-null/undefined values\n\t\t\tif ((options = arguments[i]) != null) {\n\t\t\t\t// Extend the base object\n\t\t\t\tfor (name in options) {\n\t\t\t\t\tif (options.hasOwnProperty(name)) {\n\t\t\t\t\t\tsrc = target[name];\n\t\t\t\t\t\tcopy = options[name];\n\t\t\t\t\t\t// Prevent never-ending loop\n\t\t\t\t\t\tif (target === copy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Recurse if we're merging plain objects\n\t\t\t\t\t\t// (NOTE: unlike $.extend, we don't merge arrays, but replace them)\n\t\t\t\t\t\tif (copy && $.isPlainObject(copy)) {\n\t\t\t\t\t\t\tclone = src && $.isPlainObject(src) ? src : {};\n\t\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\t\ttarget[name] = _simpleDeepMerge(clone, copy);\n\t\t\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t\t} else if (copy !== undefined) {\n\t\t\t\t\t\t\ttarget[name] = copy;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// Return the modified object\n\t\treturn target;\n\t}\n\n\t/** Return a wrapper that calls sub.methodName() and exposes\n\t * this : tree\n\t * this._local : tree.ext.EXTNAME\n\t * this._super : base.methodName.call()\n\t * this._superApply : base.methodName.apply()\n\t */\n\tfunction _makeVirtualFunction(methodName, tree, base, extension, extName) {\n\t\t// $.ui.fancytree.debug(\"_makeVirtualFunction\", methodName, tree, base, extension, extName);\n\t\t// if(rexTestSuper && !rexTestSuper.test(func)){\n\t\t// // extension.methodName() doesn't call _super(), so no wrapper required\n\t\t// return func;\n\t\t// }\n\t\t// Use an immediate function as closure\n\t\tvar proxy = (function() {\n\t\t\tvar prevFunc = tree[methodName], // org. tree method or prev. proxy\n\t\t\t\tbaseFunc = extension[methodName], //\n\t\t\t\t_local = tree.ext[extName],\n\t\t\t\t_super = function() {\n\t\t\t\t\treturn prevFunc.apply(tree, arguments);\n\t\t\t\t},\n\t\t\t\t_superApply = function(args) {\n\t\t\t\t\treturn prevFunc.apply(tree, args);\n\t\t\t\t};\n\n\t\t\t// Return the wrapper function\n\t\t\treturn function() {\n\t\t\t\tvar prevLocal = tree._local,\n\t\t\t\t\tprevSuper = tree._super,\n\t\t\t\t\tprevSuperApply = tree._superApply;\n\n\t\t\t\ttry {\n\t\t\t\t\ttree._local = _local;\n\t\t\t\t\ttree._super = _super;\n\t\t\t\t\ttree._superApply = _superApply;\n\t\t\t\t\treturn baseFunc.apply(tree, arguments);\n\t\t\t\t} finally {\n\t\t\t\t\ttree._local = prevLocal;\n\t\t\t\t\ttree._super = prevSuper;\n\t\t\t\t\ttree._superApply = prevSuperApply;\n\t\t\t\t}\n\t\t\t};\n\t\t})(); // end of Immediate Function\n\t\treturn proxy;\n\t}\n\n\t/**\n\t * Subclass `base` by creating proxy functions\n\t */\n\tfunction _subclassObject(tree, base, extension, extName) {\n\t\t// $.ui.fancytree.debug(\"_subclassObject\", tree, base, extension, extName);\n\t\tfor (var attrName in extension) {\n\t\t\tif (typeof extension[attrName] === \"function\") {\n\t\t\t\tif (typeof tree[attrName] === \"function\") {\n\t\t\t\t\t// override existing method\n\t\t\t\t\ttree[attrName] = _makeVirtualFunction(\n\t\t\t\t\t\tattrName,\n\t\t\t\t\t\ttree,\n\t\t\t\t\t\tbase,\n\t\t\t\t\t\textension,\n\t\t\t\t\t\textName\n\t\t\t\t\t);\n\t\t\t\t} else if (attrName.charAt(0) === \"_\") {\n\t\t\t\t\t// Create private methods in tree.ext.EXTENSION namespace\n\t\t\t\t\ttree.ext[extName][attrName] = _makeVirtualFunction(\n\t\t\t\t\t\tattrName,\n\t\t\t\t\t\ttree,\n\t\t\t\t\t\tbase,\n\t\t\t\t\t\textension,\n\t\t\t\t\t\textName\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\t$.error(\n\t\t\t\t\t\t\"Could not override tree.\" +\n\t\t\t\t\t\t\tattrName +\n\t\t\t\t\t\t\t\". Use prefix '_' to create tree.\" +\n\t\t\t\t\t\t\textName +\n\t\t\t\t\t\t\t\"._\" +\n\t\t\t\t\t\t\tattrName\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Create member variables in tree.ext.EXTENSION namespace\n\t\t\t\tif (attrName !== \"options\") {\n\t\t\t\t\ttree.ext[extName][attrName] = extension[attrName];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction _getResolvedPromise(context, argArray) {\n\t\tif (context === undefined) {\n\t\t\treturn $.Deferred(function() {\n\t\t\t\tthis.resolve();\n\t\t\t}).promise();\n\t\t}\n\t\treturn $.Deferred(function() {\n\t\t\tthis.resolveWith(context, argArray);\n\t\t}).promise();\n\t}\n\n\tfunction _getRejectedPromise(context, argArray) {\n\t\tif (context === undefined) {\n\t\t\treturn $.Deferred(function() {\n\t\t\t\tthis.reject();\n\t\t\t}).promise();\n\t\t}\n\t\treturn $.Deferred(function() {\n\t\t\tthis.rejectWith(context, argArray);\n\t\t}).promise();\n\t}\n\n\tfunction _makeResolveFunc(deferred, context) {\n\t\treturn function() {\n\t\t\tdeferred.resolveWith(context);\n\t\t};\n\t}\n\n\tfunction _getElementDataAsDict($el) {\n\t\t// Evaluate 'data-NAME' attributes with special treatment for 'data-json'.\n\t\tvar d = $.extend({}, $el.data()),\n\t\t\tjson = d.json;\n\n\t\tdelete d.fancytree; // added to container by widget factory (old jQuery UI)\n\t\tdelete d.uiFancytree; // added to container by widget factory\n\n\t\tif (json) {\n\t\t\tdelete d.json;\n\t\t\t// <li data-json='...'> is already returned as object (http://api.jquery.com/data/#data-html5)\n\t\t\td = $.extend(d, json);\n\t\t}\n\t\treturn d;\n\t}\n\n\tfunction _escapeTooltip(s) {\n\t\treturn (\"\" + s).replace(REX_TOOLTIP, function(s) {\n\t\t\treturn ENTITY_MAP[s];\n\t\t});\n\t}\n\n\t// TODO: use currying\n\tfunction _makeNodeTitleMatcher(s) {\n\t\ts = s.toLowerCase();\n\t\treturn function(node) {\n\t\t\treturn node.title.toLowerCase().indexOf(s) >= 0;\n\t\t};\n\t}\n\n\tfunction _makeNodeTitleStartMatcher(s) {\n\t\tvar reMatch = new RegExp(\"^\" + s, \"i\");\n\t\treturn function(node) {\n\t\t\treturn reMatch.test(node.title);\n\t\t};\n\t}\n\n\t/******************************************************************************\n\t * FancytreeNode\n\t */\n\n\t/**\n\t * Creates a new FancytreeNode\n\t *\n\t * @class FancytreeNode\n\t * @classdesc A FancytreeNode represents the hierarchical data model and operations.\n\t *\n\t * @param {FancytreeNode} parent\n\t * @param {NodeData} obj\n\t *\n\t * @property {Fancytree} tree The tree instance\n\t * @property {FancytreeNode} parent The parent node\n\t * @property {string} key Node id (must be unique inside the tree)\n\t * @property {string} title Display name (may contain HTML)\n\t * @property {object} data Contains all extra data that was passed on node creation\n\t * @property {FancytreeNode[] | null | undefined} children Array of child nodes.<br>\n\t * For lazy nodes, null or undefined means 'not yet loaded'. Use an empty array\n\t * to define a node that has no children.\n\t * @property {boolean} expanded Use isExpanded(), setExpanded() to access this property.\n\t * @property {string} extraClasses Additional CSS classes, added to the node's `<span>`.<br>\n\t * Note: use `node.add/remove/toggleClass()` to modify.\n\t * @property {boolean} folder Folder nodes have different default icons and click behavior.<br>\n\t * Note: Also non-folders may have children.\n\t * @property {string} statusNodeType null for standard nodes. Otherwise type of special system node: 'error', 'loading', 'nodata', or 'paging'.\n\t * @property {boolean} lazy True if this node is loaded on demand, i.e. on first expansion.\n\t * @property {boolean} selected Use isSelected(), setSelected() to access this property.\n\t * @property {string} tooltip Alternative description used as hover popup\n\t * @property {string} iconTooltip Description used as hover popup for icon. @since 2.27\n\t * @property {string} type Node type, used with tree.types map. @since 2.27\n\t */\n\tfunction FancytreeNode(parent, obj) {\n\t\tvar i, l, name, cl;\n\n\t\tthis.parent = parent;\n\t\tthis.tree = parent.tree;\n\t\tthis.ul = null;\n\t\tthis.li = null; // <li id='key' ftnode=this> tag\n\t\tthis.statusNodeType = null; // if this is a temp. node to display the status of its parent\n\t\tthis._isLoading = false; // if this node itself is loading\n\t\tthis._error = null; // {message: '...'} if a load error occurred\n\t\tthis.data = {};\n\n\t\t// TODO: merge this code with node.toDict()\n\t\t// copy attributes from obj object\n\t\tfor (i = 0, l = NODE_ATTRS.length; i < l; i++) {\n\t\t\tname = NODE_ATTRS[i];\n\t\t\tthis[name] = obj[name];\n\t\t}\n\t\t// unselectableIgnore and unselectableStatus imply unselectable\n\t\tif (\n\t\t\tthis.unselectableIgnore != null ||\n\t\t\tthis.unselectableStatus != null\n\t\t) {\n\t\t\tthis.unselectable = true;\n\t\t}\n\t\tif (obj.hideCheckbox) {\n\t\t\t$.error(\n\t\t\t\t\"'hideCheckbox' node option was removed in v2.23.0: use 'checkbox: false'\"\n\t\t\t);\n\t\t}\n\t\t// node.data += obj.data\n\t\tif (obj.data) {\n\t\t\t$.extend(this.data, obj.data);\n\t\t}\n\t\t// Copy all other attributes to this.data.NAME\n\t\tfor (name in obj) {\n\t\t\tif (\n\t\t\t\t!NODE_ATTR_MAP[name] &&\n\t\t\t\t!$.isFunction(obj[name]) &&\n\t\t\t\t!NONE_NODE_DATA_MAP[name]\n\t\t\t) {\n\t\t\t\t// node.data.NAME = obj.NAME\n\t\t\t\tthis.data[name] = obj[name];\n\t\t\t}\n\t\t}\n\n\t\t// Fix missing key\n\t\tif (this.key == null) {\n\t\t\t// test for null OR undefined\n\t\t\tif (this.tree.options.defaultKey) {\n\t\t\t\tthis.key = this.tree.options.defaultKey(this);\n\t\t\t\t_assert(this.key, \"defaultKey() must return a unique key\");\n\t\t\t} else {\n\t\t\t\tthis.key = \"_\" + FT._nextNodeKey++;\n\t\t\t}\n\t\t} else {\n\t\t\tthis.key = \"\" + this.key; // Convert to string (#217)\n\t\t}\n\n\t\t// Fix tree.activeNode\n\t\t// TODO: not elegant: we use obj.active as marker to set tree.activeNode\n\t\t// when loading from a dictionary.\n\t\tif (obj.active) {\n\t\t\t_assert(\n\t\t\t\tthis.tree.activeNode === null,\n\t\t\t\t\"only one active node allowed\"\n\t\t\t);\n\t\t\tthis.tree.activeNode = this;\n\t\t}\n\t\tif (obj.selected) {\n\t\t\t// #186\n\t\t\tthis.tree.lastSelectedNode = this;\n\t\t}\n\t\t// TODO: handle obj.focus = true\n\n\t\t// Create child nodes\n\t\tcl = obj.children;\n\t\tif (cl) {\n\t\t\tif (cl.length) {\n\t\t\t\tthis._setChildren(cl);\n\t\t\t} else {\n\t\t\t\t// if an empty array was passed for a lazy node, keep it, in order to mark it 'loaded'\n\t\t\t\tthis.children = this.lazy ? [] : null;\n\t\t\t}\n\t\t} else {\n\t\t\tthis.children = null;\n\t\t}\n\t\t// Add to key/ref map (except for root node)\n\t\t//\tif( parent ) {\n\t\tthis.tree._callHook(\"treeRegisterNode\", this.tree, true, this);\n\t\t//\t}\n\t}\n\n\tFancytreeNode.prototype = /** @lends FancytreeNode# */ {\n\t\t/* Return the direct child FancytreeNode with a given key, index. */\n\t\t_findDirectChild: function(ptr) {\n\t\t\tvar i,\n\t\t\t\tl,\n\t\t\t\tcl = this.children;\n\n\t\t\tif (cl) {\n\t\t\t\tif (typeof ptr === \"string\") {\n\t\t\t\t\tfor (i = 0, l = cl.length; i < l; i++) {\n\t\t\t\t\t\tif (cl[i].key === ptr) {\n\t\t\t\t\t\t\treturn cl[i];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (typeof ptr === \"number\") {\n\t\t\t\t\treturn this.children[ptr];\n\t\t\t\t} else if (ptr.parent === this) {\n\t\t\t\t\treturn ptr;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\t// TODO: activate()\n\t\t// TODO: activateSilently()\n\t\t/* Internal helper called in recursive addChildren sequence.*/\n\t\t_setChildren: function(children) {\n\t\t\t_assert(\n\t\t\t\tchildren && (!this.children || this.children.length === 0),\n\t\t\t\t\"only init supported\"\n\t\t\t);\n\t\t\tthis.children = [];\n\t\t\tfor (var i = 0, l = children.length; i < l; i++) {\n\t\t\t\tthis.children.push(new FancytreeNode(this, children[i]));\n\t\t\t}\n\t\t\tthis.tree._callHook(\n\t\t\t\t\"treeStructureChanged\",\n\t\t\t\tthis.tree,\n\t\t\t\t\"setChildren\"\n\t\t\t);\n\t\t},\n\t\t/**\n\t\t * Append (or insert) a list of child nodes.\n\t\t *\n\t\t * @param {NodeData[]} children array of child node definitions (also single child accepted)\n\t\t * @param {FancytreeNode | string | Integer} [insertBefore] child node (or key or index of such).\n\t\t * If omitted, the new children are appended.\n\t\t * @returns {FancytreeNode} first child added\n\t\t *\n\t\t * @see FancytreeNode#applyPatch\n\t\t */\n\t\taddChildren: function(children, insertBefore) {\n\t\t\tvar i,\n\t\t\t\tl,\n\t\t\t\tpos,\n\t\t\t\torigFirstChild = this.getFirstChild(),\n\t\t\t\torigLastChild = this.getLastChild(),\n\t\t\t\tfirstNode = null,\n\t\t\t\tnodeList = [];\n\n\t\t\tif ($.isPlainObject(children)) {\n\t\t\t\tchildren = [children];\n\t\t\t}\n\t\t\tif (!this.children) {\n\t\t\t\tthis.children = [];\n\t\t\t}\n\t\t\tfor (i = 0, l = children.length; i < l; i++) {\n\t\t\t\tnodeList.push(new FancytreeNode(this, children[i]));\n\t\t\t}\n\t\t\tfirstNode = nodeList[0];\n\t\t\tif (insertBefore == null) {\n\t\t\t\tthis.children = this.children.concat(nodeList);\n\t\t\t} else {\n\t\t\t\t// Returns null if insertBefore is not a direct child:\n\t\t\t\tinsertBefore = this._findDirectChild(insertBefore);\n\t\t\t\tpos = $.inArray(insertBefore, this.children);\n\t\t\t\t_assert(pos >= 0, \"insertBefore must be an existing child\");\n\t\t\t\t// insert nodeList after children[pos]\n\t\t\t\tthis.children.splice.apply(\n\t\t\t\t\tthis.children,\n\t\t\t\t\t[pos, 0].concat(nodeList)\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (origFirstChild && !insertBefore) {\n\t\t\t\t// #708: Fast path -- don't render every child of root, just the new ones!\n\t\t\t\t// #723, #729: but only if it's appended to an existing child list\n\t\t\t\tfor (i = 0, l = nodeList.length; i < l; i++) {\n\t\t\t\t\tnodeList[i].render(); // New nodes were never rendered before\n\t\t\t\t}\n\t\t\t\t// Adjust classes where status may have changed\n\t\t\t\t// Has a first child\n\t\t\t\tif (origFirstChild !== this.getFirstChild()) {\n\t\t\t\t\t// Different first child -- recompute classes\n\t\t\t\t\torigFirstChild.renderStatus();\n\t\t\t\t}\n\t\t\t\tif (origLastChild !== this.getLastChild()) {\n\t\t\t\t\t// Different last child -- recompute classes\n\t\t\t\t\torigLastChild.renderStatus();\n\t\t\t\t}\n\t\t\t} else if (!this.parent || this.parent.ul || this.tr) {\n\t\t\t\t// render if the parent was rendered (or this is a root node)\n\t\t\t\tthis.render();\n\t\t\t}\n\t\t\tif (this.tree.options.selectMode === 3) {\n\t\t\t\tthis.fixSelection3FromEndNodes();\n\t\t\t}\n\t\t\tthis.triggerModifyChild(\n\t\t\t\t\"add\",\n\t\t\t\tnodeList.length === 1 ? nodeList[0] : null\n\t\t\t);\n\t\t\treturn firstNode;\n\t\t},\n\t\t/**\n\t\t * Add class to node's span tag and to .extraClasses.\n\t\t *\n\t\t * @param {string} className class name\n\t\t *\n\t\t * @since 2.17\n\t\t */\n\t\taddClass: function(className) {\n\t\t\treturn this.toggleClass(className, true);\n\t\t},\n\t\t/**\n\t\t * Append or prepend a node, or append a child node.\n\t\t *\n\t\t * This a convenience function that calls addChildren()\n\t\t *\n\t\t * @param {NodeData} node node definition\n\t\t * @param {string} [mode=child] 'before', 'after', 'firstChild', or 'child' ('over' is a synonym for 'child')\n\t\t * @returns {FancytreeNode} new node\n\t\t */\n\t\taddNode: function(node, mode) {\n\t\t\tif (mode === undefined || mode === \"over\") {\n\t\t\t\tmode = \"child\";\n\t\t\t}\n\t\t\tswitch (mode) {\n\t\t\t\tcase \"after\":\n\t\t\t\t\treturn this.getParent().addChildren(\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tthis.getNextSibling()\n\t\t\t\t\t);\n\t\t\t\tcase \"before\":\n\t\t\t\t\treturn this.getParent().addChildren(node, this);\n\t\t\t\tcase \"firstChild\":\n\t\t\t\t\t// Insert before the first child if any\n\t\t\t\t\tvar insertBefore = this.children ? this.children[0] : null;\n\t\t\t\t\treturn this.addChildren(node, insertBefore);\n\t\t\t\tcase \"child\":\n\t\t\t\tcase \"over\":\n\t\t\t\t\treturn this.addChildren(node);\n\t\t\t}\n\t\t\t_assert(false, \"Invalid mode: \" + mode);\n\t\t},\n\t\t/**Add child status nodes that indicate 'More...', etc.\n\t\t *\n\t\t * This also maintains the node's `partload` property.\n\t\t * @param {boolean|object} node optional node definition. Pass `false` to remove all paging nodes.\n\t\t * @param {string} [mode='child'] 'child'|firstChild'\n\t\t * @since 2.15\n\t\t */\n\t\taddPagingNode: function(node, mode) {\n\t\t\tvar i, n;\n\n\t\t\tmode = mode || \"child\";\n\t\t\tif (node === false) {\n\t\t\t\tfor (i = this.children.length - 1; i >= 0; i--) {\n\t\t\t\t\tn = this.children[i];\n\t\t\t\t\tif (n.statusNodeType === \"paging\") {\n\t\t\t\t\t\tthis.removeChild(n);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.partload = false;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tnode = $.extend(\n\t\t\t\t{\n\t\t\t\t\ttitle: this.tree.options.strings.moreData,\n\t\t\t\t\tstatusNodeType: \"paging\",\n\t\t\t\t\ticon: false,\n\t\t\t\t},\n\t\t\t\tnode\n\t\t\t);\n\t\t\tthis.partload = true;\n\t\t\treturn this.addNode(node, mode);\n\t\t},\n\t\t/**\n\t\t * Append new node after this.\n\t\t *\n\t\t * This a convenience function that calls addNode(node, 'after')\n\t\t *\n\t\t * @param {NodeData} node node definition\n\t\t * @returns {FancytreeNode} new node\n\t\t */\n\t\tappendSibling: function(node) {\n\t\t\treturn this.addNode(node, \"after\");\n\t\t},\n\t\t/**\n\t\t * (experimental) Apply a modification (or navigation) operation.\n\t\t *\n\t\t * @param {string} cmd\n\t\t * @param {object} [opts]\n\t\t * @see Fancytree#applyCommand\n\t\t * @since 2.32\n\t\t */\n\t\tapplyCommand: function(cmd, opts) {\n\t\t\treturn this.tree.applyCommand(cmd, this, opts);\n\t\t},\n\t\t/**\n\t\t * Modify existing child nodes.\n\t\t *\n\t\t * @param {NodePatch} patch\n\t\t * @returns {$.Promise}\n\t\t * @see FancytreeNode#addChildren\n\t\t */\n\t\tapplyPatch: function(patch) {\n\t\t\t// patch [key, null] means 'remove'\n\t\t\tif (patch === null) {\n\t\t\t\tthis.remove();\n\t\t\t\treturn _getResolvedPromise(this);\n\t\t\t}\n\t\t\t// TODO: make sure that root node is not collapsed or modified\n\t\t\t// copy (most) attributes to node.ATTR or node.data.ATTR\n\t\t\tvar name,\n\t\t\t\tpromise,\n\t\t\t\tv,\n\t\t\t\tIGNORE_MAP = { children: true, expanded: true, parent: true }; // TODO: should be global\n\n\t\t\tfor (name in patch) {\n\t\t\t\tif (patch.hasOwnProperty(name)) {\n\t\t\t\t\tv = patch[name];\n\t\t\t\t\tif (!IGNORE_MAP[name] && !$.isFunction(v)) {\n\t\t\t\t\t\tif (NODE_ATTR_MAP[name]) {\n\t\t\t\t\t\t\tthis[name] = v;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.data[name] = v;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Remove and/or create children\n\t\t\tif (patch.hasOwnProperty(\"children\")) {\n\t\t\t\tthis.removeChildren();\n\t\t\t\tif (patch.children) {\n\t\t\t\t\t// only if not null and
|
|