{"version":3,"file":"common.js","sources":["../vendor/jquery.js","../vendor/fastclick.js"],"names":["global","factory","module","exports","document","w","Error","window","this","noGlobal","deletedIds","slice","concat","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","support","version","jQuery","selector","context","fn","init","rtrim","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","prototype","jquery","constructor","length","toArray","call","get","num","pushStack","elems","ret","merge","prevObject","each","callback","args","map","elem","i","apply","arguments","first","eq","last","len","j","end","sort","splice","extend","src","copyIsArray","copy","name","options","clone","target","deep","isFunction","isPlainObject","isArray","undefined","expando","Math","random","replace","isReady","error","msg","noop","obj","type","Array","isWindow","isNumeric","parseFloat","isEmptyObject","key","nodeType","e","ownLast","globalEval","data","trim","execScript","camelCase","string","nodeName","toLowerCase","value","isArraylike","text","makeArray","arr","results","Object","inArray","max","second","grep","invert","callbackInverse","matches","callbackExpect","arg","guid","proxy","tmp","now","Date","split","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","sortOrder","a","b","MAX_NEGATIVE","pop","push_native","list","booleans","whitespace","characterEncoding","identifier","attributes","pseudos","rwhitespace","RegExp","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","rescape","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","unloadHandler","childNodes","els","seed","match","m","groups","old","nid","newContext","newSelector","ownerDocument","exec","getElementById","parentNode","id","getElementsByTagName","getElementsByClassName","qsa","test","getAttribute","setAttribute","toSelector","testContext","join","querySelectorAll","qsaError","removeAttribute","keys","cache","cacheLength","shift","markFunction","assert","div","createElement","removeChild","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","documentElement","node","hasCompare","parent","doc","defaultView","top","addEventListener","attachEvent","className","appendChild","createComment","getById","getElementsByName","find","filter","attrId","getAttributeNode","tag","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","val","specified","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">","dir"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","xml","outerCache","nodeIndex","start","useCache","lastChild","pseudo","setFilters","idx","matched","not","matcher","unmatched","has","innerText","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","disabled","checked","selected","selectedIndex","empty","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","filters","parseOnly","tokens","soFar","preFilters","cached","addCombinator","combinator","base","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","div1","defaultValue","unique","isXMLDoc","rneedsContext","rsingleTag","risSimple","winnow","qualifier","self","is","rootjQuery","charAt","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","next","prev","until","sibling","n","r","targets","closest","l","pos","index","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","siblings","contentDocument","contentWindow","reverse","rnotwhite","optionsCache","createOptions","object","flag","Callbacks","firing","memory","fired","firingLength","firingIndex","firingStart","stack","once","fire","stopOnFalse","disable","remove","lock","locked","fireWith","Deferred","func","tuples","state","promise","always","deferred","fail","then","fns","newDefer","tuple","returned","resolve","reject","progress","notify","pipe","stateString","when","subordinate","resolveValues","remaining","updateFunc","values","progressValues","notifyWith","resolveWith","progressContexts","resolveContexts","readyList","readyWait","holdReady","hold","wait","body","setTimeout","triggerHandler","off","detach","removeEventListener","completed","detachEvent","event","readyState","frameElement","doScroll","doScrollCheck","strundefined","inlineBlockNeedsLayout","container","style","cssText","zoom","offsetWidth","deleteExpando","acceptData","noData","rbrace","rmultiDash","dataAttr","parseJSON","isEmptyDataObject","internalData","pvt","thisCache","internalKey","isNode","toJSON","internalRemoveData","cleanData","applet ","embed ","object ","hasData","removeData","_data","_removeData","queue","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","cssExpand","isHidden","el","css","access","chainable","emptyGet","raw","bulk","rcheckableType","fragment","createDocumentFragment","leadingWhitespace","tbody","htmlSerialize","html5Clone","cloneNode","outerHTML","appendChecked","noCloneChecked","checkClone","noCloneEvent","click","eventName","change","focusin","rformElems","rkeyEvent","rmouseEvent","rfocusMorph","rtypenamespace","returnTrue","returnFalse","safeActiveElement","err","types","events","t","handleObjIn","special","eventHandle","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","trigger","onlyHandlers","ontype","bubbleType","eventPath","Event","isTrigger","namespace_re","noBubble","parentWindow","isPropagationStopped","preventDefault","isDefaultPrevented","_default","fix","handlerQueue","delegateTarget","preDispatch","currentTarget","isImmediatePropagationStopped","stopPropagation","postDispatch","sel","prop","originalEvent","fixHook","fixHooks","mouseHooks","keyHooks","props","srcElement","metaKey","original","which","charCode","keyCode","eventDoc","fromElement","pageX","clientX","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","relatedTarget","toElement","load","blur","beforeunload","returnValue","simulate","bubble","isSimulated","defaultPrevented","timeStamp","cancelBubble","stopImmediatePropagation","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","submitBubbles","form","_submit_bubble","changeBubbles","propertyName","_just_changed","focusinBubbles","attaches","on","one","origFn","createSafeFragment","nodeNames","safeFrag","rinlinejQuery","rnoshimcache","rleadingWhitespace","rxhtmlTag","rtagName","rtbody","rhtml","rnoInnerhtml","rchecked","rscriptType","rscriptTypeMasked","rcleanScript","wrapMap","option","legend","area","param","thead","tr","col","td","safeFragment","fragmentDiv","optgroup","tfoot","colgroup","caption","th","getAll","found","fixDefaultChecked","defaultChecked","manipulationTarget","content","disableScript","restoreScript","setGlobalEval","refElements","cloneCopyEvent","dest","oldData","curData","fixCloneNodeIssues","defaultSelected","dataAndEvents","deepDataAndEvents","destElements","srcElements","inPage","buildFragment","scripts","selection","wrap","safe","nodes","createTextNode","append","domManip","prepend","insertBefore","before","after","keepData","html","replaceWith","replaceChild","hasScripts","set","iNoClone","_evalUrl","appendTo","prependTo","insertAfter","replaceAll","insert","iframe","elemdisplay","actualDisplay","display","getDefaultComputedStyle","defaultDisplay","write","close","shrinkWrapBlocksVal","shrinkWrapBlocks","width","rmargin","rnumnonpx","getStyles","curCSS","rposition","getComputedStyle","opener","computed","minWidth","maxWidth","getPropertyValue","currentStyle","left","rs","rsLeft","runtimeStyle","pixelLeft","addGetHookIf","conditionFn","hookFn","condition","pixelPositionVal","boxSizingReliableVal","reliableHiddenOffsetsVal","reliableMarginRightVal","opacity","cssFloat","backgroundClip","clearCloneStyle","boxSizing","MozBoxSizing","WebkitBoxSizing","reliableHiddenOffsets","computeStyleTests","boxSizingReliable","pixelPosition","reliableMarginRight","marginRight","offsetHeight","swap","ralpha","ropacity","rdisplayswap","rnumsplit","rrelNum","cssShow","position","visibility","cssNormalTransform","letterSpacing","fontWeight","cssPrefixes","vendorPropName","capName","origName","showHide","show","hidden","setPositiveNumber","subtract","augmentWidthOrHeight","extra","isBorderBox","styles","getWidthOrHeight","valueIsBorderBox","cssHooks","cssNumber","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zIndex","cssProps","float","$1","margin","padding","border","prefix","suffix","expand","expanded","parts","hide","toggle","Tween","easing","unit","propHooks","run","percent","eased","duration","step","tween","fx","linear","p","swing","cos","PI","fxNow","timerId","rfxtypes","rfxnum","rrun","animationPrefilters","defaultPrefilter","tweeners","*","createTween","scale","maxIterations","createFxNow","genFx","includeWidth","height","animation","collection","opts","oldfire","checkDisplay","anim","dataShow","unqueued","overflow","overflowX","overflowY","propFilter","specialEasing","Animation","properties","stopped","tick","currentTime","startTime","tweens","originalProperties","originalOptions","gotoEnd","rejectWith","timer","complete","tweener","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","interval","setInterval","clearInterval","slow","fast","delay","time","timeout","clearTimeout","getSetAttribute","hrefNormalized","checkOn","optSelected","enctype","optDisabled","radioValue","rreturn","valHooks","optionSet","scrollHeight","nodeHook","boolHook","ruseDefault","getSetInput","removeAttr","nType","attrHooks","propName","attrNames","propFix","getter","setAttributeNode","createAttribute","coords","contenteditable","rfocusable","rclickable","removeProp","for","class","notxml","tabindex","parseInt","rclass","addClass","classes","clazz","finalValue","proceed","removeClass","toggleClass","stateVal","classNames","hasClass","hover","fnOver","fnOut","bind","unbind","delegate","undelegate","nonce","rquery","rvalidtokens","JSON","parse","requireNonComma","depth","str","comma","open","Function","parseXML","DOMParser","parseFromString","ActiveXObject","async","loadXML","ajaxLocParts","ajaxLocation","rhash","rts","rheaders","rlocalProtocol","rnoContent","rprotocol","rurl","prefilters","transports","allTypes","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","ajaxHandleResponses","s","responses","firstDataType","ct","finalDataType","mimeType","getResponseHeader","converters","ajaxConvert","response","isSuccess","conv2","current","conv","responseFields","dataFilter","active","lastModified","etag","url","isLocal","processData","contentType","accepts","json","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","cacheURL","responseHeadersString","timeoutTimer","fireGlobals","transport","responseHeaders","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","lname","overrideMimeType","code","status","abort","statusText","finalText","success","method","crossDomain","traditional","hasContent","ifModified","headers","beforeSend","send","nativeStatusText","modified","getJSON","getScript","throws","wrapAll","wrapInner","unwrap","visible","r20","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","v","encodeURIComponent","serialize","serializeArray","xhr","createStandardXHR","createActiveXHR","xhrId","xhrCallbacks","xhrSupported","cors","username","xhrFields","isAbort","onreadystatechange","responseText","XMLHttpRequest","script","text script","head","scriptCharset","charset","onload","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","_load","params","animated","getWindow","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","win","box","getBoundingClientRect","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","size","andSelf","define","amd","_jQuery","_$","$","noConflict","FastClick","layer","oldOnClick","trackingClick","trackingClickStart","targetElement","touchStartX","touchStartY","lastTouchIdentifier","touchBoundary","tapDelay","notNeeded","methods","deviceIsAndroid","onMouse","onClick","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel","capture","rmv","Node","hijacked","adv","propagationStopped","onclick","navigator","userAgent","deviceIsIOS","deviceIsIOS4","deviceIsIOSWithBadTarget","deviceIsBlackBerry10","needsClick","needsFocus","readOnly","sendClick","clickEvent","touch","changedTouches","createEvent","initMouseEvent","determineEventType","screenX","screenY","forwardedTouchEvent","dispatchEvent","tagName","setSelectionRange","updateScrollParent","scrollParent","parentElement","fastClickScrollParent","fastClickLastScrollTop","getTargetElementFromEventTarget","eventTarget","TEXT_NODE","targetTouches","getSelection","rangeCount","isCollapsed","lastClickTime","touchHasMoved","boundary","abs","findControl","labelElement","control","htmlFor","querySelector","forElement","targetTagName","cancelNextClick","elementFromPoint","cancelable","permitted","detail","destroy","metaViewport","chromeVersion","blackberryVersion","ontouchstart","scrollWidth","outerWidth","msTouchAction","attach"],"mappings":"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","sourcesContent":["/*!\n * jQuery JavaScript Library v1.11.2\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2014-12-17T15:27Z\n */\n\n(function( global, factory ) {\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// For CommonJS and CommonJS-like environments where a proper window is present,\n\t\t// execute the factory and get jQuery\n\t\t// For environments that do not inherently posses a window with a document\n\t\t// (such as Node.js), expose a jQuery-making 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// Can't do this because several apps including ASP.NET trace\n// the stack via arguments.caller.callee and Firefox dies if\n// you try to trace through \"use strict\" call chains. (#13335)\n// Support: Firefox 18+\n//\n\nvar deletedIds = [];\n\nvar slice = deletedIds.slice;\n\nvar concat = deletedIds.concat;\n\nvar push = deletedIds.push;\n\nvar indexOf = deletedIds.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar support = {};\n\n\n\nvar\n\tversion = \"1.11.2\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\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.1, IE<9\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([\\da-z])/gi,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn = jQuery.prototype = {\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// Start with an empty selector\n\tselector: \"\",\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\t\treturn num != null ?\n\n\t\t\t// Return just the one element from the set\n\t\t\t( num < 0 ? this[ num + this.length ] : this[ num ] ) :\n\n\t\t\t// Return all the elements in a clean array\n\t\t\tslice.call( this );\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\t\tret.context = this.context;\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\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\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(null);\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: deletedIds.sort,\n\tsplice: deletedIds.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar src, copyIsArray, copy, name, options, 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\" && !jQuery.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\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( 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) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\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\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\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\tisWindow: function( obj ) {\n\t\t/* jshint eqeqeq: false */\n\t\treturn obj != null && obj == obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\t\t// parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t// adding 1 corrects loss of precision from parseFloat (#15100)\n\t\treturn !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\tvar key;\n\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// Not own constructor property must be Object\n\t\t\tif ( obj.constructor &&\n\t\t\t\t!hasOwn.call(obj, \"constructor\") &&\n\t\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\n\t\t\treturn false;\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Handle iteration over inherited properties before own properties.\n\t\tif ( support.ownLast ) {\n\t\t\tfor ( key in obj ) {\n\t\t\t\treturn hasOwn.call( obj, key );\n\t\t\t}\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\ttype: function( obj ) {\n\t\tif ( obj == null ) {\n\t\t\treturn obj + \"\";\n\t\t}\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\t\tclass2type[ toString.call(obj) ] || \"object\" :\n\t\t\ttypeof obj;\n\t},\n\n\t// Evaluates a script in a global context\n\t// Workarounds based on findings by Jim Driscoll\n\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\n\tglobalEval: function( data ) {\n\t\tif ( data && jQuery.trim( data ) ) {\n\t\t\t// We use execScript on Internet Explorer\n\t\t\t// We use an anonymous function so that context is window\n\t\t\t// rather than jQuery in Firefox\n\t\t\t( window.execScript || function( data ) {\n\t\t\t\twindow[ \"eval\" ].call( window, data );\n\t\t\t} )( data );\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( obj, callback, args ) {\n\t\tvar value,\n\t\t\ti = 0,\n\t\t\tlength = obj.length,\n\t\t\tisArray = isArraylike( obj );\n\n\t\tif ( args ) {\n\t\t\tif ( isArray ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i in obj ) {\n\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isArray ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i in obj ) {\n\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n\n\t\t\t\t\tif ( value === false ) {\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 obj;\n\t},\n\n\t// Support: Android<4.1, IE<9\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\tvar len;\n\n\t\tif ( arr ) {\n\t\t\tif ( indexOf ) {\n\t\t\t\treturn indexOf.call( arr, elem, i );\n\t\t\t}\n\n\t\t\tlen = arr.length;\n\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t// Skip accessing in sparse arrays\n\t\t\t\tif ( i in arr && arr[ i ] === elem ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\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\twhile ( j < len ) {\n\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists)\n\t\tif ( len !== len ) {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\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 value,\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tisArray = isArraylike( elems ),\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArray ) {\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// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar args, proxy, tmp;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\tnow: function() {\n\t\treturn +( new Date() );\n\t},\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\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nfunction isArraylike( obj ) {\n\tvar length = obj.length,\n\t\ttype = jQuery.type( obj );\n\n\tif ( type === \"function\" || jQuery.isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\tif ( obj.nodeType === 1 && length ) {\n\t\treturn true;\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.2.0-pre\n * http://sizzlejs.com/\n *\n * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2014-12-16\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\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// General-purpose constants\n\tMAX_NEGATIVE = 1 << 31,\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// http://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// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\t// http://www.w3.org/TR/css3-syntax/#characters\n\tcharacterEncoding = \"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",\n\n\t// Loosely modeled on CSS identifier characters\n\t// An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors\n\t// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = characterEncoding.replace( \"w\", \"w#\" ),\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + characterEncoding + \")(?:\" + 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 = \":(\" + characterEncoding + \")(?:\\\\((\" +\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\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + characterEncoding + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + characterEncoding + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + characterEncoding.replace( \"w\", \"w*\" ) + \")\" ),\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\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\trescape = /'|\\\\/g,\n\n\t// CSS escapes 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// 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// 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 match, elem, m, nodeType,\n\t\t// QSA vars\n\t\ti, groups, old, nid, newContext, newSelector;\n\n\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\n\tcontext = context || document;\n\tresults = results || [];\n\tnodeType = context.nodeType;\n\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\tif ( !seed && documentIsHTML ) {\n\n\t\t// Try to shortcut find operations when possible (e.g., not under DocumentFragment)\n\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\tif ( (m = match[1]) ) {\n\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\telem = context.getElementById( m );\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document (jQuery #6963)\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE, Opera, and Webkit return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id === m ) {\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} else {\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Context is not a document\n\t\t\t\t\tif ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&\n\t\t\t\t\t\tcontains( context, elem ) && elem.id === m ) {\n\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t} else if ( match[2] ) {\n\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\treturn results;\n\n\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName ) {\n\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\treturn results;\n\t\t\t}\n\t\t}\n\n\t\t// QSA path\n\t\tif ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\t\t\tnid = old = expando;\n\t\t\tnewContext = context;\n\t\t\tnewSelector = nodeType !== 1 && selector;\n\n\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t// IE 8 doesn't work on object elements\n\t\t\tif ( nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\tgroups = tokenize( selector );\n\n\t\t\t\tif ( (old = context.getAttribute(\"id\")) ) {\n\t\t\t\t\tnid = old.replace( rescape, \"\\\\$&\" );\n\t\t\t\t} else {\n\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t}\n\t\t\t\tnid = \"[id='\" + nid + \"'] \";\n\n\t\t\t\ti = groups.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tgroups[i] = nid + toSelector( groups[i] );\n\t\t\t\t}\n\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;\n\t\t\t\tnewSelector = groups.join(\",\");\n\t\t\t}\n\n\t\t\tif ( newSelector ) {\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} finally {\n\t\t\t\t\tif ( !old ) {\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 div and expects a boolean result\n */\nfunction assert( fn ) {\n\tvar div = document.createElement(\"div\");\n\n\ttry {\n\t\treturn !!fn( div );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( div.parentNode ) {\n\t\t\tdiv.parentNode.removeChild( div );\n\t\t}\n\t\t// release memory in IE\n\t\tdiv = 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 = attrs.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\t( ~b.sourceIndex || MAX_NEGATIVE ) -\n\t\t\t( ~a.sourceIndex || MAX_NEGATIVE );\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 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\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\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, parent,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// If no document and documentElement is available, return\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Set our document\n\tdocument = doc;\n\tdocElem = doc.documentElement;\n\tparent = doc.defaultView;\n\n\t// Support: IE>8\n\t// If iframe document is assigned to \"document\" variable and if iframe has been reloaded,\n\t// IE will throw \"permission denied\" error when accessing \"document\" variable, see jQuery #13936\n\t// IE6-8 do not support the defaultView property so parent will be undefined\n\tif ( parent && parent !== parent.top ) {\n\t\t// IE11 does not have attachEvent, so all must suffer\n\t\tif ( parent.addEventListener ) {\n\t\t\tparent.addEventListener( \"unload\", unloadHandler, false );\n\t\t} else if ( parent.attachEvent ) {\n\t\t\tparent.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Support tests\n\t---------------------------------------------------------------------- */\n\tdocumentIsHTML = !isXML( doc );\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( div ) {\n\t\tdiv.className = \"i\";\n\t\treturn !div.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( div ) {\n\t\tdiv.appendChild( doc.createComment(\"\") );\n\t\treturn !div.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( doc.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 programatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( div ) {\n\t\tdocElem.appendChild( div ).id = expando;\n\t\treturn !doc.getElementsByName || !doc.getElementsByName( expando ).length;\n\t});\n\n\t// ID find and filter\n\tif ( support.getById ) {\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [ m ] : [];\n\t\t\t}\n\t\t};\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} else {\n\t\t// Support: IE6/7\n\t\t// getElementById is not reliable as a find shortcut\n\t\tdelete Expr.find[\"ID\"];\n\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\" && elem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\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 ( 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 http://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( div ) {\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// http://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( div ).innerHTML = \"\" +\n\t\t\t\t\"\";\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// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( div.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 ( !div.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.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+\n\t\t\tif ( !div.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 ( !div.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 sibing-combinator selector` fails\n\t\t\tif ( !div.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\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 = doc.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tdiv.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 ( div.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 ( !div.querySelectorAll(\":enabled\").length ) {\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\tdiv.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( div ) {\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( div, \"div\" );\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( div, \"[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 does not implement inclusive descendent\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 === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === doc || 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 === doc ? -1 :\n\t\t\t\tb === doc ? 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 doc;\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\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\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}\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.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, outerCache, node, diff, 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\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 ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {\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\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || (parent[ expando ] = {});\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[0] === dirruns && cache[1];\n\t\t\t\t\t\t\tdiff = cache[0] === dirruns && 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\touterCache[ 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// Use previously-cached element index if available\n\t\t\t\t\t\t} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {\n\t\t\t\t\t\t\tdiff = cache[1];\n\n\t\t\t\t\t\t// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t} else {\n\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\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\tif ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {\n\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\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\tbreak;\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 || elem.innerText || 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\": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t\"disabled\": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\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 ? argument + length : argument;\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\tcheckNonElements = base && dir === \"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} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, 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 dir 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\t\t\t\t\t\tif ( (oldCache = outerCache[ dir ]) &&\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\touterCache[ dir ] = 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};\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;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Keep `i` a string if there are no elements so `matchedCount` will be \"00\" below\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) 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\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context, 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// Apply set filters to unmatched elements\n\t\t\tmatchedCount += i;\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 no seed and only one group\n\tif ( match.length === 1 ) {\n\n\t\t// Take a shortcut and set the context if the root 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\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\n\t\t\t\tExpr.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\trsibling.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( div1 ) {\n\t// Should return 1, but returns 4 (following)\n\treturn div1.compareDocumentPosition( document.createElement(\"div\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( div ) {\n\tdiv.innerHTML = \"\";\n\treturn div.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( div ) {\n\tdiv.innerHTML = \"\";\n\tdiv.firstChild.setAttribute( \"value\", \"\" );\n\treturn div.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( div ) {\n\treturn div.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;\njQuery.expr[\":\"] = jQuery.expr.pseudos;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = (/^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/);\n\n\n\nvar risSimple = /^.[^:#\\[\\.,]*$/;\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\t/* jshint -W018 */\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t});\n\n\t}\n\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t});\n\n\t}\n\n\tif ( typeof qualifier === \"string\" ) {\n\t\tif ( risSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter( qualifier, elements, not );\n\t\t}\n\n\t\tqualifier = jQuery.filter( qualifier, elements );\n\t}\n\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not;\n\t});\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\treturn elems.length === 1 && elem.nodeType === 1 ?\n\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\n\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t}));\n};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar i,\n\t\t\tret = [],\n\t\t\tself = this,\n\t\t\tlen = self.length;\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\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\n\t\tret.selector = this.selector ? this.selector + \" \" + selector : selector;\n\t\treturn 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// Use the correct document accordingly with window argument (sandbox)\n\tdocument = window.document,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\n\n\tinit = jQuery.fn.init = function( selector, context ) {\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// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector.charAt(0) === \"<\" && selector.charAt( selector.length - 1 ) === \">\" && selector.length >= 3 ) {\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// 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\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( jQuery.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\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\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 || rootjQuery ).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.context = this[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 ( jQuery.isFunction( selector ) ) {\n\t\t\treturn typeof rootjQuery.ready !== \"undefined\" ?\n\t\t\t\trootjQuery.ready( selector ) :\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\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\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.extend({\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\njQuery.fn.extend({\n\thas: function( target ) {\n\t\tvar i,\n\t\t\ttargets = jQuery( target, this ),\n\t\t\tlen = targets.length;\n\n\t\treturn this.filter(function() {\n\t\t\tfor ( i = 0; i < len; 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\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tfor ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {\n\t\t\t\t// Always skip document fragments\n\t\t\t\tif ( cur.nodeType < 11 && (pos ?\n\t\t\t\t\tpos.index(cur) > -1 :\n\n\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\tjQuery.find.matchesSelector(cur, selectors)) ) {\n\n\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\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 jQuery.inArray( this[0], jQuery( elem ) );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.unique(\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\tdo {\n\t\tcur = cur[ dir ];\n\t} while ( cur && cur.nodeType !== 1 );\n\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 jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.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 jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = 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\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tret = jQuery.unique( ret );\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\tret = ret.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n});\nvar rnotwhite = (/\\S+/g);\n\n\n\n// String to Object options format cache\nvar optionsCache = {};\n\n// Convert String-formatted options into Object-formatted ones and store in cache\nfunction createOptions( options ) {\n\tvar object = optionsCache[ options ] = {};\n\tjQuery.each( options.match( rnotwhite ) || [], 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\t( optionsCache[ options ] || createOptions( options ) ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\t\t// Last fire value (for non-forgettable lists)\n\t\tmemory,\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\t\t// End of the loop when firing\n\t\tfiringLength,\n\t\t// Index of currently firing callback (modified by remove if needed)\n\t\tfiringIndex,\n\t\t// First callback to fire (used internally by add and fireWith)\n\t\tfiringStart,\n\t\t// Actual callback list\n\t\tlist = [],\n\t\t// Stack of fire calls for repeatable lists\n\t\tstack = !options.once && [],\n\t\t// Fire callbacks\n\t\tfire = function( data ) {\n\t\t\tmemory = options.memory && data;\n\t\t\tfired = true;\n\t\t\tfiringIndex = firingStart || 0;\n\t\t\tfiringStart = 0;\n\t\t\tfiringLength = list.length;\n\t\t\tfiring = true;\n\t\t\tfor ( ; list && firingIndex < firingLength; firingIndex++ ) {\n\t\t\t\tif ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {\n\t\t\t\t\tmemory = false; // To prevent further calls using add\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfiring = false;\n\t\t\tif ( list ) {\n\t\t\t\tif ( stack ) {\n\t\t\t\t\tif ( stack.length ) {\n\t\t\t\t\t\tfire( stack.shift() );\n\t\t\t\t\t}\n\t\t\t\t} else if ( memory ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t} else {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Actual Callbacks object\n\t\tself = {\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\t\t\t\t\t// First, we save the current length\n\t\t\t\t\tvar start = list.length;\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\tvar type = jQuery.type( arg );\n\t\t\t\t\t\t\tif ( type === \"function\" ) {\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 && type !== \"string\" ) {\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\t\t\t\t\t// Do we need to add the callbacks to the\n\t\t\t\t\t// current firing batch?\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tfiringLength = list.length;\n\t\t\t\t\t// With memory, if we're not firing then\n\t\t\t\t\t// we should call right away\n\t\t\t\t\t} else if ( memory ) {\n\t\t\t\t\t\tfiringStart = start;\n\t\t\t\t\t\tfire( memory );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\t\tvar index;\n\t\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\t\tlist.splice( index, 1 );\n\t\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\t\t\tif ( index <= firingLength ) {\n\t\t\t\t\t\t\t\t\tfiringLength--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\t\t\tfiringIndex--;\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\t\t\t\treturn this;\n\t\t\t},\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 ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );\n\t\t\t},\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tlist = [];\n\t\t\t\tfiringLength = 0;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Have the list do nothing anymore\n\t\t\tdisable: function() {\n\t\t\t\tlist = stack = memory = undefined;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it disabled?\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\t\t\t// Lock the list in its current state\n\t\t\tlock: function() {\n\t\t\t\tstack = undefined;\n\t\t\t\tif ( !memory ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it locked?\n\t\t\tlocked: function() {\n\t\t\t\treturn !stack;\n\t\t\t},\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 ( list && ( !fired || stack ) ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tstack.push( args );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfire( args );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\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\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\njQuery.extend({\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\t\t\t\t// action, add listener, listener list, final state\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), \"rejected\" ],\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks(\"memory\") ]\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\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\t\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\t\t\t\tvar fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\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 && jQuery.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.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\t\t.progress( newDefer.notify );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );\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\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// Keep pipe for back-compat\n\t\tpromise.pipe = promise.then;\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[ 3 ];\n\n\t\t\t// promise[ done | fail | progress ] = 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(function() {\n\t\t\t\t\t// state = [ resolved | rejected ]\n\t\t\t\t\tstate = stateString;\n\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n\t\t\t}\n\n\t\t\t// deferred[ resolve | reject | notify ]\n\t\t\tdeferred[ tuple[0] ] = function() {\n\t\t\t\tdeferred[ tuple[0] + \"With\" ]( this === deferred ? promise : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\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( subordinate /* , ..., subordinateN */ ) {\n\t\tvar i = 0,\n\t\t\tresolveValues = slice.call( arguments ),\n\t\t\tlength = resolveValues.length,\n\n\t\t\t// the count of uncompleted subordinates\n\t\t\tremaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n\n\t\t\t// the master Deferred. If resolveValues consist of only a single Deferred, just use that.\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n\n\t\t\t// Update function for both resolve and progress values\n\t\t\tupdateFunc = function( i, contexts, values ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tcontexts[ i ] = this;\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n\n\t\t\t\t\t} else if ( !(--remaining) ) {\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tprogressValues, progressContexts, resolveContexts;\n\n\t\t// add listeners to Deferred subordinates; treat others as resolved\n\t\tif ( length > 1 ) {\n\t\t\tprogressValues = new Array( length );\n\t\t\tprogressContexts = new Array( length );\n\t\t\tresolveContexts = new Array( length );\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n\t\t\t\t\tresolveValues[ i ].promise()\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n\t\t\t\t\t\t.fail( deferred.reject )\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) );\n\t\t\t\t} else {\n\t\t\t\t\t--remaining;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// if we're not waiting on anything, resolve the master\n\t\tif ( !remaining ) {\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n\t\t}\n\n\t\treturn deferred.promise();\n\t}\n});\n\n\n// The deferred used on DOM ready\nvar readyList;\n\njQuery.fn.ready = function( fn ) {\n\t// Add the callback\n\tjQuery.ready.promise().done( fn );\n\n\treturn this;\n};\n\njQuery.extend({\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// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\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// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( !document.body ) {\n\t\t\treturn setTimeout( jQuery.ready );\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\n\t\t// Trigger any bound ready events\n\t\tif ( jQuery.fn.triggerHandler ) {\n\t\t\tjQuery( document ).triggerHandler( \"ready\" );\n\t\t\tjQuery( document ).off( \"ready\" );\n\t\t}\n\t}\n});\n\n/**\n * Clean-up method for dom ready events\n */\nfunction detach() {\n\tif ( document.addEventListener ) {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", completed, false );\n\t\twindow.removeEventListener( \"load\", completed, false );\n\n\t} else {\n\t\tdocument.detachEvent( \"onreadystatechange\", completed );\n\t\twindow.detachEvent( \"onload\", completed );\n\t}\n}\n\n/**\n * The ready event handler and self cleanup method\n */\nfunction completed() {\n\t// readyState === \"complete\" is good enough for us to call the dom ready in oldIE\n\tif ( document.addEventListener || event.type === \"load\" || document.readyState === \"complete\" ) {\n\t\tdetach();\n\t\tjQuery.ready();\n\t}\n}\n\njQuery.ready.promise = function( obj ) {\n\tif ( !readyList ) {\n\n\t\treadyList = jQuery.Deferred();\n\n\t\t// Catch cases where $(document).ready() is called after the browser event has already occurred.\n\t\t// we once tried to use readyState \"interactive\" here, but it caused issues like the one\n\t\t// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\tsetTimeout( jQuery.ready );\n\n\t\t// Standards-based browsers support DOMContentLoaded\n\t\t} else if ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", completed, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", completed, false );\n\n\t\t// If IE event model is used\n\t\t} else {\n\t\t\t// Ensure firing before onload, maybe late but safe also for iframes\n\t\t\tdocument.attachEvent( \"onreadystatechange\", completed );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", completed );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar top = false;\n\n\t\t\ttry {\n\t\t\t\ttop = window.frameElement == null && document.documentElement;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( top && top.doScroll ) {\n\t\t\t\t(function doScrollCheck() {\n\t\t\t\t\tif ( !jQuery.isReady ) {\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t// Use the trick by Diego Perini\n\t\t\t\t\t\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\t\t\t\t\t\ttop.doScroll(\"left\");\n\t\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t\treturn setTimeout( doScrollCheck, 50 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// detach all dom ready events\n\t\t\t\t\t\tdetach();\n\n\t\t\t\t\t\t// and execute any waiting functions\n\t\t\t\t\t\tjQuery.ready();\n\t\t\t\t\t}\n\t\t\t\t})();\n\t\t\t}\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n\nvar strundefined = typeof undefined;\n\n\n\n// Support: IE<9\n// Iteration over object's inherited properties before its own\nvar i;\nfor ( i in jQuery( support ) ) {\n\tbreak;\n}\nsupport.ownLast = i !== \"0\";\n\n// Note: most support tests are defined in their respective modules.\n// false until the test is run\nsupport.inlineBlockNeedsLayout = false;\n\n// Execute ASAP in case we need to set body.style.zoom\njQuery(function() {\n\t// Minified: var a,b,c,d\n\tvar val, div, body, container;\n\n\tbody = document.getElementsByTagName( \"body\" )[ 0 ];\n\tif ( !body || !body.style ) {\n\t\t// Return for frameset docs that don't have a body\n\t\treturn;\n\t}\n\n\t// Setup\n\tdiv = document.createElement( \"div\" );\n\tcontainer = document.createElement( \"div\" );\n\tcontainer.style.cssText = \"position:absolute;border:0;width:0;height:0;top:0;left:-9999px\";\n\tbody.appendChild( container ).appendChild( div );\n\n\tif ( typeof div.style.zoom !== strundefined ) {\n\t\t// Support: IE<8\n\t\t// Check if natively block-level elements act like inline-block\n\t\t// elements when setting their display to 'inline' and giving\n\t\t// them layout\n\t\tdiv.style.cssText = \"display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1\";\n\n\t\tsupport.inlineBlockNeedsLayout = val = div.offsetWidth === 3;\n\t\tif ( val ) {\n\t\t\t// Prevent IE 6 from affecting layout for positioned elements #11048\n\t\t\t// Prevent IE from shrinking the body in IE 7 mode #12869\n\t\t\t// Support: IE<8\n\t\t\tbody.style.zoom = 1;\n\t\t}\n\t}\n\n\tbody.removeChild( container );\n});\n\n\n\n\n(function() {\n\tvar div = document.createElement( \"div\" );\n\n\t// Execute the test only if not already executed in another module.\n\tif (support.deleteExpando == null) {\n\t\t// Support: IE<9\n\t\tsupport.deleteExpando = true;\n\t\ttry {\n\t\t\tdelete div.test;\n\t\t} catch( e ) {\n\t\t\tsupport.deleteExpando = false;\n\t\t}\n\t}\n\n\t// Null elements to avoid leaks in IE.\n\tdiv = null;\n})();\n\n\n/**\n * Determines whether an object can have data\n */\njQuery.acceptData = function( elem ) {\n\tvar noData = jQuery.noData[ (elem.nodeName + \" \").toLowerCase() ],\n\t\tnodeType = +elem.nodeType || 1;\n\n\t// Do not set data on non-element DOM nodes because it will not be cleared (#8335).\n\treturn nodeType !== 1 && nodeType !== 9 ?\n\t\tfalse :\n\n\t\t// Nodes accept data unless otherwise specified; rejection can be conditional\n\t\t!noData || noData !== true && elem.getAttribute(\"classid\") === noData;\n};\n\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\nfunction dataAttr( elem, key, data ) {\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\n\t\tvar name = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\n\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\t\tdata === \"false\" ? false :\n\t\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t\t+data + \"\" === data ? +data :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\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\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// checks a cache object for emptiness\nfunction isEmptyDataObject( obj ) {\n\tvar name;\n\tfor ( name in obj ) {\n\n\t\t// if the public data object is empty, the private is still empty\n\t\tif ( name === \"data\" && jQuery.isEmptyObject( obj[name] ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nfunction internalData( elem, name, data, pvt /* Internal Use Only */ ) {\n\tif ( !jQuery.acceptData( elem ) ) {\n\t\treturn;\n\t}\n\n\tvar ret, thisCache,\n\t\tinternalKey = jQuery.expando,\n\n\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t// can't GC object references properly across the DOM-JS boundary\n\t\tisNode = elem.nodeType,\n\n\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t// attached directly to the object so GC can occur automatically\n\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;\n\n\t// Avoid doing any more work than we need to when trying to get data on an\n\t// object that has no data at all\n\tif ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === \"string\" ) {\n\t\treturn;\n\t}\n\n\tif ( !id ) {\n\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t// ends up in the global cache\n\t\tif ( isNode ) {\n\t\t\tid = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++;\n\t\t} else {\n\t\t\tid = internalKey;\n\t\t}\n\t}\n\n\tif ( !cache[ id ] ) {\n\t\t// Avoid exposing jQuery metadata on plain JS objects when the object\n\t\t// is serialized using JSON.stringify\n\t\tcache[ id ] = isNode ? {} : { toJSON: jQuery.noop };\n\t}\n\n\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t// shallow copied over onto the existing cache\n\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\tif ( pvt ) {\n\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\n\t\t} else {\n\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\n\t\t}\n\t}\n\n\tthisCache = cache[ id ];\n\n\t// jQuery data() is stored in a separate object inside the object's internal data\n\t// cache in order to avoid key collisions between internal data and user-defined\n\t// data.\n\tif ( !pvt ) {\n\t\tif ( !thisCache.data ) {\n\t\t\tthisCache.data = {};\n\t\t}\n\n\t\tthisCache = thisCache.data;\n\t}\n\n\tif ( data !== undefined ) {\n\t\tthisCache[ jQuery.camelCase( name ) ] = data;\n\t}\n\n\t// Check for both converted-to-camel and non-converted data property names\n\t// If a data property was specified\n\tif ( typeof name === \"string\" ) {\n\n\t\t// First Try to find as-is property data\n\t\tret = thisCache[ name ];\n\n\t\t// Test for null|undefined property data\n\t\tif ( ret == null ) {\n\n\t\t\t// Try to find the camelCased property\n\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\n\t\t}\n\t} else {\n\t\tret = thisCache;\n\t}\n\n\treturn ret;\n}\n\nfunction internalRemoveData( elem, name, pvt ) {\n\tif ( !jQuery.acceptData( elem ) ) {\n\t\treturn;\n\t}\n\n\tvar thisCache, i,\n\t\tisNode = elem.nodeType,\n\n\t\t// See jQuery.data for more information\n\t\tcache = isNode ? jQuery.cache : elem,\n\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t// If there is already no cache entry for this object, there is no\n\t// purpose in continuing\n\tif ( !cache[ id ] ) {\n\t\treturn;\n\t}\n\n\tif ( name ) {\n\n\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\n\n\t\tif ( thisCache ) {\n\n\t\t\t// Support array or space separated string names for data keys\n\t\t\tif ( !jQuery.isArray( name ) ) {\n\n\t\t\t\t// try the string as a key before any manipulation\n\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\tname = [ name ];\n\t\t\t\t} else {\n\n\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\n\t\t\t\t\tname = jQuery.camelCase( name );\n\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tname = name.split(\" \");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// If \"name\" is an array of keys...\n\t\t\t\t// When data is initially created, via (\"key\", \"val\") signature,\n\t\t\t\t// keys will be converted to camelCase.\n\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\n\t\t\t\t// both plain key and camelCase key. #12786\n\t\t\t\t// This will only penalize the array argument path.\n\t\t\t\tname = name.concat( jQuery.map( name, jQuery.camelCase ) );\n\t\t\t}\n\n\t\t\ti = name.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete thisCache[ name[i] ];\n\t\t\t}\n\n\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t// and let the cache object itself get destroyed\n\t\t\tif ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\t// See jQuery.data for more information\n\tif ( !pvt ) {\n\t\tdelete cache[ id ].data;\n\n\t\t// Don't destroy the parent cache unless the internal data object\n\t\t// had been the only thing left in it\n\t\tif ( !isEmptyDataObject( cache[ id ] ) ) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// Destroy the cache\n\tif ( isNode ) {\n\t\tjQuery.cleanData( [ elem ], true );\n\n\t// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)\n\t/* jshint eqeqeq: false */\n\t} else if ( support.deleteExpando || cache != cache.window ) {\n\t\t/* jshint eqeqeq: true */\n\t\tdelete cache[ id ];\n\n\t// When all else fails, null\n\t} else {\n\t\tcache[ id ] = null;\n\t}\n}\n\njQuery.extend({\n\tcache: {},\n\n\t// The following elements (space-suffixed to avoid Object.prototype collisions)\n\t// throw uncatchable exceptions if you attempt to set expando properties\n\tnoData: {\n\t\t\"applet \": true,\n\t\t\"embed \": true,\n\t\t// ...but Flash objects (which have this classid) *can* handle expandos\n\t\t\"object \": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn internalData( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\treturn internalRemoveData( elem, name );\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn internalData( elem, name, data, true );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\treturn internalRemoveData( elem, name, true );\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// Special expections of .data basically thwart jQuery.access,\n\t\t// so implement the relevant behavior ourselves\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, \"parsedAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE11+\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 = jQuery.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\tjQuery._data( elem, \"parsedAttrs\", 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\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\treturn arguments.length > 1 ?\n\n\t\t\t// Sets one value\n\t\t\tthis.each(function() {\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t}) :\n\n\t\t\t// Gets one value\n\t\t\t// Try to fetch any internally stored data first\n\t\t\telem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined;\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( 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 = jQuery._data( 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 || jQuery.isArray(data) ) {\n\t\t\t\t\tqueue = jQuery._data( 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 intended for public consumption - generates a queueHooks object, or returns the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn jQuery._data( elem, key ) || jQuery._data( elem, key, {\n\t\t\tempty: jQuery.Callbacks(\"once memory\").add(function() {\n\t\t\t\tjQuery._removeData( elem, type + \"queue\" );\n\t\t\t\tjQuery._removeData( elem, 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\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 = jQuery._data( 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 cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHidden = function( elem, el ) {\n\t\t// isHidden might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\t\treturn jQuery.css( elem, \"display\" ) === \"none\" || !jQuery.contains( elem.ownerDocument, elem );\n\t};\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 = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlength = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( jQuery.type( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\tjQuery.access( 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 ( !jQuery.isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\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 < length; i++ ) {\n\t\t\t\tfn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn chainable ?\n\t\telems :\n\n\t\t// Gets\n\t\tbulk ?\n\t\t\tfn.call( elems ) :\n\t\t\tlength ? fn( elems[0], key ) : emptyGet;\n};\nvar rcheckableType = (/^(?:checkbox|radio)$/i);\n\n\n\n(function() {\n\t// Minified: var a,b,c\n\tvar input = document.createElement( \"input\" ),\n\t\tdiv = document.createElement( \"div\" ),\n\t\tfragment = document.createDocumentFragment();\n\n\t// Setup\n\tdiv.innerHTML = \"
a\";\n\n\t// IE strips leading whitespace when .innerHTML is used\n\tsupport.leadingWhitespace = div.firstChild.nodeType === 3;\n\n\t// Make sure that tbody elements aren't automatically inserted\n\t// IE will insert them into empty tables\n\tsupport.tbody = !div.getElementsByTagName( \"tbody\" ).length;\n\n\t// Make sure that link elements get serialized correctly by innerHTML\n\t// This requires a wrapper element in IE\n\tsupport.htmlSerialize = !!div.getElementsByTagName( \"link\" ).length;\n\n\t// Makes sure cloning an html5 element does not cause problems\n\t// Where outerHTML is undefined, this still works\n\tsupport.html5Clone =\n\t\tdocument.createElement( \"nav\" ).cloneNode( true ).outerHTML !== \"<:nav>\";\n\n\t// Check if a disconnected checkbox will retain its checked\n\t// value of true after appended to the DOM (IE6/7)\n\tinput.type = \"checkbox\";\n\tinput.checked = true;\n\tfragment.appendChild( input );\n\tsupport.appendChecked = input.checked;\n\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\t// Support: IE6-IE11+\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// #11217 - WebKit loses check when the name is after the checked attribute\n\tfragment.appendChild( div );\n\tdiv.innerHTML = \"\";\n\n\t// Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3\n\t// old WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE<9\n\t// Opera does not clone events (and typeof div.attachEvent === undefined).\n\t// IE9-10 clones events bound via attachEvent, but they don't trigger with .click()\n\tsupport.noCloneEvent = true;\n\tif ( div.attachEvent ) {\n\t\tdiv.attachEvent( \"onclick\", function() {\n\t\t\tsupport.noCloneEvent = false;\n\t\t});\n\n\t\tdiv.cloneNode( true ).click();\n\t}\n\n\t// Execute the test only if not already executed in another module.\n\tif (support.deleteExpando == null) {\n\t\t// Support: IE<9\n\t\tsupport.deleteExpando = true;\n\t\ttry {\n\t\t\tdelete div.test;\n\t\t} catch( e ) {\n\t\t\tsupport.deleteExpando = false;\n\t\t}\n\t}\n})();\n\n\n(function() {\n\tvar i, eventName,\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Support: IE<9 (lack submit/change bubble), Firefox 23+ (lack focusin event)\n\tfor ( i in { submit: true, change: true, focusin: true }) {\n\t\teventName = \"on\" + i;\n\n\t\tif ( !(support[ i + \"Bubbles\" ] = eventName in window) ) {\n\t\t\t// Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP)\n\t\t\tdiv.setAttribute( eventName, \"t\" );\n\t\t\tsupport[ i + \"Bubbles\" ] = div.attributes[ eventName ].expando === false;\n\t\t}\n\t}\n\n\t// Null elements to avoid leaks in IE.\n\tdiv = null;\n})();\n\n\nvar rformElems = /^(?:input|select|textarea)$/i,\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)$/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\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\t\tvar tmp, events, t, handleObjIn,\n\t\t\tspecial, eventHandle, handleObj,\n\t\t\thandlers, type, namespaces, origType,\n\t\t\telemData = jQuery._data( 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// 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\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 !== strundefined && (!e || jQuery.event.triggered !== e.type) ?\n\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t\t// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events\n\t\t\teventHandle.elem = elem;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\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/attachEvent if the special events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + 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\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\t\tvar j, handleObj, tmp,\n\t\t\torigCount, t, events,\n\t\t\tspecial, handlers, type,\n\t\t\tnamespaces, origType,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( 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( rnotwhite ) || [ \"\" ];\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] && new 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 || selector === \"**\" && 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 || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {\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 the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdelete elemData.handle;\n\n\t\t\t// removeData also checks for emptiness and clears the expando if empty\n\t\t\t// so use it instead of delete\n\t\t\tjQuery._removeData( elem, \"events\" );\n\t\t}\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\t\tvar handle, ontype, cur,\n\t\t\tbubbleType, special, tmp, i,\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 = 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(\".\") >= 0 ) {\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.namespace_re = 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 && !jQuery.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\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 = ( jQuery._data( cur, \"events\" ) || {} )[ event.type ] && jQuery._data( 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 && jQuery.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 || special._default.apply( eventPath.pop(), data ) === false) &&\n\t\t\t\tjQuery.acceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Can't use an .isFunction() check here because IE6/7 fails that test.\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 && elem[ type ] && !jQuery.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\t\t\t\t\ttry {\n\t\t\t\t\t\telem[ type ]();\n\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486,#12518)\n\t\t\t\t\t\t// only reproducible on winXP IE8 native, not IE9 in IE8 mode\n\t\t\t\t\t}\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\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event );\n\n\t\tvar i, ret, handleObj, matched, j,\n\t\t\thandlerQueue = [],\n\t\t\targs = slice.call( arguments ),\n\t\t\thandlers = ( jQuery._data( 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\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++ ]) && !event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or\n\t\t\t\t// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.namespace_re || event.namespace_re.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 || handleObj.handler )\n\t\t\t\t\t\t\t.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 sel, handleObj, matches, i,\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\t// Black-hole SVG instance trees (#13180)\n\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n\t\tif ( delegateCount && cur.nodeType && (!event.button || event.type !== \"click\") ) {\n\n\t\t\t/* jshint eqeqeq: false */\n\t\t\tfor ( ; cur != this; cur = cur.parentNode || this ) {\n\t\t\t\t/* jshint eqeqeq: true */\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 && (cur.disabled !== true || event.type !== \"click\") ) {\n\t\t\t\t\tmatches = [];\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 ( matches[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatches[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) >= 0 :\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 ( matches[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push({ elem: cur, handlers: matches });\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\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop, copy,\n\t\t\ttype = event.type,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = this.fixHooks[ type ];\n\n\t\tif ( !fixHook ) {\n\t\t\tthis.fixHooks[ type ] = fixHook =\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\n\t\t\t\t{};\n\t\t}\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = new jQuery.Event( originalEvent );\n\n\t\ti = copy.length;\n\t\twhile ( i-- ) {\n\t\t\tprop = copy[ i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Fix target property (#1925)\n\t\tif ( !event.target ) {\n\t\t\tevent.target = originalEvent.srcElement || document;\n\t\t}\n\n\t\t// Support: Chrome 23+, Safari?\n\t\t// Target should not be a text node (#504, #13143)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// For mouse/key events, metaKey==false if it's undefined (#3368, #11328)\n\t\tevent.metaKey = !!event.metaKey;\n\n\t\treturn fixHook.filter ? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\tprops: \"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: \"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\t\t\tvar body, eventDoc, doc,\n\t\t\t\tbutton = original.button,\n\t\t\t\tfromElement = original.fromElement;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );\n\t\t\t}\n\n\t\t\t// Add relatedTarget, if necessary\n\t\t\tif ( !event.relatedTarget && fromElement ) {\n\t\t\t\tevent.relatedTarget = fromElement === event.target ? original.toElement : fromElement;\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tspecial: {\n\t\tload: {\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.focus();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t// Support: IE<9\n\t\t\t\t\t\t// If we error on focus to hidden element (#1486, #12518),\n\t\t\t\t\t\t// let .trigger() run the handlers\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( jQuery.nodeName( this, \"input\" ) && this.type === \"checkbox\" && this.click ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn jQuery.nodeName( event.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\tsimulate: function( type, elem, event, bubble ) {\n\t\t// Piggyback on a donor event to simulate a different one.\n\t\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t\t// simulated event prevents default then we do the same on the donor.\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\toriginalEvent: {}\n\t\t\t}\n\t\t);\n\t\tif ( bubble ) {\n\t\t\tjQuery.event.trigger( e, null, elem );\n\t\t} else {\n\t\t\tjQuery.event.dispatch.call( elem, e );\n\t\t}\n\t\tif ( e.isDefaultPrevented() ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tvar name = \"on\" + type;\n\n\t\tif ( elem.detachEvent ) {\n\n\t\t\t// #8545, #7054, preventing memory leaks for custom events in IE6-8\n\t\t\t// detachEvent needed property on element, by name of that event, to properly expose it to GC\n\t\t\tif ( typeof elem[ name ] === strundefined ) {\n\t\t\t\telem[ name ] = null;\n\t\t\t}\n\n\t\t\telem.detachEvent( name, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src, props ) {\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\t\t\t\t// Support: IE < 9, Android < 4.0\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\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 || jQuery.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// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If preventDefault exists, run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// Support: IE\n\t\t// Otherwise set the returnValue property of the original event to false\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// If stopPropagation exists, run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\n\t\t// Support: IE\n\t\t// Set the cancelBubble property of the original event to true\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && e.stopImmediatePropagation ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\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 mousenter/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\n// IE submit delegation\nif ( !support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\n\t\t\tjQuery.event.add( this, \"click._submit keypress._submit\", function( e ) {\n\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\n\t\t\t\tvar elem = e.target,\n\t\t\t\t\tform = jQuery.nodeName( elem, \"input\" ) || jQuery.nodeName( elem, \"button\" ) ? elem.form : undefined;\n\t\t\t\tif ( form && !jQuery._data( form, \"submitBubbles\" ) ) {\n\t\t\t\t\tjQuery.event.add( form, \"submit._submit\", function( event ) {\n\t\t\t\t\t\tevent._submit_bubble = true;\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( form, \"submitBubbles\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t\t// return undefined since we don't need an event listener\n\t\t},\n\n\t\tpostDispatch: function( event ) {\n\t\t\t// If form was submitted by the user, bubble the event up the tree\n\t\t\tif ( event._submit_bubble ) {\n\t\t\t\tdelete event._submit_bubble;\n\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\n\t\t\t\t\tjQuery.event.simulate( \"submit\", this.parentNode, event, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\n\t\t\tjQuery.event.remove( this, \"._submit\" );\n\t\t}\n\t};\n}\n\n// IE change delegation and checkbox/radio fix\nif ( !support.changeBubbles ) {\n\n\tjQuery.event.special.change = {\n\n\t\tsetup: function() {\n\n\t\t\tif ( rformElems.test( this.nodeName ) ) {\n\t\t\t\t// IE doesn't fire change on a check/radio until blur; trigger it on click\n\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\n\t\t\t\t// This still fires onchange a second time for check/radio after blur.\n\t\t\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t\t\tjQuery.event.add( this, \"propertychange._change\", function( event ) {\n\t\t\t\t\t\tif ( event.originalEvent.propertyName === \"checked\" ) {\n\t\t\t\t\t\t\tthis._just_changed = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery.event.add( this, \"click._change\", function( event ) {\n\t\t\t\t\t\tif ( this._just_changed && !event.isTrigger ) {\n\t\t\t\t\t\t\tthis._just_changed = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Allow triggered, simulated change events (#11500)\n\t\t\t\t\t\tjQuery.event.simulate( \"change\", this, event, true );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\n\t\t\tjQuery.event.add( this, \"beforeactivate._change\", function( e ) {\n\t\t\t\tvar elem = e.target;\n\n\t\t\t\tif ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, \"changeBubbles\" ) ) {\n\t\t\t\t\tjQuery.event.add( elem, \"change._change\", function( event ) {\n\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this.parentNode, event, true );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( elem, \"changeBubbles\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\thandle: function( event ) {\n\t\t\tvar elem = event.target;\n\n\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\n\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== \"radio\" && elem.type !== \"checkbox\") ) {\n\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tjQuery.event.remove( this, \"._change\" );\n\n\t\t\treturn !rformElems.test( this.nodeName );\n\t\t}\n\t};\n}\n\n// Create \"bubbling\" focus and blur events\nif ( !support.focusinBubbles ) {\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\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );\n\t\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 = jQuery._data( 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\tjQuery._data( 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 = jQuery._data( 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\tjQuery._removeData( doc, fix );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery._data( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\njQuery.fn.extend({\n\n\ton: function( types, selector, data, fn, /*INTERNAL*/ one ) {\n\t\tvar type, origFn;\n\n\t\t// Types can be a map of types/handlers\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-Object, selector, data )\n\t\t\tif ( typeof selector !== \"string\" ) {\n\t\t\t\t// ( types-Object, data )\n\t\t\t\tdata = data || selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.on( type, selector, data, types[ type ], one );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( data == null && fn == null ) {\n\t\t\t// ( types, fn )\n\t\t\tfn = selector;\n\t\t\tdata = selector = undefined;\n\t\t} else if ( fn == null ) {\n\t\t\tif ( typeof selector === \"string\" ) {\n\t\t\t\t// ( types, selector, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = undefined;\n\t\t\t} else {\n\t\t\t\t// ( types, data, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t} else if ( !fn ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( one === 1 ) {\n\t\t\torigFn = fn;\n\t\t\tfn = function( event ) {\n\t\t\t\t// Can use an empty set, since event contains the info\n\t\t\t\tjQuery().off( event );\n\t\t\t\treturn origFn.apply( this, arguments );\n\t\t\t};\n\t\t\t// Use same guid so caller can remove using origFn\n\t\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.add( this, types, fn, data, selector );\n\t\t});\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn this.on( 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\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 ? handleObj.origType + \".\" + handleObj.namespace : handleObj.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\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\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\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\nfunction createSafeFragment( document ) {\n\tvar list = nodeNames.split( \"|\" ),\n\t\tsafeFrag = document.createDocumentFragment();\n\n\tif ( safeFrag.createElement ) {\n\t\twhile ( list.length ) {\n\t\t\tsafeFrag.createElement(\n\t\t\t\tlist.pop()\n\t\t\t);\n\t\t}\n\t}\n\treturn safeFrag;\n}\n\nvar nodeNames = \"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|\" +\n\t\t\"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",\n\trinlinejQuery = / jQuery\\d+=\"(?:null|\\d+)\"/g,\n\trnoshimcache = new RegExp(\"<(?:\" + nodeNames + \")[\\\\s/>]\", \"i\"),\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /\\s*$/g,\n\n\t// We have to close these tags to support XHTML (#13200)\n\twrapMap = {\n\t\toption: [ 1, \"\" ],\n\t\tlegend: [ 1, \"
\", \"
\" ],\n\t\tarea: [ 1, \"\", \"\" ],\n\t\tparam: [ 1, \"\", \"\" ],\n\t\tthead: [ 1, \"\", \"
\" ],\n\t\ttr: [ 2, \"\", \"
\" ],\n\t\tcol: [ 2, \"\", \"
\" ],\n\t\ttd: [ 3, \"\", \"
\" ],\n\n\t\t// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,\n\t\t// unless wrapped in a div with non-breaking characters in front of it.\n\t\t_default: support.htmlSerialize ? [ 0, \"\", \"\" ] : [ 1, \"X
\", \"
\" ]\n\t},\n\tsafeFragment = createSafeFragment( document ),\n\tfragmentDiv = safeFragment.appendChild( document.createElement(\"div\") );\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\nfunction getAll( context, tag ) {\n\tvar elems, elem,\n\t\ti = 0,\n\t\tfound = typeof context.getElementsByTagName !== strundefined ? context.getElementsByTagName( tag || \"*\" ) :\n\t\t\ttypeof context.querySelectorAll !== strundefined ? context.querySelectorAll( tag || \"*\" ) :\n\t\t\tundefined;\n\n\tif ( !found ) {\n\t\tfor ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( !tag || jQuery.nodeName( elem, tag ) ) {\n\t\t\t\tfound.push( elem );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( found, getAll( elem, tag ) );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\n\t\tjQuery.merge( [ context ], found ) :\n\t\tfound;\n}\n\n// Used in buildFragment, fixes the defaultChecked property\nfunction fixDefaultChecked( elem ) {\n\tif ( rcheckableType.test( elem.type ) ) {\n\t\telem.defaultChecked = elem.checked;\n\t}\n}\n\n// Support: IE<8\n// Manipulating tables requires a tbody\nfunction manipulationTarget( elem, content ) {\n\treturn jQuery.nodeName( elem, \"table\" ) &&\n\t\tjQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ?\n\n\t\telem.getElementsByTagName(\"tbody\")[0] ||\n\t\t\telem.appendChild( elem.ownerDocument.createElement(\"tbody\") ) :\n\t\telem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = (jQuery.find.attr( elem, \"type\" ) !== null) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tvar match = rscriptTypeMasked.exec( elem.type );\n\tif ( match ) {\n\t\telem.type = match[1];\n\t} else {\n\t\telem.removeAttribute(\"type\");\n\t}\n\treturn elem;\n}\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar elem,\n\t\ti = 0;\n\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\tjQuery._data( elem, \"globalEval\", !refElements || jQuery._data( refElements[i], \"globalEval\" ) );\n\t}\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar type, i, l,\n\t\toldData = jQuery._data( src ),\n\t\tcurData = jQuery._data( dest, oldData ),\n\t\tevents = oldData.events;\n\n\tif ( events ) {\n\t\tdelete curData.handle;\n\t\tcurData.events = {};\n\n\t\tfor ( type in events ) {\n\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t}\n\t\t}\n\t}\n\n\t// make the cloned public data object a copy from the original\n\tif ( curData.data ) {\n\t\tcurData.data = jQuery.extend( {}, curData.data );\n\t}\n}\n\nfunction fixCloneNodeIssues( src, dest ) {\n\tvar nodeName, e, data;\n\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\tnodeName = dest.nodeName.toLowerCase();\n\n\t// IE6-8 copies events bound via attachEvent when using cloneNode.\n\tif ( !support.noCloneEvent && dest[ jQuery.expando ] ) {\n\t\tdata = jQuery._data( dest );\n\n\t\tfor ( e in data.events ) {\n\t\t\tjQuery.removeEvent( dest, e, data.handle );\n\t\t}\n\n\t\t// Event data gets referenced instead of copied if the expando gets copied too\n\t\tdest.removeAttribute( jQuery.expando );\n\t}\n\n\t// IE blanks contents when cloning scripts, and tries to evaluate newly-set text\n\tif ( nodeName === \"script\" && dest.text !== src.text ) {\n\t\tdisableScript( dest ).text = src.text;\n\t\trestoreScript( dest );\n\n\t// IE6-10 improperly clones children of object elements using classid.\n\t// IE10 throws NoModificationAllowedError if parent is null, #12132.\n\t} else if ( nodeName === \"object\" ) {\n\t\tif ( dest.parentNode ) {\n\t\t\tdest.outerHTML = src.outerHTML;\n\t\t}\n\n\t\t// This path appears unavoidable for IE9. When cloning an object\n\t\t// element in IE9, the outerHTML strategy above is not sufficient.\n\t\t// If the src has innerHTML and the destination does not,\n\t\t// copy the src.innerHTML into the dest.innerHTML. #10324\n\t\tif ( support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) {\n\t\t\tdest.innerHTML = src.innerHTML;\n\t\t}\n\n\t} else if ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\n\t\tdest.defaultChecked = dest.checked = src.checked;\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.defaultSelected = dest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar destElements, node, clone, i, srcElements,\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\tif ( support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( \"<\" + elem.nodeName + \">\" ) ) {\n\t\t\tclone = elem.cloneNode( true );\n\n\t\t// IE<=8 does not properly clone detached, unknown element nodes\n\t\t} else {\n\t\t\tfragmentDiv.innerHTML = elem.outerHTML;\n\t\t\tfragmentDiv.removeChild( clone = fragmentDiv.firstChild );\n\t\t}\n\n\t\tif ( (!support.noCloneEvent || !support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\t// Fix all IE cloning issues\n\t\t\tfor ( i = 0; (node = srcElements[i]) != null; ++i ) {\n\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\n\t\t\t\tif ( destElements[i] ) {\n\t\t\t\t\tfixCloneNodeIssues( node, destElements[i] );\n\t\t\t\t}\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; (node = srcElements[i]) != null; i++ ) {\n\t\t\t\t\tcloneCopyEvent( node, 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\tdestElements = srcElements = node = null;\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tbuildFragment: function( elems, context, scripts, selection ) {\n\t\tvar j, elem, contains,\n\t\t\ttmp, tag, tbody, wrap,\n\t\t\tl = elems.length,\n\n\t\t\t// Ensure a safe fragment\n\t\t\tsafe = createSafeFragment( context ),\n\n\t\t\tnodes = [],\n\t\t\ti = 0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\telem = elems[ i ];\n\n\t\t\tif ( elem || elem === 0 ) {\n\n\t\t\t\t// Add nodes directly\n\t\t\t\tif ( jQuery.type( elem ) === \"object\" ) {\n\t\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t\t// Convert non-html into a text node\n\t\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t\t// Convert html into DOM nodes\n\t\t\t\t} else {\n\t\t\t\t\ttmp = tmp || safe.appendChild( context.createElement(\"div\") );\n\n\t\t\t\t\t// Deserialize a standard representation\n\t\t\t\t\ttag = (rtagName.exec( elem ) || [ \"\", \"\" ])[ 1 ].toLowerCase();\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\n\t\t\t\t\ttmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, \"<$1>\" ) + wrap[2];\n\n\t\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\t\tj = wrap[0];\n\t\t\t\t\twhile ( j-- ) {\n\t\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Manually add leading whitespace removed by IE\n\t\t\t\t\tif ( !support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\t\tnodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove IE's autoinserted from table fragments\n\t\t\t\t\tif ( !support.tbody ) {\n\n\t\t\t\t\t\t// String was a , *may* have spurious \n\t\t\t\t\t\telem = tag === \"table\" && !rtbody.test( elem ) ?\n\t\t\t\t\t\t\ttmp.firstChild :\n\n\t\t\t\t\t\t\t// String was a bare or \n\t\t\t\t\t\t\twrap[1] === \"
\" && !rtbody.test( elem ) ?\n\t\t\t\t\t\t\t\ttmp :\n\t\t\t\t\t\t\t\t0;\n\n\t\t\t\t\t\tj = elem && elem.childNodes.length;\n\t\t\t\t\t\twhile ( j-- ) {\n\t\t\t\t\t\t\tif ( jQuery.nodeName( (tbody = elem.childNodes[j]), \"tbody\" ) && !tbody.childNodes.length ) {\n\t\t\t\t\t\t\t\telem.removeChild( tbody );\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\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t\t// Fix #12392 for WebKit and IE > 9\n\t\t\t\t\ttmp.textContent = \"\";\n\n\t\t\t\t\t// Fix #12392 for oldIE\n\t\t\t\t\twhile ( tmp.firstChild ) {\n\t\t\t\t\t\ttmp.removeChild( tmp.firstChild );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remember the top-level container for proper cleanup\n\t\t\t\t\ttmp = safe.lastChild;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Fix #11356: Clear elements from fragment\n\t\tif ( tmp ) {\n\t\t\tsafe.removeChild( tmp );\n\t\t}\n\n\t\t// Reset defaultChecked for any radios and checkboxes\n\t\t// about to be appended to the DOM in IE 6/7 (#8060)\n\t\tif ( !support.appendChecked ) {\n\t\t\tjQuery.grep( getAll( nodes, \"input\" ), fixDefaultChecked );\n\t\t}\n\n\t\ti = 0;\n\t\twhile ( (elem = nodes[ i++ ]) ) {\n\n\t\t\t// #4087 - If origin and destination elements are the same, and this is\n\t\t\t// that element, do not do anything\n\t\t\tif ( selection && jQuery.inArray( elem, selection ) !== -1 ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t\t// Append to fragment\n\t\t\ttmp = getAll( safe.appendChild( elem ), \"script\" );\n\n\t\t\t// Preserve script evaluation history\n\t\t\tif ( contains ) {\n\t\t\t\tsetGlobalEval( tmp );\n\t\t\t}\n\n\t\t\t// Capture executables\n\t\t\tif ( scripts ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (elem = tmp[ j++ ]) ) {\n\t\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\t\tscripts.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ttmp = null;\n\n\t\treturn safe;\n\t},\n\n\tcleanData: function( elems, /* internal */ acceptData ) {\n\t\tvar elem, type, id, data,\n\t\t\ti = 0,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tcache = jQuery.cache,\n\t\t\tdeleteExpando = support.deleteExpando,\n\t\t\tspecial = jQuery.event.special;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( acceptData || jQuery.acceptData( elem ) ) {\n\n\t\t\t\tid = elem[ internalKey ];\n\t\t\t\tdata = id && cache[ id ];\n\n\t\t\t\tif ( data ) {\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// Remove cache only if it was not already removed by jQuery.event.remove\n\t\t\t\t\tif ( cache[ id ] ) {\n\n\t\t\t\t\t\tdelete cache[ id ];\n\n\t\t\t\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t\t\t\t// we must handle all of these cases\n\t\t\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\t\t\tdelete elem[ internalKey ];\n\n\t\t\t\t\t\t} else if ( typeof elem.removeAttribute !== strundefined ) {\n\t\t\t\t\t\t\telem.removeAttribute( internalKey );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telem[ internalKey ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdeletedIds.push( id );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\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().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip( 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 this.domManip( 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 this.domManip( 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 this.domManip( 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\tremove: function( selector, keepData /* Internal Use Only */ ) {\n\t\tvar elem,\n\t\t\telems = selector ? jQuery.filter( selector, this ) : this,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\n\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( getAll( elem ) );\n\t\t\t}\n\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\tif ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\t\t\tsetGlobalEval( getAll( elem, \"script\" ) );\n\t\t\t\t}\n\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\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\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\n\t\t\t// If this is a select, ensure that it displays empty (#12336)\n\t\t\t// Support: IE<9\n\t\t\tif ( elem.options && jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\telem.options.length = 0;\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 ) {\n\t\t\t\treturn elem.nodeType === 1 ?\n\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, \"\" ) :\n\t\t\t\t\tundefined;\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( support.htmlSerialize || !rnoshimcache.test( value ) ) &&\n\t\t\t\t( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\n\t\t\t\t!wrapMap[ (rtagName.exec( value ) || [ \"\", \"\" ])[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = value.replace( rxhtmlTag, \"<$1>\" );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor (; i < l; i++ ) {\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\telem = this[i] || {};\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 arg = arguments[ 0 ];\n\n\t\t// Make the changes, replacing each context element with the new content\n\t\tthis.domManip( arguments, function( elem ) {\n\t\t\targ = this.parentNode;\n\n\t\t\tjQuery.cleanData( getAll( this ) );\n\n\t\t\tif ( arg ) {\n\t\t\t\targ.replaceChild( elem, this );\n\t\t\t}\n\t\t});\n\n\t\t// Force removal if there was no new content (e.g., from empty arguments)\n\t\treturn arg && (arg.length || arg.nodeType) ? this : this.remove();\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, callback ) {\n\n\t\t// Flatten any nested arrays\n\t\targs = concat.apply( [], args );\n\n\t\tvar first, node, hasScripts,\n\t\t\tscripts, doc, fragment,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tset = this,\n\t\t\tiNoClone = l - 1,\n\t\t\tvalue = args[0],\n\t\t\tisFunction = jQuery.isFunction( value );\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( isFunction ||\n\t\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\t\treturn this.each(function( index ) {\n\t\t\t\tvar self = set.eq( index );\n\t\t\t\tif ( isFunction ) {\n\t\t\t\t\targs[0] = value.call( this, index, self.html() );\n\t\t\t\t}\n\t\t\t\tself.domManip( args, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( l ) {\n\t\t\tfragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );\n\t\t\tfirst = fragment.firstChild;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfragment = first;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\t\thasScripts = scripts.length;\n\n\t\t\t\t// Use the original fragment for the last item instead of the first because it can end up\n\t\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\tnode = fragment;\n\n\t\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcallback.call( this[i], node, i );\n\t\t\t\t}\n\n\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t\t// Reenable scripts\n\t\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t\t!jQuery._data( node, \"globalEval\" ) && jQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\t\tif ( node.src ) {\n\t\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\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\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\tjQuery.globalEval( ( node.text || node.textContent || node.innerHTML || \"\" ).replace( rcleanScript, \"\" ) );\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// Fix #11809: Avoid leaking memory\n\t\t\t\tfragment = first = null;\n\t\t\t}\n\t\t}\n\n\t\treturn this;\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\ti = 0,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1;\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// Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n});\n\n\nvar iframe,\n\telemdisplay = {};\n\n/**\n * Retrieve the actual display of a element\n * @param {String} name nodeName of the element\n * @param {Object} doc Document object\n */\n// Called only from within defaultDisplay\nfunction actualDisplay( name, doc ) {\n\tvar style,\n\t\telem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\n\n\t\t// getDefaultComputedStyle might be reliably used only on attached element\n\t\tdisplay = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ?\n\n\t\t\t// Use of this method is a temporary fix (more like optmization) until something better comes along,\n\t\t\t// since it was removed from specification and supported only in FF\n\t\t\tstyle.display : jQuery.css( elem[ 0 ], \"display\" );\n\n\t// We don't have any data stored on the element,\n\t// so use \"detach\" method as fast way to get rid of the element\n\telem.detach();\n\n\treturn display;\n}\n\n/**\n * Try to determine the default display value of an element\n * @param {String} nodeName\n */\nfunction defaultDisplay( nodeName ) {\n\tvar doc = document,\n\t\tdisplay = elemdisplay[ nodeName ];\n\n\tif ( !display ) {\n\t\tdisplay = actualDisplay( nodeName, doc );\n\n\t\t// If the simple way fails, read from inside an iframe\n\t\tif ( display === \"none\" || !display ) {\n\n\t\t\t// Use the already-created iframe if possible\n\t\t\tiframe = (iframe || jQuery( \"