{"version":3,"sources":["webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./node_modules/core-js/internals/fails.js","webpack:///./node_modules/core-js/internals/global.js","webpack:///./node_modules/core-js/internals/well-known-symbol.js","webpack:///./node_modules/core-js/internals/export.js","webpack:///./node_modules/core-js/internals/an-object.js","webpack:///./node_modules/core-js/internals/is-object.js","webpack:///./node_modules/core-js/internals/has.js","webpack:///./node_modules/core-js/modules/es.array.find.js","webpack:///./node_modules/core-js/modules/es.array.index-of.js","webpack:///./node_modules/core-js/internals/descriptors.js","webpack:///./node_modules/core-js/internals/object-define-property.js","webpack:///./node_modules/core-js/modules/es.regexp.exec.js","webpack:///./node_modules/core-js/modules/es.object.to-string.js","webpack:///./node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///./node_modules/core-js/internals/redefine.js","webpack:///./node_modules/core-js/internals/to-object.js","webpack:///./node_modules/core-js/internals/classof-raw.js","webpack:///./node_modules/core-js/internals/to-length.js","webpack:///./node_modules/core-js/internals/require-object-coercible.js","webpack:///./node_modules/core-js/internals/to-indexed-object.js","webpack:///./node_modules/core-js/internals/array-method-uses-to-length.js","webpack:///./node_modules/core-js/modules/es.string.replace.js","webpack:///./node_modules/core-js/internals/get-built-in.js","webpack:///./node_modules/core-js/internals/to-primitive.js","webpack:///./node_modules/core-js/modules/es.array.concat.js","webpack:///./node_modules/core-js/modules/es.symbol.js","webpack:///./node_modules/core-js/modules/es.symbol.description.js","webpack:///./node_modules/core-js/modules/es.symbol.to-primitive.js","webpack:///./node_modules/core-js/modules/es.date.to-primitive.js","webpack:///./node_modules/core-js/modules/es.number.constructor.js","webpack:///./node_modules/core-js/internals/internal-state.js","webpack:///./node_modules/core-js/internals/a-function.js","webpack:///./node_modules/core-js/modules/es.string.split.js","webpack:///./node_modules/core-js/internals/to-integer.js","webpack:///./node_modules/core-js/internals/is-pure.js","webpack:///./node_modules/core-js/internals/create-property-descriptor.js","webpack:///./node_modules/core-js/modules/es.promise.js","webpack:///./node_modules/core-js/modules/es.regexp.to-string.js","webpack:///./node_modules/core-js/internals/iterators.js","webpack:///./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack:///./node_modules/core-js/internals/array-method-is-strict.js","webpack:///./node_modules/core-js/internals/string-trim.js","webpack:///./node_modules/core-js/internals/whitespaces.js","webpack:///./node_modules/core-js/internals/indexed-object.js","webpack:///./node_modules/core-js/internals/array-method-has-species-support.js","webpack:///./node_modules/core-js/internals/set-to-string-tag.js","webpack:///./node_modules/core-js/internals/array-iteration.js","webpack:///./node_modules/core-js/internals/object-create.js","webpack:///./node_modules/core-js/internals/object-keys.js","webpack:///./node_modules/core-js/internals/is-array.js","webpack:///./node_modules/core-js/internals/hidden-keys.js","webpack:///./node_modules/core-js/internals/shared-key.js","webpack:///./node_modules/core-js/internals/is-forced.js","webpack:///./node_modules/core-js/internals/regexp-exec.js","webpack:///./node_modules/core-js/modules/es.parse-float.js","webpack:///./node_modules/core-js/modules/es.array.iterator.js","webpack:///./node_modules/core-js/internals/create-property.js","webpack:///./node_modules/core-js/internals/function-bind-context.js","webpack:///./node_modules/core-js/modules/es.array.filter.js","webpack:///./node_modules/jquery-validation/dist/jquery.validate.js","webpack:///./node_modules/core-js/internals/to-absolute-index.js","webpack:///./node_modules/core-js/modules/es.parse-int.js","webpack:///./node_modules/core-js/internals/array-species-create.js","webpack:///./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack:///./node_modules/core-js/internals/regexp-exec-abstract.js","webpack:///./node_modules/core-js/modules/es.object.assign.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/core-js/internals/shared.js","webpack:///./node_modules/core-js/internals/set-global.js","webpack:///./node_modules/core-js/internals/document-create-element.js","webpack:///./node_modules/core-js/internals/uid.js","webpack:///./node_modules/core-js/internals/native-symbol.js","webpack:///./node_modules/core-js/internals/enum-bug-keys.js","webpack:///./node_modules/core-js/internals/inspect-source.js","webpack:///./node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///./node_modules/core-js/internals/to-string-tag-support.js","webpack:///./node_modules/core-js/internals/engine-v8-version.js","webpack:///./node_modules/core-js/internals/regexp-flags.js","webpack:///./node_modules/core-js/modules/es.array.join.js","webpack:///./node_modules/core-js/modules/es.array.splice.js","webpack:///./node_modules/jquery-validation-unobtrusive/dist/jquery.validate.unobtrusive.js","webpack:///./node_modules/core-js/internals/add-to-unscopables.js","webpack:///./node_modules/core-js/internals/array-includes.js","webpack:///./node_modules/core-js/internals/classof.js","webpack:///./node_modules/core-js/internals/advance-string-index.js","webpack:///./node_modules/core-js/internals/is-regexp.js","webpack:///./node_modules/core-js/internals/define-well-known-symbol.js","webpack:///./node_modules/core-js/internals/shared-store.js","webpack:///./node_modules/core-js/internals/ie8-dom-define.js","webpack:///./node_modules/core-js/internals/use-symbol-as-uid.js","webpack:///./node_modules/core-js/internals/object-keys-internal.js","webpack:///./node_modules/core-js/internals/html.js","webpack:///./node_modules/core-js/internals/path.js","webpack:///./node_modules/core-js/internals/copy-constructor-properties.js","webpack:///./node_modules/core-js/internals/iterators-core.js","webpack:///./node_modules/core-js/internals/object-get-prototype-of.js","webpack:///./node_modules/core-js/internals/object-set-prototype-of.js","webpack:///./node_modules/core-js/internals/set-species.js","webpack:///./node_modules/core-js/internals/species-constructor.js","webpack:///./node_modules/core-js/internals/task.js","webpack:///./node_modules/core-js/internals/engine-is-ios.js","webpack:///./node_modules/core-js/internals/engine-user-agent.js","webpack:///./node_modules/core-js/internals/new-promise-capability.js","webpack:///./node_modules/core-js/internals/regexp-sticky-helpers.js","webpack:///./node_modules/element-query/elementQuery.js","webpack:///./node_modules/@fancyapps/fancybox/dist/jquery.fancybox.js","webpack:///./node_modules/svg4everybody/dist/svg4everybody.js","webpack:///./node_modules/core-js/modules/es.regexp.constructor.js","webpack:///./node_modules/core-js/internals/inherit-if-required.js","webpack:///./node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack:///./node_modules/@glidejs/glide/dist/glide.modular.esm.js","webpack:///./node_modules/core-js/modules/es.string.trim.js","webpack:///./node_modules/core-js/internals/string-trim-forced.js","webpack:///./node_modules/core-js/internals/get-iterator-method.js","webpack:///./node_modules/core-js/internals/string-multibyte.js","webpack:///./node_modules/core-js/internals/define-iterator.js","webpack:///./node_modules/core-js/internals/is-array-iterator-method.js","webpack:///./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack:///./node_modules/core-js/modules/es.object.keys.js","webpack:///./node_modules/core-js/internals/an-instance.js","webpack:///./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack:///./node_modules/core-js/internals/dom-iterables.js","webpack:///./node_modules/core-js/internals/number-parse-float.js","webpack:///./node_modules/core-js/modules/es.array.sort.js","webpack:///./node_modules/@google/markerclusterer/dist/markerclusterer.umd.js","webpack:///./node_modules/core-js/modules/es.array.slice.js","webpack:///./node_modules/core-js/modules/es.string.anchor.js","webpack:///./node_modules/core-js/internals/create-html.js","webpack:///./node_modules/core-js/internals/string-html-forced.js","webpack:///./node_modules/core-js/internals/object-define-properties.js","webpack:///./node_modules/core-js/internals/create-iterator-constructor.js","webpack:///./node_modules/core-js/internals/redefine-all.js","webpack:///./node_modules/core-js/internals/object-assign.js","webpack:///./node_modules/core-js/internals/native-weak-map.js","webpack:///./node_modules/core-js/internals/own-keys.js","webpack:///./node_modules/core-js/internals/correct-prototype-getter.js","webpack:///./node_modules/core-js/internals/a-possible-prototype.js","webpack:///./node_modules/core-js/internals/object-to-string.js","webpack:///./node_modules/core-js/internals/native-promise-constructor.js","webpack:///./node_modules/core-js/internals/iterate.js","webpack:///./node_modules/core-js/internals/microtask.js","webpack:///./node_modules/core-js/internals/promise-resolve.js","webpack:///./node_modules/core-js/internals/host-report-errors.js","webpack:///./node_modules/core-js/internals/perform.js","webpack:///./node_modules/core-js/internals/number-parse-int.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names-external.js","webpack:///./node_modules/core-js/internals/date-to-primitive.js","webpack:///./node_modules/core-js/internals/array-for-each.js","webpack:///./node_modules/core-js/modules/es.string.search.js","webpack:///./node_modules/core-js/internals/same-value.js"],"names":["global","factory","module","exports","document","w","Error","window","this","noGlobal","arr","getProto","Object","getPrototypeOf","slice","concat","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","fnToString","ObjectFunctionString","call","support","isFunction","obj","nodeType","isWindow","preservedScriptAttributes","type","src","nonce","noModule","DOMEval","code","node","doc","i","val","script","createElement","text","getAttribute","setAttribute","head","appendChild","parentNode","removeChild","toType","jQuery","selector","context","fn","init","rtrim","isArrayLike","length","prototype","jquery","constructor","toArray","get","num","pushStack","elems","ret","merge","prevObject","each","callback","map","elem","apply","arguments","first","eq","last","len","j","end","sort","splice","extend","options","name","copy","copyIsArray","clone","target","deep","isPlainObject","Array","isArray","undefined","expando","Math","random","replace","isReady","error","msg","noop","proto","Ctor","isEmptyObject","globalEval","trim","makeArray","results","inArray","second","grep","invert","matches","callbackExpect","arg","value","guid","Symbol","iterator","split","toLowerCase","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","Date","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","a","b","pop","push_native","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","inDisabledFieldset","addCombinator","disabled","nodeName","dir","next","childNodes","e","els","seed","m","nid","match","groups","newSelector","newContext","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","toSelector","join","testContext","querySelectorAll","qsaError","removeAttribute","keys","cache","key","cacheLength","shift","markFunction","assert","el","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","documentElement","hasCompare","subWindow","defaultView","top","addEventListener","attachEvent","className","createComment","getById","getElementsByName","filter","attrId","find","getAttributeNode","tag","tmp","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","specified","escape","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","start","parent","useCache","lastChild","uniqueID","pseudo","args","setFilters","idx","matched","matcher","unmatched","lang","elemLang","hash","location","activeElement","hasFocus","href","tabIndex","checked","selected","selectedIndex","radio","checkbox","file","password","image","submit","reset","tokens","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","token","compiled","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","is","siblings","n","rneedsContext","needsContext","rsingleTag","winnow","qualifier","not","self","rootjQuery","root","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","prev","sibling","has","targets","l","closest","index","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","Identity","v","Thrower","ex","adoptValue","resolve","reject","noValue","method","promise","fail","then","Callbacks","object","flag","createOptions","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","remove","empty","disable","lock","fireWith","Deferred","func","tuples","state","always","deferred","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","setTimeout","stateString","when","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","stack","console","warn","message","readyException","readyList","completed","removeEventListener","catch","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","camelCase","string","acceptData","owner","Data","uid","defineProperty","configurable","set","data","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","JSON","parse","getData","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","style","display","css","swap","old","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","body","showHide","show","values","hide","toggle","rcheckableType","rtagName","rscriptType","wrapMap","option","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","optgroup","tbody","tfoot","colgroup","caption","th","div","buildFragment","scripts","selection","ignored","wrap","attached","fragment","createDocumentFragment","nodes","htmlPrefilter","createTextNode","checkClone","cloneNode","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","expectSync","err","safeActiveElement","on","types","one","origFn","event","off","leverageNative","notAsync","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","preventDefault","trigger","Event","handleObjIn","eventHandle","events","t","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","button","addProp","hook","enumerable","originalEvent","writable","load","noBubble","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","now","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","focus","blur","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rxhtmlTag","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","getStyles","opener","getComputedStyle","rboxStyle","curCSS","computed","width","minWidth","maxWidth","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","position","scrollboxSizeVal","offsetWidth","measure","round","parseFloat","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","max","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","opacity","origName","isCustomProp","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","left","margin","padding","border","prefix","suffix","expand","expanded","parts","propHooks","run","percent","eased","duration","pos","step","fx","scrollTop","scrollLeft","linear","p","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","height","createTween","animation","Animation","tweeners","properties","stopped","prefilters","currentTime","startTime","tweens","opts","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","bind","complete","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","time","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","bool","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","parseInt","addClass","classes","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","isValidValue","classNames","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","s","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","json","responseFields","converters","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","responses","isSuccess","response","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","offsetHeight","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","params","animated","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","hover","fnOver","fnOut","unbind","delegate","undelegate","proxy","holdReady","hold","parseJSON","isNumeric","isNaN","_jQuery","_$","$","noConflict","it","globalThis","Function","shared","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","getOwnPropertyDescriptor","f","createNonEnumerableProperty","redefine","setGlobal","copyConstructorProperties","isForced","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","STATIC","stat","noTargetGet","forced","sham","isObject","$find","addToUnscopables","arrayMethodUsesToLength","SKIPS_HOLES","USES_TO_LENGTH","callbackfn","$indexOf","arrayMethodIsStrict","nativeIndexOf","NEGATIVE_ZERO","STRICT_METHOD","ACCESSORS","1","searchElement","fails","DESCRIPTORS","IE8_DOM_DEFINE","anObject","toPrimitive","nativeDefineProperty","O","P","Attributes","TO_STRING_TAG_SUPPORT","unsafe","definePropertyModule","createPropertyDescriptor","inspectSource","InternalStateModule","getInternalState","enforceInternalState","enforce","TEMPLATE","requireObjectCoercible","toInteger","min","IndexedObject","thrower","METHOD_NAME","argument0","argument1","fixRegExpWellKnownSymbolLogic","toObject","toLength","advanceStringIndex","regExpExec","floor","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","REPLACE","nativeReplace","maybeCallNative","reason","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","REPLACE_KEEPS_$0","UNSAFE_SUBSTITUTE","searchValue","replaceValue","replacer","regexp","res","rx","S","functionalReplace","fullUnicode","unicode","lastIndex","accumulatedResult","nextSourcePosition","captures","namedCaptures","replacerArgs","replacement","getSubstitution","str","tailPos","symbols","capture","charAt","path","aFunction","variable","PREFERRED_STRING","valueOf","createProperty","arraySpeciesCreate","arrayMethodHasSpeciesSupport","wellKnownSymbol","V8_VERSION","IS_CONCAT_SPREADABLE","IS_CONCAT_SPREADABLE_SUPPORT","array","SPECIES_SUPPORT","isConcatSpreadable","spreadable","k","E","A","getBuiltIn","IS_PURE","toIndexedObject","nativeObjectCreate","objectKeys","getOwnPropertyNamesModule","getOwnPropertyNamesExternal","getOwnPropertySymbolsModule","getOwnPropertyDescriptorModule","propertyIsEnumerableModule","sharedKey","hiddenKeys","wrappedWellKnownSymbolModule","defineWellKnownSymbol","setToStringTag","$forEach","forEach","HIDDEN","TO_PRIMITIVE","setInternalState","getterFor","ObjectPrototype","$Symbol","$stringify","nativeGetOwnPropertyDescriptor","nativeGetOwnPropertyNames","nativePropertyIsEnumerable","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","QObject","USE_SETTER","findChild","setSymbolDescriptor","ObjectPrototypeDescriptor","description","symbol","isSymbol","$defineProperty","$defineProperties","Properties","$getOwnPropertySymbols","$propertyIsEnumerable","V","$getOwnPropertyDescriptor","$getOwnPropertyNames","names","IS_OBJECT_PROTOTYPE","keyFor","sym","useSetter","useSimple","create","defineProperties","getOwnPropertyNames","getOwnPropertySymbols","stringify","space","$replacer","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","symbolPrototype","symbolToString","native","desc","dateToPrimitive","DatePrototype","classof","inheritIfRequired","NativeNumber","NumberPrototype","BROKEN_CLASSOF","toNumber","third","radix","maxCode","digits","NaN","NumberWrapper","dummy","NATIVE_WEAK_MAP","objectHas","WeakMap","store","wmget","wmhas","wmset","metadata","STATE","TYPE","isRegExp","speciesConstructor","callRegExpExec","regexpExec","arrayPush","SUPPORTS_Y","SPLIT","nativeSplit","internalSplit","separator","limit","lim","lastLength","output","flags","ignoreCase","multiline","sticky","lastLastIndex","separatorCopy","splitter","C","unicodeMatching","q","z","bitmap","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","NativePromise","redefineAll","setSpecies","anInstance","iterate","checkCorrectnessOfIteration","task","microtask","promiseResolve","hostReportErrors","newPromiseCapabilityModule","perform","SPECIES","PROMISE","getInternalPromiseState","PromiseConstructor","$fetch","newPromiseCapability","newGenericPromiseCapability","IS_NODE","DISPATCH_EVENT","createEvent","dispatchEvent","FORCED","PromiseRejectionEvent","FakePromise","INCORRECT_ITERATION","iterable","isThenable","isReject","notified","chain","reactions","ok","exited","reaction","domain","rejection","onHandleUnhandled","enter","exit","onUnhandled","initEvent","isUnhandled","emit","internalReject","internalResolve","wrapper","executor","fetch","Promise","r","capability","x","$promiseResolve","counter","alreadyCalled","race","RegExpPrototype","nativeToString","NOT_GENERIC","INCORRECT_NAME","R","rf","internalObjectKeys","DOMIterables","COLLECTION_NAME","Collection","CollectionPrototype","ltrim","createMethod","$this","propertyIsEnumerable","foo","Boolean","TO_STRING_TAG","TAG","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","specificCreate","boundFunction","some","every","findIndex","activeXDocument","enumBugKeys","documentCreateElement","IE_PROTO","EmptyConstructor","scriptTag","LT","NullProtoObject","ActiveXObject","iframeDocument","iframe","write","close","NullProtoObjectViaActiveX","contentWindow","F","feature","detection","normalize","POLYFILL","NATIVE","re1","re2","regexpFlags","stickyHelpers","nativeExec","patchedExec","UPDATES_LAST_INDEX_WRONG","UNSUPPORTED_Y","BROKEN_CARET","NPCG_INCLUDED","reCopy","re","charsAdded","strCopy","parseFloatImplementation","Iterators","defineIterator","iterated","kind","Arguments","propertyKey","c","$filter","HAS_SPECIES_SUPPORT","called","validate","validator","onsubmit","submitButton","cancelSubmit","submitHandler","formSubmitted","currentForm","debug","form","pendingRequest","focusInvalid","valid","errorList","element","rules","command","staticRules","existingRules","filtered","isContentEditable","normalizeRule","messages","normalizeRules","classRules","attributeRules","dataRules","required","remote","blank","filled","unchecked","defaults","format","errorClass","pendingClass","validClass","errorElement","focusCleanup","errorContainer","errorLabelContainer","ignore","ignoreTitle","onfocusin","lastActive","unhighlight","hideThese","errorsFor","onfocusout","checkable","submitted","optional","onkeyup","elementValue","invalid","onclick","highlight","findByName","setDefaults","email","date","dateISO","number","equalTo","maxlength","minlength","rangelength","range","autoCreateRanges","labelContainer","errorContext","containers","valueCache","pending","eventType","invalidHandler","checkForm","errorMap","showErrors","prepareForm","currentElements","rs","group","cleanElement","clean","checkElement","validationTargetFor","prepareElement","testgroup","numberOfInvalids","toHide","errors","successList","defaultShowErrors","resetForm","hideErrors","resetElements","objectLength","addWrapper","size","findLastActive","rulesCache","resetInternals","toShow","$element","validity","badInput","substr","lastIndexOf","rule","normalizer","rulesCount","dependencyMismatch","parameters","methods","formatAndAdd","log","customDataMessage","substring","customMessage","findDefined","defaultMessage","title","theregex","toToggle","showLabel","validElements","invalidElements","place","errorID","elementID","idOrName","describedBy","errorPlacement","escapeCssMeta","describer","getLength","depend","dependTypes","startRequest","stopRequest","previousValue","destroy","classRuleSettings","creditcard","addClassRules","normalizeAttributeRule","Number","depends","keepRule","parameter","transformed","addMethod","decimals","errorMessage","decimalPlaces","toInt","pow","optionDataString","previous","originalMessage","mode","port","pendingRequests","integer","parseIntImplementation","originalArray","REPLACE_SUPPORTS_NAMED_GROUPS","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","KEY","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","nativeMethod","arg2","forceStringMethod","stringMethod","regexMethod","assign","g","version","copyright","EXISTS","postfix","functionToString","NASHORN_BUG","userAgent","versions","v8","dotAll","nativeJoin","ES3_STRINGS","toAbsoluteIndex","deleteCount","insertCount","actualDeleteCount","from","actualStart","argumentsLength","adapters","$jQval","setValidationValues","ruleName","escapeAttributeValue","getModelPrefix","fieldName","appendModelPrefix","onError","inputElement","replaceAttrValue","onErrors","onSuccess","onReset","$form","validationInfo","onResetProxy","defaultOptions","unobtrusive","execInContext","attachValidation","parseElement","skipAttach","valInfo","paramValues","adapt","$selector","$forms","info","adapterName","addBool","addMinMax","minRuleName","maxRuleName","minMaxRuleName","minAttribute","maxAttribute","addSingleVal","attribute","nonalphamin","extension","fullOtherName","other","tagName","splitAndTrim","additionalfields","paramName","field","regex","extensions","UNSCOPABLES","ArrayPrototype","IS_INCLUDES","fromIndex","includes","classofRaw","CORRECT_ARGUMENTS","tryGet","callee","MATCH","NAME","ownKeys","IteratorPrototype","PrototypeOfArrayIteratorPrototype","arrayIterator","ITERATOR","BUGGY_SAFARI_ITERATORS","CORRECT_PROTOTYPE_GETTER","aPossiblePrototype","setPrototypeOf","CORRECT_SETTER","__proto__","CONSTRUCTOR_NAME","Constructor","defaultConstructor","channel","IS_IOS","setImmediate","clear","clearImmediate","MessageChannel","Dispatch","runner","listener","post","postMessage","nextTick","port2","port1","onmessage","importScripts","PromiseCapability","$$resolve","$$reject","RE","sizzle","queryData","cssRules","addQueryDataValue","pair","processSelector","selectorText","prevIndex","tail","processStyleSheet","styleSheet","force","styleSheets","ownerNode","owningElement","core_trim","addTo","removeFrom","updated","refresh","ei","getEmPixels","elementQuery","arg1","doUpdate","updateQueryData","extraBody","testElement","clientWidth","stuff","fancybox","$pressed","closeExisting","loop","gutter","keyboard","preventCaptionOverlap","arrows","infobar","smallBtn","toolbar","idleTime","protect","modal","preload","tpl","scrolling","video","autoStart","defaultType","animationEffect","animationDuration","zoomOpacity","transitionEffect","transitionDuration","slideClass","baseClass","baseTpl","spinnerTpl","errorTpl","btnTpl","download","zoom","arrowLeft","arrowRight","parentEl","hideScrollbar","autoFocus","backFocus","trapFocus","fullScreen","touch","vertical","momentum","media","slideShow","thumbs","hideOnClose","axis","wheel","onInit","beforeLoad","afterLoad","beforeShow","afterShow","beforeClose","afterClose","onActivate","onDeactivate","clickContent","clickSlide","clickOutside","dblclickContent","dblclickSlide","dblclickOutside","mobile","i18n","en","CLOSE","NEXT","PREV","ERROR","PLAY_START","PLAY_STOP","FULL_SCREEN","THUMBS","DOWNLOAD","SHARE","ZOOM","de","$W","$D","requestAFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","cancelAFrame","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","oCancelAnimationFrame","transitionEnd","transitions","transition","OTransition","MozTransition","WebkitTransition","forceRedraw","$el","mergeOpts","opts1","opts2","rez","FancyBox","isMobile","currIndex","prevPos","currPos","firstRun","slides","addContent","$container","buttonStr","firstItemOpts","getInstance","scrollHeight","innerHeight","innerWidth","translate","$refs","item","activate","jumpTo","items","$item","found","srcParts","$orig","$thumb","$trigger","thumb","updateControls","Thumbs","isActive","addEvents","removeEvents","isScaledDown","requestId","update","stage","keycode","idleSecondsCounter","isIdle","showControls","idleInterval","setInterval","isDragging","hideControls","clearInterval","isMoved","slidePos","stagePos","groupLen","isClosing","isAnimating","createSlide","forcedDuration","$slide","loadSlide","getTranslate","slide","isComplete","leftPos","setTranslate","transform","isLoaded","revealContent","updateSlide","scaleToActual","y","imgPos","posX","posY","scaleX","scaleY","$content","canvasWidth","canvasHeight","newImgWidth","newImgHeight","hasError","updateCursor","SlideShow","scaleToFit","getFitPos","maxHeight","minRatio","aspectRatio","ratio","adjustCaption","adjustLayout","navigation","clientHeight","centerSlide","abs","nextWidth","nextHeight","canPan","isZoomable","Guestures","fitPos","ajaxLoad","isLoading","setImage","setIframe","setContent","videoFormat","setError","showLoading","textStatus","ghost","$img","$image","checkSrcset","$ghost","setBigImage","pxRatio","windowWidth","srcset","devicePixelRatio","img","sizes","resolveImageSlideSize","naturalWidth","naturalHeight","hideLoading","imgWidth","imgHeight","$iframe","getTime","$body","frameWidth","frameHeight","outerWidth","outerHeight","isRevealed","$placeholder","$smallBtn","$spinner","$clone","preventOverlap","$caption","captionH","marginBottom","inlinePadding","actualPadding","disableLayoutFix","effect","effectClassName","getThumbPos","thumbPos","btw","brw","bbw","blw","elemCenter","elementFromPoint","inViewport","Document","exitFullscreen","webkitExitFullscreen","focusableItems","focusedItemIndex","focusableStr","instance","isVisible","d","domRect","cleanUp","$focus","scrollX","scrollY","hasHiddenControls","andCaption","toggleControls","navigator","use3d","documentMode","leaveAnimationName","propertyName","callCallback","_run","$target","youtube","autoplay","autohide","fs","rel","hd","wmode","enablejsapi","html5","paramPlace","vimeo","show_title","show_byline","show_portrait","fullscreen","instagram","gmap_place","gmap_search","urlParams","paramObj","provider","providerName","providerOpts","decodeURIComponent","p1","origSrc","contentSource","VideoAPILoader","class","loading","loaded","vendor","_this","onYouTubeIframeAPIReady","YT","Player","onStateChange","Vimeo","getPointerXY","distance","point2","point1","sqrt","isClickable","atts","isScrollable","horizontal","scrollWidth","$bg","bg","$stage","tapped","ontouchstart","isTouchDevice","realPoints","startPoints","startEvent","canTap","isPanning","isSwiping","isZooming","isScrolling","distanceX","distanceY","contentLastPos","contentStartPos","sliderStartPos","onscroll","centerPointStartX","centerPointStartY","percentageOfImageAtPinchPointX","percentageOfImageAtPinchPointY","startDistanceBetweenFingers","ontouchmove","newPoints","onSwipe","onPan","onZoom","ontouchend","angle","swiping","sliderLastPos","atan2","limitMovement","minTranslateX","minTranslateY","maxTranslateX","maxTranslateY","newOffsetX","newOffsetY","currentOffsetX","currentOffsetY","currentWidth","currentHeight","limitPosition","newWidth","newHeight","pinchRatio","translateFromZoomingX","translateFromZoomingY","centerPointEndX","centerPointEndY","translateFromTranslatingX","newPos","panning","zooming","endPoints","dMs","onTap","velocityX","velocityY","endPanning","endZooming","endSwiping","canAdvance","where","tapX","tapY","action","$button","$progress","inner","keypress","fnMap","FullScreen","request","requestFullscreen","ALLOW_KEYBOARD_INPUT","isFullscreen","fullscreenElement","enabled","fullscreenEnabled","fullscreenchange","CLASS","FancyThumbs","$grid","$list","share","currentHash","entityMap","shareInstance","shareCurrent","parseUrl","gallery","triggerFromUrl","getGalleryID","origHash","hashTimer","history","pathname","search","hasCreatedHistory","back","replaceState","fb","prevTime","currTime","deltaY","deltaX","wheelDelta","svg4everybody","embed","svg","viewBox","hasAttribute","loadreadystatechange","cachedDocument","_cachedDocument","_cachedTarget","_embeds","getSVGAncestor","rawopts","polyfill","inIframe","requests","uses","numberOfSvgUseElementsToBypass","oninterval","use","attributeName","srcSplit","getFlags","NativeRegExp","CORRECT_NEW","RegExpWrapper","thisIsRegExp","patternIsRegExp","flagsAreUndefined","Wrapper","NewTarget","NewTargetPrototype","startAt","perView","focusAt","gap","hoverpause","bound","swipeThreshold","dragThreshold","perTouch","touchRatio","touchAngle","rewind","rewindDuration","animationTimingFunc","throttle","direction","peek","breakpoints","ltr","rtl","slider","carousel","swipeable","dragging","cloneSlide","activeNav","activeSlide","disabledArrow","_typeof","classCallCheck","createClass","protoProps","staticProps","_extends","property","receiver","possibleConstructorReturn","ReferenceError","isString","isUndefined","mount","glide","components","_name","define","definition","mergeOptions","EventsBus","hop","Glide","_c","_t","_e","transformers","Run","make","Transition","Move","_o","o","_i","_d","later","leading","throttled","at","trailing","cancel","MARGIN_TYPE","exist","HTMLElement","EventsBinder","listeners","closure","VALID_DIRECTIONS","FLIPED_MOVEMENTS","Rtl","Components","modify","Direction","Gap","Gaps","Grow","Clones","grow","Peeking","Peek","Focusing","Sizes","slideWidth","supportsPassive","supportsPassive$1","START_EVENTS","MOVE_EVENTS","END_EVENTS","MOUSE_EVENTS","swipe","Events","Binder","swipeSin","swipeStartX","swipeStartY","passive","Swipe","bindSwipeStart","bindSwipeMove","bindSwipeEnd","move","_Glide$settings","subExSx","subEySy","powEX","powEY","swipeHypotenuse","swipeCathetus","asin","Html","classList","threshold","swipeDistance","swipeDeg","steps","enable","unbindSwipeMove","unbindSwipeEnd","unbindSwipeStart","_this2","_this3","images","Images","dragstart","anchors","detached","prevented","Anchors","_a","draggable","attach","controls","Controls","_n","addBindings","setActive","removeActive","removeBindings","Keyboard","press","Autoplay","sortBreakpoints","points","reduce","Breakpoints","matchMedia","point","COMPONENTS","track","querySelector","_r","Translate","TRANSFORMERS","mutate","transformer","mutator","isType","isOffset","movement","compose","_v","setupSlides","setupWrapper","dimention","wrapperSize","reductor","marginRight","collect","peekIncrementer","part","_clone","_Components$Html","half","_i2","_i3","Resize","Build","typeClass","activeClass","removeClasses","calculate","isStart","isEnd","countableSteps","_m","Glide$1","_Core","Glide$$1","subClass","superClass","inherits","$trim","forcedStringTrimMethod","whitespaces","CONVERT_TO_STRING","codeAt","createIteratorConstructor","IteratorsCore","returnThis","Iterable","IteratorConstructor","DEFAULT","IS_SET","CurrentIteratorPrototype","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","entries","ENTRIES","returnMethod","nativeKeys","SAFE_CLOSING","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","$parseFloat","Infinity","trimmedString","nativeSort","FAILS_ON_UNDEFINED","FAILS_ON_NULL","comparefn","google","maps","OverlayView","map_","MARKER_CLUSTER_IMAGE_PATH_","MARKER_CLUSTER_IMAGE_EXTENSION_","markers_","clusters_","styles_","ready_","zIndex_","zIndex","Marker","MAX_ZINDEX","gridSize_","gridSize","minClusterSize_","minimumClusterSize","maxZoom_","maxZoom","imagePath_","imagePath","imageExtension_","imageExtension","zoomOnClick_","zoomOnClick","averageCenter_","averageCenter","setupStyles_","setMap","prevZoom_","getZoom","addListener","minZoom","mapTypes","getMapTypeId","resetViewport","redraw","addMarkers","setReady_","getMarkers","LatLngBounds","getPosition","fitBounds","calculator_","pushMarkerTo_","isAdded","repaint","removeMarker_","createClusters_","getProjection","LatLng","getNorthEast","lat","lng","getSouthWest","fromLatLngToDivPixel","fromDivPixelToLatLng","sin","getCenter","distanceBetweenPoints_","isMarkerInClusterBounds","addMarker","h","getBounds","getExtendedBounds","isMarkerInBounds_","addToClosestCluster_","markerClusterer_","getMap","getGridSize","getMinClusterSize","isAverageCenter","center_","bounds_","clusterIcon_","isMarkerAlreadyAdded","calculateBounds_","updateIcon","getMaxZoom","getCalculator","setCenter","setSums","getMarkerClusterer","padding_","cluster_","div_","sums_","visible_","isZoomOnClick","getPosFromLatLng_","createCss","getPanes","overlayMouseTarget","addDomListener","triggerClusterClick","width_","height_","text_","index_","useStyle","url_","textColor_","textColor","anchor_","anchor","textSize_","textSize","backgroundPosition_","backgroundPosition","getZIndex","nativeSlice","fin","createHTML","forcedStringHTMLMethod","quot","nativeAssign","B","chr","T","isArrayIteratorMethod","getIteratorMethod","callWithSafeIterationClosing","Result","AS_ENTRIES","IS_ITERATOR","iterFn","flush","macrotask","MutationObserver","WebKitMutationObserver","queueMicrotaskDescriptor","queueMicrotask","observe","characterData","promiseCapability","$parseInt","hex","windowNames","getWindowNames","hint","sameValue","SEARCH","nativeSearch","searcher","previousLastIndex"],"mappings":"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","file":"Flugger.vendor.bundle.js","sourcesContent":["/*!\n * jQuery JavaScript Library v3.4.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2019-05-01T21:04Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar document = window.document;\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n      // Support: Chrome <=57, Firefox <=52\n      // In some browsers, typeof returns \"function\" for HTML <object> elements\n      // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n      // We don't want to classify *any* DOM node as a function.\n      return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\n  };\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.4.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android <=4.0 only\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code, options ) {\n\t\tDOMEval( code, { nonce: options && options.nonce } );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android <=4.0 only\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.4\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2019-04-08\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t(nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\") ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 && rdescend.test( selector ) ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = \"#\" + nid + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement(\"fieldset\");\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem.namespaceURI,\n\t\tdocElem = (elem.ownerDocument || elem).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( preferredDoc !== document &&\n\t\t(subWindow = document.defaultView) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( el ) {\n\t\tel.appendChild( document.createComment(\"\") );\n\t\treturn !el.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[\"ID\"] =  function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( (elem = elems[i++]) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( el ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll(\":enabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll(\":disabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( el ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn (sel + \"\").replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t//   but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( (oldCache = uniqueCache[ key ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n *  selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n *  selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( el ) {\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement(\"fieldset\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( el ) {\n\treturn el.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n  return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n};\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( typeof elem.contentDocument !== \"undefined\" ) {\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t//  - Node\n\t//    - Node.ELEMENT_NODE\n\t//    - Node.DOCUMENT_NODE\n\t//  - Object\n\t//    - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t//   1. No key was specified\n\t\t//   2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t//   1. The entire cache object\n\t\t//   2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t//   1. An object of properties\n\t\t//   2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\nvar swap = function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE <=9 only\n\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\n// Support: IE <=9 only\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tvar event = jQuery.event.fix( nativeEvent );\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\treturn result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t/* eslint-disable max-len */\n\n\t// See https://github.com/eslint/eslint/issues/3229\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n\n\t/* eslint-enable */\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase()  !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1></$2>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t//   .css('filter') (IE 9 only, #12537)\n\t//   .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t// This happens for inline elements with no explicit setting (gh-3571)\n\t// Support: Android <=4.1 - 4.3 only\n\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t// Support: IE 9-11 only\n\t// Also use offsetWidth/offsetHeight for when box sizing is unreliable\n\t// We use getClientRects() to check for hidden/disconnected.\n\t// In those cases, the computed value can be trusted to be border-box\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\t\tval === \"auto\" ||\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || {} )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = Date.now();\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\toriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce++ ) + uncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\n\njQuery._evalUrl = function( url, options ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\"  ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t//    documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name },\n\t\tfunction( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( ( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n} );\n\njQuery.fn.extend( {\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t}\n} );\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( !noGlobal ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n","var check = function (it) {\n  return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line no-undef\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  // eslint-disable-next-line no-new-func\n  Function('return this')();\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!has(WellKnownSymbolsStore, name)) {\n    if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];\n    else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n  } return WellKnownSymbolsStore[name];\n};\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n  options.target      - name of the target object\n  options.global      - target is the global object\n  options.stat        - export as static methods of target\n  options.proto       - export as prototype methods of target\n  options.real        - real prototype method for the `pure` version\n  options.forced      - export even if the native feature is available\n  options.bind        - bind methods to the target, required for the `pure` version\n  options.wrap        - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe      - use the simple assignment of property instead of delete + defineProperty\n  options.sham        - add a flag to not completely full polyfills\n  options.enumerable  - export as enumerable property\n  options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n  if (GLOBAL) {\n    target = global;\n  } else if (STATIC) {\n    target = global[TARGET] || setGlobal(TARGET, {});\n  } else {\n    target = (global[TARGET] || {}).prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.noTargetGet) {\n      descriptor = getOwnPropertyDescriptor(target, key);\n      targetProperty = descriptor && descriptor.value;\n    } else targetProperty = target[key];\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contained in target\n    if (!FORCED && targetProperty !== undefined) {\n      if (typeof sourceProperty === typeof targetProperty) continue;\n      copyConstructorProperties(sourceProperty, targetProperty);\n    }\n    // add a flag to not completely full polyfills\n    if (options.sham || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\n    }\n    // extend global\n    redefine(target, key, sourceProperty, options);\n  }\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n  if (!isObject(it)) {\n    throw TypeError(String(it) + ' is not an object');\n  } return it;\n};\n","module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength(FIND);\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH }, {\n  find: function find(callbackfn /* , that = undefined */) {\n    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","'use strict';\nvar $ = require('../internals/export');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\n// `Array.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH }, {\n  indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n    return NEGATIVE_ZERO\n      // convert -0 to +0\n      ? nativeIndexOf.apply(this, arguments) || 0\n      : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","var fails = require('../internals/fails');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return nativeDefineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n  exec: exec\n});\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n  redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n  var unsafe = options ? !!options.unsafe : false;\n  var simple = options ? !!options.enumerable : false;\n  var noTargetGet = options ? !!options.noTargetGet : false;\n  if (typeof value == 'function') {\n    if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);\n    enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n  }\n  if (O === global) {\n    if (simple) O[key] = value;\n    else setGlobal(key, value);\n    return;\n  } else if (!unsafe) {\n    delete O[key];\n  } else if (!noTargetGet && O[key]) {\n    simple = true;\n  }\n  if (simple) O[key] = value;\n  else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n  return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return Object(requireObjectCoercible(argument));\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n  return it;\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\n\nvar defineProperty = Object.defineProperty;\nvar cache = {};\n\nvar thrower = function (it) { throw it; };\n\nmodule.exports = function (METHOD_NAME, options) {\n  if (has(cache, METHOD_NAME)) return cache[METHOD_NAME];\n  if (!options) options = {};\n  var method = [][METHOD_NAME];\n  var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false;\n  var argument0 = has(options, 0) ? options[0] : thrower;\n  var argument1 = has(options, 1) ? options[1] : undefined;\n\n  return cache[METHOD_NAME] = !!method && !fails(function () {\n    if (ACCESSORS && !DESCRIPTORS) return true;\n    var O = { length: -1 };\n\n    if (ACCESSORS) defineProperty(O, 1, { enumerable: true, get: thrower });\n    else O[1] = 1;\n\n    method.call(O, argument0, argument1);\n  });\n};\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n  return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n  var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n  var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n  var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n  return [\n    // `String.prototype.replace` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n    function replace(searchValue, replaceValue) {\n      var O = requireObjectCoercible(this);\n      var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n      return replacer !== undefined\n        ? replacer.call(searchValue, O, replaceValue)\n        : nativeReplace.call(String(O), searchValue, replaceValue);\n    },\n    // `RegExp.prototype[@@replace]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n    function (regexp, replaceValue) {\n      if (\n        (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n        (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n      ) {\n        var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n        if (res.done) return res.value;\n      }\n\n      var rx = anObject(regexp);\n      var S = String(this);\n\n      var functionalReplace = typeof replaceValue === 'function';\n      if (!functionalReplace) replaceValue = String(replaceValue);\n\n      var global = rx.global;\n      if (global) {\n        var fullUnicode = rx.unicode;\n        rx.lastIndex = 0;\n      }\n      var results = [];\n      while (true) {\n        var result = regExpExec(rx, S);\n        if (result === null) break;\n\n        results.push(result);\n        if (!global) break;\n\n        var matchStr = String(result[0]);\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n      }\n\n      var accumulatedResult = '';\n      var nextSourcePosition = 0;\n      for (var i = 0; i < results.length; i++) {\n        result = results[i];\n\n        var matched = String(result[0]);\n        var position = max(min(toInteger(result.index), S.length), 0);\n        var captures = [];\n        // NOTE: This is equivalent to\n        //   captures = result.slice(1).map(maybeToString)\n        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n        // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n        for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n        var namedCaptures = result.groups;\n        if (functionalReplace) {\n          var replacerArgs = [matched].concat(captures, position, S);\n          if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n          var replacement = String(replaceValue.apply(undefined, replacerArgs));\n        } else {\n          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n        }\n        if (position >= nextSourcePosition) {\n          accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n          nextSourcePosition = position + matched.length;\n        }\n      }\n      return accumulatedResult + S.slice(nextSourcePosition);\n    }\n  ];\n\n  // https://tc39.github.io/ecma262/#sec-getsubstitution\n  function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n    var tailPos = position + matched.length;\n    var m = captures.length;\n    var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n    if (namedCaptures !== undefined) {\n      namedCaptures = toObject(namedCaptures);\n      symbols = SUBSTITUTION_SYMBOLS;\n    }\n    return nativeReplace.call(replacement, symbols, function (match, ch) {\n      var capture;\n      switch (ch.charAt(0)) {\n        case '$': return '$';\n        case '&': return matched;\n        case '`': return str.slice(0, position);\n        case \"'\": return str.slice(tailPos);\n        case '<':\n          capture = namedCaptures[ch.slice(1, -1)];\n          break;\n        default: // \\d\\d?\n          var n = +ch;\n          if (n === 0) return match;\n          if (n > m) {\n            var f = floor(n / 10);\n            if (f === 0) return match;\n            if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n            return match;\n          }\n          capture = captures[n - 1];\n      }\n      return capture === undefined ? '' : capture;\n    });\n  }\n});\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n  return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n    : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n  if (!isObject(input)) return input;\n  var fn, val;\n  if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n  if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n  if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n  var array = [];\n  array[IS_CONCAT_SPREADABLE] = false;\n  return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n  if (!isObject(O)) return false;\n  var spreadable = O[IS_CONCAT_SPREADABLE];\n  return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  concat: function concat(arg) { // eslint-disable-line no-unused-vars\n    var O = toObject(this);\n    var A = arraySpeciesCreate(O, 0);\n    var n = 0;\n    var i, k, length, len, E;\n    for (i = -1, length = arguments.length; i < length; i++) {\n      E = i === -1 ? O : arguments[i];\n      if (isConcatSpreadable(E)) {\n        len = toLength(E.length);\n        if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n        for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n      } else {\n        if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n        createProperty(A, n++, E);\n      }\n    }\n    A.length = n;\n    return A;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n  return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n    get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n  })).a != 7;\n}) ? function (O, P, Attributes) {\n  var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n  if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n  nativeDefineProperty(O, P, Attributes);\n  if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n    nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n  }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n  var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n  setInternalState(symbol, {\n    type: SYMBOL,\n    tag: tag,\n    description: description\n  });\n  if (!DESCRIPTORS) symbol.description = description;\n  return symbol;\n};\n\nvar isSymbol = USE_SYMBOL_AS_UID ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n  if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n  anObject(O);\n  var key = toPrimitive(P, true);\n  anObject(Attributes);\n  if (has(AllSymbols, key)) {\n    if (!Attributes.enumerable) {\n      if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n      O[HIDDEN][key] = true;\n    } else {\n      if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n      Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n    } return setSymbolDescriptor(O, key, Attributes);\n  } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n  anObject(O);\n  var properties = toIndexedObject(Properties);\n  var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n  $forEach(keys, function (key) {\n    if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n  });\n  return O;\n};\n\nvar $create = function create(O, Properties) {\n  return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n  var P = toPrimitive(V, true);\n  var enumerable = nativePropertyIsEnumerable.call(this, P);\n  if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n  return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n  var it = toIndexedObject(O);\n  var key = toPrimitive(P, true);\n  if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n  var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n  if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n    descriptor.enumerable = true;\n  }\n  return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n  var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n  });\n  return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n  var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n  var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n      result.push(AllSymbols[key]);\n    }\n  });\n  return result;\n};\n\n// `Symbol` constructor\n// https://tc39.github.io/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n  $Symbol = function Symbol() {\n    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n    var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n    var tag = uid(description);\n    var setter = function (value) {\n      if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n      setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n    };\n    if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n    return wrap(tag, description);\n  };\n\n  redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n    return getInternalState(this).tag;\n  });\n\n  redefine($Symbol, 'withoutSetter', function (description) {\n    return wrap(uid(description), description);\n  });\n\n  propertyIsEnumerableModule.f = $propertyIsEnumerable;\n  definePropertyModule.f = $defineProperty;\n  getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n  getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n  getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n  wrappedWellKnownSymbolModule.f = function (name) {\n    return wrap(wellKnownSymbol(name), name);\n  };\n\n  if (DESCRIPTORS) {\n    // https://github.com/tc39/proposal-Symbol-description\n    nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n      configurable: true,\n      get: function description() {\n        return getInternalState(this).description;\n      }\n    });\n    if (!IS_PURE) {\n      redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n    }\n  }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n  Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n  defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n  // `Symbol.for` method\n  // https://tc39.github.io/ecma262/#sec-symbol.for\n  'for': function (key) {\n    var string = String(key);\n    if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n    var symbol = $Symbol(string);\n    StringToSymbolRegistry[string] = symbol;\n    SymbolToStringRegistry[symbol] = string;\n    return symbol;\n  },\n  // `Symbol.keyFor` method\n  // https://tc39.github.io/ecma262/#sec-symbol.keyfor\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n    if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n  },\n  useSetter: function () { USE_SETTER = true; },\n  useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n  // `Object.create` method\n  // https://tc39.github.io/ecma262/#sec-object.create\n  create: $create,\n  // `Object.defineProperty` method\n  // https://tc39.github.io/ecma262/#sec-object.defineproperty\n  defineProperty: $defineProperty,\n  // `Object.defineProperties` method\n  // https://tc39.github.io/ecma262/#sec-object.defineproperties\n  defineProperties: $defineProperties,\n  // `Object.getOwnPropertyDescriptor` method\n  // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n  getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n  // `Object.getOwnPropertyNames` method\n  // https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n  getOwnPropertyNames: $getOwnPropertyNames,\n  // `Object.getOwnPropertySymbols` method\n  // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols\n  getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n  getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n    return getOwnPropertySymbolsModule.f(toObject(it));\n  }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.github.io/ecma262/#sec-json.stringify\nif ($stringify) {\n  var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n    var symbol = $Symbol();\n    // MS Edge converts symbol values to JSON as {}\n    return $stringify([symbol]) != '[null]'\n      // WebKit converts symbol values to JSON as null\n      || $stringify({ a: symbol }) != '{}'\n      // V8 throws on boxed symbols\n      || $stringify(Object(symbol)) != '{}';\n  });\n\n  $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n    // eslint-disable-next-line no-unused-vars\n    stringify: function stringify(it, replacer, space) {\n      var args = [it];\n      var index = 1;\n      var $replacer;\n      while (arguments.length > index) args.push(arguments[index++]);\n      $replacer = replacer;\n      if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n      if (!isArray(replacer)) replacer = function (key, value) {\n        if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n        if (!isSymbol(value)) return value;\n      };\n      args[1] = replacer;\n      return $stringify.apply(null, args);\n    }\n  });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n  createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","// `Symbol.prototype.description` getter\n// https://tc39.github.io/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar has = require('../internals/has');\nvar isObject = require('../internals/is-object');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\n\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||\n  // Safari 12 bug\n  NativeSymbol().description !== undefined\n)) {\n  var EmptyStringDescriptionStore = {};\n  // wrap Symbol constructor for correct work with undefined description\n  var SymbolWrapper = function Symbol() {\n    var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n    var result = this instanceof SymbolWrapper\n      ? new NativeSymbol(description)\n      // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n      : description === undefined ? NativeSymbol() : NativeSymbol(description);\n    if (description === '') EmptyStringDescriptionStore[result] = true;\n    return result;\n  };\n  copyConstructorProperties(SymbolWrapper, NativeSymbol);\n  var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n  symbolPrototype.constructor = SymbolWrapper;\n\n  var symbolToString = symbolPrototype.toString;\n  var native = String(NativeSymbol('test')) == 'Symbol(test)';\n  var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n  defineProperty(symbolPrototype, 'description', {\n    configurable: true,\n    get: function description() {\n      var symbol = isObject(this) ? this.valueOf() : this;\n      var string = symbolToString.call(symbol);\n      if (has(EmptyStringDescriptionStore, symbol)) return '';\n      var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n      return desc === '' ? undefined : desc;\n    }\n  });\n\n  $({ global: true, forced: true }, {\n    Symbol: SymbolWrapper\n  });\n}\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.toPrimitive` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.toprimitive\ndefineWellKnownSymbol('toPrimitive');\n","var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar dateToPrimitive = require('../internals/date-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar DatePrototype = Date.prototype;\n\n// `Date.prototype[@@toPrimitive]` method\n// https://tc39.github.io/ecma262/#sec-date.prototype-@@toprimitive\nif (!(TO_PRIMITIVE in DatePrototype)) {\n  createNonEnumerableProperty(DatePrototype, TO_PRIMITIVE, dateToPrimitive);\n}\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof-raw');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;\n\n// `ToNumber` abstract operation\n// https://tc39.github.io/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n  var it = toPrimitive(argument, false);\n  var first, third, radix, maxCode, digits, length, index, code;\n  if (typeof it == 'string' && it.length > 2) {\n    it = trim(it);\n    first = it.charCodeAt(0);\n    if (first === 43 || first === 45) {\n      third = it.charCodeAt(2);\n      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n    } else if (first === 48) {\n      switch (it.charCodeAt(1)) {\n        case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n        case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n        default: return +it;\n      }\n      digits = it.slice(2);\n      length = digits.length;\n      for (index = 0; index < length; index++) {\n        code = digits.charCodeAt(index);\n        // parseInt parses a string to a first unavailable symbol\n        // but ToNumber should return NaN if a string contains unavailable symbols\n        if (code < 48 || code > maxCode) return NaN;\n      } return parseInt(digits, radix);\n    }\n  } return +it;\n};\n\n// `Number` constructor\n// https://tc39.github.io/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n  var NumberWrapper = function Number(value) {\n    var it = arguments.length < 1 ? 0 : value;\n    var dummy = this;\n    return dummy instanceof NumberWrapper\n      // check on 1..constructor(foo) case\n      && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)\n        ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n  };\n  for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n    // ES3:\n    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n    // ES2015 (in case, if modules with ES2015 Number statics required before):\n    'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n    'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n  ).split(','), j = 0, key; keys.length > j; j++) {\n    if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {\n      defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n    }\n  }\n  NumberWrapper.prototype = NumberPrototype;\n  NumberPrototype.constructor = NumberWrapper;\n  redefine(global, NUMBER, NumberWrapper);\n}\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP) {\n  var store = new WeakMap();\n  var wmget = store.get;\n  var wmhas = store.has;\n  var wmset = store.set;\n  set = function (it, metadata) {\n    wmset.call(store, it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return wmget.call(store, it) || {};\n  };\n  has = function (it) {\n    return wmhas.call(store, it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return objectHas(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return objectHas(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n","module.exports = function (it) {\n  if (typeof it != 'function') {\n    throw TypeError(String(it) + ' is not a function');\n  } return it;\n};\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\n\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n  var internalSplit;\n  if (\n    'abbc'.split(/(b)*/)[1] == 'c' ||\n    'test'.split(/(?:)/, -1).length != 4 ||\n    'ab'.split(/(?:ab)*/).length != 2 ||\n    '.'.split(/(.?)(.?)/).length != 4 ||\n    '.'.split(/()()/).length > 1 ||\n    ''.split(/.?/).length\n  ) {\n    // based on es5-shim implementation, need to rework it\n    internalSplit = function (separator, limit) {\n      var string = String(requireObjectCoercible(this));\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (separator === undefined) return [string];\n      // If `separator` is not a regex, use native split\n      if (!isRegExp(separator)) {\n        return nativeSplit.call(string, separator, lim);\n      }\n      var output = [];\n      var flags = (separator.ignoreCase ? 'i' : '') +\n                  (separator.multiline ? 'm' : '') +\n                  (separator.unicode ? 'u' : '') +\n                  (separator.sticky ? 'y' : '');\n      var lastLastIndex = 0;\n      // Make `global` and avoid `lastIndex` issues by working with a copy\n      var separatorCopy = new RegExp(separator.source, flags + 'g');\n      var match, lastIndex, lastLength;\n      while (match = regexpExec.call(separatorCopy, string)) {\n        lastIndex = separatorCopy.lastIndex;\n        if (lastIndex > lastLastIndex) {\n          output.push(string.slice(lastLastIndex, match.index));\n          if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n          lastLength = match[0].length;\n          lastLastIndex = lastIndex;\n          if (output.length >= lim) break;\n        }\n        if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n      }\n      if (lastLastIndex === string.length) {\n        if (lastLength || !separatorCopy.test('')) output.push('');\n      } else output.push(string.slice(lastLastIndex));\n      return output.length > lim ? output.slice(0, lim) : output;\n    };\n  // Chakra, V8\n  } else if ('0'.split(undefined, 0).length) {\n    internalSplit = function (separator, limit) {\n      return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n    };\n  } else internalSplit = nativeSplit;\n\n  return [\n    // `String.prototype.split` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.split\n    function split(separator, limit) {\n      var O = requireObjectCoercible(this);\n      var splitter = separator == undefined ? undefined : separator[SPLIT];\n      return splitter !== undefined\n        ? splitter.call(separator, O, limit)\n        : internalSplit.call(String(O), separator, limit);\n    },\n    // `RegExp.prototype[@@split]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n    //\n    // NOTE: This cannot be properly polyfilled in engines that don't support\n    // the 'y' flag.\n    function (regexp, limit) {\n      var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n      var C = speciesConstructor(rx, RegExp);\n\n      var unicodeMatching = rx.unicode;\n      var flags = (rx.ignoreCase ? 'i' : '') +\n                  (rx.multiline ? 'm' : '') +\n                  (rx.unicode ? 'u' : '') +\n                  (SUPPORTS_Y ? 'y' : 'g');\n\n      // ^(? + rx + ) is needed, in combination with some S slicing, to\n      // simulate the 'y' flag.\n      var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n      var p = 0;\n      var q = 0;\n      var A = [];\n      while (q < S.length) {\n        splitter.lastIndex = SUPPORTS_Y ? q : 0;\n        var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n        var e;\n        if (\n          z === null ||\n          (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n        ) {\n          q = advanceStringIndex(S, q, unicodeMatching);\n        } else {\n          A.push(S.slice(p, q));\n          if (A.length === lim) return A;\n          for (var i = 1; i <= z.length - 1; i++) {\n            A.push(z[i]);\n            if (A.length === lim) return A;\n          }\n          q = p = e;\n        }\n      }\n      A.push(S.slice(p));\n      return A;\n    }\n  ];\n}, !SUPPORTS_Y);\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n  return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","module.exports = false;\n","module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar isObject = require('../internals/is-object');\nvar aFunction = require('../internals/a-function');\nvar anInstance = require('../internals/an-instance');\nvar classof = require('../internals/classof-raw');\nvar inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar PromiseConstructor = NativePromise;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar $fetch = getBuiltIn('fetch');\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\nvar IS_NODE = classof(process) == 'process';\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n  var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor);\n  if (!GLOBAL_CORE_JS_PROMISE) {\n    // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n    // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n    // We can't detect it synchronously, so just check versions\n    if (V8_VERSION === 66) return true;\n    // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n    if (!IS_NODE && typeof PromiseRejectionEvent != 'function') return true;\n  }\n  // We need Promise#finally in the pure version for preventing prototype pollution\n  if (IS_PURE && !PromiseConstructor.prototype['finally']) return true;\n  // We can't use @@species feature detection in V8 since it causes\n  // deoptimization and performance degradation\n  // https://github.com/zloirock/core-js/issues/679\n  if (V8_VERSION >= 51 && /native code/.test(PromiseConstructor)) return false;\n  // Detect correctness of subclassing with @@species support\n  var promise = PromiseConstructor.resolve(1);\n  var FakePromise = function (exec) {\n    exec(function () { /* empty */ }, function () { /* empty */ });\n  };\n  var constructor = promise.constructor = {};\n  constructor[SPECIES] = FakePromise;\n  return !(promise.then(function () { /* empty */ }) instanceof FakePromise);\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n  PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n  var then;\n  return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\n\nvar notify = function (promise, state, isReject) {\n  if (state.notified) return;\n  state.notified = true;\n  var chain = state.reactions;\n  microtask(function () {\n    var value = state.value;\n    var ok = state.state == FULFILLED;\n    var index = 0;\n    // variable length - can't use forEach\n    while (chain.length > index) {\n      var reaction = chain[index++];\n      var handler = ok ? reaction.ok : reaction.fail;\n      var resolve = reaction.resolve;\n      var reject = reaction.reject;\n      var domain = reaction.domain;\n      var result, then, exited;\n      try {\n        if (handler) {\n          if (!ok) {\n            if (state.rejection === UNHANDLED) onHandleUnhandled(promise, state);\n            state.rejection = HANDLED;\n          }\n          if (handler === true) result = value;\n          else {\n            if (domain) domain.enter();\n            result = handler(value); // can throw\n            if (domain) {\n              domain.exit();\n              exited = true;\n            }\n          }\n          if (result === reaction.promise) {\n            reject(TypeError('Promise-chain cycle'));\n          } else if (then = isThenable(result)) {\n            then.call(result, resolve, reject);\n          } else resolve(result);\n        } else reject(value);\n      } catch (error) {\n        if (domain && !exited) domain.exit();\n        reject(error);\n      }\n    }\n    state.reactions = [];\n    state.notified = false;\n    if (isReject && !state.rejection) onUnhandled(promise, state);\n  });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n  var event, handler;\n  if (DISPATCH_EVENT) {\n    event = document.createEvent('Event');\n    event.promise = promise;\n    event.reason = reason;\n    event.initEvent(name, false, true);\n    global.dispatchEvent(event);\n  } else event = { promise: promise, reason: reason };\n  if (handler = global['on' + name]) handler(event);\n  else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (promise, state) {\n  task.call(global, function () {\n    var value = state.value;\n    var IS_UNHANDLED = isUnhandled(state);\n    var result;\n    if (IS_UNHANDLED) {\n      result = perform(function () {\n        if (IS_NODE) {\n          process.emit('unhandledRejection', value, promise);\n        } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n      });\n      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n      state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n      if (result.error) throw result.value;\n    }\n  });\n};\n\nvar isUnhandled = function (state) {\n  return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (promise, state) {\n  task.call(global, function () {\n    if (IS_NODE) {\n      process.emit('rejectionHandled', promise);\n    } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n  });\n};\n\nvar bind = function (fn, promise, state, unwrap) {\n  return function (value) {\n    fn(promise, state, value, unwrap);\n  };\n};\n\nvar internalReject = function (promise, state, value, unwrap) {\n  if (state.done) return;\n  state.done = true;\n  if (unwrap) state = unwrap;\n  state.value = value;\n  state.state = REJECTED;\n  notify(promise, state, true);\n};\n\nvar internalResolve = function (promise, state, value, unwrap) {\n  if (state.done) return;\n  state.done = true;\n  if (unwrap) state = unwrap;\n  try {\n    if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n    var then = isThenable(value);\n    if (then) {\n      microtask(function () {\n        var wrapper = { done: false };\n        try {\n          then.call(value,\n            bind(internalResolve, promise, wrapper, state),\n            bind(internalReject, promise, wrapper, state)\n          );\n        } catch (error) {\n          internalReject(promise, wrapper, error, state);\n        }\n      });\n    } else {\n      state.value = value;\n      state.state = FULFILLED;\n      notify(promise, state, false);\n    }\n  } catch (error) {\n    internalReject(promise, { done: false }, error, state);\n  }\n};\n\n// constructor polyfill\nif (FORCED) {\n  // 25.4.3.1 Promise(executor)\n  PromiseConstructor = function Promise(executor) {\n    anInstance(this, PromiseConstructor, PROMISE);\n    aFunction(executor);\n    Internal.call(this);\n    var state = getInternalState(this);\n    try {\n      executor(bind(internalResolve, this, state), bind(internalReject, this, state));\n    } catch (error) {\n      internalReject(this, state, error);\n    }\n  };\n  // eslint-disable-next-line no-unused-vars\n  Internal = function Promise(executor) {\n    setInternalState(this, {\n      type: PROMISE,\n      done: false,\n      notified: false,\n      parent: false,\n      reactions: [],\n      rejection: false,\n      state: PENDING,\n      value: undefined\n    });\n  };\n  Internal.prototype = redefineAll(PromiseConstructor.prototype, {\n    // `Promise.prototype.then` method\n    // https://tc39.github.io/ecma262/#sec-promise.prototype.then\n    then: function then(onFulfilled, onRejected) {\n      var state = getInternalPromiseState(this);\n      var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n      reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n      reaction.fail = typeof onRejected == 'function' && onRejected;\n      reaction.domain = IS_NODE ? process.domain : undefined;\n      state.parent = true;\n      state.reactions.push(reaction);\n      if (state.state != PENDING) notify(this, state, false);\n      return reaction.promise;\n    },\n    // `Promise.prototype.catch` method\n    // https://tc39.github.io/ecma262/#sec-promise.prototype.catch\n    'catch': function (onRejected) {\n      return this.then(undefined, onRejected);\n    }\n  });\n  OwnPromiseCapability = function () {\n    var promise = new Internal();\n    var state = getInternalState(promise);\n    this.promise = promise;\n    this.resolve = bind(internalResolve, promise, state);\n    this.reject = bind(internalReject, promise, state);\n  };\n  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n    return C === PromiseConstructor || C === PromiseWrapper\n      ? new OwnPromiseCapability(C)\n      : newGenericPromiseCapability(C);\n  };\n\n  if (!IS_PURE && typeof NativePromise == 'function') {\n    nativeThen = NativePromise.prototype.then;\n\n    // wrap native Promise#then for native async functions\n    redefine(NativePromise.prototype, 'then', function then(onFulfilled, onRejected) {\n      var that = this;\n      return new PromiseConstructor(function (resolve, reject) {\n        nativeThen.call(that, resolve, reject);\n      }).then(onFulfilled, onRejected);\n    // https://github.com/zloirock/core-js/issues/640\n    }, { unsafe: true });\n\n    // wrap fetch result\n    if (typeof $fetch == 'function') $({ global: true, enumerable: true, forced: true }, {\n      // eslint-disable-next-line no-unused-vars\n      fetch: function fetch(input /* , init */) {\n        return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments));\n      }\n    });\n  }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n  Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n  // `Promise.reject` method\n  // https://tc39.github.io/ecma262/#sec-promise.reject\n  reject: function reject(r) {\n    var capability = newPromiseCapability(this);\n    capability.reject.call(undefined, r);\n    return capability.promise;\n  }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n  // `Promise.resolve` method\n  // https://tc39.github.io/ecma262/#sec-promise.resolve\n  resolve: function resolve(x) {\n    return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n  }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n  // `Promise.all` method\n  // https://tc39.github.io/ecma262/#sec-promise.all\n  all: function all(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var $promiseResolve = aFunction(C.resolve);\n      var values = [];\n      var counter = 0;\n      var remaining = 1;\n      iterate(iterable, function (promise) {\n        var index = counter++;\n        var alreadyCalled = false;\n        values.push(undefined);\n        remaining++;\n        $promiseResolve.call(C, promise).then(function (value) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[index] = value;\n          --remaining || resolve(values);\n        }, reject);\n      });\n      --remaining || resolve(values);\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  },\n  // `Promise.race` method\n  // https://tc39.github.io/ecma262/#sec-promise.race\n  race: function race(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(C);\n    var reject = capability.reject;\n    var result = perform(function () {\n      var $promiseResolve = aFunction(C.resolve);\n      iterate(iterable, function (promise) {\n        $promiseResolve.call(C, promise).then(capability.resolve, reject);\n      });\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n","'use strict';\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n  redefine(RegExp.prototype, TO_STRING, function toString() {\n    var R = anObject(this);\n    var p = String(R.source);\n    var rf = R.flags;\n    var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n    return '/' + p + '/' + f;\n  }, { unsafe: true });\n}\n","module.exports = {};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return nativeGetOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  var Collection = global[COLLECTION_NAME];\n  var CollectionPrototype = Collection && Collection.prototype;\n  // some Chrome versions have non-configurable methods on DOMTokenList\n  if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n    createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n  } catch (error) {\n    CollectionPrototype.forEach = forEach;\n  }\n}\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n  var method = [][METHOD_NAME];\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call,no-throw-literal\n    method.call(null, argument || function () { throw 1; }, 1);\n  });\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n  return function ($this) {\n    var string = String(requireObjectCoercible($this));\n    if (TYPE & 1) string = string.replace(ltrim, '');\n    if (TYPE & 2) string = string.replace(rtrim, '');\n    return string;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.{ trimLeft, trimStart }` methods\n  // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart\n  start: createMethod(1),\n  // `String.prototype.{ trimRight, trimEnd }` methods\n  // https://tc39.github.io/ecma262/#sec-string.prototype.trimend\n  end: createMethod(2),\n  // `String.prototype.trim` method\n  // https://tc39.github.io/ecma262/#sec-string.prototype.trim\n  trim: createMethod(3)\n};\n","// a string of all valid unicode whitespaces\n// eslint-disable-next-line max-len\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins\n  return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n  // We can't use this feature detection in V8 since it causes\n  // deoptimization and serious performance degradation\n  // https://github.com/zloirock/core-js/issues/677\n  return V8_VERSION >= 51 || !fails(function () {\n    var array = [];\n    var constructor = array.constructor = {};\n    constructor[SPECIES] = function () {\n      return { foo: 1 };\n    };\n    return array[METHOD_NAME](Boolean).foo !== 1;\n  });\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n  if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n    defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n  }\n};\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation\nvar createMethod = function (TYPE) {\n  var IS_MAP = TYPE == 1;\n  var IS_FILTER = TYPE == 2;\n  var IS_SOME = TYPE == 3;\n  var IS_EVERY = TYPE == 4;\n  var IS_FIND_INDEX = TYPE == 6;\n  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n  return function ($this, callbackfn, that, specificCreate) {\n    var O = toObject($this);\n    var self = IndexedObject(O);\n    var boundFunction = bind(callbackfn, that, 3);\n    var length = toLength(self.length);\n    var index = 0;\n    var create = specificCreate || arraySpeciesCreate;\n    var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n    var value, result;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      value = self[index];\n      result = boundFunction(value, index, O);\n      if (TYPE) {\n        if (IS_MAP) target[index] = result; // map\n        else if (result) switch (TYPE) {\n          case 3: return true;              // some\n          case 5: return value;             // find\n          case 6: return index;             // findIndex\n          case 2: push.call(target, value); // filter\n        } else if (IS_EVERY) return false;  // every\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.forEach` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n  forEach: createMethod(0),\n  // `Array.prototype.map` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.map\n  map: createMethod(1),\n  // `Array.prototype.filter` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.filter\n  filter: createMethod(2),\n  // `Array.prototype.some` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.some\n  some: createMethod(3),\n  // `Array.prototype.every` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.every\n  every: createMethod(4),\n  // `Array.prototype.find` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.find\n  find: createMethod(5),\n  // `Array.prototype.findIndex` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n  findIndex: createMethod(6)\n};\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n  activeXDocument.write(scriptTag(''));\n  activeXDocument.close();\n  var temp = activeXDocument.parentWindow.Object;\n  activeXDocument = null; // avoid memory leak\n  return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = documentCreateElement('iframe');\n  var JS = 'java' + SCRIPT + ':';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  html.appendChild(iframe);\n  // https://github.com/zloirock/core-js/issues/475\n  iframe.src = String(JS);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(scriptTag('document.F=Object'));\n  iframeDocument.close();\n  return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n  try {\n    /* global ActiveXObject */\n    activeXDocument = document.domain && new ActiveXObject('htmlfile');\n  } catch (error) { /* ignore */ }\n  NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n  var length = enumBugKeys.length;\n  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n  return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    EmptyConstructor[PROTOTYPE] = anObject(O);\n    result = new EmptyConstructor();\n    EmptyConstructor[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = NullProtoObject();\n  return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n  return internalObjectKeys(O, enumBugKeys);\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.github.io/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n  return classof(arg) == 'Array';\n};\n","module.exports = {};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value == POLYFILL ? true\n    : value == NATIVE ? false\n    : typeof detection == 'function' ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","'use strict';\nvar regexpFlags = require('./regexp-flags');\nvar stickyHelpers = require('./regexp-sticky-helpers');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/;\n  var re2 = /b*/g;\n  nativeExec.call(re1, 'a');\n  nativeExec.call(re2, 'a');\n  return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y;\n\nif (PATCH) {\n  patchedExec = function exec(str) {\n    var re = this;\n    var lastIndex, reCopy, match, i;\n    var sticky = UNSUPPORTED_Y && re.sticky;\n    var flags = regexpFlags.call(re);\n    var source = re.source;\n    var charsAdded = 0;\n    var strCopy = str;\n\n    if (sticky) {\n      flags = flags.replace('y', '');\n      if (flags.indexOf('g') === -1) {\n        flags += 'g';\n      }\n\n      strCopy = String(str).slice(re.lastIndex);\n      // Support anchored sticky behavior.\n      if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\\n')) {\n        source = '(?: ' + source + ')';\n        strCopy = ' ' + strCopy;\n        charsAdded++;\n      }\n      // ^(? + rx + ) is needed, in combination with some str slicing, to\n      // simulate the 'y' flag.\n      reCopy = new RegExp('^(?:' + source + ')', flags);\n    }\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n    match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n    if (sticky) {\n      if (match) {\n        match.input = match.input.slice(charsAdded);\n        match[0] = match[0].slice(charsAdded);\n        match.index = re.lastIndex;\n        re.lastIndex += match[0].length;\n      } else re.lastIndex = 0;\n    } else if (UPDATES_LAST_INDEX_WRONG && match) {\n      re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n      nativeReplace.call(match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n","var $ = require('../internals/export');\nvar parseFloatImplementation = require('../internals/number-parse-float');\n\n// `parseFloat` method\n// https://tc39.github.io/ecma262/#sec-parsefloat-string\n$({ global: true, forced: parseFloat != parseFloatImplementation }, {\n  parseFloat: parseFloatImplementation\n});\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.github.io/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n  setInternalState(this, {\n    type: ARRAY_ITERATOR,\n    target: toIndexedObject(iterated), // target\n    index: 0,                          // next index\n    kind: kind                         // kind\n  });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n  var state = getInternalState(this);\n  var target = state.target;\n  var kind = state.kind;\n  var index = state.index++;\n  if (!target || index >= target.length) {\n    state.target = undefined;\n    return { value: undefined, done: true };\n  }\n  if (kind == 'keys') return { value: index, done: false };\n  if (kind == 'values') return { value: target[index], done: false };\n  return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n  var propertyKey = toPrimitive(key);\n  if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n  else object[propertyKey] = value;\n};\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 0: return function () {\n      return fn.call(that);\n    };\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n// Edge 14- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n  filter: function filter(callbackfn /* , thisArg */) {\n    return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","/*!\r\n * jQuery Validation Plugin v1.19.1\r\n *\r\n * https://jqueryvalidation.org/\r\n *\r\n * Copyright (c) 2019 Jörn Zaefferer\r\n * Released under the MIT license\r\n */\r\n(function( factory ) {\r\n\tif ( typeof define === \"function\" && define.amd ) {\r\n\t\tdefine( [\"jquery\"], factory );\r\n\t} else if (typeof module === \"object\" && module.exports) {\r\n\t\tmodule.exports = factory( require( \"jquery\" ) );\r\n\t} else {\r\n\t\tfactory( jQuery );\r\n\t}\r\n}(function( $ ) {\r\n\r\n$.extend( $.fn, {\n\n\t// https://jqueryvalidation.org/validate/\n\tvalidate: function( options ) {\n\n\t\t// If nothing is selected, return nothing; can't chain anyway\n\t\tif ( !this.length ) {\n\t\t\tif ( options && options.debug && window.console ) {\n\t\t\t\tconsole.warn( \"Nothing selected, can't validate, returning nothing.\" );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if a validator for this form was already created\n\t\tvar validator = $.data( this[ 0 ], \"validator\" );\n\t\tif ( validator ) {\n\t\t\treturn validator;\n\t\t}\n\n\t\t// Add novalidate tag if HTML5.\n\t\tthis.attr( \"novalidate\", \"novalidate\" );\n\n\t\tvalidator = new $.validator( options, this[ 0 ] );\n\t\t$.data( this[ 0 ], \"validator\", validator );\n\n\t\tif ( validator.settings.onsubmit ) {\n\n\t\t\tthis.on( \"click.validate\", \":submit\", function( event ) {\n\n\t\t\t\t// Track the used submit button to properly handle scripted\n\t\t\t\t// submits later.\n\t\t\t\tvalidator.submitButton = event.currentTarget;\n\n\t\t\t\t// Allow suppressing validation by adding a cancel class to the submit button\n\t\t\t\tif ( $( this ).hasClass( \"cancel\" ) ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\n\t\t\t\t// Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button\n\t\t\t\tif ( $( this ).attr( \"formnovalidate\" ) !== undefined ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Validate the form on submit\n\t\t\tthis.on( \"submit.validate\", function( event ) {\n\t\t\t\tif ( validator.settings.debug ) {\n\n\t\t\t\t\t// Prevent form submit to be able to see console output\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\n\t\t\t\tfunction handle() {\n\t\t\t\t\tvar hidden, result;\n\n\t\t\t\t\t// Insert a hidden input as a replacement for the missing submit button\n\t\t\t\t\t// The hidden input is inserted in two cases:\n\t\t\t\t\t//   - A user defined a `submitHandler`\n\t\t\t\t\t//   - There was a pending request due to `remote` method and `stopRequest()`\n\t\t\t\t\t//     was called to submit the form in case it's valid\n\t\t\t\t\tif ( validator.submitButton && ( validator.settings.submitHandler || validator.formSubmitted ) ) {\n\t\t\t\t\t\thidden = $( \"<input type='hidden'/>\" )\n\t\t\t\t\t\t\t.attr( \"name\", validator.submitButton.name )\n\t\t\t\t\t\t\t.val( $( validator.submitButton ).val() )\n\t\t\t\t\t\t\t.appendTo( validator.currentForm );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( validator.settings.submitHandler && !validator.settings.debug ) {\n\t\t\t\t\t\tresult = validator.settings.submitHandler.call( validator, validator.currentForm, event );\n\t\t\t\t\t\tif ( hidden ) {\n\n\t\t\t\t\t\t\t// And clean up afterwards; thanks to no-block-scope, hidden can be referenced\n\t\t\t\t\t\t\thidden.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( result !== undefined ) {\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t// Prevent submit for invalid forms or custom submit handlers\n\t\t\t\tif ( validator.cancelSubmit ) {\n\t\t\t\t\tvalidator.cancelSubmit = false;\n\t\t\t\t\treturn handle();\n\t\t\t\t}\n\t\t\t\tif ( validator.form() ) {\n\t\t\t\t\tif ( validator.pendingRequest ) {\n\t\t\t\t\t\tvalidator.formSubmitted = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn handle();\n\t\t\t\t} else {\n\t\t\t\t\tvalidator.focusInvalid();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn validator;\n\t},\n\n\t// https://jqueryvalidation.org/valid/\n\tvalid: function() {\n\t\tvar valid, validator, errorList;\n\n\t\tif ( $( this[ 0 ] ).is( \"form\" ) ) {\n\t\t\tvalid = this.validate().form();\n\t\t} else {\n\t\t\terrorList = [];\n\t\t\tvalid = true;\n\t\t\tvalidator = $( this[ 0 ].form ).validate();\n\t\t\tthis.each( function() {\n\t\t\t\tvalid = validator.element( this ) && valid;\n\t\t\t\tif ( !valid ) {\n\t\t\t\t\terrorList = errorList.concat( validator.errorList );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tvalidator.errorList = errorList;\n\t\t}\n\t\treturn valid;\n\t},\n\n\t// https://jqueryvalidation.org/rules/\n\trules: function( command, argument ) {\n\t\tvar element = this[ 0 ],\n\t\t\tisContentEditable = typeof this.attr( \"contenteditable\" ) !== \"undefined\" && this.attr( \"contenteditable\" ) !== \"false\",\n\t\t\tsettings, staticRules, existingRules, data, param, filtered;\n\n\t\t// If nothing is selected, return empty object; can't chain anyway\n\t\tif ( element == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !element.form && isContentEditable ) {\n\t\t\telement.form = this.closest( \"form\" )[ 0 ];\n\t\t\telement.name = this.attr( \"name\" );\n\t\t}\n\n\t\tif ( element.form == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( command ) {\n\t\t\tsettings = $.data( element.form, \"validator\" ).settings;\n\t\t\tstaticRules = settings.rules;\n\t\t\texistingRules = $.validator.staticRules( element );\n\t\t\tswitch ( command ) {\n\t\t\tcase \"add\":\n\t\t\t\t$.extend( existingRules, $.validator.normalizeRule( argument ) );\n\n\t\t\t\t// Remove messages from rules, but allow them to be set separately\n\t\t\t\tdelete existingRules.messages;\n\t\t\t\tstaticRules[ element.name ] = existingRules;\n\t\t\t\tif ( argument.messages ) {\n\t\t\t\t\tsettings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"remove\":\n\t\t\t\tif ( !argument ) {\n\t\t\t\t\tdelete staticRules[ element.name ];\n\t\t\t\t\treturn existingRules;\n\t\t\t\t}\n\t\t\t\tfiltered = {};\n\t\t\t\t$.each( argument.split( /\\s/ ), function( index, method ) {\n\t\t\t\t\tfiltered[ method ] = existingRules[ method ];\n\t\t\t\t\tdelete existingRules[ method ];\n\t\t\t\t} );\n\t\t\t\treturn filtered;\n\t\t\t}\n\t\t}\n\n\t\tdata = $.validator.normalizeRules(\n\t\t$.extend(\n\t\t\t{},\n\t\t\t$.validator.classRules( element ),\n\t\t\t$.validator.attributeRules( element ),\n\t\t\t$.validator.dataRules( element ),\n\t\t\t$.validator.staticRules( element )\n\t\t), element );\n\n\t\t// Make sure required is at front\n\t\tif ( data.required ) {\n\t\t\tparam = data.required;\n\t\t\tdelete data.required;\n\t\t\tdata = $.extend( { required: param }, data );\n\t\t}\n\n\t\t// Make sure remote is at back\n\t\tif ( data.remote ) {\n\t\t\tparam = data.remote;\n\t\t\tdelete data.remote;\n\t\t\tdata = $.extend( data, { remote: param } );\n\t\t}\n\n\t\treturn data;\n\t}\n} );\n\n// Custom selectors\n$.extend( $.expr.pseudos || $.expr[ \":\" ], {\t\t// '|| $.expr[ \":\" ]' here enables backwards compatibility to jQuery 1.7. Can be removed when dropping jQ 1.7.x support\n\n\t// https://jqueryvalidation.org/blank-selector/\n\tblank: function( a ) {\n\t\treturn !$.trim( \"\" + $( a ).val() );\n\t},\n\n\t// https://jqueryvalidation.org/filled-selector/\n\tfilled: function( a ) {\n\t\tvar val = $( a ).val();\n\t\treturn val !== null && !!$.trim( \"\" + val );\n\t},\n\n\t// https://jqueryvalidation.org/unchecked-selector/\n\tunchecked: function( a ) {\n\t\treturn !$( a ).prop( \"checked\" );\n\t}\n} );\n\n// Constructor for validator\n$.validator = function( options, form ) {\n\tthis.settings = $.extend( true, {}, $.validator.defaults, options );\n\tthis.currentForm = form;\n\tthis.init();\n};\n\n// https://jqueryvalidation.org/jQuery.validator.format/\n$.validator.format = function( source, params ) {\n\tif ( arguments.length === 1 ) {\n\t\treturn function() {\n\t\t\tvar args = $.makeArray( arguments );\n\t\t\targs.unshift( source );\n\t\t\treturn $.validator.format.apply( this, args );\n\t\t};\n\t}\n\tif ( params === undefined ) {\n\t\treturn source;\n\t}\n\tif ( arguments.length > 2 && params.constructor !== Array  ) {\n\t\tparams = $.makeArray( arguments ).slice( 1 );\n\t}\n\tif ( params.constructor !== Array ) {\n\t\tparams = [ params ];\n\t}\n\t$.each( params, function( i, n ) {\n\t\tsource = source.replace( new RegExp( \"\\\\{\" + i + \"\\\\}\", \"g\" ), function() {\n\t\t\treturn n;\n\t\t} );\n\t} );\n\treturn source;\n};\n\n$.extend( $.validator, {\n\n\tdefaults: {\n\t\tmessages: {},\n\t\tgroups: {},\n\t\trules: {},\n\t\terrorClass: \"error\",\n\t\tpendingClass: \"pending\",\n\t\tvalidClass: \"valid\",\n\t\terrorElement: \"label\",\n\t\tfocusCleanup: false,\n\t\tfocusInvalid: true,\n\t\terrorContainer: $( [] ),\n\t\terrorLabelContainer: $( [] ),\n\t\tonsubmit: true,\n\t\tignore: \":hidden\",\n\t\tignoreTitle: false,\n\t\tonfocusin: function( element ) {\n\t\t\tthis.lastActive = element;\n\n\t\t\t// Hide error label and remove error class on focus if enabled\n\t\t\tif ( this.settings.focusCleanup ) {\n\t\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.hideThese( this.errorsFor( element ) );\n\t\t\t}\n\t\t},\n\t\tonfocusout: function( element ) {\n\t\t\tif ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonkeyup: function( element, event ) {\n\n\t\t\t// Avoid revalidate the field when pressing one of the following keys\n\t\t\t// Shift       => 16\n\t\t\t// Ctrl        => 17\n\t\t\t// Alt         => 18\n\t\t\t// Caps lock   => 20\n\t\t\t// End         => 35\n\t\t\t// Home        => 36\n\t\t\t// Left arrow  => 37\n\t\t\t// Up arrow    => 38\n\t\t\t// Right arrow => 39\n\t\t\t// Down arrow  => 40\n\t\t\t// Insert      => 45\n\t\t\t// Num lock    => 144\n\t\t\t// AltGr key   => 225\n\t\t\tvar excludedKeys = [\n\t\t\t\t16, 17, 18, 20, 35, 36, 37,\n\t\t\t\t38, 39, 40, 45, 144, 225\n\t\t\t];\n\n\t\t\tif ( event.which === 9 && this.elementValue( element ) === \"\" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {\n\t\t\t\treturn;\n\t\t\t} else if ( element.name in this.submitted || element.name in this.invalid ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonclick: function( element ) {\n\n\t\t\t// Click on selects, radiobuttons and checkboxes\n\t\t\tif ( element.name in this.submitted ) {\n\t\t\t\tthis.element( element );\n\n\t\t\t// Or option elements, check parent select in that case\n\t\t\t} else if ( element.parentNode.name in this.submitted ) {\n\t\t\t\tthis.element( element.parentNode );\n\t\t\t}\n\t\t},\n\t\thighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).addClass( errorClass ).removeClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).addClass( errorClass ).removeClass( validClass );\n\t\t\t}\n\t\t},\n\t\tunhighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).removeClass( errorClass ).addClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).removeClass( errorClass ).addClass( validClass );\n\t\t\t}\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.setDefaults/\n\tsetDefaults: function( settings ) {\n\t\t$.extend( $.validator.defaults, settings );\n\t},\n\n\tmessages: {\n\t\trequired: \"This field is required.\",\n\t\tremote: \"Please fix this field.\",\n\t\temail: \"Please enter a valid email address.\",\n\t\turl: \"Please enter a valid URL.\",\n\t\tdate: \"Please enter a valid date.\",\n\t\tdateISO: \"Please enter a valid date (ISO).\",\n\t\tnumber: \"Please enter a valid number.\",\n\t\tdigits: \"Please enter only digits.\",\n\t\tequalTo: \"Please enter the same value again.\",\n\t\tmaxlength: $.validator.format( \"Please enter no more than {0} characters.\" ),\n\t\tminlength: $.validator.format( \"Please enter at least {0} characters.\" ),\n\t\trangelength: $.validator.format( \"Please enter a value between {0} and {1} characters long.\" ),\n\t\trange: $.validator.format( \"Please enter a value between {0} and {1}.\" ),\n\t\tmax: $.validator.format( \"Please enter a value less than or equal to {0}.\" ),\n\t\tmin: $.validator.format( \"Please enter a value greater than or equal to {0}.\" ),\n\t\tstep: $.validator.format( \"Please enter a multiple of {0}.\" )\n\t},\n\n\tautoCreateRanges: false,\n\n\tprototype: {\n\n\t\tinit: function() {\n\t\t\tthis.labelContainer = $( this.settings.errorLabelContainer );\n\t\t\tthis.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );\n\t\t\tthis.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );\n\t\t\tthis.submitted = {};\n\t\t\tthis.valueCache = {};\n\t\t\tthis.pendingRequest = 0;\n\t\t\tthis.pending = {};\n\t\t\tthis.invalid = {};\n\t\t\tthis.reset();\n\n\t\t\tvar currentForm = this.currentForm,\n\t\t\t\tgroups = ( this.groups = {} ),\n\t\t\t\trules;\n\t\t\t$.each( this.settings.groups, function( key, value ) {\n\t\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\t\tvalue = value.split( /\\s/ );\n\t\t\t\t}\n\t\t\t\t$.each( value, function( index, name ) {\n\t\t\t\t\tgroups[ name ] = key;\n\t\t\t\t} );\n\t\t\t} );\n\t\t\trules = this.settings.rules;\n\t\t\t$.each( rules, function( key, value ) {\n\t\t\t\trules[ key ] = $.validator.normalizeRule( value );\n\t\t\t} );\n\n\t\t\tfunction delegate( event ) {\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( !this.form && isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = $( this ).attr( \"name\" );\n\t\t\t\t}\n\n\t\t\t\t// Ignore the element if it belongs to another form. This will happen mainly\n\t\t\t\t// when setting the `form` attribute of an input to the id of another form.\n\t\t\t\tif ( currentForm !== this.form ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar validator = $.data( this.form, \"validator\" ),\n\t\t\t\t\teventType = \"on\" + event.type.replace( /^validate/, \"\" ),\n\t\t\t\t\tsettings = validator.settings;\n\t\t\t\tif ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {\n\t\t\t\t\tsettings[ eventType ].call( validator, this, event );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.on( \"focusin.validate focusout.validate keyup.validate\",\n\t\t\t\t\t\":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], \" +\n\t\t\t\t\t\"[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], \" +\n\t\t\t\t\t\"[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], \" +\n\t\t\t\t\t\"[type='radio'], [type='checkbox'], [contenteditable], [type='button']\", delegate )\n\n\t\t\t\t// Support: Chrome, oldIE\n\t\t\t\t// \"select\" is provided as event.target when clicking a option\n\t\t\t\t.on( \"click.validate\", \"select, option, [type='radio'], [type='checkbox']\", delegate );\n\n\t\t\tif ( this.settings.invalidHandler ) {\n\t\t\t\t$( this.currentForm ).on( \"invalid-form.validate\", this.settings.invalidHandler );\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.form/\n\t\tform: function() {\n\t\t\tthis.checkForm();\n\t\t\t$.extend( this.submitted, this.errorMap );\n\t\t\tthis.invalid = $.extend( {}, this.errorMap );\n\t\t\tif ( !this.valid() ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t}\n\t\t\tthis.showErrors();\n\t\t\treturn this.valid();\n\t\t},\n\n\t\tcheckForm: function() {\n\t\t\tthis.prepareForm();\n\t\t\tfor ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {\n\t\t\t\tthis.check( elements[ i ] );\n\t\t\t}\n\t\t\treturn this.valid();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.element/\n\t\telement: function( element ) {\n\t\t\tvar cleanElement = this.clean( element ),\n\t\t\t\tcheckElement = this.validationTargetFor( cleanElement ),\n\t\t\t\tv = this,\n\t\t\t\tresult = true,\n\t\t\t\trs, group;\n\n\t\t\tif ( checkElement === undefined ) {\n\t\t\t\tdelete this.invalid[ cleanElement.name ];\n\t\t\t} else {\n\t\t\t\tthis.prepareElement( checkElement );\n\t\t\t\tthis.currentElements = $( checkElement );\n\n\t\t\t\t// If this element is grouped, then validate all group elements already\n\t\t\t\t// containing a value\n\t\t\t\tgroup = this.groups[ checkElement.name ];\n\t\t\t\tif ( group ) {\n\t\t\t\t\t$.each( this.groups, function( name, testgroup ) {\n\t\t\t\t\t\tif ( testgroup === group && name !== checkElement.name ) {\n\t\t\t\t\t\t\tcleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );\n\t\t\t\t\t\t\tif ( cleanElement && cleanElement.name in v.invalid ) {\n\t\t\t\t\t\t\t\tv.currentElements.push( cleanElement );\n\t\t\t\t\t\t\t\tresult = v.check( cleanElement ) && result;\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\trs = this.check( checkElement ) !== false;\n\t\t\t\tresult = result && rs;\n\t\t\t\tif ( rs ) {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = false;\n\t\t\t\t} else {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = true;\n\t\t\t\t}\n\n\t\t\t\tif ( !this.numberOfInvalids() ) {\n\n\t\t\t\t\t// Hide error containers on last error\n\t\t\t\t\tthis.toHide = this.toHide.add( this.containers );\n\t\t\t\t}\n\t\t\t\tthis.showErrors();\n\n\t\t\t\t// Add aria-invalid status for screen readers\n\t\t\t\t$( element ).attr( \"aria-invalid\", !rs );\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.showErrors/\n\t\tshowErrors: function( errors ) {\n\t\t\tif ( errors ) {\n\t\t\t\tvar validator = this;\n\n\t\t\t\t// Add items to error list and map\n\t\t\t\t$.extend( this.errorMap, errors );\n\t\t\t\tthis.errorList = $.map( this.errorMap, function( message, name ) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmessage: message,\n\t\t\t\t\t\telement: validator.findByName( name )[ 0 ]\n\t\t\t\t\t};\n\t\t\t\t} );\n\n\t\t\t\t// Remove items from success list\n\t\t\t\tthis.successList = $.grep( this.successList, function( element ) {\n\t\t\t\t\treturn !( element.name in errors );\n\t\t\t\t} );\n\t\t\t}\n\t\t\tif ( this.settings.showErrors ) {\n\t\t\t\tthis.settings.showErrors.call( this, this.errorMap, this.errorList );\n\t\t\t} else {\n\t\t\t\tthis.defaultShowErrors();\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.resetForm/\n\t\tresetForm: function() {\n\t\t\tif ( $.fn.resetForm ) {\n\t\t\t\t$( this.currentForm ).resetForm();\n\t\t\t}\n\t\t\tthis.invalid = {};\n\t\t\tthis.submitted = {};\n\t\t\tthis.prepareForm();\n\t\t\tthis.hideErrors();\n\t\t\tvar elements = this.elements()\n\t\t\t\t.removeData( \"previousValue\" )\n\t\t\t\t.removeAttr( \"aria-invalid\" );\n\n\t\t\tthis.resetElements( elements );\n\t\t},\n\n\t\tresetElements: function( elements ) {\n\t\t\tvar i;\n\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0; elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ],\n\t\t\t\t\t\tthis.settings.errorClass, \"\" );\n\t\t\t\t\tthis.findByName( elements[ i ].name ).removeClass( this.settings.validClass );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\telements\n\t\t\t\t\t.removeClass( this.settings.errorClass )\n\t\t\t\t\t.removeClass( this.settings.validClass );\n\t\t\t}\n\t\t},\n\n\t\tnumberOfInvalids: function() {\n\t\t\treturn this.objectLength( this.invalid );\n\t\t},\n\n\t\tobjectLength: function( obj ) {\n\t\t\t/* jshint unused: false */\n\t\t\tvar count = 0,\n\t\t\t\ti;\n\t\t\tfor ( i in obj ) {\n\n\t\t\t\t// This check allows counting elements with empty error\n\t\t\t\t// message as invalid elements\n\t\t\t\tif ( obj[ i ] !== undefined && obj[ i ] !== null && obj[ i ] !== false ) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\thideErrors: function() {\n\t\t\tthis.hideThese( this.toHide );\n\t\t},\n\n\t\thideThese: function( errors ) {\n\t\t\terrors.not( this.containers ).text( \"\" );\n\t\t\tthis.addWrapper( errors ).hide();\n\t\t},\n\n\t\tvalid: function() {\n\t\t\treturn this.size() === 0;\n\t\t},\n\n\t\tsize: function() {\n\t\t\treturn this.errorList.length;\n\t\t},\n\n\t\tfocusInvalid: function() {\n\t\t\tif ( this.settings.focusInvalid ) {\n\t\t\t\ttry {\n\t\t\t\t\t$( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] )\n\t\t\t\t\t.filter( \":visible\" )\n\t\t\t\t\t.trigger( \"focus\" )\n\n\t\t\t\t\t// Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find\n\t\t\t\t\t.trigger( \"focusin\" );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// Ignore IE throwing errors when focusing hidden elements\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tfindLastActive: function() {\n\t\t\tvar lastActive = this.lastActive;\n\t\t\treturn lastActive && $.grep( this.errorList, function( n ) {\n\t\t\t\treturn n.element.name === lastActive.name;\n\t\t\t} ).length === 1 && lastActive;\n\t\t},\n\n\t\telements: function() {\n\t\t\tvar validator = this,\n\t\t\t\trulesCache = {};\n\n\t\t\t// Select all valid inputs inside the form (no submit or reset buttons)\n\t\t\treturn $( this.currentForm )\n\t\t\t.find( \"input, select, textarea, [contenteditable]\" )\n\t\t\t.not( \":submit, :reset, :image, :disabled\" )\n\t\t\t.not( this.settings.ignore )\n\t\t\t.filter( function() {\n\t\t\t\tvar name = this.name || $( this ).attr( \"name\" ); // For contenteditable\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\n\t\t\t\tif ( !name && validator.settings.debug && window.console ) {\n\t\t\t\t\tconsole.error( \"%o has no name assigned\", this );\n\t\t\t\t}\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = name;\n\t\t\t\t}\n\n\t\t\t\t// Ignore elements that belong to other/nested forms\n\t\t\t\tif ( this.form !== validator.currentForm ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Select only the first element for each name, and only those with rules specified\n\t\t\t\tif ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\trulesCache[ name ] = true;\n\t\t\t\treturn true;\n\t\t\t} );\n\t\t},\n\n\t\tclean: function( selector ) {\n\t\t\treturn $( selector )[ 0 ];\n\t\t},\n\n\t\terrors: function() {\n\t\t\tvar errorClass = this.settings.errorClass.split( \" \" ).join( \".\" );\n\t\t\treturn $( this.settings.errorElement + \".\" + errorClass, this.errorContext );\n\t\t},\n\n\t\tresetInternals: function() {\n\t\t\tthis.successList = [];\n\t\t\tthis.errorList = [];\n\t\t\tthis.errorMap = {};\n\t\t\tthis.toShow = $( [] );\n\t\t\tthis.toHide = $( [] );\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.resetInternals();\n\t\t\tthis.currentElements = $( [] );\n\t\t},\n\n\t\tprepareForm: function() {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errors().add( this.containers );\n\t\t},\n\n\t\tprepareElement: function( element ) {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errorsFor( element );\n\t\t},\n\n\t\telementValue: function( element ) {\n\t\t\tvar $element = $( element ),\n\t\t\t\ttype = element.type,\n\t\t\t\tisContentEditable = typeof $element.attr( \"contenteditable\" ) !== \"undefined\" && $element.attr( \"contenteditable\" ) !== \"false\",\n\t\t\t\tval, idx;\n\n\t\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).val();\n\t\t\t} else if ( type === \"number\" && typeof element.validity !== \"undefined\" ) {\n\t\t\t\treturn element.validity.badInput ? \"NaN\" : $element.val();\n\t\t\t}\n\n\t\t\tif ( isContentEditable ) {\n\t\t\t\tval = $element.text();\n\t\t\t} else {\n\t\t\t\tval = $element.val();\n\t\t\t}\n\n\t\t\tif ( type === \"file\" ) {\n\n\t\t\t\t// Modern browser (chrome & safari)\n\t\t\t\tif ( val.substr( 0, 12 ) === \"C:\\\\fakepath\\\\\" ) {\n\t\t\t\t\treturn val.substr( 12 );\n\t\t\t\t}\n\n\t\t\t\t// Legacy browsers\n\t\t\t\t// Unix-based path\n\t\t\t\tidx = val.lastIndexOf( \"/\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Windows-based path\n\t\t\t\tidx = val.lastIndexOf( \"\\\\\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Just the file name\n\t\t\t\treturn val;\n\t\t\t}\n\n\t\t\tif ( typeof val === \"string\" ) {\n\t\t\t\treturn val.replace( /\\r/g, \"\" );\n\t\t\t}\n\t\t\treturn val;\n\t\t},\n\n\t\tcheck: function( element ) {\n\t\t\telement = this.validationTargetFor( this.clean( element ) );\n\n\t\t\tvar rules = $( element ).rules(),\n\t\t\t\trulesCount = $.map( rules, function( n, i ) {\n\t\t\t\t\treturn i;\n\t\t\t\t} ).length,\n\t\t\t\tdependencyMismatch = false,\n\t\t\t\tval = this.elementValue( element ),\n\t\t\t\tresult, method, rule, normalizer;\n\n\t\t\t// Prioritize the local normalizer defined for this element over the global one\n\t\t\t// if the former exists, otherwise user the global one in case it exists.\n\t\t\tif ( typeof rules.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = rules.normalizer;\n\t\t\t} else if (\ttypeof this.settings.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = this.settings.normalizer;\n\t\t\t}\n\n\t\t\t// If normalizer is defined, then call it to retreive the changed value instead\n\t\t\t// of using the real one.\n\t\t\t// Note that `this` in the normalizer is `element`.\n\t\t\tif ( normalizer ) {\n\t\t\t\tval = normalizer.call( element, val );\n\n\t\t\t\t// Delete the normalizer from rules to avoid treating it as a pre-defined method.\n\t\t\t\tdelete rules.normalizer;\n\t\t\t}\n\n\t\t\tfor ( method in rules ) {\n\t\t\t\trule = { method: method, parameters: rules[ method ] };\n\t\t\t\ttry {\n\t\t\t\t\tresult = $.validator.methods[ method ].call( this, val, element, rule.parameters );\n\n\t\t\t\t\t// If a method indicates that the field is optional and therefore valid,\n\t\t\t\t\t// don't mark it as valid when there are no other rules\n\t\t\t\t\tif ( result === \"dependency-mismatch\" && rulesCount === 1 ) {\n\t\t\t\t\t\tdependencyMismatch = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tdependencyMismatch = false;\n\n\t\t\t\t\tif ( result === \"pending\" ) {\n\t\t\t\t\t\tthis.toHide = this.toHide.not( this.errorsFor( element ) );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !result ) {\n\t\t\t\t\t\tthis.formatAndAdd( element, rule );\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} catch ( e ) {\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.log( \"Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\", e );\n\t\t\t\t\t}\n\t\t\t\t\tif ( e instanceof TypeError ) {\n\t\t\t\t\t\te.message += \".  Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\";\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( dependencyMismatch ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( this.objectLength( rules ) ) {\n\t\t\t\tthis.successList.push( element );\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t// Return the custom message for the given element and validation method\n\t\t// specified in the element's HTML5 data attribute\n\t\t// return the generic message if present and no method specific message is present\n\t\tcustomDataMessage: function( element, method ) {\n\t\t\treturn $( element ).data( \"msg\" + method.charAt( 0 ).toUpperCase() +\n\t\t\t\tmethod.substring( 1 ).toLowerCase() ) || $( element ).data( \"msg\" );\n\t\t},\n\n\t\t// Return the custom message for the given element name and validation method\n\t\tcustomMessage: function( name, method ) {\n\t\t\tvar m = this.settings.messages[ name ];\n\t\t\treturn m && ( m.constructor === String ? m : m[ method ] );\n\t\t},\n\n\t\t// Return the first defined argument, allowing empty strings\n\t\tfindDefined: function() {\n\t\t\tfor ( var i = 0; i < arguments.length; i++ ) {\n\t\t\t\tif ( arguments[ i ] !== undefined ) {\n\t\t\t\t\treturn arguments[ i ];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\n\t\t// The second parameter 'rule' used to be a string, and extended to an object literal\n\t\t// of the following form:\n\t\t// rule = {\n\t\t//     method: \"method name\",\n\t\t//     parameters: \"the given method parameters\"\n\t\t// }\n\t\t//\n\t\t// The old behavior still supported, kept to maintain backward compatibility with\n\t\t// old code, and will be removed in the next major release.\n\t\tdefaultMessage: function( element, rule ) {\n\t\t\tif ( typeof rule === \"string\" ) {\n\t\t\t\trule = { method: rule };\n\t\t\t}\n\n\t\t\tvar message = this.findDefined(\n\t\t\t\t\tthis.customMessage( element.name, rule.method ),\n\t\t\t\t\tthis.customDataMessage( element, rule.method ),\n\n\t\t\t\t\t// 'title' is never undefined, so handle empty string as undefined\n\t\t\t\t\t!this.settings.ignoreTitle && element.title || undefined,\n\t\t\t\t\t$.validator.messages[ rule.method ],\n\t\t\t\t\t\"<strong>Warning: No message defined for \" + element.name + \"</strong>\"\n\t\t\t\t),\n\t\t\t\ttheregex = /\\$?\\{(\\d+)\\}/g;\n\t\t\tif ( typeof message === \"function\" ) {\n\t\t\t\tmessage = message.call( this, rule.parameters, element );\n\t\t\t} else if ( theregex.test( message ) ) {\n\t\t\t\tmessage = $.validator.format( message.replace( theregex, \"{$1}\" ), rule.parameters );\n\t\t\t}\n\n\t\t\treturn message;\n\t\t},\n\n\t\tformatAndAdd: function( element, rule ) {\n\t\t\tvar message = this.defaultMessage( element, rule );\n\n\t\t\tthis.errorList.push( {\n\t\t\t\tmessage: message,\n\t\t\t\telement: element,\n\t\t\t\tmethod: rule.method\n\t\t\t} );\n\n\t\t\tthis.errorMap[ element.name ] = message;\n\t\t\tthis.submitted[ element.name ] = message;\n\t\t},\n\n\t\taddWrapper: function( toToggle ) {\n\t\t\tif ( this.settings.wrapper ) {\n\t\t\t\ttoToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );\n\t\t\t}\n\t\t\treturn toToggle;\n\t\t},\n\n\t\tdefaultShowErrors: function() {\n\t\t\tvar i, elements, error;\n\t\t\tfor ( i = 0; this.errorList[ i ]; i++ ) {\n\t\t\t\terror = this.errorList[ i ];\n\t\t\t\tif ( this.settings.highlight ) {\n\t\t\t\t\tthis.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.showLabel( error.element, error.message );\n\t\t\t}\n\t\t\tif ( this.errorList.length ) {\n\t\t\t\tthis.toShow = this.toShow.add( this.containers );\n\t\t\t}\n\t\t\tif ( this.settings.success ) {\n\t\t\t\tfor ( i = 0; this.successList[ i ]; i++ ) {\n\t\t\t\t\tthis.showLabel( this.successList[ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toHide = this.toHide.not( this.toShow );\n\t\t\tthis.hideErrors();\n\t\t\tthis.addWrapper( this.toShow ).show();\n\t\t},\n\n\t\tvalidElements: function() {\n\t\t\treturn this.currentElements.not( this.invalidElements() );\n\t\t},\n\n\t\tinvalidElements: function() {\n\t\t\treturn $( this.errorList ).map( function() {\n\t\t\t\treturn this.element;\n\t\t\t} );\n\t\t},\n\n\t\tshowLabel: function( element, message ) {\n\t\t\tvar place, group, errorID, v,\n\t\t\t\terror = this.errorsFor( element ),\n\t\t\t\telementID = this.idOrName( element ),\n\t\t\t\tdescribedBy = $( element ).attr( \"aria-describedby\" );\n\n\t\t\tif ( error.length ) {\n\n\t\t\t\t// Refresh error/success class\n\t\t\t\terror.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );\n\n\t\t\t\t// Replace message on existing label\n\t\t\t\terror.html( message );\n\t\t\t} else {\n\n\t\t\t\t// Create error element\n\t\t\t\terror = $( \"<\" + this.settings.errorElement + \">\" )\n\t\t\t\t\t.attr( \"id\", elementID + \"-error\" )\n\t\t\t\t\t.addClass( this.settings.errorClass )\n\t\t\t\t\t.html( message || \"\" );\n\n\t\t\t\t// Maintain reference to the element to be placed into the DOM\n\t\t\t\tplace = error;\n\t\t\t\tif ( this.settings.wrapper ) {\n\n\t\t\t\t\t// Make sure the element is visible, even in IE\n\t\t\t\t\t// actually showing the wrapped element is handled elsewhere\n\t\t\t\t\tplace = error.hide().show().wrap( \"<\" + this.settings.wrapper + \"/>\" ).parent();\n\t\t\t\t}\n\t\t\t\tif ( this.labelContainer.length ) {\n\t\t\t\t\tthis.labelContainer.append( place );\n\t\t\t\t} else if ( this.settings.errorPlacement ) {\n\t\t\t\t\tthis.settings.errorPlacement.call( this, place, $( element ) );\n\t\t\t\t} else {\n\t\t\t\t\tplace.insertAfter( element );\n\t\t\t\t}\n\n\t\t\t\t// Link error back to the element\n\t\t\t\tif ( error.is( \"label\" ) ) {\n\n\t\t\t\t\t// If the error is a label, then associate using 'for'\n\t\t\t\t\terror.attr( \"for\", elementID );\n\n\t\t\t\t\t// If the element is not a child of an associated label, then it's necessary\n\t\t\t\t\t// to explicitly apply aria-describedby\n\t\t\t\t} else if ( error.parents( \"label[for='\" + this.escapeCssMeta( elementID ) + \"']\" ).length === 0 ) {\n\t\t\t\t\terrorID = error.attr( \"id\" );\n\n\t\t\t\t\t// Respect existing non-error aria-describedby\n\t\t\t\t\tif ( !describedBy ) {\n\t\t\t\t\t\tdescribedBy = errorID;\n\t\t\t\t\t} else if ( !describedBy.match( new RegExp( \"\\\\b\" + this.escapeCssMeta( errorID ) + \"\\\\b\" ) ) ) {\n\n\t\t\t\t\t\t// Add to end of list if not already present\n\t\t\t\t\t\tdescribedBy += \" \" + errorID;\n\t\t\t\t\t}\n\t\t\t\t\t$( element ).attr( \"aria-describedby\", describedBy );\n\n\t\t\t\t\t// If this element is grouped, then assign to all elements in the same group\n\t\t\t\t\tgroup = this.groups[ element.name ];\n\t\t\t\t\tif ( group ) {\n\t\t\t\t\t\tv = this;\n\t\t\t\t\t\t$.each( v.groups, function( name, testgroup ) {\n\t\t\t\t\t\t\tif ( testgroup === group ) {\n\t\t\t\t\t\t\t\t$( \"[name='\" + v.escapeCssMeta( name ) + \"']\", v.currentForm )\n\t\t\t\t\t\t\t\t\t.attr( \"aria-describedby\", error.attr( \"id\" ) );\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\tif ( !message && this.settings.success ) {\n\t\t\t\terror.text( \"\" );\n\t\t\t\tif ( typeof this.settings.success === \"string\" ) {\n\t\t\t\t\terror.addClass( this.settings.success );\n\t\t\t\t} else {\n\t\t\t\t\tthis.settings.success( error, element );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toShow = this.toShow.add( error );\n\t\t},\n\n\t\terrorsFor: function( element ) {\n\t\t\tvar name = this.escapeCssMeta( this.idOrName( element ) ),\n\t\t\t\tdescriber = $( element ).attr( \"aria-describedby\" ),\n\t\t\t\tselector = \"label[for='\" + name + \"'], label[for='\" + name + \"'] *\";\n\n\t\t\t// 'aria-describedby' should directly reference the error element\n\t\t\tif ( describer ) {\n\t\t\t\tselector = selector + \", #\" + this.escapeCssMeta( describer )\n\t\t\t\t\t.replace( /\\s+/g, \", #\" );\n\t\t\t}\n\n\t\t\treturn this\n\t\t\t\t.errors()\n\t\t\t\t.filter( selector );\n\t\t},\n\n\t\t// See https://api.jquery.com/category/selectors/, for CSS\n\t\t// meta-characters that should be escaped in order to be used with JQuery\n\t\t// as a literal part of a name/id or any selector.\n\t\tescapeCssMeta: function( string ) {\n\t\t\treturn string.replace( /([\\\\!\"#$%&'()*+,./:;<=>?@\\[\\]^`{|}~])/g, \"\\\\$1\" );\n\t\t},\n\n\t\tidOrName: function( element ) {\n\t\t\treturn this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );\n\t\t},\n\n\t\tvalidationTargetFor: function( element ) {\n\n\t\t\t// If radio/checkbox, validate first element in group instead\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\telement = this.findByName( element.name );\n\t\t\t}\n\n\t\t\t// Always apply ignore filter\n\t\t\treturn $( element ).not( this.settings.ignore )[ 0 ];\n\t\t},\n\n\t\tcheckable: function( element ) {\n\t\t\treturn ( /radio|checkbox/i ).test( element.type );\n\t\t},\n\n\t\tfindByName: function( name ) {\n\t\t\treturn $( this.currentForm ).find( \"[name='\" + this.escapeCssMeta( name ) + \"']\" );\n\t\t},\n\n\t\tgetLength: function( value, element ) {\n\t\t\tswitch ( element.nodeName.toLowerCase() ) {\n\t\t\tcase \"select\":\n\t\t\t\treturn $( \"option:selected\", element ).length;\n\t\t\tcase \"input\":\n\t\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).length;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn value.length;\n\t\t},\n\n\t\tdepend: function( param, element ) {\n\t\t\treturn this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true;\n\t\t},\n\n\t\tdependTypes: {\n\t\t\t\"boolean\": function( param ) {\n\t\t\t\treturn param;\n\t\t\t},\n\t\t\t\"string\": function( param, element ) {\n\t\t\t\treturn !!$( param, element.form ).length;\n\t\t\t},\n\t\t\t\"function\": function( param, element ) {\n\t\t\t\treturn param( element );\n\t\t\t}\n\t\t},\n\n\t\toptional: function( element ) {\n\t\t\tvar val = this.elementValue( element );\n\t\t\treturn !$.validator.methods.required.call( this, val, element ) && \"dependency-mismatch\";\n\t\t},\n\n\t\tstartRequest: function( element ) {\n\t\t\tif ( !this.pending[ element.name ] ) {\n\t\t\t\tthis.pendingRequest++;\n\t\t\t\t$( element ).addClass( this.settings.pendingClass );\n\t\t\t\tthis.pending[ element.name ] = true;\n\t\t\t}\n\t\t},\n\n\t\tstopRequest: function( element, valid ) {\n\t\t\tthis.pendingRequest--;\n\n\t\t\t// Sometimes synchronization fails, make sure pendingRequest is never < 0\n\t\t\tif ( this.pendingRequest < 0 ) {\n\t\t\t\tthis.pendingRequest = 0;\n\t\t\t}\n\t\t\tdelete this.pending[ element.name ];\n\t\t\t$( element ).removeClass( this.settings.pendingClass );\n\t\t\tif ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {\n\t\t\t\t$( this.currentForm ).submit();\n\n\t\t\t\t// Remove the hidden input that was used as a replacement for the\n\t\t\t\t// missing submit button. The hidden input is added by `handle()`\n\t\t\t\t// to ensure that the value of the used submit button is passed on\n\t\t\t\t// for scripted submits triggered by this method\n\t\t\t\tif ( this.submitButton ) {\n\t\t\t\t\t$( \"input:hidden[name='\" + this.submitButton.name + \"']\", this.currentForm ).remove();\n\t\t\t\t}\n\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t} else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t}\n\t\t},\n\n\t\tpreviousValue: function( element, method ) {\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\treturn $.data( element, \"previousValue\" ) || $.data( element, \"previousValue\", {\n\t\t\t\told: null,\n\t\t\t\tvalid: true,\n\t\t\t\tmessage: this.defaultMessage( element, { method: method } )\n\t\t\t} );\n\t\t},\n\n\t\t// Cleans up all forms and elements, removes validator-specific events\n\t\tdestroy: function() {\n\t\t\tthis.resetForm();\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.off( \".validate\" )\n\t\t\t\t.removeData( \"validator\" )\n\t\t\t\t.find( \".validate-equalTo-blur\" )\n\t\t\t\t\t.off( \".validate-equalTo\" )\n\t\t\t\t\t.removeClass( \"validate-equalTo-blur\" )\n\t\t\t\t.find( \".validate-lessThan-blur\" )\n\t\t\t\t\t.off( \".validate-lessThan\" )\n\t\t\t\t\t.removeClass( \"validate-lessThan-blur\" )\n\t\t\t\t.find( \".validate-lessThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-lessThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-lessThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThan-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThan\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThan-blur\" );\n\t\t}\n\n\t},\n\n\tclassRuleSettings: {\n\t\trequired: { required: true },\n\t\temail: { email: true },\n\t\turl: { url: true },\n\t\tdate: { date: true },\n\t\tdateISO: { dateISO: true },\n\t\tnumber: { number: true },\n\t\tdigits: { digits: true },\n\t\tcreditcard: { creditcard: true }\n\t},\n\n\taddClassRules: function( className, rules ) {\n\t\tif ( className.constructor === String ) {\n\t\t\tthis.classRuleSettings[ className ] = rules;\n\t\t} else {\n\t\t\t$.extend( this.classRuleSettings, className );\n\t\t}\n\t},\n\n\tclassRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tclasses = $( element ).attr( \"class\" );\n\n\t\tif ( classes ) {\n\t\t\t$.each( classes.split( \" \" ), function() {\n\t\t\t\tif ( this in $.validator.classRuleSettings ) {\n\t\t\t\t\t$.extend( rules, $.validator.classRuleSettings[ this ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeAttributeRule: function( rules, type, method, value ) {\n\n\t\t// Convert the value to a number for number inputs, and for text for backwards compability\n\t\t// allows type=\"date\" and others to be compared as strings\n\t\tif ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {\n\t\t\tvalue = Number( value );\n\n\t\t\t// Support Opera Mini, which returns NaN for undefined minlength\n\t\t\tif ( isNaN( value ) ) {\n\t\t\t\tvalue = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( value || value === 0 ) {\n\t\t\trules[ method ] = value;\n\t\t} else if ( type === method && type !== \"range\" ) {\n\n\t\t\t// Exception: the jquery validate 'range' method\n\t\t\t// does not test for the html5 'range' type\n\t\t\trules[ method ] = true;\n\t\t}\n\t},\n\n\tattributeRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\n\t\t\t// Support for <input required> in both html5 and older browsers\n\t\t\tif ( method === \"required\" ) {\n\t\t\t\tvalue = element.getAttribute( method );\n\n\t\t\t\t// Some browsers return an empty string for the required attribute\n\t\t\t\t// and non-HTML5 browsers might have required=\"\" markup\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\tvalue = true;\n\t\t\t\t}\n\n\t\t\t\t// Force non-HTML5 browsers to return bool\n\t\t\t\tvalue = !!value;\n\t\t\t} else {\n\t\t\t\tvalue = $element.attr( method );\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\n\t\t// 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs\n\t\tif ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {\n\t\t\tdelete rules.maxlength;\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\tdataRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\t\t\tvalue = $element.data( \"rule\" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );\n\n\t\t\t// Cast empty attributes like `data-rule-required` to `true`\n\t\t\tif ( value === \"\" ) {\n\t\t\t\tvalue = true;\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tstaticRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tvalidator = $.data( element.form, \"validator\" );\n\n\t\tif ( validator.settings.rules ) {\n\t\t\trules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeRules: function( rules, element ) {\n\n\t\t// Handle dependency check\n\t\t$.each( rules, function( prop, val ) {\n\n\t\t\t// Ignore rule when param is explicitly false, eg. required:false\n\t\t\tif ( val === false ) {\n\t\t\t\tdelete rules[ prop ];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( val.param || val.depends ) {\n\t\t\t\tvar keepRule = true;\n\t\t\t\tswitch ( typeof val.depends ) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tkeepRule = !!$( val.depends, element.form ).length;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"function\":\n\t\t\t\t\tkeepRule = val.depends.call( element, element );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( keepRule ) {\n\t\t\t\t\trules[ prop ] = val.param !== undefined ? val.param : true;\n\t\t\t\t} else {\n\t\t\t\t\t$.data( element.form, \"validator\" ).resetElements( $( element ) );\n\t\t\t\t\tdelete rules[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// Evaluate parameters\n\t\t$.each( rules, function( rule, parameter ) {\n\t\t\trules[ rule ] = $.isFunction( parameter ) && rule !== \"normalizer\" ? parameter( element ) : parameter;\n\t\t} );\n\n\t\t// Clean number parameters\n\t\t$.each( [ \"minlength\", \"maxlength\" ], function() {\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\trules[ this ] = Number( rules[ this ] );\n\t\t\t}\n\t\t} );\n\t\t$.each( [ \"rangelength\", \"range\" ], function() {\n\t\t\tvar parts;\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\tif ( $.isArray( rules[ this ] ) ) {\n\t\t\t\t\trules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ];\n\t\t\t\t} else if ( typeof rules[ this ] === \"string\" ) {\n\t\t\t\t\tparts = rules[ this ].replace( /[\\[\\]]/g, \"\" ).split( /[\\s,]+/ );\n\t\t\t\t\trules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\tif ( $.validator.autoCreateRanges ) {\n\n\t\t\t// Auto-create ranges\n\t\t\tif ( rules.min != null && rules.max != null ) {\n\t\t\t\trules.range = [ rules.min, rules.max ];\n\t\t\t\tdelete rules.min;\n\t\t\t\tdelete rules.max;\n\t\t\t}\n\t\t\tif ( rules.minlength != null && rules.maxlength != null ) {\n\t\t\t\trules.rangelength = [ rules.minlength, rules.maxlength ];\n\t\t\t\tdelete rules.minlength;\n\t\t\t\tdelete rules.maxlength;\n\t\t\t}\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\t// Converts a simple string to a {string: true} rule, e.g., \"required\" to {required:true}\n\tnormalizeRule: function( data ) {\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tvar transformed = {};\n\t\t\t$.each( data.split( /\\s/ ), function() {\n\t\t\t\ttransformed[ this ] = true;\n\t\t\t} );\n\t\t\tdata = transformed;\n\t\t}\n\t\treturn data;\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.addMethod/\n\taddMethod: function( name, method, message ) {\n\t\t$.validator.methods[ name ] = method;\n\t\t$.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];\n\t\tif ( method.length < 3 ) {\n\t\t\t$.validator.addClassRules( name, $.validator.normalizeRule( name ) );\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.methods/\n\tmethods: {\n\n\t\t// https://jqueryvalidation.org/required-method/\n\t\trequired: function( value, element, param ) {\n\n\t\t\t// Check if dependency is met\n\t\t\tif ( !this.depend( param, element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\t\t\tif ( element.nodeName.toLowerCase() === \"select\" ) {\n\n\t\t\t\t// Could be an array for select-multiple or a string, both are fine this way\n\t\t\t\tvar val = $( element ).val();\n\t\t\t\treturn val && val.length > 0;\n\t\t\t}\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\treturn this.getLength( value, element ) > 0;\n\t\t\t}\n\t\t\treturn value !== undefined && value !== null && value.length > 0;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/email-method/\n\t\temail: function( value, element ) {\n\n\t\t\t// From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address\n\t\t\t// Retrieved 2014-01-14\n\t\t\t// If you have a problem with this implementation, report a bug against the above spec\n\t\t\t// Or use custom methods to implement your own email validation\n\t\t\treturn this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/url-method/\n\t\turl: function( value, element ) {\n\n\t\t\t// Copyright (c) 2010-2013 Diego Perini, MIT licensed\n\t\t\t// https://gist.github.com/dperini/729294\n\t\t\t// see also https://mathiasbynens.be/demo/url-regex\n\t\t\t// modified to allow protocol-relative URLs\n\t\t\treturn this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})).?)(?::\\d{2,5})?(?:[/?#]\\S*)?$/i.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/date-method/\n\t\tdate: ( function() {\n\t\t\tvar called = false;\n\n\t\t\treturn function( value, element ) {\n\t\t\t\tif ( !called ) {\n\t\t\t\t\tcalled = true;\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t\"The `date` method is deprecated and will be removed in version '2.0.0'.\\n\" +\n\t\t\t\t\t\t\t\"Please don't use it, since it relies on the Date constructor, which\\n\" +\n\t\t\t\t\t\t\t\"behaves very differently across browsers and locales. Use `dateISO`\\n\" +\n\t\t\t\t\t\t\t\"instead or one of the locale specific methods in `localizations/`\\n\" +\n\t\t\t\t\t\t\t\"and `additional-methods.js`.\"\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );\n\t\t\t};\n\t\t}() ),\n\n\t\t// https://jqueryvalidation.org/dateISO-method/\n\t\tdateISO: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/number-method/\n\t\tnumber: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^(?:-?\\d+|-?\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/digits-method/\n\t\tdigits: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d+$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/minlength-method/\n\t\tminlength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/maxlength-method/\n\t\tmaxlength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/rangelength-method/\n\t\trangelength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/min-method/\n\t\tmin: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/max-method/\n\t\tmax: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/range-method/\n\t\trange: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/step-method/\n\t\tstep: function( value, element, param ) {\n\t\t\tvar type = $( element ).attr( \"type\" ),\n\t\t\t\terrorMessage = \"Step attribute on input type \" + type + \" is not supported.\",\n\t\t\t\tsupportedTypes = [ \"text\", \"number\", \"range\" ],\n\t\t\t\tre = new RegExp( \"\\\\b\" + type + \"\\\\b\" ),\n\t\t\t\tnotSupported = type && !re.test( supportedTypes.join() ),\n\t\t\t\tdecimalPlaces = function( num ) {\n\t\t\t\t\tvar match = ( \"\" + num ).match( /(?:\\.(\\d+))?$/ );\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Number of digits right of decimal point.\n\t\t\t\t\treturn match[ 1 ] ? match[ 1 ].length : 0;\n\t\t\t\t},\n\t\t\t\ttoInt = function( num ) {\n\t\t\t\t\treturn Math.round( num * Math.pow( 10, decimals ) );\n\t\t\t\t},\n\t\t\t\tvalid = true,\n\t\t\t\tdecimals;\n\n\t\t\t// Works only for text, number and range input types\n\t\t\t// TODO find a way to support input types date, datetime, datetime-local, month, time and week\n\t\t\tif ( notSupported ) {\n\t\t\t\tthrow new Error( errorMessage );\n\t\t\t}\n\n\t\t\tdecimals = decimalPlaces( param );\n\n\t\t\t// Value can't have too many decimals\n\t\t\tif ( decimalPlaces( value ) > decimals || toInt( value ) % toInt( param ) !== 0 ) {\n\t\t\t\tvalid = false;\n\t\t\t}\n\n\t\t\treturn this.optional( element ) || valid;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/equalTo-method/\n\t\tequalTo: function( value, element, param ) {\n\n\t\t\t// Bind to the blur event of the target in order to revalidate whenever the target field is updated\n\t\t\tvar target = $( param );\n\t\t\tif ( this.settings.onfocusout && target.not( \".validate-equalTo-blur\" ).length ) {\n\t\t\t\ttarget.addClass( \"validate-equalTo-blur\" ).on( \"blur.validate-equalTo\", function() {\n\t\t\t\t\t$( element ).valid();\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn value === target.val();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/remote-method/\n\t\tremote: function( value, element, param, method ) {\n\t\t\tif ( this.optional( element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\tvar previous = this.previousValue( element, method ),\n\t\t\t\tvalidator, data, optionDataString;\n\n\t\t\tif ( !this.settings.messages[ element.name ] ) {\n\t\t\t\tthis.settings.messages[ element.name ] = {};\n\t\t\t}\n\t\t\tprevious.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];\n\t\t\tthis.settings.messages[ element.name ][ method ] = previous.message;\n\n\t\t\tparam = typeof param === \"string\" && { url: param } || param;\n\t\t\toptionDataString = $.param( $.extend( { data: value }, param.data ) );\n\t\t\tif ( previous.old === optionDataString ) {\n\t\t\t\treturn previous.valid;\n\t\t\t}\n\n\t\t\tprevious.old = optionDataString;\n\t\t\tvalidator = this;\n\t\t\tthis.startRequest( element );\n\t\t\tdata = {};\n\t\t\tdata[ element.name ] = value;\n\t\t\t$.ajax( $.extend( true, {\n\t\t\t\tmode: \"abort\",\n\t\t\t\tport: \"validate\" + element.name,\n\t\t\t\tdataType: \"json\",\n\t\t\t\tdata: data,\n\t\t\t\tcontext: validator.currentForm,\n\t\t\t\tsuccess: function( response ) {\n\t\t\t\t\tvar valid = response === true || response === \"true\",\n\t\t\t\t\t\terrors, message, submitted;\n\n\t\t\t\t\tvalidator.settings.messages[ element.name ][ method ] = previous.originalMessage;\n\t\t\t\t\tif ( valid ) {\n\t\t\t\t\t\tsubmitted = validator.formSubmitted;\n\t\t\t\t\t\tvalidator.resetInternals();\n\t\t\t\t\t\tvalidator.toHide = validator.errorsFor( element );\n\t\t\t\t\t\tvalidator.formSubmitted = submitted;\n\t\t\t\t\t\tvalidator.successList.push( element );\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = false;\n\t\t\t\t\t\tvalidator.showErrors();\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrors = {};\n\t\t\t\t\t\tmessage = response || validator.defaultMessage( element, { method: method, parameters: value } );\n\t\t\t\t\t\terrors[ element.name ] = previous.message = message;\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = true;\n\t\t\t\t\t\tvalidator.showErrors( errors );\n\t\t\t\t\t}\n\t\t\t\t\tprevious.valid = valid;\n\t\t\t\t\tvalidator.stopRequest( element, valid );\n\t\t\t\t}\n\t\t\t}, param ) );\n\t\t\treturn \"pending\";\n\t\t}\n\t}\n\n} );\n\r\n// Ajax mode: abort\n// usage: $.ajax({ mode: \"abort\"[, port: \"uniqueport\"]});\n// if mode:\"abort\" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()\n\nvar pendingRequests = {},\n\tajax;\n\n// Use a prefilter if available (1.5+)\nif ( $.ajaxPrefilter ) {\n\t$.ajaxPrefilter( function( settings, _, xhr ) {\n\t\tvar port = settings.port;\n\t\tif ( settings.mode === \"abort\" ) {\n\t\t\tif ( pendingRequests[ port ] ) {\n\t\t\t\tpendingRequests[ port ].abort();\n\t\t\t}\n\t\t\tpendingRequests[ port ] = xhr;\n\t\t}\n\t} );\n} else {\n\n\t// Proxy ajax\n\tajax = $.ajax;\n\t$.ajax = function( settings ) {\n\t\tvar mode = ( \"mode\" in settings ? settings : $.ajaxSettings ).mode,\n\t\t\tport = ( \"port\" in settings ? settings : $.ajaxSettings ).port;\n\t\tif ( mode === \"abort\" ) {\n\t\t\tif ( pendingRequests[ port ] ) {\n\t\t\t\tpendingRequests[ port ].abort();\n\t\t\t}\n\t\t\tpendingRequests[ port ] = ajax.apply( this, arguments );\n\t\t\treturn pendingRequests[ port ];\n\t\t}\n\t\treturn ajax.apply( this, arguments );\n\t};\n}\nreturn $;\r\n}));","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n  var integer = toInteger(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var $ = require('../internals/export');\nvar parseIntImplementation = require('../internals/number-parse-int');\n\n// `parseInt` method\n// https://tc39.github.io/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt != parseIntImplementation }, {\n  parseInt: parseIntImplementation\n});\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n  var C;\n  if (isArray(originalArray)) {\n    C = originalArray.constructor;\n    // cross-realm fallback\n    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n    else if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar regexpExec = require('../internals/regexp-exec');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  // #replace needs built-in support for named groups.\n  // #match works fine because it just return the exec results, even if it has\n  // a \"grops\" property.\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  return ''.replace(re, '$<a>') !== '7';\n});\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n  return 'a'.replace(/./, '$0') === '$0';\n})();\n\nvar REPLACE = wellKnownSymbol('replace');\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n  if (/./[REPLACE]) {\n    return /./[REPLACE]('a', '$0') === '';\n  }\n  return false;\n})();\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n  var SYMBOL = wellKnownSymbol(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegEp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) != 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n\n    if (KEY === 'split') {\n      // We can't use real regex here since it causes deoptimization\n      // and serious performance degradation in V8\n      // https://github.com/zloirock/core-js/issues/306\n      re = {};\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES] = function () { return re; };\n      re.flags = '';\n      re[SYMBOL] = /./[SYMBOL];\n    }\n\n    re.exec = function () { execCalled = true; return null; };\n\n    re[SYMBOL]('');\n    return !execCalled;\n  });\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    (KEY === 'replace' && !(\n      REPLACE_SUPPORTS_NAMED_GROUPS &&\n      REPLACE_KEEPS_$0 &&\n      !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n    )) ||\n    (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n  ) {\n    var nativeRegExpMethod = /./[SYMBOL];\n    var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n      if (regexp.exec === regexpExec) {\n        if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n          // The native String method already delegates to @@method (this\n          // polyfilled function), leasing to infinite recursion.\n          // We avoid it by directly calling the native @@method method.\n          return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n        }\n        return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n      }\n      return { done: false };\n    }, {\n      REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,\n      REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n    });\n    var stringMethod = methods[0];\n    var regexMethod = methods[1];\n\n    redefine(String.prototype, KEY, stringMethod);\n    redefine(RegExp.prototype, SYMBOL, length == 2\n      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n      // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n      ? function (string, arg) { return regexMethod.call(string, this, arg); }\n      // 21.2.5.6 RegExp.prototype[@@match](string)\n      // 21.2.5.9 RegExp.prototype[@@search](string)\n      : function (string) { return regexMethod.call(string, this); }\n    );\n  }\n\n  if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n};\n","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (typeof exec === 'function') {\n    var result = exec.call(R, S);\n    if (typeof result !== 'object') {\n      throw TypeError('RegExp exec method returned something other than an Object or null');\n    }\n    return result;\n  }\n\n  if (classof(R) !== 'RegExp') {\n    throw TypeError('RegExp#exec called on incompatible receiver');\n  }\n\n  return regexpExec.call(R, S);\n};\n\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n  assign: assign\n});\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: '3.6.4',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n  try {\n    createNonEnumerableProperty(global, key, value);\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n  return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  // Chrome 38 Symbol has incorrect toString conversion\n  // eslint-disable-next-line no-undef\n  return !String(Symbol());\n});\n","// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n  store.inspectSource = function (it) {\n    return functionToString.call(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n","'use strict';\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n","exports.f = Object.getOwnPropertySymbols;\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  version = match[0] + match[1];\n} else if (userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = match[1];\n  }\n}\n\nmodule.exports = version && +version;\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.dotAll) result += 's';\n  if (that.unicode) result += 'u';\n  if (that.sticky) result += 'y';\n  return result;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n  join: function join(separator) {\n    return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('splice', { ACCESSORS: true, 0: 0, 1: 2 });\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n  splice: function splice(start, deleteCount /* , ...items */) {\n    var O = toObject(this);\n    var len = toLength(O.length);\n    var actualStart = toAbsoluteIndex(start, len);\n    var argumentsLength = arguments.length;\n    var insertCount, actualDeleteCount, A, k, from, to;\n    if (argumentsLength === 0) {\n      insertCount = actualDeleteCount = 0;\n    } else if (argumentsLength === 1) {\n      insertCount = 0;\n      actualDeleteCount = len - actualStart;\n    } else {\n      insertCount = argumentsLength - 2;\n      actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n    }\n    if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n      throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n    }\n    A = arraySpeciesCreate(O, actualDeleteCount);\n    for (k = 0; k < actualDeleteCount; k++) {\n      from = actualStart + k;\n      if (from in O) createProperty(A, k, O[from]);\n    }\n    A.length = actualDeleteCount;\n    if (insertCount < actualDeleteCount) {\n      for (k = actualStart; k < len - actualDeleteCount; k++) {\n        from = k + actualDeleteCount;\n        to = k + insertCount;\n        if (from in O) O[to] = O[from];\n        else delete O[to];\n      }\n      for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n    } else if (insertCount > actualDeleteCount) {\n      for (k = len - actualDeleteCount; k > actualStart; k--) {\n        from = k + actualDeleteCount - 1;\n        to = k + insertCount - 1;\n        if (from in O) O[to] = O[from];\n        else delete O[to];\n      }\n    }\n    for (k = 0; k < insertCount; k++) {\n      O[k + actualStart] = arguments[k + 2];\n    }\n    O.length = len - actualDeleteCount + insertCount;\n    return A;\n  }\n});\n","// Unobtrusive validation support library for jQuery and jQuery Validate\n// Copyright (c) .NET Foundation. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\n// @version v3.2.11\n\n/*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */\n/*global document: false, jQuery: false */\n\n(function (factory) {\n    if (typeof define === 'function' && define.amd) {\n        // AMD. Register as an anonymous module.\n        define(\"jquery.validate.unobtrusive\", ['jquery-validation'], factory);\n    } else if (typeof module === 'object' && module.exports) {\n        // CommonJS-like environments that support module.exports     \n        module.exports = factory(require('jquery-validation'));\n    } else {\n        // Browser global\n        jQuery.validator.unobtrusive = factory(jQuery);\n    }\n}(function ($) {\n    var $jQval = $.validator,\n        adapters,\n        data_validation = \"unobtrusiveValidation\";\n\n    function setValidationValues(options, ruleName, value) {\n        options.rules[ruleName] = value;\n        if (options.message) {\n            options.messages[ruleName] = options.message;\n        }\n    }\n\n    function splitAndTrim(value) {\n        return value.replace(/^\\s+|\\s+$/g, \"\").split(/\\s*,\\s*/g);\n    }\n\n    function escapeAttributeValue(value) {\n        // As mentioned on http://api.jquery.com/category/selectors/\n        return value.replace(/([!\"#$%&'()*+,./:;<=>?@\\[\\\\\\]^`{|}~])/g, \"\\\\$1\");\n    }\n\n    function getModelPrefix(fieldName) {\n        return fieldName.substr(0, fieldName.lastIndexOf(\".\") + 1);\n    }\n\n    function appendModelPrefix(value, prefix) {\n        if (value.indexOf(\"*.\") === 0) {\n            value = value.replace(\"*.\", prefix);\n        }\n        return value;\n    }\n\n    function onError(error, inputElement) {  // 'this' is the form element\n        var container = $(this).find(\"[data-valmsg-for='\" + escapeAttributeValue(inputElement[0].name) + \"']\"),\n            replaceAttrValue = container.attr(\"data-valmsg-replace\"),\n            replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) !== false : null;\n\n        container.removeClass(\"field-validation-valid\").addClass(\"field-validation-error\");\n        error.data(\"unobtrusiveContainer\", container);\n\n        if (replace) {\n            container.empty();\n            error.removeClass(\"input-validation-error\").appendTo(container);\n        }\n        else {\n            error.hide();\n        }\n    }\n\n    function onErrors(event, validator) {  // 'this' is the form element\n        var container = $(this).find(\"[data-valmsg-summary=true]\"),\n            list = container.find(\"ul\");\n\n        if (list && list.length && validator.errorList.length) {\n            list.empty();\n            container.addClass(\"validation-summary-errors\").removeClass(\"validation-summary-valid\");\n\n            $.each(validator.errorList, function () {\n                $(\"<li />\").html(this.message).appendTo(list);\n            });\n        }\n    }\n\n    function onSuccess(error) {  // 'this' is the form element\n        var container = error.data(\"unobtrusiveContainer\");\n\n        if (container) {\n            var replaceAttrValue = container.attr(\"data-valmsg-replace\"),\n                replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) : null;\n\n            container.addClass(\"field-validation-valid\").removeClass(\"field-validation-error\");\n            error.removeData(\"unobtrusiveContainer\");\n\n            if (replace) {\n                container.empty();\n            }\n        }\n    }\n\n    function onReset(event) {  // 'this' is the form element\n        var $form = $(this),\n            key = '__jquery_unobtrusive_validation_form_reset';\n        if ($form.data(key)) {\n            return;\n        }\n        // Set a flag that indicates we're currently resetting the form.\n        $form.data(key, true);\n        try {\n            $form.data(\"validator\").resetForm();\n        } finally {\n            $form.removeData(key);\n        }\n\n        $form.find(\".validation-summary-errors\")\n            .addClass(\"validation-summary-valid\")\n            .removeClass(\"validation-summary-errors\");\n        $form.find(\".field-validation-error\")\n            .addClass(\"field-validation-valid\")\n            .removeClass(\"field-validation-error\")\n            .removeData(\"unobtrusiveContainer\")\n            .find(\">*\")  // If we were using valmsg-replace, get the underlying error\n            .removeData(\"unobtrusiveContainer\");\n    }\n\n    function validationInfo(form) {\n        var $form = $(form),\n            result = $form.data(data_validation),\n            onResetProxy = $.proxy(onReset, form),\n            defaultOptions = $jQval.unobtrusive.options || {},\n            execInContext = function (name, args) {\n                var func = defaultOptions[name];\n                func && $.isFunction(func) && func.apply(form, args);\n            };\n\n        if (!result) {\n            result = {\n                options: {  // options structure passed to jQuery Validate's validate() method\n                    errorClass: defaultOptions.errorClass || \"input-validation-error\",\n                    errorElement: defaultOptions.errorElement || \"span\",\n                    errorPlacement: function () {\n                        onError.apply(form, arguments);\n                        execInContext(\"errorPlacement\", arguments);\n                    },\n                    invalidHandler: function () {\n                        onErrors.apply(form, arguments);\n                        execInContext(\"invalidHandler\", arguments);\n                    },\n                    messages: {},\n                    rules: {},\n                    success: function () {\n                        onSuccess.apply(form, arguments);\n                        execInContext(\"success\", arguments);\n                    }\n                },\n                attachValidation: function () {\n                    $form\n                        .off(\"reset.\" + data_validation, onResetProxy)\n                        .on(\"reset.\" + data_validation, onResetProxy)\n                        .validate(this.options);\n                },\n                validate: function () {  // a validation function that is called by unobtrusive Ajax\n                    $form.validate();\n                    return $form.valid();\n                }\n            };\n            $form.data(data_validation, result);\n        }\n\n        return result;\n    }\n\n    $jQval.unobtrusive = {\n        adapters: [],\n\n        parseElement: function (element, skipAttach) {\n            /// <summary>\n            /// Parses a single HTML element for unobtrusive validation attributes.\n            /// </summary>\n            /// <param name=\"element\" domElement=\"true\">The HTML element to be parsed.</param>\n            /// <param name=\"skipAttach\" type=\"Boolean\">[Optional] true to skip attaching the\n            /// validation to the form. If parsing just this single element, you should specify true.\n            /// If parsing several elements, you should specify false, and manually attach the validation\n            /// to the form when you are finished. The default is false.</param>\n            var $element = $(element),\n                form = $element.parents(\"form\")[0],\n                valInfo, rules, messages;\n\n            if (!form) {  // Cannot do client-side validation without a form\n                return;\n            }\n\n            valInfo = validationInfo(form);\n            valInfo.options.rules[element.name] = rules = {};\n            valInfo.options.messages[element.name] = messages = {};\n\n            $.each(this.adapters, function () {\n                var prefix = \"data-val-\" + this.name,\n                    message = $element.attr(prefix),\n                    paramValues = {};\n\n                if (message !== undefined) {  // Compare against undefined, because an empty message is legal (and falsy)\n                    prefix += \"-\";\n\n                    $.each(this.params, function () {\n                        paramValues[this] = $element.attr(prefix + this);\n                    });\n\n                    this.adapt({\n                        element: element,\n                        form: form,\n                        message: message,\n                        params: paramValues,\n                        rules: rules,\n                        messages: messages\n                    });\n                }\n            });\n\n            $.extend(rules, { \"__dummy__\": true });\n\n            if (!skipAttach) {\n                valInfo.attachValidation();\n            }\n        },\n\n        parse: function (selector) {\n            /// <summary>\n            /// Parses all the HTML elements in the specified selector. It looks for input elements decorated\n            /// with the [data-val=true] attribute value and enables validation according to the data-val-*\n            /// attribute values.\n            /// </summary>\n            /// <param name=\"selector\" type=\"String\">Any valid jQuery selector.</param>\n\n            // $forms includes all forms in selector's DOM hierarchy (parent, children and self) that have at least one\n            // element with data-val=true\n            var $selector = $(selector),\n                $forms = $selector.parents()\n                    .addBack()\n                    .filter(\"form\")\n                    .add($selector.find(\"form\"))\n                    .has(\"[data-val=true]\");\n\n            $selector.find(\"[data-val=true]\").each(function () {\n                $jQval.unobtrusive.parseElement(this, true);\n            });\n\n            $forms.each(function () {\n                var info = validationInfo(this);\n                if (info) {\n                    info.attachValidation();\n                }\n            });\n        }\n    };\n\n    adapters = $jQval.unobtrusive.adapters;\n\n    adapters.add = function (adapterName, params, fn) {\n        /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation.</summary>\n        /// <param name=\"adapterName\" type=\"String\">The name of the adapter to be added. This matches the name used\n        /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).</param>\n        /// <param name=\"params\" type=\"Array\" optional=\"true\">[Optional] An array of parameter names (strings) that will\n        /// be extracted from the data-val-nnnn-mmmm HTML attributes (where nnnn is the adapter name, and\n        /// mmmm is the parameter name).</param>\n        /// <param name=\"fn\" type=\"Function\">The function to call, which adapts the values from the HTML\n        /// attributes into jQuery Validate rules and/or messages.</param>\n        /// <returns type=\"jQuery.validator.unobtrusive.adapters\" />\n        if (!fn) {  // Called with no params, just a function\n            fn = params;\n            params = [];\n        }\n        this.push({ name: adapterName, params: params, adapt: fn });\n        return this;\n    };\n\n    adapters.addBool = function (adapterName, ruleName) {\n        /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\n        /// the jQuery Validate validation rule has no parameter values.</summary>\n        /// <param name=\"adapterName\" type=\"String\">The name of the adapter to be added. This matches the name used\n        /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).</param>\n        /// <param name=\"ruleName\" type=\"String\" optional=\"true\">[Optional] The name of the jQuery Validate rule. If not provided, the value\n        /// of adapterName will be used instead.</param>\n        /// <returns type=\"jQuery.validator.unobtrusive.adapters\" />\n        return this.add(adapterName, function (options) {\n            setValidationValues(options, ruleName || adapterName, true);\n        });\n    };\n\n    adapters.addMinMax = function (adapterName, minRuleName, maxRuleName, minMaxRuleName, minAttribute, maxAttribute) {\n        /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\n        /// the jQuery Validate validation has three potential rules (one for min-only, one for max-only, and\n        /// one for min-and-max). The HTML parameters are expected to be named -min and -max.</summary>\n        /// <param name=\"adapterName\" type=\"String\">The name of the adapter to be added. This matches the name used\n        /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).</param>\n        /// <param name=\"minRuleName\" type=\"String\">The name of the jQuery Validate rule to be used when you only\n        /// have a minimum value.</param>\n        /// <param name=\"maxRuleName\" type=\"String\">The name of the jQuery Validate rule to be used when you only\n        /// have a maximum value.</param>\n        /// <param name=\"minMaxRuleName\" type=\"String\">The name of the jQuery Validate rule to be used when you\n        /// have both a minimum and maximum value.</param>\n        /// <param name=\"minAttribute\" type=\"String\" optional=\"true\">[Optional] The name of the HTML attribute that\n        /// contains the minimum value. The default is \"min\".</param>\n        /// <param name=\"maxAttribute\" type=\"String\" optional=\"true\">[Optional] The name of the HTML attribute that\n        /// contains the maximum value. The default is \"max\".</param>\n        /// <returns type=\"jQuery.validator.unobtrusive.adapters\" />\n        return this.add(adapterName, [minAttribute || \"min\", maxAttribute || \"max\"], function (options) {\n            var min = options.params.min,\n                max = options.params.max;\n\n            if (min && max) {\n                setValidationValues(options, minMaxRuleName, [min, max]);\n            }\n            else if (min) {\n                setValidationValues(options, minRuleName, min);\n            }\n            else if (max) {\n                setValidationValues(options, maxRuleName, max);\n            }\n        });\n    };\n\n    adapters.addSingleVal = function (adapterName, attribute, ruleName) {\n        /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\n        /// the jQuery Validate validation rule has a single value.</summary>\n        /// <param name=\"adapterName\" type=\"String\">The name of the adapter to be added. This matches the name used\n        /// in the data-val-nnnn HTML attribute(where nnnn is the adapter name).</param>\n        /// <param name=\"attribute\" type=\"String\">[Optional] The name of the HTML attribute that contains the value.\n        /// The default is \"val\".</param>\n        /// <param name=\"ruleName\" type=\"String\" optional=\"true\">[Optional] The name of the jQuery Validate rule. If not provided, the value\n        /// of adapterName will be used instead.</param>\n        /// <returns type=\"jQuery.validator.unobtrusive.adapters\" />\n        return this.add(adapterName, [attribute || \"val\"], function (options) {\n            setValidationValues(options, ruleName || adapterName, options.params[attribute]);\n        });\n    };\n\n    $jQval.addMethod(\"__dummy__\", function (value, element, params) {\n        return true;\n    });\n\n    $jQval.addMethod(\"regex\", function (value, element, params) {\n        var match;\n        if (this.optional(element)) {\n            return true;\n        }\n\n        match = new RegExp(params).exec(value);\n        return (match && (match.index === 0) && (match[0].length === value.length));\n    });\n\n    $jQval.addMethod(\"nonalphamin\", function (value, element, nonalphamin) {\n        var match;\n        if (nonalphamin) {\n            match = value.match(/\\W/g);\n            match = match && match.length >= nonalphamin;\n        }\n        return match;\n    });\n\n    if ($jQval.methods.extension) {\n        adapters.addSingleVal(\"accept\", \"mimtype\");\n        adapters.addSingleVal(\"extension\", \"extension\");\n    } else {\n        // for backward compatibility, when the 'extension' validation method does not exist, such as with versions\n        // of JQuery Validation plugin prior to 1.10, we should use the 'accept' method for\n        // validating the extension, and ignore mime-type validations as they are not supported.\n        adapters.addSingleVal(\"extension\", \"extension\", \"accept\");\n    }\n\n    adapters.addSingleVal(\"regex\", \"pattern\");\n    adapters.addBool(\"creditcard\").addBool(\"date\").addBool(\"digits\").addBool(\"email\").addBool(\"number\").addBool(\"url\");\n    adapters.addMinMax(\"length\", \"minlength\", \"maxlength\", \"rangelength\").addMinMax(\"range\", \"min\", \"max\", \"range\");\n    adapters.addMinMax(\"minlength\", \"minlength\").addMinMax(\"maxlength\", \"minlength\", \"maxlength\");\n    adapters.add(\"equalto\", [\"other\"], function (options) {\n        var prefix = getModelPrefix(options.element.name),\n            other = options.params.other,\n            fullOtherName = appendModelPrefix(other, prefix),\n            element = $(options.form).find(\":input\").filter(\"[name='\" + escapeAttributeValue(fullOtherName) + \"']\")[0];\n\n        setValidationValues(options, \"equalTo\", element);\n    });\n    adapters.add(\"required\", function (options) {\n        // jQuery Validate equates \"required\" with \"mandatory\" for checkbox elements\n        if (options.element.tagName.toUpperCase() !== \"INPUT\" || options.element.type.toUpperCase() !== \"CHECKBOX\") {\n            setValidationValues(options, \"required\", true);\n        }\n    });\n    adapters.add(\"remote\", [\"url\", \"type\", \"additionalfields\"], function (options) {\n        var value = {\n            url: options.params.url,\n            type: options.params.type || \"GET\",\n            data: {}\n        },\n            prefix = getModelPrefix(options.element.name);\n\n        $.each(splitAndTrim(options.params.additionalfields || options.element.name), function (i, fieldName) {\n            var paramName = appendModelPrefix(fieldName, prefix);\n            value.data[paramName] = function () {\n                var field = $(options.form).find(\":input\").filter(\"[name='\" + escapeAttributeValue(paramName) + \"']\");\n                // For checkboxes and radio buttons, only pick up values from checked fields.\n                if (field.is(\":checkbox\")) {\n                    return field.filter(\":checked\").val() || field.filter(\":hidden\").val() || '';\n                }\n                else if (field.is(\":radio\")) {\n                    return field.filter(\":checked\").val() || '';\n                }\n                return field.val();\n            };\n        });\n\n        setValidationValues(options, \"remote\", value);\n    });\n    adapters.add(\"password\", [\"min\", \"nonalphamin\", \"regex\"], function (options) {\n        if (options.params.min) {\n            setValidationValues(options, \"minlength\", options.params.min);\n        }\n        if (options.params.nonalphamin) {\n            setValidationValues(options, \"nonalphamin\", options.params.nonalphamin);\n        }\n        if (options.params.regex) {\n            setValidationValues(options, \"regex\", options.params.regex);\n        }\n    });\n    adapters.add(\"fileextensions\", [\"extensions\"], function (options) {\n        setValidationValues(options, \"extension\", options.params.extensions);\n    });\n\n    $(function () {\n        $jQval.unobtrusive.parse(document);\n    });\n\n    return $jQval.unobtrusive;\n}));\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n  definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n    configurable: true,\n    value: create(null)\n  });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n  ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n  var O, tag, result;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n    // builtinTag case\n    : CORRECT_ARGUMENTS ? classofRaw(O)\n    // ES3 arguments fallback\n    : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? charAt(S, index).length : 1);\n};\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.github.io/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","var path = require('../internals/path');\nvar has = require('../internals/has');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n  var Symbol = path.Symbol || (path.Symbol = {});\n  if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n    value: wrappedWellKnownSymbolModule.f(NAME)\n  });\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a != 7;\n});\n","var NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n  // eslint-disable-next-line no-undef\n  && !Symbol.sham\n  // eslint-disable-next-line no-undef\n  && typeof Symbol.iterator == 'symbol';\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~indexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n  var keys = ownKeys(source);\n  var defineProperty = definePropertyModule.f;\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n  }\n};\n","'use strict';\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n  arrayIterator = [].keys();\n  // Safari 8 has buggy iterators w/o `next`\n  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n  else {\n    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n  }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {\n  createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n  IteratorPrototype: IteratorPrototype,\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectPrototype : null;\n};\n","var anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n  var CORRECT_SETTER = false;\n  var test = {};\n  var setter;\n  try {\n    setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n    setter.call(test, []);\n    CORRECT_SETTER = test instanceof Array;\n  } catch (error) { /* empty */ }\n  return function setPrototypeOf(O, proto) {\n    anObject(O);\n    aPossiblePrototype(proto);\n    if (CORRECT_SETTER) setter.call(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n  var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n  var defineProperty = definePropertyModule.f;\n\n  if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n    defineProperty(Constructor, SPECIES, {\n      configurable: true,\n      get: function () { return this; }\n    });\n  }\n};\n","var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.github.io/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\nvar bind = require('../internals/function-bind-context');\nvar html = require('../internals/html');\nvar createElement = require('../internals/document-create-element');\nvar IS_IOS = require('../internals/engine-is-ios');\n\nvar location = global.location;\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\n\nvar run = function (id) {\n  // eslint-disable-next-line no-prototype-builtins\n  if (queue.hasOwnProperty(id)) {\n    var fn = queue[id];\n    delete queue[id];\n    fn();\n  }\n};\n\nvar runner = function (id) {\n  return function () {\n    run(id);\n  };\n};\n\nvar listener = function (event) {\n  run(event.data);\n};\n\nvar post = function (id) {\n  // old engines have not location.origin\n  global.postMessage(id + '', location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n  set = function setImmediate(fn) {\n    var args = [];\n    var i = 1;\n    while (arguments.length > i) args.push(arguments[i++]);\n    queue[++counter] = function () {\n      // eslint-disable-next-line no-new-func\n      (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n    };\n    defer(counter);\n    return counter;\n  };\n  clear = function clearImmediate(id) {\n    delete queue[id];\n  };\n  // Node.js 0.8-\n  if (classof(process) == 'process') {\n    defer = function (id) {\n      process.nextTick(runner(id));\n    };\n  // Sphere (JS game engine) Dispatch API\n  } else if (Dispatch && Dispatch.now) {\n    defer = function (id) {\n      Dispatch.now(runner(id));\n    };\n  // Browsers with MessageChannel, includes WebWorkers\n  // except iOS - https://github.com/zloirock/core-js/issues/624\n  } else if (MessageChannel && !IS_IOS) {\n    channel = new MessageChannel();\n    port = channel.port2;\n    channel.port1.onmessage = listener;\n    defer = bind(port.postMessage, port, 1);\n  // Browsers with postMessage, skip WebWorkers\n  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n  } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts && !fails(post)) {\n    defer = post;\n    global.addEventListener('message', listener, false);\n  // IE8-\n  } else if (ONREADYSTATECHANGE in createElement('script')) {\n    defer = function (id) {\n      html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n        html.removeChild(this);\n        run(id);\n      };\n    };\n  // Rest old browsers\n  } else {\n    defer = function (id) {\n      setTimeout(runner(id), 0);\n    };\n  }\n}\n\nmodule.exports = {\n  set: set,\n  clear: clear\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(iphone|ipod|ipad).*applewebkit/i.test(userAgent);\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","'use strict';\nvar aFunction = require('../internals/a-function');\n\nvar PromiseCapability = function (C) {\n  var resolve, reject;\n  this.promise = new C(function ($$resolve, $$reject) {\n    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n    resolve = $$resolve;\n    reject = $$reject;\n  });\n  this.resolve = aFunction(resolve);\n  this.reject = aFunction(reject);\n};\n\n// 25.4.1.5 NewPromiseCapability(C)\nmodule.exports.f = function (C) {\n  return new PromiseCapability(C);\n};\n","'use strict';\n\nvar fails = require('./fails');\n\n// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,\n// so we use an intermediate function.\nfunction RE(s, f) {\n  return RegExp(s, f);\n}\n\nexports.UNSUPPORTED_Y = fails(function () {\n  // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\n  var re = RE('a', 'y');\n  re.lastIndex = 2;\n  return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n  // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n  var re = RE('^r', 'gy');\n  re.lastIndex = 2;\n  return re.exec('str') != null;\n});\n","/*** IMPORTS FROM imports-loader ***/\n(function() {\n\n/*! elementQuery | Author: Tyson Matanich (http://matanich.com), 2013 | License: MIT */\n(function (window, document, undefined) {\n    // Enable strict mode\n    \"use strict\";\n\n    // Use Sizzle standalone or from jQuery\n    var sizzle = window.Sizzle || jQuery.find;\n\n    // Set the number of sizzle selectors to cache (default is 50)\n    //sizzle.selectors.cacheLength = 50;\n\n    var queryData = {};\n\n    var cssRules = null;\n\n    var setCssRules = function () {\n        if (document.styleSheets[0]) {\n            cssRules = (document.styleSheets[0].cssRules !== undefined) ? \"cssRules\" : \"rules\";\n        }\n    }\n\n    var addQueryDataValue = function (selector, type, pair, number, value) {\n\n        selector = trim(selector);\n\n        if (selector != \"\") {\n            var parts;\n            if (!number && !value) {\n                parts = /^([0-9]*.?[0-9]+)(px|em)$/.exec(pair)\n                if (parts != null) {\n                    number = Number(parts[1]);\n                    if (number + \"\" != \"NaN\") {\n                        value = parts[2];\n                    }\n                }\n            }\n\n            if (value) {\n                // Compile the sizzle selector\n                if (sizzle.compile) {\n                    sizzle.compile(selector);\n                }\n\n                // Update the queryData object\n                if (queryData[selector] === undefined) {\n                    queryData[selector] = {};\n                }\n                if (queryData[selector][type] === undefined) {\n                    queryData[selector][type] = {};\n                }\n                queryData[selector][type][pair] = [number, value];\n            }\n        }\n    };\n\n    var updateQueryData = function (data, doUpdate) {\n\n        var i, j, k;\n        for (i in data) {\n            for (j in data[i]) {\n                if (typeof data[i][j] == \"string\") {\n                    addQueryDataValue(i, j, data[i][j]);\n                }\n                else if (typeof data[i][j] == \"object\") {\n                    for (k = 0; k < data[i][j].length; k++) {\n                        addQueryDataValue(i, j, data[i][j][k]);\n                    }\n                }\n            }\n        }\n\n        if (doUpdate == true) {\n            refresh();\n        }\n    };\n\n    var processSelector = function (selectorText) {\n\n        if (selectorText) {\n\n            var regex = /(\\[(min\\-width|max\\-width|min\\-height|max\\-height)\\~\\=(\\'|\\\")([0-9]*.?[0-9]+)(px|em)(\\'|\\\")\\])(\\[(min\\-width|max\\-width|min\\-height|max\\-height)\\~\\=(\\'|\\\")([0-9]*.?[0-9]+)(px|em)(\\'|\\\")\\])?/gi;\n\n            // Split out the full selectors separated by a comma ','\n            var selectors = selectorText.split(\",\");\n            var i, selector, result, number, prevIndex, k, tail, t;\n            for (i = 0; i < selectors.length; i++) {\n\n                selector = null;\n                prevIndex = 0;\n                k = 0;\n                while (k == 0 || result != null) {\n                    result = regex.exec(selectors[i]);\n                    if (result != null) {\n\n                        // result[2] = min-width|max-width|min-height|max-height\n                        // result[4] = number\n                        // result[5] = px|em\n                        // result[7] = has another\n\n                        // Ensure that it contains a valid numeric value to compare against\n                        number = Number(result[4]);\n                        if (number + \"\" != \"NaN\") {\n\n                            if (selector == null) {\n                                // New set: update the current selector\n                                selector = selectors[i].substring(prevIndex, result.index);\n\n                                // Append second half of the selector\n                                tail = selectors[i].substring(result.index + result[1].length);\n                                if (tail.length > 0) {\n                                    \n                                    t = tail.indexOf(\" \");\n                                    if (t != 0) {\n                                        if (t > 0) {\n                                            // Take only the current part\n                                            tail = tail.substring(0, t);\n                                        }\n\n                                        // Remove any sibling element queries\n                                        tail = tail.replace(/(\\[(min\\-width|max\\-width|min\\-height|max\\-height)\\~\\=(\\'|\\\")([0-9]*.?[0-9]+)(px|em)(\\'|\\\")\\])/gi, \"\");\n                                        selector += tail;\n                                    }\n                                }\n                            }\n\n                            // Update the queryData object\n                            addQueryDataValue(selector, result[2], result[4] + result[5], number, result[5]);\n                        }\n\n                        if (result[7] === undefined || result[7] == \"\") {\n                            // Reached the end of the set\n                            prevIndex = result.index + result[1].length;\n                            selector = null;\n                        }\n                        else {\n                            // Update result index to process next item in the set\n                            regex.lastIndex = result.index + result[1].length;\n                        }\n                    }\n                    k++;\n                }\n            }\n        }\n    };\n\n    var processStyleSheet = function (styleSheet, force) {\n        \n        if (cssRules == null) {\n            setCssRules();\n        }\n        if (styleSheet[cssRules] && styleSheet[cssRules].length > 0) {\n\n            var ownerNode = styleSheet.ownerNode || styleSheet.owningElement;\n            if (force || (ownerNode.getAttribute(\"data-elementquery-bypass\") === null && ownerNode.getAttribute(\"data-elementquery-processed\") === null)) {\n\n                var i, j, rule;\n\n                for (i = 0; i < styleSheet[cssRules].length; i++) {\n                    rule = styleSheet[cssRules][i];\n\n                    // Check nested rules in media queries etc\n                    if (rule[cssRules] && rule[cssRules].length > 0) {\n                        for (j = 0; j < rule[cssRules].length; j++) {\n                            processSelector(rule[cssRules][j].selectorText);\n                        }\n                    }\n                    else {\n                        processSelector(rule.selectorText);\n                    }\n                }\n\n                // Flag the style sheet as processed\n                ownerNode.setAttribute(\"data-elementquery-processed\", \"\");\n            }\n        }\n    };\n\n    // Refactor from jQuery.trim()\n    var trim = function (text) {\n        if (text == null) {\n            return \"\";\n        }\n        else {\n            var core_trim = \"\".trim;\n            if (core_trim && !core_trim.call(\"\\uFEFF\\xA0\")) {\n                return core_trim.call(text);\n            }\n            else {\n                return (text + \"\").replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, \"\");\n            }\n        }\n    };\n\n    // Refactor from jquery().addClass() and jquery().removeClass()\n    var clean = function (element, attr) {\n        // This expression is here for better compressibility\n        var val = element.getAttribute(attr);\n        return val ? (\" \" + val + \" \").replace(/[\\t\\r\\n]/g, \" \") : \" \";\n    };\n\n    // Refactor from jquery().addClass()\n    var addTo = function (element, attr, value) {\n\n        if (element.nodeType === 1) {\n            var val = trim(value);\n            if (val != \"\") {\n                var cur = clean(element, attr);\n                \n                if (cur.indexOf(\" \" + val + \" \") < 0) {\n                    // Add the value if its not already there\n                    element.setAttribute(attr, trim(cur + val));\n                }\n            }\n        }\n    };\n\n    // Refactor from jquery().removeClass()\n    var removeFrom = function (element, attr, value) {\n\n        if (element.nodeType === 1) {\n            var val = trim(value);\n            if (val != \"\") {\n                var cur = clean(element, attr);\n                var updated = false;\n                while (cur.indexOf(\" \" + val + \" \") >= 0) {\n                    // Remove the value\n                    cur = cur.replace(\" \" + val + \" \", \" \");\n                    updated = true;\n                }\n                if (updated) {\n                    // Update the attribute\n                    element.setAttribute(attr, trim(cur));\n                }\n            }\n        }\n    };\n\n    var init = function () {\n\n        // Process the style sheets\n        var i;\n        for (i = 0; i < document.styleSheets.length; i++) {\n            processStyleSheet(document.styleSheets[i]);\n        }\n\n        refresh();\n    }\n\n    var refresh = function () {\n\n        var i, ei, j, k, elements, element, val;\n\n        // For each selector\n        for (i in queryData) {\n\n            // Get the items matching the selector\n            elements = sizzle(i);\n\n            if (elements.length > 0) {\n\n                // For each matching element\n                for (ei = 0; ei < elements.length; ei++) {\n                    element = elements[ei];\n\n                    // For each min|max-width|height string\n                    for (j in queryData[i]) {\n\n                        // For each number px|em value pair\n                        for (k in queryData[i][j]) {\n\n                            val = queryData[i][j][k][0];\n\n                            if (queryData[i][j][k][1] == \"em\") {\n                                // Convert EMs to pixels\n                                val = val * (window.getEmPixels ? getEmPixels(element) : 16); // NOTE: Using getEmPixels() has a small performance impact\n                            }\n\n                            /* NOTE: Using offsetWidth/Height so an element can be adjusted when it reaches a specific size.\n                            /* For Nested queries scrollWidth/Height or clientWidth/Height may sometime be desired but are not supported. */\n\n                            if ((j == \"min-width\" && element.offsetWidth >= val) ||\n                                (j == \"max-width\" && element.offsetWidth <= val) ||\n                                (j == \"min-height\" && element.offsetHeight >= val) ||\n                                (j == \"max-height\" && element.offsetHeight <= val)) {\n                                // Add matching attr value\n                                addTo(element, j, k);\n                            }\n                            else {\n                                // Remove non-matching attr value\n                                removeFrom(element, j, k);\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n        if (!window.addEventListener && window.attachEvent) {\n            // Force a repaint in IE7 and IE8\n            var className = document.documentElement.className;\n            document.documentElement.className = \" \" + className;\n            document.documentElement.className = className;\n        }\n    }\n\n    // Expose some public functions\n    window.elementQuery = function (arg1, arg2) {\n\n        if (arg1 && typeof arg1 == \"object\") {\n            if (arg1.cssRules || arg1.rules) {\n                // Process a new style sheet\n                processStyleSheet(arg1, true);\n\n                if (arg2 == true) {\n                    refresh();\n                }\n            } else {\n                // Add new selector queries\n                updateQueryData(arg1, arg2);\n            }\n        }\n        else if (!arg1 && !arg2) {\n            refresh();\n        }\n    };\n\n    //NOTE: For development purposes only!\n    window.elementQuery.selectors = function () {\n\n        var data = {};\n        var i, j, k;\n\n        // For each selector\n        for (i in queryData) {\n\n            // For each min|max-width|height string\n            for (j in queryData[i]) {\n\n                // For each number px|em value pair\n                for (k in queryData[i][j]) {\n\n                    if (data[i] === undefined) {\n                        data[i] = {};\n                    }\n                    if (data[i][j] === undefined) {\n                        data[i][j] = [];\n                    }\n                    data[i][j][data[i][j].length] = k;\n                }\n            }\n        }\n        return data;\n    };\n\n    if (window.addEventListener) {\n        window.addEventListener(\"resize\", refresh, false);\n        window.addEventListener(\"DOMContentLoaded\", init, false);\n        window.addEventListener(\"load\", init, false);\n    }\n    else if (window.attachEvent) {\n        window.attachEvent(\"onresize\", refresh);\n        window.attachEvent(\"onload\", init);\n    }\n}(this, document, undefined));\n\n/*! getEmPixels  | Author: Tyson Matanich (http://matanich.com), 2013 | License: MIT */\n(function (document, documentElement) {\n    // Enable strict mode\n    \"use strict\";\n\n    // Form the style on the fly to result in smaller minified file\n    var important = \"!important;\";\n    var style = \"position:absolute\" + important + \"visibility:hidden\" + important + \"width:1em\" + important + \"font-size:1em\" + important + \"padding:0\" + important;\n\n    window.getEmPixels = function (element) {\n\n        var extraBody;\n\n        if (!element) {\n            // Emulate the documentElement to get rem value (documentElement does not work in IE6-7)\n            element = extraBody = document.createElement(\"body\");\n            extraBody.style.cssText = \"font-size:1em\" + important;\n            documentElement.insertBefore(extraBody, document.body);\n        }\n\n        // Create and style a test element\n        var testElement = document.createElement(\"i\");\n        testElement.style.cssText = style;\n        element.appendChild(testElement);\n\n        // Get the client width of the test element\n        var value = testElement.clientWidth;\n\n        if (extraBody) {\n            // Remove the extra body element\n            documentElement.removeChild(extraBody);\n        }\n        else {\n            // Remove the test element\n            element.removeChild(testElement);\n        }\n\n        // Return the em value in pixels\n        return value;\n    };\n}(document, document.documentElement));\n}.call(window));","// ==================================================\n// fancyBox v3.5.7\n//\n// Licensed GPLv3 for open source use\n// or fancyBox Commercial License for commercial use\n//\n// http://fancyapps.com/fancybox/\n// Copyright 2019 fancyApps\n//\n// ==================================================\n(function (window, document, $, undefined) {\r\n  \"use strict\";\r\n\r\n  window.console = window.console || {\r\n    info: function (stuff) {}\r\n  };\r\n\r\n  // If there's no jQuery, fancyBox can't work\r\n  // =========================================\r\n\r\n  if (!$) {\r\n    return;\r\n  }\r\n\r\n  // Check if fancyBox is already initialized\r\n  // ========================================\r\n\r\n  if ($.fn.fancybox) {\r\n    console.info(\"fancyBox already initialized\");\r\n\r\n    return;\r\n  }\r\n\r\n  // Private default settings\r\n  // ========================\r\n\r\n  var defaults = {\r\n    // Close existing modals\r\n    // Set this to false if you do not need to stack multiple instances\r\n    closeExisting: false,\r\n\r\n    // Enable infinite gallery navigation\r\n    loop: false,\r\n\r\n    // Horizontal space between slides\r\n    gutter: 50,\r\n\r\n    // Enable keyboard navigation\r\n    keyboard: true,\r\n\r\n    // Should allow caption to overlap the content\r\n    preventCaptionOverlap: true,\r\n\r\n    // Should display navigation arrows at the screen edges\r\n    arrows: true,\r\n\r\n    // Should display counter at the top left corner\r\n    infobar: true,\r\n\r\n    // Should display close button (using `btnTpl.smallBtn` template) over the content\r\n    // Can be true, false, \"auto\"\r\n    // If \"auto\" - will be automatically enabled for \"html\", \"inline\" or \"ajax\" items\r\n    smallBtn: \"auto\",\r\n\r\n    // Should display toolbar (buttons at the top)\r\n    // Can be true, false, \"auto\"\r\n    // If \"auto\" - will be automatically hidden if \"smallBtn\" is enabled\r\n    toolbar: \"auto\",\r\n\r\n    // What buttons should appear in the top right corner.\r\n    // Buttons will be created using templates from `btnTpl` option\r\n    // and they will be placed into toolbar (class=\"fancybox-toolbar\"` element)\r\n    buttons: [\r\n      \"zoom\",\r\n      //\"share\",\r\n      \"slideShow\",\r\n      //\"fullScreen\",\r\n      //\"download\",\r\n      \"thumbs\",\r\n      \"close\"\r\n    ],\r\n\r\n    // Detect \"idle\" time in seconds\r\n    idleTime: 3,\r\n\r\n    // Disable right-click and use simple image protection for images\r\n    protect: false,\r\n\r\n    // Shortcut to make content \"modal\" - disable keyboard navigtion, hide buttons, etc\r\n    modal: false,\r\n\r\n    image: {\r\n      // Wait for images to load before displaying\r\n      //   true  - wait for image to load and then display;\r\n      //   false - display thumbnail and load the full-sized image over top,\r\n      //           requires predefined image dimensions (`data-width` and `data-height` attributes)\r\n      preload: false\r\n    },\r\n\r\n    ajax: {\r\n      // Object containing settings for ajax request\r\n      settings: {\r\n        // This helps to indicate that request comes from the modal\r\n        // Feel free to change naming\r\n        data: {\r\n          fancybox: true\r\n        }\r\n      }\r\n    },\r\n\r\n    iframe: {\r\n      // Iframe template\r\n      tpl: '<iframe id=\"fancybox-frame{rnd}\" name=\"fancybox-frame{rnd}\" class=\"fancybox-iframe\" allowfullscreen=\"allowfullscreen\" allow=\"autoplay; fullscreen\" src=\"\"></iframe>',\r\n\r\n      // Preload iframe before displaying it\r\n      // This allows to calculate iframe content width and height\r\n      // (note: Due to \"Same Origin Policy\", you can't get cross domain data).\r\n      preload: true,\r\n\r\n      // Custom CSS styling for iframe wrapping element\r\n      // You can use this to set custom iframe dimensions\r\n      css: {},\r\n\r\n      // Iframe tag attributes\r\n      attr: {\r\n        scrolling: \"auto\"\r\n      }\r\n    },\r\n\r\n    // For HTML5 video only\r\n    video: {\r\n      tpl: '<video class=\"fancybox-video\" controls controlsList=\"nodownload\" poster=\"{{poster}}\">' +\r\n        '<source src=\"{{src}}\" type=\"{{format}}\" />' +\r\n        'Sorry, your browser doesn\\'t support embedded videos, <a href=\"{{src}}\">download</a> and watch with your favorite video player!' +\r\n        \"</video>\",\r\n      format: \"\", // custom video format\r\n      autoStart: true\r\n    },\r\n\r\n    // Default content type if cannot be detected automatically\r\n    defaultType: \"image\",\r\n\r\n    // Open/close animation type\r\n    // Possible values:\r\n    //   false            - disable\r\n    //   \"zoom\"           - zoom images from/to thumbnail\r\n    //   \"fade\"\r\n    //   \"zoom-in-out\"\r\n    //\r\n    animationEffect: \"zoom\",\r\n\r\n    // Duration in ms for open/close animation\r\n    animationDuration: 366,\r\n\r\n    // Should image change opacity while zooming\r\n    // If opacity is \"auto\", then opacity will be changed if image and thumbnail have different aspect ratios\r\n    zoomOpacity: \"auto\",\r\n\r\n    // Transition effect between slides\r\n    //\r\n    // Possible values:\r\n    //   false            - disable\r\n    //   \"fade'\r\n    //   \"slide'\r\n    //   \"circular'\r\n    //   \"tube'\r\n    //   \"zoom-in-out'\r\n    //   \"rotate'\r\n    //\r\n    transitionEffect: \"fade\",\r\n\r\n    // Duration in ms for transition animation\r\n    transitionDuration: 366,\r\n\r\n    // Custom CSS class for slide element\r\n    slideClass: \"\",\r\n\r\n    // Custom CSS class for layout\r\n    baseClass: \"\",\r\n\r\n    // Base template for layout\r\n    baseTpl: '<div class=\"fancybox-container\" role=\"dialog\" tabindex=\"-1\">' +\r\n      '<div class=\"fancybox-bg\"></div>' +\r\n      '<div class=\"fancybox-inner\">' +\r\n      '<div class=\"fancybox-infobar\"><span data-fancybox-index></span>&nbsp;/&nbsp;<span data-fancybox-count></span></div>' +\r\n      '<div class=\"fancybox-toolbar\">{{buttons}}</div>' +\r\n      '<div class=\"fancybox-navigation\">{{arrows}}</div>' +\r\n      '<div class=\"fancybox-stage\"></div>' +\r\n      '<div class=\"fancybox-caption\"><div class=\"fancybox-caption__body\"></div></div>' +\r\n      \"</div>\" +\r\n      \"</div>\",\r\n\r\n    // Loading indicator template\r\n    spinnerTpl: '<div class=\"fancybox-loading\"></div>',\r\n\r\n    // Error message template\r\n    errorTpl: '<div class=\"fancybox-error\"><p>{{ERROR}}</p></div>',\r\n\r\n    btnTpl: {\r\n      download: '<a download data-fancybox-download class=\"fancybox-button fancybox-button--download\" title=\"{{DOWNLOAD}}\" href=\"javascript:;\">' +\r\n        '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M18.62 17.09V19H5.38v-1.91zm-2.97-6.96L17 11.45l-5 4.87-5-4.87 1.36-1.32 2.68 2.64V5h1.92v7.77z\"/></svg>' +\r\n        \"</a>\",\r\n\r\n      zoom: '<button data-fancybox-zoom class=\"fancybox-button fancybox-button--zoom\" title=\"{{ZOOM}}\">' +\r\n        '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M18.7 17.3l-3-3a5.9 5.9 0 0 0-.6-7.6 5.9 5.9 0 0 0-8.4 0 5.9 5.9 0 0 0 0 8.4 5.9 5.9 0 0 0 7.7.7l3 3a1 1 0 0 0 1.3 0c.4-.5.4-1 0-1.5zM8.1 13.8a4 4 0 0 1 0-5.7 4 4 0 0 1 5.7 0 4 4 0 0 1 0 5.7 4 4 0 0 1-5.7 0z\"/></svg>' +\r\n        \"</button>\",\r\n\r\n      close: '<button data-fancybox-close class=\"fancybox-button fancybox-button--close\" title=\"{{CLOSE}}\">' +\r\n        '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M12 10.6L6.6 5.2 5.2 6.6l5.4 5.4-5.4 5.4 1.4 1.4 5.4-5.4 5.4 5.4 1.4-1.4-5.4-5.4 5.4-5.4-1.4-1.4-5.4 5.4z\"/></svg>' +\r\n        \"</button>\",\r\n\r\n      // Arrows\r\n      arrowLeft: '<button data-fancybox-prev class=\"fancybox-button fancybox-button--arrow_left\" title=\"{{PREV}}\">' +\r\n        '<div><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M11.28 15.7l-1.34 1.37L5 12l4.94-5.07 1.34 1.38-2.68 2.72H19v1.94H8.6z\"/></svg></div>' +\r\n        \"</button>\",\r\n\r\n      arrowRight: '<button data-fancybox-next class=\"fancybox-button fancybox-button--arrow_right\" title=\"{{NEXT}}\">' +\r\n        '<div><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M15.4 12.97l-2.68 2.72 1.34 1.38L19 12l-4.94-5.07-1.34 1.38 2.68 2.72H5v1.94z\"/></svg></div>' +\r\n        \"</button>\",\r\n\r\n      // This small close button will be appended to your html/inline/ajax content by default,\r\n      // if \"smallBtn\" option is not set to false\r\n      smallBtn: '<button type=\"button\" data-fancybox-close class=\"fancybox-button fancybox-close-small\" title=\"{{CLOSE}}\">' +\r\n        '<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1\" viewBox=\"0 0 24 24\"><path d=\"M13 12l5-5-1-1-5 5-5-5-1 1 5 5-5 5 1 1 5-5 5 5 1-1z\"/></svg>' +\r\n        \"</button>\"\r\n    },\r\n\r\n    // Container is injected into this element\r\n    parentEl: \"body\",\r\n\r\n    // Hide browser vertical scrollbars; use at your own risk\r\n    hideScrollbar: true,\r\n\r\n    // Focus handling\r\n    // ==============\r\n\r\n    // Try to focus on the first focusable element after opening\r\n    autoFocus: true,\r\n\r\n    // Put focus back to active element after closing\r\n    backFocus: true,\r\n\r\n    // Do not let user to focus on element outside modal content\r\n    trapFocus: true,\r\n\r\n    // Module specific options\r\n    // =======================\r\n\r\n    fullScreen: {\r\n      autoStart: false\r\n    },\r\n\r\n    // Set `touch: false` to disable panning/swiping\r\n    touch: {\r\n      vertical: true, // Allow to drag content vertically\r\n      momentum: true // Continue movement after releasing mouse/touch when panning\r\n    },\r\n\r\n    // Hash value when initializing manually,\r\n    // set `false` to disable hash change\r\n    hash: null,\r\n\r\n    // Customize or add new media types\r\n    // Example:\r\n    /*\r\n      media : {\r\n        youtube : {\r\n          params : {\r\n            autoplay : 0\r\n          }\r\n        }\r\n      }\r\n    */\r\n    media: {},\r\n\r\n    slideShow: {\r\n      autoStart: false,\r\n      speed: 3000\r\n    },\r\n\r\n    thumbs: {\r\n      autoStart: false, // Display thumbnails on opening\r\n      hideOnClose: true, // Hide thumbnail grid when closing animation starts\r\n      parentEl: \".fancybox-container\", // Container is injected into this element\r\n      axis: \"y\" // Vertical (y) or horizontal (x) scrolling\r\n    },\r\n\r\n    // Use mousewheel to navigate gallery\r\n    // If 'auto' - enabled for images only\r\n    wheel: \"auto\",\r\n\r\n    // Callbacks\r\n    //==========\r\n\r\n    // See Documentation/API/Events for more information\r\n    // Example:\r\n    /*\r\n      afterShow: function( instance, current ) {\r\n        console.info( 'Clicked element:' );\r\n        console.info( current.opts.$orig );\r\n      }\r\n    */\r\n\r\n    onInit: $.noop, // When instance has been initialized\r\n\r\n    beforeLoad: $.noop, // Before the content of a slide is being loaded\r\n    afterLoad: $.noop, // When the content of a slide is done loading\r\n\r\n    beforeShow: $.noop, // Before open animation starts\r\n    afterShow: $.noop, // When content is done loading and animating\r\n\r\n    beforeClose: $.noop, // Before the instance attempts to close. Return false to cancel the close.\r\n    afterClose: $.noop, // After instance has been closed\r\n\r\n    onActivate: $.noop, // When instance is brought to front\r\n    onDeactivate: $.noop, // When other instance has been activated\r\n\r\n    // Interaction\r\n    // ===========\r\n\r\n    // Use options below to customize taken action when user clicks or double clicks on the fancyBox area,\r\n    // each option can be string or method that returns value.\r\n    //\r\n    // Possible values:\r\n    //   \"close\"           - close instance\r\n    //   \"next\"            - move to next gallery item\r\n    //   \"nextOrClose\"     - move to next gallery item or close if gallery has only one item\r\n    //   \"toggleControls\"  - show/hide controls\r\n    //   \"zoom\"            - zoom image (if loaded)\r\n    //   false             - do nothing\r\n\r\n    // Clicked on the content\r\n    clickContent: function (current, event) {\r\n      return current.type === \"image\" ? \"zoom\" : false;\r\n    },\r\n\r\n    // Clicked on the slide\r\n    clickSlide: \"close\",\r\n\r\n    // Clicked on the background (backdrop) element;\r\n    // if you have not changed the layout, then most likely you need to use `clickSlide` option\r\n    clickOutside: \"close\",\r\n\r\n    // Same as previous two, but for double click\r\n    dblclickContent: false,\r\n    dblclickSlide: false,\r\n    dblclickOutside: false,\r\n\r\n    // Custom options when mobile device is detected\r\n    // =============================================\r\n\r\n    mobile: {\r\n      preventCaptionOverlap: false,\r\n      idleTime: false,\r\n      clickContent: function (current, event) {\r\n        return current.type === \"image\" ? \"toggleControls\" : false;\r\n      },\r\n      clickSlide: function (current, event) {\r\n        return current.type === \"image\" ? \"toggleControls\" : \"close\";\r\n      },\r\n      dblclickContent: function (current, event) {\r\n        return current.type === \"image\" ? \"zoom\" : false;\r\n      },\r\n      dblclickSlide: function (current, event) {\r\n        return current.type === \"image\" ? \"zoom\" : false;\r\n      }\r\n    },\r\n\r\n    // Internationalization\r\n    // ====================\r\n\r\n    lang: \"en\",\r\n    i18n: {\r\n      en: {\r\n        CLOSE: \"Close\",\r\n        NEXT: \"Next\",\r\n        PREV: \"Previous\",\r\n        ERROR: \"The requested content cannot be loaded. <br/> Please try again later.\",\r\n        PLAY_START: \"Start slideshow\",\r\n        PLAY_STOP: \"Pause slideshow\",\r\n        FULL_SCREEN: \"Full screen\",\r\n        THUMBS: \"Thumbnails\",\r\n        DOWNLOAD: \"Download\",\r\n        SHARE: \"Share\",\r\n        ZOOM: \"Zoom\"\r\n      },\r\n      de: {\r\n        CLOSE: \"Schlie&szlig;en\",\r\n        NEXT: \"Weiter\",\r\n        PREV: \"Zur&uuml;ck\",\r\n        ERROR: \"Die angeforderten Daten konnten nicht geladen werden. <br/> Bitte versuchen Sie es sp&auml;ter nochmal.\",\r\n        PLAY_START: \"Diaschau starten\",\r\n        PLAY_STOP: \"Diaschau beenden\",\r\n        FULL_SCREEN: \"Vollbild\",\r\n        THUMBS: \"Vorschaubilder\",\r\n        DOWNLOAD: \"Herunterladen\",\r\n        SHARE: \"Teilen\",\r\n        ZOOM: \"Vergr&ouml;&szlig;ern\"\r\n      }\r\n    }\r\n  };\r\n\r\n  // Few useful variables and methods\r\n  // ================================\r\n\r\n  var $W = $(window);\r\n  var $D = $(document);\r\n\r\n  var called = 0;\r\n\r\n  // Check if an object is a jQuery object and not a native JavaScript object\r\n  // ========================================================================\r\n  var isQuery = function (obj) {\r\n    return obj && obj.hasOwnProperty && obj instanceof $;\r\n  };\r\n\r\n  // Handle multiple browsers for \"requestAnimationFrame\" and \"cancelAnimationFrame\"\r\n  // ===============================================================================\r\n  var requestAFrame = (function () {\r\n    return (\r\n      window.requestAnimationFrame ||\r\n      window.webkitRequestAnimationFrame ||\r\n      window.mozRequestAnimationFrame ||\r\n      window.oRequestAnimationFrame ||\r\n      // if all else fails, use setTimeout\r\n      function (callback) {\r\n        return window.setTimeout(callback, 1000 / 60);\r\n      }\r\n    );\r\n  })();\r\n\r\n  var cancelAFrame = (function () {\r\n    return (\r\n      window.cancelAnimationFrame ||\r\n      window.webkitCancelAnimationFrame ||\r\n      window.mozCancelAnimationFrame ||\r\n      window.oCancelAnimationFrame ||\r\n      function (id) {\r\n        window.clearTimeout(id);\r\n      }\r\n    );\r\n  })();\r\n\r\n  // Detect the supported transition-end event property name\r\n  // =======================================================\r\n  var transitionEnd = (function () {\r\n    var el = document.createElement(\"fakeelement\"),\r\n      t;\r\n\r\n    var transitions = {\r\n      transition: \"transitionend\",\r\n      OTransition: \"oTransitionEnd\",\r\n      MozTransition: \"transitionend\",\r\n      WebkitTransition: \"webkitTransitionEnd\"\r\n    };\r\n\r\n    for (t in transitions) {\r\n      if (el.style[t] !== undefined) {\r\n        return transitions[t];\r\n      }\r\n    }\r\n\r\n    return \"transitionend\";\r\n  })();\r\n\r\n  // Force redraw on an element.\r\n  // This helps in cases where the browser doesn't redraw an updated element properly\r\n  // ================================================================================\r\n  var forceRedraw = function ($el) {\r\n    return $el && $el.length && $el[0].offsetHeight;\r\n  };\r\n\r\n  // Exclude array (`buttons`) options from deep merging\r\n  // ===================================================\r\n  var mergeOpts = function (opts1, opts2) {\r\n    var rez = $.extend(true, {}, opts1, opts2);\r\n\r\n    $.each(opts2, function (key, value) {\r\n      if ($.isArray(value)) {\r\n        rez[key] = value;\r\n      }\r\n    });\r\n\r\n    return rez;\r\n  };\r\n\r\n  // How much of an element is visible in viewport\r\n  // =============================================\r\n\r\n  var inViewport = function (elem) {\r\n    var elemCenter, rez;\r\n\r\n    if (!elem || elem.ownerDocument !== document) {\r\n      return false;\r\n    }\r\n\r\n    $(\".fancybox-container\").css(\"pointer-events\", \"none\");\r\n\r\n    elemCenter = {\r\n      x: elem.getBoundingClientRect().left + elem.offsetWidth / 2,\r\n      y: elem.getBoundingClientRect().top + elem.offsetHeight / 2\r\n    };\r\n\r\n    rez = document.elementFromPoint(elemCenter.x, elemCenter.y) === elem;\r\n\r\n    $(\".fancybox-container\").css(\"pointer-events\", \"\");\r\n\r\n    return rez;\r\n  };\r\n\r\n  // Class definition\r\n  // ================\r\n\r\n  var FancyBox = function (content, opts, index) {\r\n    var self = this;\r\n\r\n    self.opts = mergeOpts({\r\n      index: index\r\n    }, $.fancybox.defaults);\r\n\r\n    if ($.isPlainObject(opts)) {\r\n      self.opts = mergeOpts(self.opts, opts);\r\n    }\r\n\r\n    if ($.fancybox.isMobile) {\r\n      self.opts = mergeOpts(self.opts, self.opts.mobile);\r\n    }\r\n\r\n    self.id = self.opts.id || ++called;\r\n\r\n    self.currIndex = parseInt(self.opts.index, 10) || 0;\r\n    self.prevIndex = null;\r\n\r\n    self.prevPos = null;\r\n    self.currPos = 0;\r\n\r\n    self.firstRun = true;\r\n\r\n    // All group items\r\n    self.group = [];\r\n\r\n    // Existing slides (for current, next and previous gallery items)\r\n    self.slides = {};\r\n\r\n    // Create group elements\r\n    self.addContent(content);\r\n\r\n    if (!self.group.length) {\r\n      return;\r\n    }\r\n\r\n    self.init();\r\n  };\r\n\r\n  $.extend(FancyBox.prototype, {\r\n    // Create DOM structure\r\n    // ====================\r\n\r\n    init: function () {\r\n      var self = this,\r\n        firstItem = self.group[self.currIndex],\r\n        firstItemOpts = firstItem.opts,\r\n        $container,\r\n        buttonStr;\r\n\r\n      if (firstItemOpts.closeExisting) {\r\n        $.fancybox.close(true);\r\n      }\r\n\r\n      // Hide scrollbars\r\n      // ===============\r\n\r\n      $(\"body\").addClass(\"fancybox-active\");\r\n\r\n      if (\r\n        !$.fancybox.getInstance() &&\r\n        firstItemOpts.hideScrollbar !== false &&\r\n        !$.fancybox.isMobile &&\r\n        document.body.scrollHeight > window.innerHeight\r\n      ) {\r\n        $(\"head\").append(\r\n          '<style id=\"fancybox-style-noscroll\" type=\"text/css\">.compensate-for-scrollbar{margin-right:' +\r\n          (window.innerWidth - document.documentElement.clientWidth) +\r\n          \"px;}</style>\"\r\n        );\r\n\r\n        $(\"body\").addClass(\"compensate-for-scrollbar\");\r\n      }\r\n\r\n      // Build html markup and set references\r\n      // ====================================\r\n\r\n      // Build html code for buttons and insert into main template\r\n      buttonStr = \"\";\r\n\r\n      $.each(firstItemOpts.buttons, function (index, value) {\r\n        buttonStr += firstItemOpts.btnTpl[value] || \"\";\r\n      });\r\n\r\n      // Create markup from base template, it will be initially hidden to\r\n      // avoid unnecessary work like painting while initializing is not complete\r\n      $container = $(\r\n          self.translate(\r\n            self,\r\n            firstItemOpts.baseTpl\r\n            .replace(\"{{buttons}}\", buttonStr)\r\n            .replace(\"{{arrows}}\", firstItemOpts.btnTpl.arrowLeft + firstItemOpts.btnTpl.arrowRight)\r\n          )\r\n        )\r\n        .attr(\"id\", \"fancybox-container-\" + self.id)\r\n        .addClass(firstItemOpts.baseClass)\r\n        .data(\"FancyBox\", self)\r\n        .appendTo(firstItemOpts.parentEl);\r\n\r\n      // Create object holding references to jQuery wrapped nodes\r\n      self.$refs = {\r\n        container: $container\r\n      };\r\n\r\n      [\"bg\", \"inner\", \"infobar\", \"toolbar\", \"stage\", \"caption\", \"navigation\"].forEach(function (item) {\r\n        self.$refs[item] = $container.find(\".fancybox-\" + item);\r\n      });\r\n\r\n      self.trigger(\"onInit\");\r\n\r\n      // Enable events, deactive previous instances\r\n      self.activate();\r\n\r\n      // Build slides, load and reveal content\r\n      self.jumpTo(self.currIndex);\r\n    },\r\n\r\n    // Simple i18n support - replaces object keys found in template\r\n    // with corresponding values\r\n    // ============================================================\r\n\r\n    translate: function (obj, str) {\r\n      var arr = obj.opts.i18n[obj.opts.lang] || obj.opts.i18n.en;\r\n\r\n      return str.replace(/\\{\\{(\\w+)\\}\\}/g, function (match, n) {\r\n        return arr[n] === undefined ? match : arr[n];\r\n      });\r\n    },\r\n\r\n    // Populate current group with fresh content\r\n    // Check if each object has valid type and content\r\n    // ===============================================\r\n\r\n    addContent: function (content) {\r\n      var self = this,\r\n        items = $.makeArray(content),\r\n        thumbs;\r\n\r\n      $.each(items, function (i, item) {\r\n        var obj = {},\r\n          opts = {},\r\n          $item,\r\n          type,\r\n          found,\r\n          src,\r\n          srcParts;\r\n\r\n        // Step 1 - Make sure we have an object\r\n        // ====================================\r\n\r\n        if ($.isPlainObject(item)) {\r\n          // We probably have manual usage here, something like\r\n          // $.fancybox.open( [ { src : \"image.jpg\", type : \"image\" } ] )\r\n\r\n          obj = item;\r\n          opts = item.opts || item;\r\n        } else if ($.type(item) === \"object\" && $(item).length) {\r\n          // Here we probably have jQuery collection returned by some selector\r\n          $item = $(item);\r\n\r\n          // Support attributes like `data-options='{\"touch\" : false}'` and `data-touch='false'`\r\n          opts = $item.data() || {};\r\n          opts = $.extend(true, {}, opts, opts.options);\r\n\r\n          // Here we store clicked element\r\n          opts.$orig = $item;\r\n\r\n          obj.src = self.opts.src || opts.src || $item.attr(\"href\");\r\n\r\n          // Assume that simple syntax is used, for example:\r\n          //   `$.fancybox.open( $(\"#test\"), {} );`\r\n          if (!obj.type && !obj.src) {\r\n            obj.type = \"inline\";\r\n            obj.src = item;\r\n          }\r\n        } else {\r\n          // Assume we have a simple html code, for example:\r\n          //   $.fancybox.open( '<div><h1>Hi!</h1></div>' );\r\n          obj = {\r\n            type: \"html\",\r\n            src: item + \"\"\r\n          };\r\n        }\r\n\r\n        // Each gallery object has full collection of options\r\n        obj.opts = $.extend(true, {}, self.opts, opts);\r\n\r\n        // Do not merge buttons array\r\n        if ($.isArray(opts.buttons)) {\r\n          obj.opts.buttons = opts.buttons;\r\n        }\r\n\r\n        if ($.fancybox.isMobile && obj.opts.mobile) {\r\n          obj.opts = mergeOpts(obj.opts, obj.opts.mobile);\r\n        }\r\n\r\n        // Step 2 - Make sure we have content type, if not - try to guess\r\n        // ==============================================================\r\n\r\n        type = obj.type || obj.opts.type;\r\n        src = obj.src || \"\";\r\n\r\n        if (!type && src) {\r\n          if ((found = src.match(/\\.(mp4|mov|ogv|webm)((\\?|#).*)?$/i))) {\r\n            type = \"video\";\r\n\r\n            if (!obj.opts.video.format) {\r\n              obj.opts.video.format = \"video/\" + (found[1] === \"ogv\" ? \"ogg\" : found[1]);\r\n            }\r\n          } else if (src.match(/(^data:image\\/[a-z0-9+\\/=]*,)|(\\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\\?|#).*)?$)/i)) {\r\n            type = \"image\";\r\n          } else if (src.match(/\\.(pdf)((\\?|#).*)?$/i)) {\r\n            type = \"iframe\";\r\n            obj = $.extend(true, obj, {\r\n              contentType: \"pdf\",\r\n              opts: {\r\n                iframe: {\r\n                  preload: false\r\n                }\r\n              }\r\n            });\r\n          } else if (src.charAt(0) === \"#\") {\r\n            type = \"inline\";\r\n          }\r\n        }\r\n\r\n        if (type) {\r\n          obj.type = type;\r\n        } else {\r\n          self.trigger(\"objectNeedsType\", obj);\r\n        }\r\n\r\n        if (!obj.contentType) {\r\n          obj.contentType = $.inArray(obj.type, [\"html\", \"inline\", \"ajax\"]) > -1 ? \"html\" : obj.type;\r\n        }\r\n\r\n        // Step 3 - Some adjustments\r\n        // =========================\r\n\r\n        obj.index = self.group.length;\r\n\r\n        if (obj.opts.smallBtn == \"auto\") {\r\n          obj.opts.smallBtn = $.inArray(obj.type, [\"html\", \"inline\", \"ajax\"]) > -1;\r\n        }\r\n\r\n        if (obj.opts.toolbar === \"auto\") {\r\n          obj.opts.toolbar = !obj.opts.smallBtn;\r\n        }\r\n\r\n        // Find thumbnail image, check if exists and if is in the viewport\r\n        obj.$thumb = obj.opts.$thumb || null;\r\n\r\n        if (obj.opts.$trigger && obj.index === self.opts.index) {\r\n          obj.$thumb = obj.opts.$trigger.find(\"img:first\");\r\n\r\n          if (obj.$thumb.length) {\r\n            obj.opts.$orig = obj.opts.$trigger;\r\n          }\r\n        }\r\n\r\n        if (!(obj.$thumb && obj.$thumb.length) && obj.opts.$orig) {\r\n          obj.$thumb = obj.opts.$orig.find(\"img:first\");\r\n        }\r\n\r\n        if (obj.$thumb && !obj.$thumb.length) {\r\n          obj.$thumb = null;\r\n        }\r\n\r\n        obj.thumb = obj.opts.thumb || (obj.$thumb ? obj.$thumb[0].src : null);\r\n\r\n        // \"caption\" is a \"special\" option, it can be used to customize caption per gallery item\r\n        if ($.type(obj.opts.caption) === \"function\") {\r\n          obj.opts.caption = obj.opts.caption.apply(item, [self, obj]);\r\n        }\r\n\r\n        if ($.type(self.opts.caption) === \"function\") {\r\n          obj.opts.caption = self.opts.caption.apply(item, [self, obj]);\r\n        }\r\n\r\n        // Make sure we have caption as a string or jQuery object\r\n        if (!(obj.opts.caption instanceof $)) {\r\n          obj.opts.caption = obj.opts.caption === undefined ? \"\" : obj.opts.caption + \"\";\r\n        }\r\n\r\n        // Check if url contains \"filter\" used to filter the content\r\n        // Example: \"ajax.html #something\"\r\n        if (obj.type === \"ajax\") {\r\n          srcParts = src.split(/\\s+/, 2);\r\n\r\n          if (srcParts.length > 1) {\r\n            obj.src = srcParts.shift();\r\n\r\n            obj.opts.filter = srcParts.shift();\r\n          }\r\n        }\r\n\r\n        // Hide all buttons and disable interactivity for modal items\r\n        if (obj.opts.modal) {\r\n          obj.opts = $.extend(true, obj.opts, {\r\n            trapFocus: true,\r\n            // Remove buttons\r\n            infobar: 0,\r\n            toolbar: 0,\r\n\r\n            smallBtn: 0,\r\n\r\n            // Disable keyboard navigation\r\n            keyboard: 0,\r\n\r\n            // Disable some modules\r\n            slideShow: 0,\r\n            fullScreen: 0,\r\n            thumbs: 0,\r\n            touch: 0,\r\n\r\n            // Disable click event handlers\r\n            clickContent: false,\r\n            clickSlide: false,\r\n            clickOutside: false,\r\n            dblclickContent: false,\r\n            dblclickSlide: false,\r\n            dblclickOutside: false\r\n          });\r\n        }\r\n\r\n        // Step 4 - Add processed object to group\r\n        // ======================================\r\n\r\n        self.group.push(obj);\r\n      });\r\n\r\n      // Update controls if gallery is already opened\r\n      if (Object.keys(self.slides).length) {\r\n        self.updateControls();\r\n\r\n        // Update thumbnails, if needed\r\n        thumbs = self.Thumbs;\r\n\r\n        if (thumbs && thumbs.isActive) {\r\n          thumbs.create();\r\n\r\n          thumbs.focus();\r\n        }\r\n      }\r\n    },\r\n\r\n    // Attach an event handler functions for:\r\n    //   - navigation buttons\r\n    //   - browser scrolling, resizing;\r\n    //   - focusing\r\n    //   - keyboard\r\n    //   - detecting inactivity\r\n    // ======================================\r\n\r\n    addEvents: function () {\r\n      var self = this;\r\n\r\n      self.removeEvents();\r\n\r\n      // Make navigation elements clickable\r\n      // ==================================\r\n\r\n      self.$refs.container\r\n        .on(\"click.fb-close\", \"[data-fancybox-close]\", function (e) {\r\n          e.stopPropagation();\r\n          e.preventDefault();\r\n\r\n          self.close(e);\r\n        })\r\n        .on(\"touchstart.fb-prev click.fb-prev\", \"[data-fancybox-prev]\", function (e) {\r\n          e.stopPropagation();\r\n          e.preventDefault();\r\n\r\n          self.previous();\r\n        })\r\n        .on(\"touchstart.fb-next click.fb-next\", \"[data-fancybox-next]\", function (e) {\r\n          e.stopPropagation();\r\n          e.preventDefault();\r\n\r\n          self.next();\r\n        })\r\n        .on(\"click.fb\", \"[data-fancybox-zoom]\", function (e) {\r\n          // Click handler for zoom button\r\n          self[self.isScaledDown() ? \"scaleToActual\" : \"scaleToFit\"]();\r\n        });\r\n\r\n      // Handle page scrolling and browser resizing\r\n      // ==========================================\r\n\r\n      $W.on(\"orientationchange.fb resize.fb\", function (e) {\r\n        if (e && e.originalEvent && e.originalEvent.type === \"resize\") {\r\n          if (self.requestId) {\r\n            cancelAFrame(self.requestId);\r\n          }\r\n\r\n          self.requestId = requestAFrame(function () {\r\n            self.update(e);\r\n          });\r\n        } else {\r\n          if (self.current && self.current.type === \"iframe\") {\r\n            self.$refs.stage.hide();\r\n          }\r\n\r\n          setTimeout(\r\n            function () {\r\n              self.$refs.stage.show();\r\n\r\n              self.update(e);\r\n            },\r\n            $.fancybox.isMobile ? 600 : 250\r\n          );\r\n        }\r\n      });\r\n\r\n      $D.on(\"keydown.fb\", function (e) {\r\n        var instance = $.fancybox ? $.fancybox.getInstance() : null,\r\n          current = instance.current,\r\n          keycode = e.keyCode || e.which;\r\n\r\n        // Trap keyboard focus inside of the modal\r\n        // =======================================\r\n\r\n        if (keycode == 9) {\r\n          if (current.opts.trapFocus) {\r\n            self.focus(e);\r\n          }\r\n\r\n          return;\r\n        }\r\n\r\n        // Enable keyboard navigation\r\n        // ==========================\r\n\r\n        if (!current.opts.keyboard || e.ctrlKey || e.altKey || e.shiftKey || $(e.target).is(\"input,textarea,video,audio,select\")) {\r\n          return;\r\n        }\r\n\r\n        // Backspace and Esc keys\r\n        if (keycode === 8 || keycode === 27) {\r\n          e.preventDefault();\r\n\r\n          self.close(e);\r\n\r\n          return;\r\n        }\r\n\r\n        // Left arrow and Up arrow\r\n        if (keycode === 37 || keycode === 38) {\r\n          e.preventDefault();\r\n\r\n          self.previous();\r\n\r\n          return;\r\n        }\r\n\r\n        // Righ arrow and Down arrow\r\n        if (keycode === 39 || keycode === 40) {\r\n          e.preventDefault();\r\n\r\n          self.next();\r\n\r\n          return;\r\n        }\r\n\r\n        self.trigger(\"afterKeydown\", e, keycode);\r\n      });\r\n\r\n      // Hide controls after some inactivity period\r\n      if (self.group[self.currIndex].opts.idleTime) {\r\n        self.idleSecondsCounter = 0;\r\n\r\n        $D.on(\r\n          \"mousemove.fb-idle mouseleave.fb-idle mousedown.fb-idle touchstart.fb-idle touchmove.fb-idle scroll.fb-idle keydown.fb-idle\",\r\n          function (e) {\r\n            self.idleSecondsCounter = 0;\r\n\r\n            if (self.isIdle) {\r\n              self.showControls();\r\n            }\r\n\r\n            self.isIdle = false;\r\n          }\r\n        );\r\n\r\n        self.idleInterval = window.setInterval(function () {\r\n          self.idleSecondsCounter++;\r\n\r\n          if (self.idleSecondsCounter >= self.group[self.currIndex].opts.idleTime && !self.isDragging) {\r\n            self.isIdle = true;\r\n            self.idleSecondsCounter = 0;\r\n\r\n            self.hideControls();\r\n          }\r\n        }, 1000);\r\n      }\r\n    },\r\n\r\n    // Remove events added by the core\r\n    // ===============================\r\n\r\n    removeEvents: function () {\r\n      var self = this;\r\n\r\n      $W.off(\"orientationchange.fb resize.fb\");\r\n      $D.off(\"keydown.fb .fb-idle\");\r\n\r\n      this.$refs.container.off(\".fb-close .fb-prev .fb-next\");\r\n\r\n      if (self.idleInterval) {\r\n        window.clearInterval(self.idleInterval);\r\n\r\n        self.idleInterval = null;\r\n      }\r\n    },\r\n\r\n    // Change to previous gallery item\r\n    // ===============================\r\n\r\n    previous: function (duration) {\r\n      return this.jumpTo(this.currPos - 1, duration);\r\n    },\r\n\r\n    // Change to next gallery item\r\n    // ===========================\r\n\r\n    next: function (duration) {\r\n      return this.jumpTo(this.currPos + 1, duration);\r\n    },\r\n\r\n    // Switch to selected gallery item\r\n    // ===============================\r\n\r\n    jumpTo: function (pos, duration) {\r\n      var self = this,\r\n        groupLen = self.group.length,\r\n        firstRun,\r\n        isMoved,\r\n        loop,\r\n        current,\r\n        previous,\r\n        slidePos,\r\n        stagePos,\r\n        prop,\r\n        diff;\r\n\r\n      if (self.isDragging || self.isClosing || (self.isAnimating && self.firstRun)) {\r\n        return;\r\n      }\r\n\r\n      // Should loop?\r\n      pos = parseInt(pos, 10);\r\n      loop = self.current ? self.current.opts.loop : self.opts.loop;\r\n\r\n      if (!loop && (pos < 0 || pos >= groupLen)) {\r\n        return false;\r\n      }\r\n\r\n      // Check if opening for the first time; this helps to speed things up\r\n      firstRun = self.firstRun = !Object.keys(self.slides).length;\r\n\r\n      // Create slides\r\n      previous = self.current;\r\n\r\n      self.prevIndex = self.currIndex;\r\n      self.prevPos = self.currPos;\r\n\r\n      current = self.createSlide(pos);\r\n\r\n      if (groupLen > 1) {\r\n        if (loop || current.index < groupLen - 1) {\r\n          self.createSlide(pos + 1);\r\n        }\r\n\r\n        if (loop || current.index > 0) {\r\n          self.createSlide(pos - 1);\r\n        }\r\n      }\r\n\r\n      self.current = current;\r\n      self.currIndex = current.index;\r\n      self.currPos = current.pos;\r\n\r\n      self.trigger(\"beforeShow\", firstRun);\r\n\r\n      self.updateControls();\r\n\r\n      // Validate duration length\r\n      current.forcedDuration = undefined;\r\n\r\n      if ($.isNumeric(duration)) {\r\n        current.forcedDuration = duration;\r\n      } else {\r\n        duration = current.opts[firstRun ? \"animationDuration\" : \"transitionDuration\"];\r\n      }\r\n\r\n      duration = parseInt(duration, 10);\r\n\r\n      // Check if user has swiped the slides or if still animating\r\n      isMoved = self.isMoved(current);\r\n\r\n      // Make sure current slide is visible\r\n      current.$slide.addClass(\"fancybox-slide--current\");\r\n\r\n      // Fresh start - reveal container, current slide and start loading content\r\n      if (firstRun) {\r\n        if (current.opts.animationEffect && duration) {\r\n          self.$refs.container.css(\"transition-duration\", duration + \"ms\");\r\n        }\r\n\r\n        self.$refs.container.addClass(\"fancybox-is-open\").trigger(\"focus\");\r\n\r\n        // Attempt to load content into slide\r\n        // This will later call `afterLoad` -> `revealContent`\r\n        self.loadSlide(current);\r\n\r\n        self.preload(\"image\");\r\n\r\n        return;\r\n      }\r\n\r\n      // Get actual slide/stage positions (before cleaning up)\r\n      slidePos = $.fancybox.getTranslate(previous.$slide);\r\n      stagePos = $.fancybox.getTranslate(self.$refs.stage);\r\n\r\n      // Clean up all slides\r\n      $.each(self.slides, function (index, slide) {\r\n        $.fancybox.stop(slide.$slide, true);\r\n      });\r\n\r\n      if (previous.pos !== current.pos) {\r\n        previous.isComplete = false;\r\n      }\r\n\r\n      previous.$slide.removeClass(\"fancybox-slide--complete fancybox-slide--current\");\r\n\r\n      // If slides are out of place, then animate them to correct position\r\n      if (isMoved) {\r\n        // Calculate horizontal swipe distance\r\n        diff = slidePos.left - (previous.pos * slidePos.width + previous.pos * previous.opts.gutter);\r\n\r\n        $.each(self.slides, function (index, slide) {\r\n          slide.$slide.removeClass(\"fancybox-animated\").removeClass(function (index, className) {\r\n            return (className.match(/(^|\\s)fancybox-fx-\\S+/g) || []).join(\" \");\r\n          });\r\n\r\n          // Make sure that each slide is in equal distance\r\n          // This is mostly needed for freshly added slides, because they are not yet positioned\r\n          var leftPos = slide.pos * slidePos.width + slide.pos * slide.opts.gutter;\r\n\r\n          $.fancybox.setTranslate(slide.$slide, {\r\n            top: 0,\r\n            left: leftPos - stagePos.left + diff\r\n          });\r\n\r\n          if (slide.pos !== current.pos) {\r\n            slide.$slide.addClass(\"fancybox-slide--\" + (slide.pos > current.pos ? \"next\" : \"previous\"));\r\n          }\r\n\r\n          // Redraw to make sure that transition will start\r\n          forceRedraw(slide.$slide);\r\n\r\n          // Animate the slide\r\n          $.fancybox.animate(\r\n            slide.$slide, {\r\n              top: 0,\r\n              left: (slide.pos - current.pos) * slidePos.width + (slide.pos - current.pos) * slide.opts.gutter\r\n            },\r\n            duration,\r\n            function () {\r\n              slide.$slide\r\n                .css({\r\n                  transform: \"\",\r\n                  opacity: \"\"\r\n                })\r\n                .removeClass(\"fancybox-slide--next fancybox-slide--previous\");\r\n\r\n              if (slide.pos === self.currPos) {\r\n                self.complete();\r\n              }\r\n            }\r\n          );\r\n        });\r\n      } else if (duration && current.opts.transitionEffect) {\r\n        // Set transition effect for previously active slide\r\n        prop = \"fancybox-animated fancybox-fx-\" + current.opts.transitionEffect;\r\n\r\n        previous.$slide.addClass(\"fancybox-slide--\" + (previous.pos > current.pos ? \"next\" : \"previous\"));\r\n\r\n        $.fancybox.animate(\r\n          previous.$slide,\r\n          prop,\r\n          duration,\r\n          function () {\r\n            previous.$slide.removeClass(prop).removeClass(\"fancybox-slide--next fancybox-slide--previous\");\r\n          },\r\n          false\r\n        );\r\n      }\r\n\r\n      if (current.isLoaded) {\r\n        self.revealContent(current);\r\n      } else {\r\n        self.loadSlide(current);\r\n      }\r\n\r\n      self.preload(\"image\");\r\n    },\r\n\r\n    // Create new \"slide\" element\r\n    // These are gallery items  that are actually added to DOM\r\n    // =======================================================\r\n\r\n    createSlide: function (pos) {\r\n      var self = this,\r\n        $slide,\r\n        index;\r\n\r\n      index = pos % self.group.length;\r\n      index = index < 0 ? self.group.length + index : index;\r\n\r\n      if (!self.slides[pos] && self.group[index]) {\r\n        $slide = $('<div class=\"fancybox-slide\"></div>').appendTo(self.$refs.stage);\r\n\r\n        self.slides[pos] = $.extend(true, {}, self.group[index], {\r\n          pos: pos,\r\n          $slide: $slide,\r\n          isLoaded: false\r\n        });\r\n\r\n        self.updateSlide(self.slides[pos]);\r\n      }\r\n\r\n      return self.slides[pos];\r\n    },\r\n\r\n    // Scale image to the actual size of the image;\r\n    // x and y values should be relative to the slide\r\n    // ==============================================\r\n\r\n    scaleToActual: function (x, y, duration) {\r\n      var self = this,\r\n        current = self.current,\r\n        $content = current.$content,\r\n        canvasWidth = $.fancybox.getTranslate(current.$slide).width,\r\n        canvasHeight = $.fancybox.getTranslate(current.$slide).height,\r\n        newImgWidth = current.width,\r\n        newImgHeight = current.height,\r\n        imgPos,\r\n        posX,\r\n        posY,\r\n        scaleX,\r\n        scaleY;\r\n\r\n      if (self.isAnimating || self.isMoved() || !$content || !(current.type == \"image\" && current.isLoaded && !current.hasError)) {\r\n        return;\r\n      }\r\n\r\n      self.isAnimating = true;\r\n\r\n      $.fancybox.stop($content);\r\n\r\n      x = x === undefined ? canvasWidth * 0.5 : x;\r\n      y = y === undefined ? canvasHeight * 0.5 : y;\r\n\r\n      imgPos = $.fancybox.getTranslate($content);\r\n\r\n      imgPos.top -= $.fancybox.getTranslate(current.$slide).top;\r\n      imgPos.left -= $.fancybox.getTranslate(current.$slide).left;\r\n\r\n      scaleX = newImgWidth / imgPos.width;\r\n      scaleY = newImgHeight / imgPos.height;\r\n\r\n      // Get center position for original image\r\n      posX = canvasWidth * 0.5 - newImgWidth * 0.5;\r\n      posY = canvasHeight * 0.5 - newImgHeight * 0.5;\r\n\r\n      // Make sure image does not move away from edges\r\n      if (newImgWidth > canvasWidth) {\r\n        posX = imgPos.left * scaleX - (x * scaleX - x);\r\n\r\n        if (posX > 0) {\r\n          posX = 0;\r\n        }\r\n\r\n        if (posX < canvasWidth - newImgWidth) {\r\n          posX = canvasWidth - newImgWidth;\r\n        }\r\n      }\r\n\r\n      if (newImgHeight > canvasHeight) {\r\n        posY = imgPos.top * scaleY - (y * scaleY - y);\r\n\r\n        if (posY > 0) {\r\n          posY = 0;\r\n        }\r\n\r\n        if (posY < canvasHeight - newImgHeight) {\r\n          posY = canvasHeight - newImgHeight;\r\n        }\r\n      }\r\n\r\n      self.updateCursor(newImgWidth, newImgHeight);\r\n\r\n      $.fancybox.animate(\r\n        $content, {\r\n          top: posY,\r\n          left: posX,\r\n          scaleX: scaleX,\r\n          scaleY: scaleY\r\n        },\r\n        duration || 366,\r\n        function () {\r\n          self.isAnimating = false;\r\n        }\r\n      );\r\n\r\n      // Stop slideshow\r\n      if (self.SlideShow && self.SlideShow.isActive) {\r\n        self.SlideShow.stop();\r\n      }\r\n    },\r\n\r\n    // Scale image to fit inside parent element\r\n    // ========================================\r\n\r\n    scaleToFit: function (duration) {\r\n      var self = this,\r\n        current = self.current,\r\n        $content = current.$content,\r\n        end;\r\n\r\n      if (self.isAnimating || self.isMoved() || !$content || !(current.type == \"image\" && current.isLoaded && !current.hasError)) {\r\n        return;\r\n      }\r\n\r\n      self.isAnimating = true;\r\n\r\n      $.fancybox.stop($content);\r\n\r\n      end = self.getFitPos(current);\r\n\r\n      self.updateCursor(end.width, end.height);\r\n\r\n      $.fancybox.animate(\r\n        $content, {\r\n          top: end.top,\r\n          left: end.left,\r\n          scaleX: end.width / $content.width(),\r\n          scaleY: end.height / $content.height()\r\n        },\r\n        duration || 366,\r\n        function () {\r\n          self.isAnimating = false;\r\n        }\r\n      );\r\n    },\r\n\r\n    // Calculate image size to fit inside viewport\r\n    // ===========================================\r\n\r\n    getFitPos: function (slide) {\r\n      var self = this,\r\n        $content = slide.$content,\r\n        $slide = slide.$slide,\r\n        width = slide.width || slide.opts.width,\r\n        height = slide.height || slide.opts.height,\r\n        maxWidth,\r\n        maxHeight,\r\n        minRatio,\r\n        aspectRatio,\r\n        rez = {};\r\n\r\n      if (!slide.isLoaded || !$content || !$content.length) {\r\n        return false;\r\n      }\r\n\r\n      maxWidth = $.fancybox.getTranslate(self.$refs.stage).width;\r\n      maxHeight = $.fancybox.getTranslate(self.$refs.stage).height;\r\n\r\n      maxWidth -=\r\n        parseFloat($slide.css(\"paddingLeft\")) +\r\n        parseFloat($slide.css(\"paddingRight\")) +\r\n        parseFloat($content.css(\"marginLeft\")) +\r\n        parseFloat($content.css(\"marginRight\"));\r\n\r\n      maxHeight -=\r\n        parseFloat($slide.css(\"paddingTop\")) +\r\n        parseFloat($slide.css(\"paddingBottom\")) +\r\n        parseFloat($content.css(\"marginTop\")) +\r\n        parseFloat($content.css(\"marginBottom\"));\r\n\r\n      if (!width || !height) {\r\n        width = maxWidth;\r\n        height = maxHeight;\r\n      }\r\n\r\n      minRatio = Math.min(1, maxWidth / width, maxHeight / height);\r\n\r\n      width = minRatio * width;\r\n      height = minRatio * height;\r\n\r\n      // Adjust width/height to precisely fit into container\r\n      if (width > maxWidth - 0.5) {\r\n        width = maxWidth;\r\n      }\r\n\r\n      if (height > maxHeight - 0.5) {\r\n        height = maxHeight;\r\n      }\r\n\r\n      if (slide.type === \"image\") {\r\n        rez.top = Math.floor((maxHeight - height) * 0.5) + parseFloat($slide.css(\"paddingTop\"));\r\n        rez.left = Math.floor((maxWidth - width) * 0.5) + parseFloat($slide.css(\"paddingLeft\"));\r\n      } else if (slide.contentType === \"video\") {\r\n        // Force aspect ratio for the video\r\n        // \"I say the whole world must learn of our peaceful ways… by force!\"\r\n        aspectRatio = slide.opts.width && slide.opts.height ? width / height : slide.opts.ratio || 16 / 9;\r\n\r\n        if (height > width / aspectRatio) {\r\n          height = width / aspectRatio;\r\n        } else if (width > height * aspectRatio) {\r\n          width = height * aspectRatio;\r\n        }\r\n      }\r\n\r\n      rez.width = width;\r\n      rez.height = height;\r\n\r\n      return rez;\r\n    },\r\n\r\n    // Update content size and position for all slides\r\n    // ==============================================\r\n\r\n    update: function (e) {\r\n      var self = this;\r\n\r\n      $.each(self.slides, function (key, slide) {\r\n        self.updateSlide(slide, e);\r\n      });\r\n    },\r\n\r\n    // Update slide content position and size\r\n    // ======================================\r\n\r\n    updateSlide: function (slide, e) {\r\n      var self = this,\r\n        $content = slide && slide.$content,\r\n        width = slide.width || slide.opts.width,\r\n        height = slide.height || slide.opts.height,\r\n        $slide = slide.$slide;\r\n\r\n      // First, prevent caption overlap, if needed\r\n      self.adjustCaption(slide);\r\n\r\n      // Then resize content to fit inside the slide\r\n      if ($content && (width || height || slide.contentType === \"video\") && !slide.hasError) {\r\n        $.fancybox.stop($content);\r\n\r\n        $.fancybox.setTranslate($content, self.getFitPos(slide));\r\n\r\n        if (slide.pos === self.currPos) {\r\n          self.isAnimating = false;\r\n\r\n          self.updateCursor();\r\n        }\r\n      }\r\n\r\n      // Then some adjustments\r\n      self.adjustLayout(slide);\r\n\r\n      if ($slide.length) {\r\n        $slide.trigger(\"refresh\");\r\n\r\n        if (slide.pos === self.currPos) {\r\n          self.$refs.toolbar\r\n            .add(self.$refs.navigation.find(\".fancybox-button--arrow_right\"))\r\n            .toggleClass(\"compensate-for-scrollbar\", $slide.get(0).scrollHeight > $slide.get(0).clientHeight);\r\n        }\r\n      }\r\n\r\n      self.trigger(\"onUpdate\", slide, e);\r\n    },\r\n\r\n    // Horizontally center slide\r\n    // =========================\r\n\r\n    centerSlide: function (duration) {\r\n      var self = this,\r\n        current = self.current,\r\n        $slide = current.$slide;\r\n\r\n      if (self.isClosing || !current) {\r\n        return;\r\n      }\r\n\r\n      $slide.siblings().css({\r\n        transform: \"\",\r\n        opacity: \"\"\r\n      });\r\n\r\n      $slide\r\n        .parent()\r\n        .children()\r\n        .removeClass(\"fancybox-slide--previous fancybox-slide--next\");\r\n\r\n      $.fancybox.animate(\r\n        $slide, {\r\n          top: 0,\r\n          left: 0,\r\n          opacity: 1\r\n        },\r\n        duration === undefined ? 0 : duration,\r\n        function () {\r\n          // Clean up\r\n          $slide.css({\r\n            transform: \"\",\r\n            opacity: \"\"\r\n          });\r\n\r\n          if (!current.isComplete) {\r\n            self.complete();\r\n          }\r\n        },\r\n        false\r\n      );\r\n    },\r\n\r\n    // Check if current slide is moved (swiped)\r\n    // ========================================\r\n\r\n    isMoved: function (slide) {\r\n      var current = slide || this.current,\r\n        slidePos,\r\n        stagePos;\r\n\r\n      if (!current) {\r\n        return false;\r\n      }\r\n\r\n      stagePos = $.fancybox.getTranslate(this.$refs.stage);\r\n      slidePos = $.fancybox.getTranslate(current.$slide);\r\n\r\n      return (\r\n        !current.$slide.hasClass(\"fancybox-animated\") &&\r\n        (Math.abs(slidePos.top - stagePos.top) > 0.5 || Math.abs(slidePos.left - stagePos.left) > 0.5)\r\n      );\r\n    },\r\n\r\n    // Update cursor style depending if content can be zoomed\r\n    // ======================================================\r\n\r\n    updateCursor: function (nextWidth, nextHeight) {\r\n      var self = this,\r\n        current = self.current,\r\n        $container = self.$refs.container,\r\n        canPan,\r\n        isZoomable;\r\n\r\n      if (!current || self.isClosing || !self.Guestures) {\r\n        return;\r\n      }\r\n\r\n      $container.removeClass(\"fancybox-is-zoomable fancybox-can-zoomIn fancybox-can-zoomOut fancybox-can-swipe fancybox-can-pan\");\r\n\r\n      canPan = self.canPan(nextWidth, nextHeight);\r\n\r\n      isZoomable = canPan ? true : self.isZoomable();\r\n\r\n      $container.toggleClass(\"fancybox-is-zoomable\", isZoomable);\r\n\r\n      $(\"[data-fancybox-zoom]\").prop(\"disabled\", !isZoomable);\r\n\r\n      if (canPan) {\r\n        $container.addClass(\"fancybox-can-pan\");\r\n      } else if (\r\n        isZoomable &&\r\n        (current.opts.clickContent === \"zoom\" || ($.isFunction(current.opts.clickContent) && current.opts.clickContent(current) == \"zoom\"))\r\n      ) {\r\n        $container.addClass(\"fancybox-can-zoomIn\");\r\n      } else if (current.opts.touch && (current.opts.touch.vertical || self.group.length > 1) && current.contentType !== \"video\") {\r\n        $container.addClass(\"fancybox-can-swipe\");\r\n      }\r\n    },\r\n\r\n    // Check if current slide is zoomable\r\n    // ==================================\r\n\r\n    isZoomable: function () {\r\n      var self = this,\r\n        current = self.current,\r\n        fitPos;\r\n\r\n      // Assume that slide is zoomable if:\r\n      //   - image is still loading\r\n      //   - actual size of the image is smaller than available area\r\n      if (current && !self.isClosing && current.type === \"image\" && !current.hasError) {\r\n        if (!current.isLoaded) {\r\n          return true;\r\n        }\r\n\r\n        fitPos = self.getFitPos(current);\r\n\r\n        if (fitPos && (current.width > fitPos.width || current.height > fitPos.height)) {\r\n          return true;\r\n        }\r\n      }\r\n\r\n      return false;\r\n    },\r\n\r\n    // Check if current image dimensions are smaller than actual\r\n    // =========================================================\r\n\r\n    isScaledDown: function (nextWidth, nextHeight) {\r\n      var self = this,\r\n        rez = false,\r\n        current = self.current,\r\n        $content = current.$content;\r\n\r\n      if (nextWidth !== undefined && nextHeight !== undefined) {\r\n        rez = nextWidth < current.width && nextHeight < current.height;\r\n      } else if ($content) {\r\n        rez = $.fancybox.getTranslate($content);\r\n        rez = rez.width < current.width && rez.height < current.height;\r\n      }\r\n\r\n      return rez;\r\n    },\r\n\r\n    // Check if image dimensions exceed parent element\r\n    // ===============================================\r\n\r\n    canPan: function (nextWidth, nextHeight) {\r\n      var self = this,\r\n        current = self.current,\r\n        pos = null,\r\n        rez = false;\r\n\r\n      if (current.type === \"image\" && (current.isComplete || (nextWidth && nextHeight)) && !current.hasError) {\r\n        rez = self.getFitPos(current);\r\n\r\n        if (nextWidth !== undefined && nextHeight !== undefined) {\r\n          pos = {\r\n            width: nextWidth,\r\n            height: nextHeight\r\n          };\r\n        } else if (current.isComplete) {\r\n          pos = $.fancybox.getTranslate(current.$content);\r\n        }\r\n\r\n        if (pos && rez) {\r\n          rez = Math.abs(pos.width - rez.width) > 1.5 || Math.abs(pos.height - rez.height) > 1.5;\r\n        }\r\n      }\r\n\r\n      return rez;\r\n    },\r\n\r\n    // Load content into the slide\r\n    // ===========================\r\n\r\n    loadSlide: function (slide) {\r\n      var self = this,\r\n        type,\r\n        $slide,\r\n        ajaxLoad;\r\n\r\n      if (slide.isLoading || slide.isLoaded) {\r\n        return;\r\n      }\r\n\r\n      slide.isLoading = true;\r\n\r\n      if (self.trigger(\"beforeLoad\", slide) === false) {\r\n        slide.isLoading = false;\r\n\r\n        return false;\r\n      }\r\n\r\n      type = slide.type;\r\n      $slide = slide.$slide;\r\n\r\n      $slide\r\n        .off(\"refresh\")\r\n        .trigger(\"onReset\")\r\n        .addClass(slide.opts.slideClass);\r\n\r\n      // Create content depending on the type\r\n      switch (type) {\r\n        case \"image\":\r\n          self.setImage(slide);\r\n\r\n          break;\r\n\r\n        case \"iframe\":\r\n          self.setIframe(slide);\r\n\r\n          break;\r\n\r\n        case \"html\":\r\n          self.setContent(slide, slide.src || slide.content);\r\n\r\n          break;\r\n\r\n        case \"video\":\r\n          self.setContent(\r\n            slide,\r\n            slide.opts.video.tpl\r\n            .replace(/\\{\\{src\\}\\}/gi, slide.src)\r\n            .replace(\"{{format}}\", slide.opts.videoFormat || slide.opts.video.format || \"\")\r\n            .replace(\"{{poster}}\", slide.thumb || \"\")\r\n          );\r\n\r\n          break;\r\n\r\n        case \"inline\":\r\n          if ($(slide.src).length) {\r\n            self.setContent(slide, $(slide.src));\r\n          } else {\r\n            self.setError(slide);\r\n          }\r\n\r\n          break;\r\n\r\n        case \"ajax\":\r\n          self.showLoading(slide);\r\n\r\n          ajaxLoad = $.ajax(\r\n            $.extend({}, slide.opts.ajax.settings, {\r\n              url: slide.src,\r\n              success: function (data, textStatus) {\r\n                if (textStatus === \"success\") {\r\n                  self.setContent(slide, data);\r\n                }\r\n              },\r\n              error: function (jqXHR, textStatus) {\r\n                if (jqXHR && textStatus !== \"abort\") {\r\n                  self.setError(slide);\r\n                }\r\n              }\r\n            })\r\n          );\r\n\r\n          $slide.one(\"onReset\", function () {\r\n            ajaxLoad.abort();\r\n          });\r\n\r\n          break;\r\n\r\n        default:\r\n          self.setError(slide);\r\n\r\n          break;\r\n      }\r\n\r\n      return true;\r\n    },\r\n\r\n    // Use thumbnail image, if possible\r\n    // ================================\r\n\r\n    setImage: function (slide) {\r\n      var self = this,\r\n        ghost;\r\n\r\n      // Check if need to show loading icon\r\n      setTimeout(function () {\r\n        var $img = slide.$image;\r\n\r\n        if (!self.isClosing && slide.isLoading && (!$img || !$img.length || !$img[0].complete) && !slide.hasError) {\r\n          self.showLoading(slide);\r\n        }\r\n      }, 50);\r\n\r\n      //Check if image has srcset\r\n      self.checkSrcset(slide);\r\n\r\n      // This will be wrapper containing both ghost and actual image\r\n      slide.$content = $('<div class=\"fancybox-content\"></div>')\r\n        .addClass(\"fancybox-is-hidden\")\r\n        .appendTo(slide.$slide.addClass(\"fancybox-slide--image\"));\r\n\r\n      // If we have a thumbnail, we can display it while actual image is loading\r\n      // Users will not stare at black screen and actual image will appear gradually\r\n      if (slide.opts.preload !== false && slide.opts.width && slide.opts.height && slide.thumb) {\r\n        slide.width = slide.opts.width;\r\n        slide.height = slide.opts.height;\r\n\r\n        ghost = document.createElement(\"img\");\r\n\r\n        ghost.onerror = function () {\r\n          $(this).remove();\r\n\r\n          slide.$ghost = null;\r\n        };\r\n\r\n        ghost.onload = function () {\r\n          self.afterLoad(slide);\r\n        };\r\n\r\n        slide.$ghost = $(ghost)\r\n          .addClass(\"fancybox-image\")\r\n          .appendTo(slide.$content)\r\n          .attr(\"src\", slide.thumb);\r\n      }\r\n\r\n      // Start loading actual image\r\n      self.setBigImage(slide);\r\n    },\r\n\r\n    // Check if image has srcset and get the source\r\n    // ============================================\r\n    checkSrcset: function (slide) {\r\n      var srcset = slide.opts.srcset || slide.opts.image.srcset,\r\n        found,\r\n        temp,\r\n        pxRatio,\r\n        windowWidth;\r\n\r\n      // If we have \"srcset\", then we need to find first matching \"src\" value.\r\n      // This is necessary, because when you set an src attribute, the browser will preload the image\r\n      // before any javascript or even CSS is applied.\r\n      if (srcset) {\r\n        pxRatio = window.devicePixelRatio || 1;\r\n        windowWidth = window.innerWidth * pxRatio;\r\n\r\n        temp = srcset.split(\",\").map(function (el) {\r\n          var ret = {};\r\n\r\n          el.trim()\r\n            .split(/\\s+/)\r\n            .forEach(function (el, i) {\r\n              var value = parseInt(el.substring(0, el.length - 1), 10);\r\n\r\n              if (i === 0) {\r\n                return (ret.url = el);\r\n              }\r\n\r\n              if (value) {\r\n                ret.value = value;\r\n                ret.postfix = el[el.length - 1];\r\n              }\r\n            });\r\n\r\n          return ret;\r\n        });\r\n\r\n        // Sort by value\r\n        temp.sort(function (a, b) {\r\n          return a.value - b.value;\r\n        });\r\n\r\n        // Ok, now we have an array of all srcset values\r\n        for (var j = 0; j < temp.length; j++) {\r\n          var el = temp[j];\r\n\r\n          if ((el.postfix === \"w\" && el.value >= windowWidth) || (el.postfix === \"x\" && el.value >= pxRatio)) {\r\n            found = el;\r\n            break;\r\n          }\r\n        }\r\n\r\n        // If not found, take the last one\r\n        if (!found && temp.length) {\r\n          found = temp[temp.length - 1];\r\n        }\r\n\r\n        if (found) {\r\n          slide.src = found.url;\r\n\r\n          // If we have default width/height values, we can calculate height for matching source\r\n          if (slide.width && slide.height && found.postfix == \"w\") {\r\n            slide.height = (slide.width / slide.height) * found.value;\r\n            slide.width = found.value;\r\n          }\r\n\r\n          slide.opts.srcset = srcset;\r\n        }\r\n      }\r\n    },\r\n\r\n    // Create full-size image\r\n    // ======================\r\n\r\n    setBigImage: function (slide) {\r\n      var self = this,\r\n        img = document.createElement(\"img\"),\r\n        $img = $(img);\r\n\r\n      slide.$image = $img\r\n        .one(\"error\", function () {\r\n          self.setError(slide);\r\n        })\r\n        .one(\"load\", function () {\r\n          var sizes;\r\n\r\n          if (!slide.$ghost) {\r\n            self.resolveImageSlideSize(slide, this.naturalWidth, this.naturalHeight);\r\n\r\n            self.afterLoad(slide);\r\n          }\r\n\r\n          if (self.isClosing) {\r\n            return;\r\n          }\r\n\r\n          if (slide.opts.srcset) {\r\n            sizes = slide.opts.sizes;\r\n\r\n            if (!sizes || sizes === \"auto\") {\r\n              sizes =\r\n                (slide.width / slide.height > 1 && $W.width() / $W.height() > 1 ? \"100\" : Math.round((slide.width / slide.height) * 100)) +\r\n                \"vw\";\r\n            }\r\n\r\n            $img.attr(\"sizes\", sizes).attr(\"srcset\", slide.opts.srcset);\r\n          }\r\n\r\n          // Hide temporary image after some delay\r\n          if (slide.$ghost) {\r\n            setTimeout(function () {\r\n              if (slide.$ghost && !self.isClosing) {\r\n                slide.$ghost.hide();\r\n              }\r\n            }, Math.min(300, Math.max(1000, slide.height / 1600)));\r\n          }\r\n\r\n          self.hideLoading(slide);\r\n        })\r\n        .addClass(\"fancybox-image\")\r\n        .attr(\"src\", slide.src)\r\n        .appendTo(slide.$content);\r\n\r\n      if ((img.complete || img.readyState == \"complete\") && $img.naturalWidth && $img.naturalHeight) {\r\n        $img.trigger(\"load\");\r\n      } else if (img.error) {\r\n        $img.trigger(\"error\");\r\n      }\r\n    },\r\n\r\n    // Computes the slide size from image size and maxWidth/maxHeight\r\n    // ==============================================================\r\n\r\n    resolveImageSlideSize: function (slide, imgWidth, imgHeight) {\r\n      var maxWidth = parseInt(slide.opts.width, 10),\r\n        maxHeight = parseInt(slide.opts.height, 10);\r\n\r\n      // Sets the default values from the image\r\n      slide.width = imgWidth;\r\n      slide.height = imgHeight;\r\n\r\n      if (maxWidth > 0) {\r\n        slide.width = maxWidth;\r\n        slide.height = Math.floor((maxWidth * imgHeight) / imgWidth);\r\n      }\r\n\r\n      if (maxHeight > 0) {\r\n        slide.width = Math.floor((maxHeight * imgWidth) / imgHeight);\r\n        slide.height = maxHeight;\r\n      }\r\n    },\r\n\r\n    // Create iframe wrapper, iframe and bindings\r\n    // ==========================================\r\n\r\n    setIframe: function (slide) {\r\n      var self = this,\r\n        opts = slide.opts.iframe,\r\n        $slide = slide.$slide,\r\n        $iframe;\r\n\r\n      slide.$content = $('<div class=\"fancybox-content' + (opts.preload ? \" fancybox-is-hidden\" : \"\") + '\"></div>')\r\n        .css(opts.css)\r\n        .appendTo($slide);\r\n\r\n      $slide.addClass(\"fancybox-slide--\" + slide.contentType);\r\n\r\n      slide.$iframe = $iframe = $(opts.tpl.replace(/\\{rnd\\}/g, new Date().getTime()))\r\n        .attr(opts.attr)\r\n        .appendTo(slide.$content);\r\n\r\n      if (opts.preload) {\r\n        self.showLoading(slide);\r\n\r\n        // Unfortunately, it is not always possible to determine if iframe is successfully loaded\r\n        // (due to browser security policy)\r\n\r\n        $iframe.on(\"load.fb error.fb\", function (e) {\r\n          this.isReady = 1;\r\n\r\n          slide.$slide.trigger(\"refresh\");\r\n\r\n          self.afterLoad(slide);\r\n        });\r\n\r\n        // Recalculate iframe content size\r\n        // ===============================\r\n\r\n        $slide.on(\"refresh.fb\", function () {\r\n          var $content = slide.$content,\r\n            frameWidth = opts.css.width,\r\n            frameHeight = opts.css.height,\r\n            $contents,\r\n            $body;\r\n\r\n          if ($iframe[0].isReady !== 1) {\r\n            return;\r\n          }\r\n\r\n          try {\r\n            $contents = $iframe.contents();\r\n            $body = $contents.find(\"body\");\r\n          } catch (ignore) {}\r\n\r\n          // Calculate content dimensions, if it is accessible\r\n          if ($body && $body.length && $body.children().length) {\r\n            // Avoid scrolling to top (if multiple instances)\r\n            $slide.css(\"overflow\", \"visible\");\r\n\r\n            $content.css({\r\n              width: \"100%\",\r\n              \"max-width\": \"100%\",\r\n              height: \"9999px\"\r\n            });\r\n\r\n            if (frameWidth === undefined) {\r\n              frameWidth = Math.ceil(Math.max($body[0].clientWidth, $body.outerWidth(true)));\r\n            }\r\n\r\n            $content.css(\"width\", frameWidth ? frameWidth : \"\").css(\"max-width\", \"\");\r\n\r\n            if (frameHeight === undefined) {\r\n              frameHeight = Math.ceil(Math.max($body[0].clientHeight, $body.outerHeight(true)));\r\n            }\r\n\r\n            $content.css(\"height\", frameHeight ? frameHeight : \"\");\r\n\r\n            $slide.css(\"overflow\", \"auto\");\r\n          }\r\n\r\n          $content.removeClass(\"fancybox-is-hidden\");\r\n        });\r\n      } else {\r\n        self.afterLoad(slide);\r\n      }\r\n\r\n      $iframe.attr(\"src\", slide.src);\r\n\r\n      // Remove iframe if closing or changing gallery item\r\n      $slide.one(\"onReset\", function () {\r\n        // This helps IE not to throw errors when closing\r\n        try {\r\n          $(this)\r\n            .find(\"iframe\")\r\n            .hide()\r\n            .unbind()\r\n            .attr(\"src\", \"//about:blank\");\r\n        } catch (ignore) {}\r\n\r\n        $(this)\r\n          .off(\"refresh.fb\")\r\n          .empty();\r\n\r\n        slide.isLoaded = false;\r\n        slide.isRevealed = false;\r\n      });\r\n    },\r\n\r\n    // Wrap and append content to the slide\r\n    // ======================================\r\n\r\n    setContent: function (slide, content) {\r\n      var self = this;\r\n\r\n      if (self.isClosing) {\r\n        return;\r\n      }\r\n\r\n      self.hideLoading(slide);\r\n\r\n      if (slide.$content) {\r\n        $.fancybox.stop(slide.$content);\r\n      }\r\n\r\n      slide.$slide.empty();\r\n\r\n      // If content is a jQuery object, then it will be moved to the slide.\r\n      // The placeholder is created so we will know where to put it back.\r\n      if (isQuery(content) && content.parent().length) {\r\n        // Make sure content is not already moved to fancyBox\r\n        if (content.hasClass(\"fancybox-content\") || content.parent().hasClass(\"fancybox-content\")) {\r\n          content.parents(\".fancybox-slide\").trigger(\"onReset\");\r\n        }\r\n\r\n        // Create temporary element marking original place of the content\r\n        slide.$placeholder = $(\"<div>\")\r\n          .hide()\r\n          .insertAfter(content);\r\n\r\n        // Make sure content is visible\r\n        content.css(\"display\", \"inline-block\");\r\n      } else if (!slide.hasError) {\r\n        // If content is just a plain text, try to convert it to html\r\n        if ($.type(content) === \"string\") {\r\n          content = $(\"<div>\")\r\n            .append($.trim(content))\r\n            .contents();\r\n        }\r\n\r\n        // If \"filter\" option is provided, then filter content\r\n        if (slide.opts.filter) {\r\n          content = $(\"<div>\")\r\n            .html(content)\r\n            .find(slide.opts.filter);\r\n        }\r\n      }\r\n\r\n      slide.$slide.one(\"onReset\", function () {\r\n        // Pause all html5 video/audio\r\n        $(this)\r\n          .find(\"video,audio\")\r\n          .trigger(\"pause\");\r\n\r\n        // Put content back\r\n        if (slide.$placeholder) {\r\n          slide.$placeholder.after(content.removeClass(\"fancybox-content\").hide()).remove();\r\n\r\n          slide.$placeholder = null;\r\n        }\r\n\r\n        // Remove custom close button\r\n        if (slide.$smallBtn) {\r\n          slide.$smallBtn.remove();\r\n\r\n          slide.$smallBtn = null;\r\n        }\r\n\r\n        // Remove content and mark slide as not loaded\r\n        if (!slide.hasError) {\r\n          $(this).empty();\r\n\r\n          slide.isLoaded = false;\r\n          slide.isRevealed = false;\r\n        }\r\n      });\r\n\r\n      $(content).appendTo(slide.$slide);\r\n\r\n      if ($(content).is(\"video,audio\")) {\r\n        $(content).addClass(\"fancybox-video\");\r\n\r\n        $(content).wrap(\"<div></div>\");\r\n\r\n        slide.contentType = \"video\";\r\n\r\n        slide.opts.width = slide.opts.width || $(content).attr(\"width\");\r\n        slide.opts.height = slide.opts.height || $(content).attr(\"height\");\r\n      }\r\n\r\n      slide.$content = slide.$slide\r\n        .children()\r\n        .filter(\"div,form,main,video,audio,article,.fancybox-content\")\r\n        .first();\r\n\r\n      slide.$content.siblings().hide();\r\n\r\n      // Re-check if there is a valid content\r\n      // (in some cases, ajax response can contain various elements or plain text)\r\n      if (!slide.$content.length) {\r\n        slide.$content = slide.$slide\r\n          .wrapInner(\"<div></div>\")\r\n          .children()\r\n          .first();\r\n      }\r\n\r\n      slide.$content.addClass(\"fancybox-content\");\r\n\r\n      slide.$slide.addClass(\"fancybox-slide--\" + slide.contentType);\r\n\r\n      self.afterLoad(slide);\r\n    },\r\n\r\n    // Display error message\r\n    // =====================\r\n\r\n    setError: function (slide) {\r\n      slide.hasError = true;\r\n\r\n      slide.$slide\r\n        .trigger(\"onReset\")\r\n        .removeClass(\"fancybox-slide--\" + slide.contentType)\r\n        .addClass(\"fancybox-slide--error\");\r\n\r\n      slide.contentType = \"html\";\r\n\r\n      this.setContent(slide, this.translate(slide, slide.opts.errorTpl));\r\n\r\n      if (slide.pos === this.currPos) {\r\n        this.isAnimating = false;\r\n      }\r\n    },\r\n\r\n    // Show loading icon inside the slide\r\n    // ==================================\r\n\r\n    showLoading: function (slide) {\r\n      var self = this;\r\n\r\n      slide = slide || self.current;\r\n\r\n      if (slide && !slide.$spinner) {\r\n        slide.$spinner = $(self.translate(self, self.opts.spinnerTpl))\r\n          .appendTo(slide.$slide)\r\n          .hide()\r\n          .fadeIn(\"fast\");\r\n      }\r\n    },\r\n\r\n    // Remove loading icon from the slide\r\n    // ==================================\r\n\r\n    hideLoading: function (slide) {\r\n      var self = this;\r\n\r\n      slide = slide || self.current;\r\n\r\n      if (slide && slide.$spinner) {\r\n        slide.$spinner.stop().remove();\r\n\r\n        delete slide.$spinner;\r\n      }\r\n    },\r\n\r\n    // Adjustments after slide content has been loaded\r\n    // ===============================================\r\n\r\n    afterLoad: function (slide) {\r\n      var self = this;\r\n\r\n      if (self.isClosing) {\r\n        return;\r\n      }\r\n\r\n      slide.isLoading = false;\r\n      slide.isLoaded = true;\r\n\r\n      self.trigger(\"afterLoad\", slide);\r\n\r\n      self.hideLoading(slide);\r\n\r\n      // Add small close button\r\n      if (slide.opts.smallBtn && (!slide.$smallBtn || !slide.$smallBtn.length)) {\r\n        slide.$smallBtn = $(self.translate(slide, slide.opts.btnTpl.smallBtn)).appendTo(slide.$content);\r\n      }\r\n\r\n      // Disable right click\r\n      if (slide.opts.protect && slide.$content && !slide.hasError) {\r\n        slide.$content.on(\"contextmenu.fb\", function (e) {\r\n          if (e.button == 2) {\r\n            e.preventDefault();\r\n          }\r\n\r\n          return true;\r\n        });\r\n\r\n        // Add fake element on top of the image\r\n        // This makes a bit harder for user to select image\r\n        if (slide.type === \"image\") {\r\n          $('<div class=\"fancybox-spaceball\"></div>').appendTo(slide.$content);\r\n        }\r\n      }\r\n\r\n      self.adjustCaption(slide);\r\n\r\n      self.adjustLayout(slide);\r\n\r\n      if (slide.pos === self.currPos) {\r\n        self.updateCursor();\r\n      }\r\n\r\n      self.revealContent(slide);\r\n    },\r\n\r\n    // Prevent caption overlap,\r\n    // fix css inconsistency across browsers\r\n    // =====================================\r\n\r\n    adjustCaption: function (slide) {\r\n      var self = this,\r\n        current = slide || self.current,\r\n        caption = current.opts.caption,\r\n        preventOverlap = current.opts.preventCaptionOverlap,\r\n        $caption = self.$refs.caption,\r\n        $clone,\r\n        captionH = false;\r\n\r\n      $caption.toggleClass(\"fancybox-caption--separate\", preventOverlap);\r\n\r\n      if (preventOverlap && caption && caption.length) {\r\n        if (current.pos !== self.currPos) {\r\n          $clone = $caption.clone().appendTo($caption.parent());\r\n\r\n          $clone\r\n            .children()\r\n            .eq(0)\r\n            .empty()\r\n            .html(caption);\r\n\r\n          captionH = $clone.outerHeight(true);\r\n\r\n          $clone.empty().remove();\r\n        } else if (self.$caption) {\r\n          captionH = self.$caption.outerHeight(true);\r\n        }\r\n\r\n        current.$slide.css(\"padding-bottom\", captionH || \"\");\r\n      }\r\n    },\r\n\r\n    // Simple hack to fix inconsistency across browsers, described here (affects Edge, too):\r\n    // https://bugzilla.mozilla.org/show_bug.cgi?id=748518\r\n    // ====================================================================================\r\n\r\n    adjustLayout: function (slide) {\r\n      var self = this,\r\n        current = slide || self.current,\r\n        scrollHeight,\r\n        marginBottom,\r\n        inlinePadding,\r\n        actualPadding;\r\n\r\n      if (current.isLoaded && current.opts.disableLayoutFix !== true) {\r\n        current.$content.css(\"margin-bottom\", \"\");\r\n\r\n        // If we would always set margin-bottom for the content,\r\n        // then it would potentially break vertical align\r\n        if (current.$content.outerHeight() > current.$slide.height() + 0.5) {\r\n          inlinePadding = current.$slide[0].style[\"padding-bottom\"];\r\n          actualPadding = current.$slide.css(\"padding-bottom\");\r\n\r\n          if (parseFloat(actualPadding) > 0) {\r\n            scrollHeight = current.$slide[0].scrollHeight;\r\n\r\n            current.$slide.css(\"padding-bottom\", 0);\r\n\r\n            if (Math.abs(scrollHeight - current.$slide[0].scrollHeight) < 1) {\r\n              marginBottom = actualPadding;\r\n            }\r\n\r\n            current.$slide.css(\"padding-bottom\", inlinePadding);\r\n          }\r\n        }\r\n\r\n        current.$content.css(\"margin-bottom\", marginBottom);\r\n      }\r\n    },\r\n\r\n    // Make content visible\r\n    // This method is called right after content has been loaded or\r\n    // user navigates gallery and transition should start\r\n    // ============================================================\r\n\r\n    revealContent: function (slide) {\r\n      var self = this,\r\n        $slide = slide.$slide,\r\n        end = false,\r\n        start = false,\r\n        isMoved = self.isMoved(slide),\r\n        isRevealed = slide.isRevealed,\r\n        effect,\r\n        effectClassName,\r\n        duration,\r\n        opacity;\r\n\r\n      slide.isRevealed = true;\r\n\r\n      effect = slide.opts[self.firstRun ? \"animationEffect\" : \"transitionEffect\"];\r\n      duration = slide.opts[self.firstRun ? \"animationDuration\" : \"transitionDuration\"];\r\n\r\n      duration = parseInt(slide.forcedDuration === undefined ? duration : slide.forcedDuration, 10);\r\n\r\n      if (isMoved || slide.pos !== self.currPos || !duration) {\r\n        effect = false;\r\n      }\r\n\r\n      // Check if can zoom\r\n      if (effect === \"zoom\") {\r\n        if (slide.pos === self.currPos && duration && slide.type === \"image\" && !slide.hasError && (start = self.getThumbPos(slide))) {\r\n          end = self.getFitPos(slide);\r\n        } else {\r\n          effect = \"fade\";\r\n        }\r\n      }\r\n\r\n      // Zoom animation\r\n      // ==============\r\n      if (effect === \"zoom\") {\r\n        self.isAnimating = true;\r\n\r\n        end.scaleX = end.width / start.width;\r\n        end.scaleY = end.height / start.height;\r\n\r\n        // Check if we need to animate opacity\r\n        opacity = slide.opts.zoomOpacity;\r\n\r\n        if (opacity == \"auto\") {\r\n          opacity = Math.abs(slide.width / slide.height - start.width / start.height) > 0.1;\r\n        }\r\n\r\n        if (opacity) {\r\n          start.opacity = 0.1;\r\n          end.opacity = 1;\r\n        }\r\n\r\n        // Draw image at start position\r\n        $.fancybox.setTranslate(slide.$content.removeClass(\"fancybox-is-hidden\"), start);\r\n\r\n        forceRedraw(slide.$content);\r\n\r\n        // Start animation\r\n        $.fancybox.animate(slide.$content, end, duration, function () {\r\n          self.isAnimating = false;\r\n\r\n          self.complete();\r\n        });\r\n\r\n        return;\r\n      }\r\n\r\n      self.updateSlide(slide);\r\n\r\n      // Simply show content if no effect\r\n      // ================================\r\n      if (!effect) {\r\n        slide.$content.removeClass(\"fancybox-is-hidden\");\r\n\r\n        if (!isRevealed && isMoved && slide.type === \"image\" && !slide.hasError) {\r\n          slide.$content.hide().fadeIn(\"fast\");\r\n        }\r\n\r\n        if (slide.pos === self.currPos) {\r\n          self.complete();\r\n        }\r\n\r\n        return;\r\n      }\r\n\r\n      // Prepare for CSS transiton\r\n      // =========================\r\n      $.fancybox.stop($slide);\r\n\r\n      //effectClassName = \"fancybox-animated fancybox-slide--\" + (slide.pos >= self.prevPos ? \"next\" : \"previous\") + \" fancybox-fx-\" + effect;\r\n      effectClassName = \"fancybox-slide--\" + (slide.pos >= self.prevPos ? \"next\" : \"previous\") + \" fancybox-animated fancybox-fx-\" + effect;\r\n\r\n      $slide.addClass(effectClassName).removeClass(\"fancybox-slide--current\"); //.addClass(effectClassName);\r\n\r\n      slide.$content.removeClass(\"fancybox-is-hidden\");\r\n\r\n      // Force reflow\r\n      forceRedraw($slide);\r\n\r\n      if (slide.type !== \"image\") {\r\n        slide.$content.hide().show(0);\r\n      }\r\n\r\n      $.fancybox.animate(\r\n        $slide,\r\n        \"fancybox-slide--current\",\r\n        duration,\r\n        function () {\r\n          $slide.removeClass(effectClassName).css({\r\n            transform: \"\",\r\n            opacity: \"\"\r\n          });\r\n\r\n          if (slide.pos === self.currPos) {\r\n            self.complete();\r\n          }\r\n        },\r\n        true\r\n      );\r\n    },\r\n\r\n    // Check if we can and have to zoom from thumbnail\r\n    //================================================\r\n\r\n    getThumbPos: function (slide) {\r\n      var rez = false,\r\n        $thumb = slide.$thumb,\r\n        thumbPos,\r\n        btw,\r\n        brw,\r\n        bbw,\r\n        blw;\r\n\r\n      if (!$thumb || !inViewport($thumb[0])) {\r\n        return false;\r\n      }\r\n\r\n      thumbPos = $.fancybox.getTranslate($thumb);\r\n\r\n      btw = parseFloat($thumb.css(\"border-top-width\") || 0);\r\n      brw = parseFloat($thumb.css(\"border-right-width\") || 0);\r\n      bbw = parseFloat($thumb.css(\"border-bottom-width\") || 0);\r\n      blw = parseFloat($thumb.css(\"border-left-width\") || 0);\r\n\r\n      rez = {\r\n        top: thumbPos.top + btw,\r\n        left: thumbPos.left + blw,\r\n        width: thumbPos.width - brw - blw,\r\n        height: thumbPos.height - btw - bbw,\r\n        scaleX: 1,\r\n        scaleY: 1\r\n      };\r\n\r\n      return thumbPos.width > 0 && thumbPos.height > 0 ? rez : false;\r\n    },\r\n\r\n    // Final adjustments after current gallery item is moved to position\r\n    // and it`s content is loaded\r\n    // ==================================================================\r\n\r\n    complete: function () {\r\n      var self = this,\r\n        current = self.current,\r\n        slides = {},\r\n        $el;\r\n\r\n      if (self.isMoved() || !current.isLoaded) {\r\n        return;\r\n      }\r\n\r\n      if (!current.isComplete) {\r\n        current.isComplete = true;\r\n\r\n        current.$slide.siblings().trigger(\"onReset\");\r\n\r\n        self.preload(\"inline\");\r\n\r\n        // Trigger any CSS transiton inside the slide\r\n        forceRedraw(current.$slide);\r\n\r\n        current.$slide.addClass(\"fancybox-slide--complete\");\r\n\r\n        // Remove unnecessary slides\r\n        $.each(self.slides, function (key, slide) {\r\n          if (slide.pos >= self.currPos - 1 && slide.pos <= self.currPos + 1) {\r\n            slides[slide.pos] = slide;\r\n          } else if (slide) {\r\n            $.fancybox.stop(slide.$slide);\r\n\r\n            slide.$slide.off().remove();\r\n          }\r\n        });\r\n\r\n        self.slides = slides;\r\n      }\r\n\r\n      self.isAnimating = false;\r\n\r\n      self.updateCursor();\r\n\r\n      self.trigger(\"afterShow\");\r\n\r\n      // Autoplay first html5 video/audio\r\n      if (!!current.opts.video.autoStart) {\r\n        current.$slide\r\n          .find(\"video,audio\")\r\n          .filter(\":visible:first\")\r\n          .trigger(\"play\")\r\n          .one(\"ended\", function () {\r\n            if (Document.exitFullscreen) {\r\n              Document.exitFullscreen();\r\n            } else if (this.webkitExitFullscreen) {\r\n              this.webkitExitFullscreen();\r\n            }\r\n\r\n            self.next();\r\n          });\r\n      }\r\n\r\n      // Try to focus on the first focusable element\r\n      if (current.opts.autoFocus && current.contentType === \"html\") {\r\n        // Look for the first input with autofocus attribute\r\n        $el = current.$content.find(\"input[autofocus]:enabled:visible:first\");\r\n\r\n        if ($el.length) {\r\n          $el.trigger(\"focus\");\r\n        } else {\r\n          self.focus(null, true);\r\n        }\r\n      }\r\n\r\n      // Avoid jumping\r\n      current.$slide.scrollTop(0).scrollLeft(0);\r\n    },\r\n\r\n    // Preload next and previous slides\r\n    // ================================\r\n\r\n    preload: function (type) {\r\n      var self = this,\r\n        prev,\r\n        next;\r\n\r\n      if (self.group.length < 2) {\r\n        return;\r\n      }\r\n\r\n      next = self.slides[self.currPos + 1];\r\n      prev = self.slides[self.currPos - 1];\r\n\r\n      if (prev && prev.type === type) {\r\n        self.loadSlide(prev);\r\n      }\r\n\r\n      if (next && next.type === type) {\r\n        self.loadSlide(next);\r\n      }\r\n    },\r\n\r\n    // Try to find and focus on the first focusable element\r\n    // ====================================================\r\n\r\n    focus: function (e, firstRun) {\r\n      var self = this,\r\n        focusableStr = [\r\n          \"a[href]\",\r\n          \"area[href]\",\r\n          'input:not([disabled]):not([type=\"hidden\"]):not([aria-hidden])',\r\n          \"select:not([disabled]):not([aria-hidden])\",\r\n          \"textarea:not([disabled]):not([aria-hidden])\",\r\n          \"button:not([disabled]):not([aria-hidden])\",\r\n          \"iframe\",\r\n          \"object\",\r\n          \"embed\",\r\n          \"video\",\r\n          \"audio\",\r\n          \"[contenteditable]\",\r\n          '[tabindex]:not([tabindex^=\"-\"])'\r\n        ].join(\",\"),\r\n        focusableItems,\r\n        focusedItemIndex;\r\n\r\n      if (self.isClosing) {\r\n        return;\r\n      }\r\n\r\n      if (e || !self.current || !self.current.isComplete) {\r\n        // Focus on any element inside fancybox\r\n        focusableItems = self.$refs.container.find(\"*:visible\");\r\n      } else {\r\n        // Focus inside current slide\r\n        focusableItems = self.current.$slide.find(\"*:visible\" + (firstRun ? \":not(.fancybox-close-small)\" : \"\"));\r\n      }\r\n\r\n      focusableItems = focusableItems.filter(focusableStr).filter(function () {\r\n        return $(this).css(\"visibility\") !== \"hidden\" && !$(this).hasClass(\"disabled\");\r\n      });\r\n\r\n      if (focusableItems.length) {\r\n        focusedItemIndex = focusableItems.index(document.activeElement);\r\n\r\n        if (e && e.shiftKey) {\r\n          // Back tab\r\n          if (focusedItemIndex < 0 || focusedItemIndex == 0) {\r\n            e.preventDefault();\r\n\r\n            focusableItems.eq(focusableItems.length - 1).trigger(\"focus\");\r\n          }\r\n        } else {\r\n          // Outside or Forward tab\r\n          if (focusedItemIndex < 0 || focusedItemIndex == focusableItems.length - 1) {\r\n            if (e) {\r\n              e.preventDefault();\r\n            }\r\n\r\n            focusableItems.eq(0).trigger(\"focus\");\r\n          }\r\n        }\r\n      } else {\r\n        self.$refs.container.trigger(\"focus\");\r\n      }\r\n    },\r\n\r\n    // Activates current instance - brings container to the front and enables keyboard,\r\n    // notifies other instances about deactivating\r\n    // =================================================================================\r\n\r\n    activate: function () {\r\n      var self = this;\r\n\r\n      // Deactivate all instances\r\n      $(\".fancybox-container\").each(function () {\r\n        var instance = $(this).data(\"FancyBox\");\r\n\r\n        // Skip self and closing instances\r\n        if (instance && instance.id !== self.id && !instance.isClosing) {\r\n          instance.trigger(\"onDeactivate\");\r\n\r\n          instance.removeEvents();\r\n\r\n          instance.isVisible = false;\r\n        }\r\n      });\r\n\r\n      self.isVisible = true;\r\n\r\n      if (self.current || self.isIdle) {\r\n        self.update();\r\n\r\n        self.updateControls();\r\n      }\r\n\r\n      self.trigger(\"onActivate\");\r\n\r\n      self.addEvents();\r\n    },\r\n\r\n    // Start closing procedure\r\n    // This will start \"zoom-out\" animation if needed and clean everything up afterwards\r\n    // =================================================================================\r\n\r\n    close: function (e, d) {\r\n      var self = this,\r\n        current = self.current,\r\n        effect,\r\n        duration,\r\n        $content,\r\n        domRect,\r\n        opacity,\r\n        start,\r\n        end;\r\n\r\n      var done = function () {\r\n        self.cleanUp(e);\r\n      };\r\n\r\n      if (self.isClosing) {\r\n        return false;\r\n      }\r\n\r\n      self.isClosing = true;\r\n\r\n      // If beforeClose callback prevents closing, make sure content is centered\r\n      if (self.trigger(\"beforeClose\", e) === false) {\r\n        self.isClosing = false;\r\n\r\n        requestAFrame(function () {\r\n          self.update();\r\n        });\r\n\r\n        return false;\r\n      }\r\n\r\n      // Remove all events\r\n      // If there are multiple instances, they will be set again by \"activate\" method\r\n      self.removeEvents();\r\n\r\n      $content = current.$content;\r\n      effect = current.opts.animationEffect;\r\n      duration = $.isNumeric(d) ? d : effect ? current.opts.animationDuration : 0;\r\n\r\n      current.$slide.removeClass(\"fancybox-slide--complete fancybox-slide--next fancybox-slide--previous fancybox-animated\");\r\n\r\n      if (e !== true) {\r\n        $.fancybox.stop(current.$slide);\r\n      } else {\r\n        effect = false;\r\n      }\r\n\r\n      // Remove other slides\r\n      current.$slide\r\n        .siblings()\r\n        .trigger(\"onReset\")\r\n        .remove();\r\n\r\n      // Trigger animations\r\n      if (duration) {\r\n        self.$refs.container\r\n          .removeClass(\"fancybox-is-open\")\r\n          .addClass(\"fancybox-is-closing\")\r\n          .css(\"transition-duration\", duration + \"ms\");\r\n      }\r\n\r\n      // Clean up\r\n      self.hideLoading(current);\r\n\r\n      self.hideControls(true);\r\n\r\n      self.updateCursor();\r\n\r\n      // Check if possible to zoom-out\r\n      if (\r\n        effect === \"zoom\" &&\r\n        !($content && duration && current.type === \"image\" && !self.isMoved() && !current.hasError && (end = self.getThumbPos(current)))\r\n      ) {\r\n        effect = \"fade\";\r\n      }\r\n\r\n      if (effect === \"zoom\") {\r\n        $.fancybox.stop($content);\r\n\r\n        domRect = $.fancybox.getTranslate($content);\r\n\r\n        start = {\r\n          top: domRect.top,\r\n          left: domRect.left,\r\n          scaleX: domRect.width / end.width,\r\n          scaleY: domRect.height / end.height,\r\n          width: end.width,\r\n          height: end.height\r\n        };\r\n\r\n        // Check if we need to animate opacity\r\n        opacity = current.opts.zoomOpacity;\r\n\r\n        if (opacity == \"auto\") {\r\n          opacity = Math.abs(current.width / current.height - end.width / end.height) > 0.1;\r\n        }\r\n\r\n        if (opacity) {\r\n          end.opacity = 0;\r\n        }\r\n\r\n        $.fancybox.setTranslate($content, start);\r\n\r\n        forceRedraw($content);\r\n\r\n        $.fancybox.animate($content, end, duration, done);\r\n\r\n        return true;\r\n      }\r\n\r\n      if (effect && duration) {\r\n        $.fancybox.animate(\r\n          current.$slide.addClass(\"fancybox-slide--previous\").removeClass(\"fancybox-slide--current\"),\r\n          \"fancybox-animated fancybox-fx-\" + effect,\r\n          duration,\r\n          done\r\n        );\r\n      } else {\r\n        // If skip animation\r\n        if (e === true) {\r\n          setTimeout(done, duration);\r\n        } else {\r\n          done();\r\n        }\r\n      }\r\n\r\n      return true;\r\n    },\r\n\r\n    // Final adjustments after removing the instance\r\n    // =============================================\r\n\r\n    cleanUp: function (e) {\r\n      var self = this,\r\n        instance,\r\n        $focus = self.current.opts.$orig,\r\n        x,\r\n        y;\r\n\r\n      self.current.$slide.trigger(\"onReset\");\r\n\r\n      self.$refs.container.empty().remove();\r\n\r\n      self.trigger(\"afterClose\", e);\r\n\r\n      // Place back focus\r\n      if (!!self.current.opts.backFocus) {\r\n        if (!$focus || !$focus.length || !$focus.is(\":visible\")) {\r\n          $focus = self.$trigger;\r\n        }\r\n\r\n        if ($focus && $focus.length) {\r\n          x = window.scrollX;\r\n          y = window.scrollY;\r\n\r\n          $focus.trigger(\"focus\");\r\n\r\n          $(\"html, body\")\r\n            .scrollTop(y)\r\n            .scrollLeft(x);\r\n        }\r\n      }\r\n\r\n      self.current = null;\r\n\r\n      // Check if there are other instances\r\n      instance = $.fancybox.getInstance();\r\n\r\n      if (instance) {\r\n        instance.activate();\r\n      } else {\r\n        $(\"body\").removeClass(\"fancybox-active compensate-for-scrollbar\");\r\n\r\n        $(\"#fancybox-style-noscroll\").remove();\r\n      }\r\n    },\r\n\r\n    // Call callback and trigger an event\r\n    // ==================================\r\n\r\n    trigger: function (name, slide) {\r\n      var args = Array.prototype.slice.call(arguments, 1),\r\n        self = this,\r\n        obj = slide && slide.opts ? slide : self.current,\r\n        rez;\r\n\r\n      if (obj) {\r\n        args.unshift(obj);\r\n      } else {\r\n        obj = self;\r\n      }\r\n\r\n      args.unshift(self);\r\n\r\n      if ($.isFunction(obj.opts[name])) {\r\n        rez = obj.opts[name].apply(obj, args);\r\n      }\r\n\r\n      if (rez === false) {\r\n        return rez;\r\n      }\r\n\r\n      if (name === \"afterClose\" || !self.$refs) {\r\n        $D.trigger(name + \".fb\", args);\r\n      } else {\r\n        self.$refs.container.trigger(name + \".fb\", args);\r\n      }\r\n    },\r\n\r\n    // Update infobar values, navigation button states and reveal caption\r\n    // ==================================================================\r\n\r\n    updateControls: function () {\r\n      var self = this,\r\n        current = self.current,\r\n        index = current.index,\r\n        $container = self.$refs.container,\r\n        $caption = self.$refs.caption,\r\n        caption = current.opts.caption;\r\n\r\n      // Recalculate content dimensions\r\n      current.$slide.trigger(\"refresh\");\r\n\r\n      // Set caption\r\n      if (caption && caption.length) {\r\n        self.$caption = $caption;\r\n\r\n        $caption\r\n          .children()\r\n          .eq(0)\r\n          .html(caption);\r\n      } else {\r\n        self.$caption = null;\r\n      }\r\n\r\n      if (!self.hasHiddenControls && !self.isIdle) {\r\n        self.showControls();\r\n      }\r\n\r\n      // Update info and navigation elements\r\n      $container.find(\"[data-fancybox-count]\").html(self.group.length);\r\n      $container.find(\"[data-fancybox-index]\").html(index + 1);\r\n\r\n      $container.find(\"[data-fancybox-prev]\").prop(\"disabled\", !current.opts.loop && index <= 0);\r\n      $container.find(\"[data-fancybox-next]\").prop(\"disabled\", !current.opts.loop && index >= self.group.length - 1);\r\n\r\n      if (current.type === \"image\") {\r\n        // Re-enable buttons; update download button source\r\n        $container\r\n          .find(\"[data-fancybox-zoom]\")\r\n          .show()\r\n          .end()\r\n          .find(\"[data-fancybox-download]\")\r\n          .attr(\"href\", current.opts.image.src || current.src)\r\n          .show();\r\n      } else if (current.opts.toolbar) {\r\n        $container.find(\"[data-fancybox-download],[data-fancybox-zoom]\").hide();\r\n      }\r\n\r\n      // Make sure focus is not on disabled button/element\r\n      if ($(document.activeElement).is(\":hidden,[disabled]\")) {\r\n        self.$refs.container.trigger(\"focus\");\r\n      }\r\n    },\r\n\r\n    // Hide toolbar and caption\r\n    // ========================\r\n\r\n    hideControls: function (andCaption) {\r\n      var self = this,\r\n        arr = [\"infobar\", \"toolbar\", \"nav\"];\r\n\r\n      if (andCaption || !self.current.opts.preventCaptionOverlap) {\r\n        arr.push(\"caption\");\r\n      }\r\n\r\n      this.$refs.container.removeClass(\r\n        arr\r\n        .map(function (i) {\r\n          return \"fancybox-show-\" + i;\r\n        })\r\n        .join(\" \")\r\n      );\r\n\r\n      this.hasHiddenControls = true;\r\n    },\r\n\r\n    showControls: function () {\r\n      var self = this,\r\n        opts = self.current ? self.current.opts : self.opts,\r\n        $container = self.$refs.container;\r\n\r\n      self.hasHiddenControls = false;\r\n      self.idleSecondsCounter = 0;\r\n\r\n      $container\r\n        .toggleClass(\"fancybox-show-toolbar\", !!(opts.toolbar && opts.buttons))\r\n        .toggleClass(\"fancybox-show-infobar\", !!(opts.infobar && self.group.length > 1))\r\n        .toggleClass(\"fancybox-show-caption\", !!self.$caption)\r\n        .toggleClass(\"fancybox-show-nav\", !!(opts.arrows && self.group.length > 1))\r\n        .toggleClass(\"fancybox-is-modal\", !!opts.modal);\r\n    },\r\n\r\n    // Toggle toolbar and caption\r\n    // ==========================\r\n\r\n    toggleControls: function () {\r\n      if (this.hasHiddenControls) {\r\n        this.showControls();\r\n      } else {\r\n        this.hideControls();\r\n      }\r\n    }\r\n  });\r\n\r\n  $.fancybox = {\r\n    version: \"3.5.7\",\r\n    defaults: defaults,\r\n\r\n    // Get current instance and execute a command.\r\n    //\r\n    // Examples of usage:\r\n    //\r\n    //   $instance = $.fancybox.getInstance();\r\n    //   $.fancybox.getInstance().jumpTo( 1 );\r\n    //   $.fancybox.getInstance( 'jumpTo', 1 );\r\n    //   $.fancybox.getInstance( function() {\r\n    //       console.info( this.currIndex );\r\n    //   });\r\n    // ======================================================\r\n\r\n    getInstance: function (command) {\r\n      var instance = $('.fancybox-container:not(\".fancybox-is-closing\"):last').data(\"FancyBox\"),\r\n        args = Array.prototype.slice.call(arguments, 1);\r\n\r\n      if (instance instanceof FancyBox) {\r\n        if ($.type(command) === \"string\") {\r\n          instance[command].apply(instance, args);\r\n        } else if ($.type(command) === \"function\") {\r\n          command.apply(instance, args);\r\n        }\r\n\r\n        return instance;\r\n      }\r\n\r\n      return false;\r\n    },\r\n\r\n    // Create new instance\r\n    // ===================\r\n\r\n    open: function (items, opts, index) {\r\n      return new FancyBox(items, opts, index);\r\n    },\r\n\r\n    // Close current or all instances\r\n    // ==============================\r\n\r\n    close: function (all) {\r\n      var instance = this.getInstance();\r\n\r\n      if (instance) {\r\n        instance.close();\r\n\r\n        // Try to find and close next instance\r\n        if (all === true) {\r\n          this.close(all);\r\n        }\r\n      }\r\n    },\r\n\r\n    // Close all instances and unbind all events\r\n    // =========================================\r\n\r\n    destroy: function () {\r\n      this.close(true);\r\n\r\n      $D.add(\"body\").off(\"click.fb-start\", \"**\");\r\n    },\r\n\r\n    // Try to detect mobile devices\r\n    // ============================\r\n\r\n    isMobile: /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),\r\n\r\n    // Detect if 'translate3d' support is available\r\n    // ============================================\r\n\r\n    use3d: (function () {\r\n      var div = document.createElement(\"div\");\r\n\r\n      return (\r\n        window.getComputedStyle &&\r\n        window.getComputedStyle(div) &&\r\n        window.getComputedStyle(div).getPropertyValue(\"transform\") &&\r\n        !(document.documentMode && document.documentMode < 11)\r\n      );\r\n    })(),\r\n\r\n    // Helper function to get current visual state of an element\r\n    // returns array[ top, left, horizontal-scale, vertical-scale, opacity ]\r\n    // =====================================================================\r\n\r\n    getTranslate: function ($el) {\r\n      var domRect;\r\n\r\n      if (!$el || !$el.length) {\r\n        return false;\r\n      }\r\n\r\n      domRect = $el[0].getBoundingClientRect();\r\n\r\n      return {\r\n        top: domRect.top || 0,\r\n        left: domRect.left || 0,\r\n        width: domRect.width,\r\n        height: domRect.height,\r\n        opacity: parseFloat($el.css(\"opacity\"))\r\n      };\r\n    },\r\n\r\n    // Shortcut for setting \"translate3d\" properties for element\r\n    // Can set be used to set opacity, too\r\n    // ========================================================\r\n\r\n    setTranslate: function ($el, props) {\r\n      var str = \"\",\r\n        css = {};\r\n\r\n      if (!$el || !props) {\r\n        return;\r\n      }\r\n\r\n      if (props.left !== undefined || props.top !== undefined) {\r\n        str =\r\n          (props.left === undefined ? $el.position().left : props.left) +\r\n          \"px, \" +\r\n          (props.top === undefined ? $el.position().top : props.top) +\r\n          \"px\";\r\n\r\n        if (this.use3d) {\r\n          str = \"translate3d(\" + str + \", 0px)\";\r\n        } else {\r\n          str = \"translate(\" + str + \")\";\r\n        }\r\n      }\r\n\r\n      if (props.scaleX !== undefined && props.scaleY !== undefined) {\r\n        str += \" scale(\" + props.scaleX + \", \" + props.scaleY + \")\";\r\n      } else if (props.scaleX !== undefined) {\r\n        str += \" scaleX(\" + props.scaleX + \")\";\r\n      }\r\n\r\n      if (str.length) {\r\n        css.transform = str;\r\n      }\r\n\r\n      if (props.opacity !== undefined) {\r\n        css.opacity = props.opacity;\r\n      }\r\n\r\n      if (props.width !== undefined) {\r\n        css.width = props.width;\r\n      }\r\n\r\n      if (props.height !== undefined) {\r\n        css.height = props.height;\r\n      }\r\n\r\n      return $el.css(css);\r\n    },\r\n\r\n    // Simple CSS transition handler\r\n    // =============================\r\n\r\n    animate: function ($el, to, duration, callback, leaveAnimationName) {\r\n      var self = this,\r\n        from;\r\n\r\n      if ($.isFunction(duration)) {\r\n        callback = duration;\r\n        duration = null;\r\n      }\r\n\r\n      self.stop($el);\r\n\r\n      from = self.getTranslate($el);\r\n\r\n      $el.on(transitionEnd, function (e) {\r\n        // Skip events from child elements and z-index change\r\n        if (e && e.originalEvent && (!$el.is(e.originalEvent.target) || e.originalEvent.propertyName == \"z-index\")) {\r\n          return;\r\n        }\r\n\r\n        self.stop($el);\r\n\r\n        if ($.isNumeric(duration)) {\r\n          $el.css(\"transition-duration\", \"\");\r\n        }\r\n\r\n        if ($.isPlainObject(to)) {\r\n          if (to.scaleX !== undefined && to.scaleY !== undefined) {\r\n            self.setTranslate($el, {\r\n              top: to.top,\r\n              left: to.left,\r\n              width: from.width * to.scaleX,\r\n              height: from.height * to.scaleY,\r\n              scaleX: 1,\r\n              scaleY: 1\r\n            });\r\n          }\r\n        } else if (leaveAnimationName !== true) {\r\n          $el.removeClass(to);\r\n        }\r\n\r\n        if ($.isFunction(callback)) {\r\n          callback(e);\r\n        }\r\n      });\r\n\r\n      if ($.isNumeric(duration)) {\r\n        $el.css(\"transition-duration\", duration + \"ms\");\r\n      }\r\n\r\n      // Start animation by changing CSS properties or class name\r\n      if ($.isPlainObject(to)) {\r\n        if (to.scaleX !== undefined && to.scaleY !== undefined) {\r\n          delete to.width;\r\n          delete to.height;\r\n\r\n          if ($el.parent().hasClass(\"fancybox-slide--image\")) {\r\n            $el.parent().addClass(\"fancybox-is-scaling\");\r\n          }\r\n        }\r\n\r\n        $.fancybox.setTranslate($el, to);\r\n      } else {\r\n        $el.addClass(to);\r\n      }\r\n\r\n      // Make sure that `transitionend` callback gets fired\r\n      $el.data(\r\n        \"timer\",\r\n        setTimeout(function () {\r\n          $el.trigger(transitionEnd);\r\n        }, duration + 33)\r\n      );\r\n    },\r\n\r\n    stop: function ($el, callCallback) {\r\n      if ($el && $el.length) {\r\n        clearTimeout($el.data(\"timer\"));\r\n\r\n        if (callCallback) {\r\n          $el.trigger(transitionEnd);\r\n        }\r\n\r\n        $el.off(transitionEnd).css(\"transition-duration\", \"\");\r\n\r\n        $el.parent().removeClass(\"fancybox-is-scaling\");\r\n      }\r\n    }\r\n  };\r\n\r\n  // Default click handler for \"fancyboxed\" links\r\n  // ============================================\r\n\r\n  function _run(e, opts) {\r\n    var items = [],\r\n      index = 0,\r\n      $target,\r\n      value,\r\n      instance;\r\n\r\n    // Avoid opening multiple times\r\n    if (e && e.isDefaultPrevented()) {\r\n      return;\r\n    }\r\n\r\n    e.preventDefault();\r\n\r\n    opts = opts || {};\r\n\r\n    if (e && e.data) {\r\n      opts = mergeOpts(e.data.options, opts);\r\n    }\r\n\r\n    $target = opts.$target || $(e.currentTarget).trigger(\"blur\");\r\n    instance = $.fancybox.getInstance();\r\n\r\n    if (instance && instance.$trigger && instance.$trigger.is($target)) {\r\n      return;\r\n    }\r\n\r\n    if (opts.selector) {\r\n      items = $(opts.selector);\r\n    } else {\r\n      // Get all related items and find index for clicked one\r\n      value = $target.attr(\"data-fancybox\") || \"\";\r\n\r\n      if (value) {\r\n        items = e.data ? e.data.items : [];\r\n        items = items.length ? items.filter('[data-fancybox=\"' + value + '\"]') : $('[data-fancybox=\"' + value + '\"]');\r\n      } else {\r\n        items = [$target];\r\n      }\r\n    }\r\n\r\n    index = $(items).index($target);\r\n\r\n    // Sometimes current item can not be found\r\n    if (index < 0) {\r\n      index = 0;\r\n    }\r\n\r\n    instance = $.fancybox.open(items, opts, index);\r\n\r\n    // Save last active element\r\n    instance.$trigger = $target;\r\n  }\r\n\r\n  // Create a jQuery plugin\r\n  // ======================\r\n\r\n  $.fn.fancybox = function (options) {\r\n    var selector;\r\n\r\n    options = options || {};\r\n    selector = options.selector || false;\r\n\r\n    if (selector) {\r\n      // Use body element instead of document so it executes first\r\n      $(\"body\")\r\n        .off(\"click.fb-start\", selector)\r\n        .on(\"click.fb-start\", selector, {\r\n          options: options\r\n        }, _run);\r\n    } else {\r\n      this.off(\"click.fb-start\").on(\r\n        \"click.fb-start\", {\r\n          items: this,\r\n          options: options\r\n        },\r\n        _run\r\n      );\r\n    }\r\n\r\n    return this;\r\n  };\r\n\r\n  // Self initializing plugin for all elements having `data-fancybox` attribute\r\n  // ==========================================================================\r\n\r\n  $D.on(\"click.fb-start\", \"[data-fancybox]\", _run);\r\n\r\n  // Enable \"trigger elements\"\r\n  // =========================\r\n\r\n  $D.on(\"click.fb-start\", \"[data-fancybox-trigger]\", function (e) {\r\n    $('[data-fancybox=\"' + $(this).attr(\"data-fancybox-trigger\") + '\"]')\r\n      .eq($(this).attr(\"data-fancybox-index\") || 0)\r\n      .trigger(\"click.fb-start\", {\r\n        $trigger: $(this)\r\n      });\r\n  });\r\n\r\n  // Track focus event for better accessibility styling\r\n  // ==================================================\r\n  (function () {\r\n    var buttonStr = \".fancybox-button\",\r\n      focusStr = \"fancybox-focus\",\r\n      $pressed = null;\r\n\r\n    $D.on(\"mousedown mouseup focus blur\", buttonStr, function (e) {\r\n      switch (e.type) {\r\n        case \"mousedown\":\r\n          $pressed = $(this);\r\n          break;\r\n        case \"mouseup\":\r\n          $pressed = null;\r\n          break;\r\n        case \"focusin\":\r\n          $(buttonStr).removeClass(focusStr);\r\n\r\n          if (!$(this).is($pressed) && !$(this).is(\"[disabled]\")) {\r\n            $(this).addClass(focusStr);\r\n          }\r\n          break;\r\n        case \"focusout\":\r\n          $(buttonStr).removeClass(focusStr);\r\n          break;\r\n      }\r\n    });\r\n  })();\r\n})(window, document, jQuery);\n// ==========================================================================\r\n//\r\n// Media\r\n// Adds additional media type support\r\n//\r\n// ==========================================================================\r\n(function ($) {\r\n  \"use strict\";\r\n\r\n  // Object containing properties for each media type\r\n  var defaults = {\r\n    youtube: {\r\n      matcher: /(youtube\\.com|youtu\\.be|youtube\\-nocookie\\.com)\\/(watch\\?(.*&)?v=|v\\/|u\\/|embed\\/?)?(videoseries\\?list=(.*)|[\\w-]{11}|\\?listType=(.*)&list=(.*))(.*)/i,\r\n      params: {\r\n        autoplay: 1,\r\n        autohide: 1,\r\n        fs: 1,\r\n        rel: 0,\r\n        hd: 1,\r\n        wmode: \"transparent\",\r\n        enablejsapi: 1,\r\n        html5: 1\r\n      },\r\n      paramPlace: 8,\r\n      type: \"iframe\",\r\n      url: \"https://www.youtube-nocookie.com/embed/$4\",\r\n      thumb: \"https://img.youtube.com/vi/$4/hqdefault.jpg\"\r\n    },\r\n\r\n    vimeo: {\r\n      matcher: /^.+vimeo.com\\/(.*\\/)?([\\d]+)(.*)?/,\r\n      params: {\r\n        autoplay: 1,\r\n        hd: 1,\r\n        show_title: 1,\r\n        show_byline: 1,\r\n        show_portrait: 0,\r\n        fullscreen: 1\r\n      },\r\n      paramPlace: 3,\r\n      type: \"iframe\",\r\n      url: \"//player.vimeo.com/video/$2\"\r\n    },\r\n\r\n    instagram: {\r\n      matcher: /(instagr\\.am|instagram\\.com)\\/p\\/([a-zA-Z0-9_\\-]+)\\/?/i,\r\n      type: \"image\",\r\n      url: \"//$1/p/$2/media/?size=l\"\r\n    },\r\n\r\n    // Examples:\r\n    // http://maps.google.com/?ll=48.857995,2.294297&spn=0.007666,0.021136&t=m&z=16\r\n    // https://www.google.com/maps/@37.7852006,-122.4146355,14.65z\r\n    // https://www.google.com/maps/@52.2111123,2.9237542,6.61z?hl=en\r\n    // https://www.google.com/maps/place/Googleplex/@37.4220041,-122.0833494,17z/data=!4m5!3m4!1s0x0:0x6c296c66619367e0!8m2!3d37.4219998!4d-122.0840572\r\n    gmap_place: {\r\n      matcher: /(maps\\.)?google\\.([a-z]{2,3}(\\.[a-z]{2})?)\\/(((maps\\/(place\\/(.*)\\/)?\\@(.*),(\\d+.?\\d+?)z))|(\\?ll=))(.*)?/i,\r\n      type: \"iframe\",\r\n      url: function (rez) {\r\n        return (\r\n          \"//maps.google.\" +\r\n          rez[2] +\r\n          \"/?ll=\" +\r\n          (rez[9] ? rez[9] + \"&z=\" + Math.floor(rez[10]) + (rez[12] ? rez[12].replace(/^\\//, \"&\") : \"\") : rez[12] + \"\").replace(/\\?/, \"&\") +\r\n          \"&output=\" +\r\n          (rez[12] && rez[12].indexOf(\"layer=c\") > 0 ? \"svembed\" : \"embed\")\r\n        );\r\n      }\r\n    },\r\n\r\n    // Examples:\r\n    // https://www.google.com/maps/search/Empire+State+Building/\r\n    // https://www.google.com/maps/search/?api=1&query=centurylink+field\r\n    // https://www.google.com/maps/search/?api=1&query=47.5951518,-122.3316393\r\n    gmap_search: {\r\n      matcher: /(maps\\.)?google\\.([a-z]{2,3}(\\.[a-z]{2})?)\\/(maps\\/search\\/)(.*)/i,\r\n      type: \"iframe\",\r\n      url: function (rez) {\r\n        return \"//maps.google.\" + rez[2] + \"/maps?q=\" + rez[5].replace(\"query=\", \"q=\").replace(\"api=1\", \"\") + \"&output=embed\";\r\n      }\r\n    }\r\n  };\r\n\r\n  // Formats matching url to final form\r\n  var format = function (url, rez, params) {\r\n    if (!url) {\r\n      return;\r\n    }\r\n\r\n    params = params || \"\";\r\n\r\n    if ($.type(params) === \"object\") {\r\n      params = $.param(params, true);\r\n    }\r\n\r\n    $.each(rez, function (key, value) {\r\n      url = url.replace(\"$\" + key, value || \"\");\r\n    });\r\n\r\n    if (params.length) {\r\n      url += (url.indexOf(\"?\") > 0 ? \"&\" : \"?\") + params;\r\n    }\r\n\r\n    return url;\r\n  };\r\n\r\n  $(document).on(\"objectNeedsType.fb\", function (e, instance, item) {\r\n    var url = item.src || \"\",\r\n      type = false,\r\n      media,\r\n      thumb,\r\n      rez,\r\n      params,\r\n      urlParams,\r\n      paramObj,\r\n      provider;\r\n\r\n    media = $.extend(true, {}, defaults, item.opts.media);\r\n\r\n    // Look for any matching media type\r\n    $.each(media, function (providerName, providerOpts) {\r\n      rez = url.match(providerOpts.matcher);\r\n\r\n      if (!rez) {\r\n        return;\r\n      }\r\n\r\n      type = providerOpts.type;\r\n      provider = providerName;\r\n      paramObj = {};\r\n\r\n      if (providerOpts.paramPlace && rez[providerOpts.paramPlace]) {\r\n        urlParams = rez[providerOpts.paramPlace];\r\n\r\n        if (urlParams[0] == \"?\") {\r\n          urlParams = urlParams.substring(1);\r\n        }\r\n\r\n        urlParams = urlParams.split(\"&\");\r\n\r\n        for (var m = 0; m < urlParams.length; ++m) {\r\n          var p = urlParams[m].split(\"=\", 2);\r\n\r\n          if (p.length == 2) {\r\n            paramObj[p[0]] = decodeURIComponent(p[1].replace(/\\+/g, \" \"));\r\n          }\r\n        }\r\n      }\r\n\r\n      params = $.extend(true, {}, providerOpts.params, item.opts[providerName], paramObj);\r\n\r\n      url =\r\n        $.type(providerOpts.url) === \"function\" ? providerOpts.url.call(this, rez, params, item) : format(providerOpts.url, rez, params);\r\n\r\n      thumb =\r\n        $.type(providerOpts.thumb) === \"function\" ? providerOpts.thumb.call(this, rez, params, item) : format(providerOpts.thumb, rez);\r\n\r\n      if (providerName === \"youtube\") {\r\n        url = url.replace(/&t=((\\d+)m)?(\\d+)s/, function (match, p1, m, s) {\r\n          return \"&start=\" + ((m ? parseInt(m, 10) * 60 : 0) + parseInt(s, 10));\r\n        });\r\n      } else if (providerName === \"vimeo\") {\r\n        url = url.replace(\"&%23\", \"#\");\r\n      }\r\n\r\n      return false;\r\n    });\r\n\r\n    // If it is found, then change content type and update the url\r\n\r\n    if (type) {\r\n      if (!item.opts.thumb && !(item.opts.$thumb && item.opts.$thumb.length)) {\r\n        item.opts.thumb = thumb;\r\n      }\r\n\r\n      if (type === \"iframe\") {\r\n        item.opts = $.extend(true, item.opts, {\r\n          iframe: {\r\n            preload: false,\r\n            attr: {\r\n              scrolling: \"no\"\r\n            }\r\n          }\r\n        });\r\n      }\r\n\r\n      $.extend(item, {\r\n        type: type,\r\n        src: url,\r\n        origSrc: item.src,\r\n        contentSource: provider,\r\n        contentType: type === \"image\" ? \"image\" : provider == \"gmap_place\" || provider == \"gmap_search\" ? \"map\" : \"video\"\r\n      });\r\n    } else if (url) {\r\n      item.type = item.opts.defaultType;\r\n    }\r\n  });\r\n\r\n  // Load YouTube/Video API on request to detect when video finished playing\r\n  var VideoAPILoader = {\r\n    youtube: {\r\n      src: \"https://www.youtube.com/iframe_api\",\r\n      class: \"YT\",\r\n      loading: false,\r\n      loaded: false\r\n    },\r\n\r\n    vimeo: {\r\n      src: \"https://player.vimeo.com/api/player.js\",\r\n      class: \"Vimeo\",\r\n      loading: false,\r\n      loaded: false\r\n    },\r\n\r\n    load: function (vendor) {\r\n      var _this = this,\r\n        script;\r\n\r\n      if (this[vendor].loaded) {\r\n        setTimeout(function () {\r\n          _this.done(vendor);\r\n        });\r\n        return;\r\n      }\r\n\r\n      if (this[vendor].loading) {\r\n        return;\r\n      }\r\n\r\n      this[vendor].loading = true;\r\n\r\n      script = document.createElement(\"script\");\r\n      script.type = \"text/javascript\";\r\n      script.src = this[vendor].src;\r\n\r\n      if (vendor === \"youtube\") {\r\n        window.onYouTubeIframeAPIReady = function () {\r\n          _this[vendor].loaded = true;\r\n          _this.done(vendor);\r\n        };\r\n      } else {\r\n        script.onload = function () {\r\n          _this[vendor].loaded = true;\r\n          _this.done(vendor);\r\n        };\r\n      }\r\n\r\n      document.body.appendChild(script);\r\n    },\r\n    done: function (vendor) {\r\n      var instance, $el, player;\r\n\r\n      if (vendor === \"youtube\") {\r\n        delete window.onYouTubeIframeAPIReady;\r\n      }\r\n\r\n      instance = $.fancybox.getInstance();\r\n\r\n      if (instance) {\r\n        $el = instance.current.$content.find(\"iframe\");\r\n\r\n        if (vendor === \"youtube\" && YT !== undefined && YT) {\r\n          player = new YT.Player($el.attr(\"id\"), {\r\n            events: {\r\n              onStateChange: function (e) {\r\n                if (e.data == 0) {\r\n                  instance.next();\r\n                }\r\n              }\r\n            }\r\n          });\r\n        } else if (vendor === \"vimeo\" && Vimeo !== undefined && Vimeo) {\r\n          player = new Vimeo.Player($el);\r\n\r\n          player.on(\"ended\", function () {\r\n            instance.next();\r\n          });\r\n        }\r\n      }\r\n    }\r\n  };\r\n\r\n  $(document).on({\r\n    \"afterShow.fb\": function (e, instance, current) {\r\n      if (instance.group.length > 1 && (current.contentSource === \"youtube\" || current.contentSource === \"vimeo\")) {\r\n        VideoAPILoader.load(current.contentSource);\r\n      }\r\n    }\r\n  });\r\n})(jQuery);\n// ==========================================================================\r\n//\r\n// Guestures\r\n// Adds touch guestures, handles click and tap events\r\n//\r\n// ==========================================================================\r\n(function (window, document, $) {\r\n  \"use strict\";\r\n\r\n  var requestAFrame = (function () {\r\n    return (\r\n      window.requestAnimationFrame ||\r\n      window.webkitRequestAnimationFrame ||\r\n      window.mozRequestAnimationFrame ||\r\n      window.oRequestAnimationFrame ||\r\n      // if all else fails, use setTimeout\r\n      function (callback) {\r\n        return window.setTimeout(callback, 1000 / 60);\r\n      }\r\n    );\r\n  })();\r\n\r\n  var cancelAFrame = (function () {\r\n    return (\r\n      window.cancelAnimationFrame ||\r\n      window.webkitCancelAnimationFrame ||\r\n      window.mozCancelAnimationFrame ||\r\n      window.oCancelAnimationFrame ||\r\n      function (id) {\r\n        window.clearTimeout(id);\r\n      }\r\n    );\r\n  })();\r\n\r\n  var getPointerXY = function (e) {\r\n    var result = [];\r\n\r\n    e = e.originalEvent || e || window.e;\r\n    e = e.touches && e.touches.length ? e.touches : e.changedTouches && e.changedTouches.length ? e.changedTouches : [e];\r\n\r\n    for (var key in e) {\r\n      if (e[key].pageX) {\r\n        result.push({\r\n          x: e[key].pageX,\r\n          y: e[key].pageY\r\n        });\r\n      } else if (e[key].clientX) {\r\n        result.push({\r\n          x: e[key].clientX,\r\n          y: e[key].clientY\r\n        });\r\n      }\r\n    }\r\n\r\n    return result;\r\n  };\r\n\r\n  var distance = function (point2, point1, what) {\r\n    if (!point1 || !point2) {\r\n      return 0;\r\n    }\r\n\r\n    if (what === \"x\") {\r\n      return point2.x - point1.x;\r\n    } else if (what === \"y\") {\r\n      return point2.y - point1.y;\r\n    }\r\n\r\n    return Math.sqrt(Math.pow(point2.x - point1.x, 2) + Math.pow(point2.y - point1.y, 2));\r\n  };\r\n\r\n  var isClickable = function ($el) {\r\n    if (\r\n      $el.is('a,area,button,[role=\"button\"],input,label,select,summary,textarea,video,audio,iframe') ||\r\n      $.isFunction($el.get(0).onclick) ||\r\n      $el.data(\"selectable\")\r\n    ) {\r\n      return true;\r\n    }\r\n\r\n    // Check for attributes like data-fancybox-next or data-fancybox-close\r\n    for (var i = 0, atts = $el[0].attributes, n = atts.length; i < n; i++) {\r\n      if (atts[i].nodeName.substr(0, 14) === \"data-fancybox-\") {\r\n        return true;\r\n      }\r\n    }\r\n\r\n    return false;\r\n  };\r\n\r\n  var hasScrollbars = function (el) {\r\n    var overflowY = window.getComputedStyle(el)[\"overflow-y\"],\r\n      overflowX = window.getComputedStyle(el)[\"overflow-x\"],\r\n      vertical = (overflowY === \"scroll\" || overflowY === \"auto\") && el.scrollHeight > el.clientHeight,\r\n      horizontal = (overflowX === \"scroll\" || overflowX === \"auto\") && el.scrollWidth > el.clientWidth;\r\n\r\n    return vertical || horizontal;\r\n  };\r\n\r\n  var isScrollable = function ($el) {\r\n    var rez = false;\r\n\r\n    while (true) {\r\n      rez = hasScrollbars($el.get(0));\r\n\r\n      if (rez) {\r\n        break;\r\n      }\r\n\r\n      $el = $el.parent();\r\n\r\n      if (!$el.length || $el.hasClass(\"fancybox-stage\") || $el.is(\"body\")) {\r\n        break;\r\n      }\r\n    }\r\n\r\n    return rez;\r\n  };\r\n\r\n  var Guestures = function (instance) {\r\n    var self = this;\r\n\r\n    self.instance = instance;\r\n\r\n    self.$bg = instance.$refs.bg;\r\n    self.$stage = instance.$refs.stage;\r\n    self.$container = instance.$refs.container;\r\n\r\n    self.destroy();\r\n\r\n    self.$container.on(\"touchstart.fb.touch mousedown.fb.touch\", $.proxy(self, \"ontouchstart\"));\r\n  };\r\n\r\n  Guestures.prototype.destroy = function () {\r\n    var self = this;\r\n\r\n    self.$container.off(\".fb.touch\");\r\n\r\n    $(document).off(\".fb.touch\");\r\n\r\n    if (self.requestId) {\r\n      cancelAFrame(self.requestId);\r\n      self.requestId = null;\r\n    }\r\n\r\n    if (self.tapped) {\r\n      clearTimeout(self.tapped);\r\n      self.tapped = null;\r\n    }\r\n  };\r\n\r\n  Guestures.prototype.ontouchstart = function (e) {\r\n    var self = this,\r\n      $target = $(e.target),\r\n      instance = self.instance,\r\n      current = instance.current,\r\n      $slide = current.$slide,\r\n      $content = current.$content,\r\n      isTouchDevice = e.type == \"touchstart\";\r\n\r\n    // Do not respond to both (touch and mouse) events\r\n    if (isTouchDevice) {\r\n      self.$container.off(\"mousedown.fb.touch\");\r\n    }\r\n\r\n    // Ignore right click\r\n    if (e.originalEvent && e.originalEvent.button == 2) {\r\n      return;\r\n    }\r\n\r\n    // Ignore taping on links, buttons, input elements\r\n    if (!$slide.length || !$target.length || isClickable($target) || isClickable($target.parent())) {\r\n      return;\r\n    }\r\n    // Ignore clicks on the scrollbar\r\n    if (!$target.is(\"img\") && e.originalEvent.clientX > $target[0].clientWidth + $target.offset().left) {\r\n      return;\r\n    }\r\n\r\n    // Ignore clicks while zooming or closing\r\n    if (!current || instance.isAnimating || current.$slide.hasClass(\"fancybox-animated\")) {\r\n      e.stopPropagation();\r\n      e.preventDefault();\r\n\r\n      return;\r\n    }\r\n\r\n    self.realPoints = self.startPoints = getPointerXY(e);\r\n\r\n    if (!self.startPoints.length) {\r\n      return;\r\n    }\r\n\r\n    // Allow other scripts to catch touch event if \"touch\" is set to false\r\n    if (current.touch) {\r\n      e.stopPropagation();\r\n    }\r\n\r\n    self.startEvent = e;\r\n\r\n    self.canTap = true;\r\n    self.$target = $target;\r\n    self.$content = $content;\r\n    self.opts = current.opts.touch;\r\n\r\n    self.isPanning = false;\r\n    self.isSwiping = false;\r\n    self.isZooming = false;\r\n    self.isScrolling = false;\r\n    self.canPan = instance.canPan();\r\n\r\n    self.startTime = new Date().getTime();\r\n    self.distanceX = self.distanceY = self.distance = 0;\r\n\r\n    self.canvasWidth = Math.round($slide[0].clientWidth);\r\n    self.canvasHeight = Math.round($slide[0].clientHeight);\r\n\r\n    self.contentLastPos = null;\r\n    self.contentStartPos = $.fancybox.getTranslate(self.$content) || {\r\n      top: 0,\r\n      left: 0\r\n    };\r\n    self.sliderStartPos = $.fancybox.getTranslate($slide);\r\n\r\n    // Since position will be absolute, but we need to make it relative to the stage\r\n    self.stagePos = $.fancybox.getTranslate(instance.$refs.stage);\r\n\r\n    self.sliderStartPos.top -= self.stagePos.top;\r\n    self.sliderStartPos.left -= self.stagePos.left;\r\n\r\n    self.contentStartPos.top -= self.stagePos.top;\r\n    self.contentStartPos.left -= self.stagePos.left;\r\n\r\n    $(document)\r\n      .off(\".fb.touch\")\r\n      .on(isTouchDevice ? \"touchend.fb.touch touchcancel.fb.touch\" : \"mouseup.fb.touch mouseleave.fb.touch\", $.proxy(self, \"ontouchend\"))\r\n      .on(isTouchDevice ? \"touchmove.fb.touch\" : \"mousemove.fb.touch\", $.proxy(self, \"ontouchmove\"));\r\n\r\n    if ($.fancybox.isMobile) {\r\n      document.addEventListener(\"scroll\", self.onscroll, true);\r\n    }\r\n\r\n    // Skip if clicked outside the sliding area\r\n    if (!(self.opts || self.canPan) || !($target.is(self.$stage) || self.$stage.find($target).length)) {\r\n      if ($target.is(\".fancybox-image\")) {\r\n        e.preventDefault();\r\n      }\r\n\r\n      if (!($.fancybox.isMobile && $target.parents(\".fancybox-caption\").length)) {\r\n        return;\r\n      }\r\n    }\r\n\r\n    self.isScrollable = isScrollable($target) || isScrollable($target.parent());\r\n\r\n    // Check if element is scrollable and try to prevent default behavior (scrolling)\r\n    if (!($.fancybox.isMobile && self.isScrollable)) {\r\n      e.preventDefault();\r\n    }\r\n\r\n    // One finger or mouse click - swipe or pan an image\r\n    if (self.startPoints.length === 1 || current.hasError) {\r\n      if (self.canPan) {\r\n        $.fancybox.stop(self.$content);\r\n\r\n        self.isPanning = true;\r\n      } else {\r\n        self.isSwiping = true;\r\n      }\r\n\r\n      self.$container.addClass(\"fancybox-is-grabbing\");\r\n    }\r\n\r\n    // Two fingers - zoom image\r\n    if (self.startPoints.length === 2 && current.type === \"image\" && (current.isLoaded || current.$ghost)) {\r\n      self.canTap = false;\r\n      self.isSwiping = false;\r\n      self.isPanning = false;\r\n\r\n      self.isZooming = true;\r\n\r\n      $.fancybox.stop(self.$content);\r\n\r\n      self.centerPointStartX = (self.startPoints[0].x + self.startPoints[1].x) * 0.5 - $(window).scrollLeft();\r\n      self.centerPointStartY = (self.startPoints[0].y + self.startPoints[1].y) * 0.5 - $(window).scrollTop();\r\n\r\n      self.percentageOfImageAtPinchPointX = (self.centerPointStartX - self.contentStartPos.left) / self.contentStartPos.width;\r\n      self.percentageOfImageAtPinchPointY = (self.centerPointStartY - self.contentStartPos.top) / self.contentStartPos.height;\r\n\r\n      self.startDistanceBetweenFingers = distance(self.startPoints[0], self.startPoints[1]);\r\n    }\r\n  };\r\n\r\n  Guestures.prototype.onscroll = function (e) {\r\n    var self = this;\r\n\r\n    self.isScrolling = true;\r\n\r\n    document.removeEventListener(\"scroll\", self.onscroll, true);\r\n  };\r\n\r\n  Guestures.prototype.ontouchmove = function (e) {\r\n    var self = this;\r\n\r\n    // Make sure user has not released over iframe or disabled element\r\n    if (e.originalEvent.buttons !== undefined && e.originalEvent.buttons === 0) {\r\n      self.ontouchend(e);\r\n      return;\r\n    }\r\n\r\n    if (self.isScrolling) {\r\n      self.canTap = false;\r\n      return;\r\n    }\r\n\r\n    self.newPoints = getPointerXY(e);\r\n\r\n    if (!(self.opts || self.canPan) || !self.newPoints.length || !self.newPoints.length) {\r\n      return;\r\n    }\r\n\r\n    if (!(self.isSwiping && self.isSwiping === true)) {\r\n      e.preventDefault();\r\n    }\r\n\r\n    self.distanceX = distance(self.newPoints[0], self.startPoints[0], \"x\");\r\n    self.distanceY = distance(self.newPoints[0], self.startPoints[0], \"y\");\r\n\r\n    self.distance = distance(self.newPoints[0], self.startPoints[0]);\r\n\r\n    // Skip false ontouchmove events (Chrome)\r\n    if (self.distance > 0) {\r\n      if (self.isSwiping) {\r\n        self.onSwipe(e);\r\n      } else if (self.isPanning) {\r\n        self.onPan();\r\n      } else if (self.isZooming) {\r\n        self.onZoom();\r\n      }\r\n    }\r\n  };\r\n\r\n  Guestures.prototype.onSwipe = function (e) {\r\n    var self = this,\r\n      instance = self.instance,\r\n      swiping = self.isSwiping,\r\n      left = self.sliderStartPos.left || 0,\r\n      angle;\r\n\r\n    // If direction is not yet determined\r\n    if (swiping === true) {\r\n      // We need at least 10px distance to correctly calculate an angle\r\n      if (Math.abs(self.distance) > 10) {\r\n        self.canTap = false;\r\n\r\n        if (instance.group.length < 2 && self.opts.vertical) {\r\n          self.isSwiping = \"y\";\r\n        } else if (instance.isDragging || self.opts.vertical === false || (self.opts.vertical === \"auto\" && $(window).width() > 800)) {\r\n          self.isSwiping = \"x\";\r\n        } else {\r\n          angle = Math.abs((Math.atan2(self.distanceY, self.distanceX) * 180) / Math.PI);\r\n\r\n          self.isSwiping = angle > 45 && angle < 135 ? \"y\" : \"x\";\r\n        }\r\n\r\n        if (self.isSwiping === \"y\" && $.fancybox.isMobile && self.isScrollable) {\r\n          self.isScrolling = true;\r\n\r\n          return;\r\n        }\r\n\r\n        instance.isDragging = self.isSwiping;\r\n\r\n        // Reset points to avoid jumping, because we dropped first swipes to calculate the angle\r\n        self.startPoints = self.newPoints;\r\n\r\n        $.each(instance.slides, function (index, slide) {\r\n          var slidePos, stagePos;\r\n\r\n          $.fancybox.stop(slide.$slide);\r\n\r\n          slidePos = $.fancybox.getTranslate(slide.$slide);\r\n          stagePos = $.fancybox.getTranslate(instance.$refs.stage);\r\n\r\n          slide.$slide\r\n            .css({\r\n              transform: \"\",\r\n              opacity: \"\",\r\n              \"transition-duration\": \"\"\r\n            })\r\n            .removeClass(\"fancybox-animated\")\r\n            .removeClass(function (index, className) {\r\n              return (className.match(/(^|\\s)fancybox-fx-\\S+/g) || []).join(\" \");\r\n            });\r\n\r\n          if (slide.pos === instance.current.pos) {\r\n            self.sliderStartPos.top = slidePos.top - stagePos.top;\r\n            self.sliderStartPos.left = slidePos.left - stagePos.left;\r\n          }\r\n\r\n          $.fancybox.setTranslate(slide.$slide, {\r\n            top: slidePos.top - stagePos.top,\r\n            left: slidePos.left - stagePos.left\r\n          });\r\n        });\r\n\r\n        // Stop slideshow\r\n        if (instance.SlideShow && instance.SlideShow.isActive) {\r\n          instance.SlideShow.stop();\r\n        }\r\n      }\r\n\r\n      return;\r\n    }\r\n\r\n    // Sticky edges\r\n    if (swiping == \"x\") {\r\n      if (\r\n        self.distanceX > 0 &&\r\n        (self.instance.group.length < 2 || (self.instance.current.index === 0 && !self.instance.current.opts.loop))\r\n      ) {\r\n        left = left + Math.pow(self.distanceX, 0.8);\r\n      } else if (\r\n        self.distanceX < 0 &&\r\n        (self.instance.group.length < 2 ||\r\n          (self.instance.current.index === self.instance.group.length - 1 && !self.instance.current.opts.loop))\r\n      ) {\r\n        left = left - Math.pow(-self.distanceX, 0.8);\r\n      } else {\r\n        left = left + self.distanceX;\r\n      }\r\n    }\r\n\r\n    self.sliderLastPos = {\r\n      top: swiping == \"x\" ? 0 : self.sliderStartPos.top + self.distanceY,\r\n      left: left\r\n    };\r\n\r\n    if (self.requestId) {\r\n      cancelAFrame(self.requestId);\r\n\r\n      self.requestId = null;\r\n    }\r\n\r\n    self.requestId = requestAFrame(function () {\r\n      if (self.sliderLastPos) {\r\n        $.each(self.instance.slides, function (index, slide) {\r\n          var pos = slide.pos - self.instance.currPos;\r\n\r\n          $.fancybox.setTranslate(slide.$slide, {\r\n            top: self.sliderLastPos.top,\r\n            left: self.sliderLastPos.left + pos * self.canvasWidth + pos * slide.opts.gutter\r\n          });\r\n        });\r\n\r\n        self.$container.addClass(\"fancybox-is-sliding\");\r\n      }\r\n    });\r\n  };\r\n\r\n  Guestures.prototype.onPan = function () {\r\n    var self = this;\r\n\r\n    // Prevent accidental movement (sometimes, when tapping casually, finger can move a bit)\r\n    if (distance(self.newPoints[0], self.realPoints[0]) < ($.fancybox.isMobile ? 10 : 5)) {\r\n      self.startPoints = self.newPoints;\r\n      return;\r\n    }\r\n\r\n    self.canTap = false;\r\n\r\n    self.contentLastPos = self.limitMovement();\r\n\r\n    if (self.requestId) {\r\n      cancelAFrame(self.requestId);\r\n    }\r\n\r\n    self.requestId = requestAFrame(function () {\r\n      $.fancybox.setTranslate(self.$content, self.contentLastPos);\r\n    });\r\n  };\r\n\r\n  // Make panning sticky to the edges\r\n  Guestures.prototype.limitMovement = function () {\r\n    var self = this;\r\n\r\n    var canvasWidth = self.canvasWidth;\r\n    var canvasHeight = self.canvasHeight;\r\n\r\n    var distanceX = self.distanceX;\r\n    var distanceY = self.distanceY;\r\n\r\n    var contentStartPos = self.contentStartPos;\r\n\r\n    var currentOffsetX = contentStartPos.left;\r\n    var currentOffsetY = contentStartPos.top;\r\n\r\n    var currentWidth = contentStartPos.width;\r\n    var currentHeight = contentStartPos.height;\r\n\r\n    var minTranslateX, minTranslateY, maxTranslateX, maxTranslateY, newOffsetX, newOffsetY;\r\n\r\n    if (currentWidth > canvasWidth) {\r\n      newOffsetX = currentOffsetX + distanceX;\r\n    } else {\r\n      newOffsetX = currentOffsetX;\r\n    }\r\n\r\n    newOffsetY = currentOffsetY + distanceY;\r\n\r\n    // Slow down proportionally to traveled distance\r\n    minTranslateX = Math.max(0, canvasWidth * 0.5 - currentWidth * 0.5);\r\n    minTranslateY = Math.max(0, canvasHeight * 0.5 - currentHeight * 0.5);\r\n\r\n    maxTranslateX = Math.min(canvasWidth - currentWidth, canvasWidth * 0.5 - currentWidth * 0.5);\r\n    maxTranslateY = Math.min(canvasHeight - currentHeight, canvasHeight * 0.5 - currentHeight * 0.5);\r\n\r\n    //   ->\r\n    if (distanceX > 0 && newOffsetX > minTranslateX) {\r\n      newOffsetX = minTranslateX - 1 + Math.pow(-minTranslateX + currentOffsetX + distanceX, 0.8) || 0;\r\n    }\r\n\r\n    //    <-\r\n    if (distanceX < 0 && newOffsetX < maxTranslateX) {\r\n      newOffsetX = maxTranslateX + 1 - Math.pow(maxTranslateX - currentOffsetX - distanceX, 0.8) || 0;\r\n    }\r\n\r\n    //   \\/\r\n    if (distanceY > 0 && newOffsetY > minTranslateY) {\r\n      newOffsetY = minTranslateY - 1 + Math.pow(-minTranslateY + currentOffsetY + distanceY, 0.8) || 0;\r\n    }\r\n\r\n    //   /\\\r\n    if (distanceY < 0 && newOffsetY < maxTranslateY) {\r\n      newOffsetY = maxTranslateY + 1 - Math.pow(maxTranslateY - currentOffsetY - distanceY, 0.8) || 0;\r\n    }\r\n\r\n    return {\r\n      top: newOffsetY,\r\n      left: newOffsetX\r\n    };\r\n  };\r\n\r\n  Guestures.prototype.limitPosition = function (newOffsetX, newOffsetY, newWidth, newHeight) {\r\n    var self = this;\r\n\r\n    var canvasWidth = self.canvasWidth;\r\n    var canvasHeight = self.canvasHeight;\r\n\r\n    if (newWidth > canvasWidth) {\r\n      newOffsetX = newOffsetX > 0 ? 0 : newOffsetX;\r\n      newOffsetX = newOffsetX < canvasWidth - newWidth ? canvasWidth - newWidth : newOffsetX;\r\n    } else {\r\n      // Center horizontally\r\n      newOffsetX = Math.max(0, canvasWidth / 2 - newWidth / 2);\r\n    }\r\n\r\n    if (newHeight > canvasHeight) {\r\n      newOffsetY = newOffsetY > 0 ? 0 : newOffsetY;\r\n      newOffsetY = newOffsetY < canvasHeight - newHeight ? canvasHeight - newHeight : newOffsetY;\r\n    } else {\r\n      // Center vertically\r\n      newOffsetY = Math.max(0, canvasHeight / 2 - newHeight / 2);\r\n    }\r\n\r\n    return {\r\n      top: newOffsetY,\r\n      left: newOffsetX\r\n    };\r\n  };\r\n\r\n  Guestures.prototype.onZoom = function () {\r\n    var self = this;\r\n\r\n    // Calculate current distance between points to get pinch ratio and new width and height\r\n    var contentStartPos = self.contentStartPos;\r\n\r\n    var currentWidth = contentStartPos.width;\r\n    var currentHeight = contentStartPos.height;\r\n\r\n    var currentOffsetX = contentStartPos.left;\r\n    var currentOffsetY = contentStartPos.top;\r\n\r\n    var endDistanceBetweenFingers = distance(self.newPoints[0], self.newPoints[1]);\r\n\r\n    var pinchRatio = endDistanceBetweenFingers / self.startDistanceBetweenFingers;\r\n\r\n    var newWidth = Math.floor(currentWidth * pinchRatio);\r\n    var newHeight = Math.floor(currentHeight * pinchRatio);\r\n\r\n    // This is the translation due to pinch-zooming\r\n    var translateFromZoomingX = (currentWidth - newWidth) * self.percentageOfImageAtPinchPointX;\r\n    var translateFromZoomingY = (currentHeight - newHeight) * self.percentageOfImageAtPinchPointY;\r\n\r\n    // Point between the two touches\r\n    var centerPointEndX = (self.newPoints[0].x + self.newPoints[1].x) / 2 - $(window).scrollLeft();\r\n    var centerPointEndY = (self.newPoints[0].y + self.newPoints[1].y) / 2 - $(window).scrollTop();\r\n\r\n    // And this is the translation due to translation of the centerpoint\r\n    // between the two fingers\r\n    var translateFromTranslatingX = centerPointEndX - self.centerPointStartX;\r\n    var translateFromTranslatingY = centerPointEndY - self.centerPointStartY;\r\n\r\n    // The new offset is the old/current one plus the total translation\r\n    var newOffsetX = currentOffsetX + (translateFromZoomingX + translateFromTranslatingX);\r\n    var newOffsetY = currentOffsetY + (translateFromZoomingY + translateFromTranslatingY);\r\n\r\n    var newPos = {\r\n      top: newOffsetY,\r\n      left: newOffsetX,\r\n      scaleX: pinchRatio,\r\n      scaleY: pinchRatio\r\n    };\r\n\r\n    self.canTap = false;\r\n\r\n    self.newWidth = newWidth;\r\n    self.newHeight = newHeight;\r\n\r\n    self.contentLastPos = newPos;\r\n\r\n    if (self.requestId) {\r\n      cancelAFrame(self.requestId);\r\n    }\r\n\r\n    self.requestId = requestAFrame(function () {\r\n      $.fancybox.setTranslate(self.$content, self.contentLastPos);\r\n    });\r\n  };\r\n\r\n  Guestures.prototype.ontouchend = function (e) {\r\n    var self = this;\r\n\r\n    var swiping = self.isSwiping;\r\n    var panning = self.isPanning;\r\n    var zooming = self.isZooming;\r\n    var scrolling = self.isScrolling;\r\n\r\n    self.endPoints = getPointerXY(e);\r\n    self.dMs = Math.max(new Date().getTime() - self.startTime, 1);\r\n\r\n    self.$container.removeClass(\"fancybox-is-grabbing\");\r\n\r\n    $(document).off(\".fb.touch\");\r\n\r\n    document.removeEventListener(\"scroll\", self.onscroll, true);\r\n\r\n    if (self.requestId) {\r\n      cancelAFrame(self.requestId);\r\n\r\n      self.requestId = null;\r\n    }\r\n\r\n    self.isSwiping = false;\r\n    self.isPanning = false;\r\n    self.isZooming = false;\r\n    self.isScrolling = false;\r\n\r\n    self.instance.isDragging = false;\r\n\r\n    if (self.canTap) {\r\n      return self.onTap(e);\r\n    }\r\n\r\n    self.speed = 100;\r\n\r\n    // Speed in px/ms\r\n    self.velocityX = (self.distanceX / self.dMs) * 0.5;\r\n    self.velocityY = (self.distanceY / self.dMs) * 0.5;\r\n\r\n    if (panning) {\r\n      self.endPanning();\r\n    } else if (zooming) {\r\n      self.endZooming();\r\n    } else {\r\n      self.endSwiping(swiping, scrolling);\r\n    }\r\n\r\n    return;\r\n  };\r\n\r\n  Guestures.prototype.endSwiping = function (swiping, scrolling) {\r\n    var self = this,\r\n      ret = false,\r\n      len = self.instance.group.length,\r\n      distanceX = Math.abs(self.distanceX),\r\n      canAdvance = swiping == \"x\" && len > 1 && ((self.dMs > 130 && distanceX > 10) || distanceX > 50),\r\n      speedX = 300;\r\n\r\n    self.sliderLastPos = null;\r\n\r\n    // Close if swiped vertically / navigate if horizontally\r\n    if (swiping == \"y\" && !scrolling && Math.abs(self.distanceY) > 50) {\r\n      // Continue vertical movement\r\n      $.fancybox.animate(\r\n        self.instance.current.$slide, {\r\n          top: self.sliderStartPos.top + self.distanceY + self.velocityY * 150,\r\n          opacity: 0\r\n        },\r\n        200\r\n      );\r\n      ret = self.instance.close(true, 250);\r\n    } else if (canAdvance && self.distanceX > 0) {\r\n      ret = self.instance.previous(speedX);\r\n    } else if (canAdvance && self.distanceX < 0) {\r\n      ret = self.instance.next(speedX);\r\n    }\r\n\r\n    if (ret === false && (swiping == \"x\" || swiping == \"y\")) {\r\n      self.instance.centerSlide(200);\r\n    }\r\n\r\n    self.$container.removeClass(\"fancybox-is-sliding\");\r\n  };\r\n\r\n  // Limit panning from edges\r\n  // ========================\r\n  Guestures.prototype.endPanning = function () {\r\n    var self = this,\r\n      newOffsetX,\r\n      newOffsetY,\r\n      newPos;\r\n\r\n    if (!self.contentLastPos) {\r\n      return;\r\n    }\r\n\r\n    if (self.opts.momentum === false || self.dMs > 350) {\r\n      newOffsetX = self.contentLastPos.left;\r\n      newOffsetY = self.contentLastPos.top;\r\n    } else {\r\n      // Continue movement\r\n      newOffsetX = self.contentLastPos.left + self.velocityX * 500;\r\n      newOffsetY = self.contentLastPos.top + self.velocityY * 500;\r\n    }\r\n\r\n    newPos = self.limitPosition(newOffsetX, newOffsetY, self.contentStartPos.width, self.contentStartPos.height);\r\n\r\n    newPos.width = self.contentStartPos.width;\r\n    newPos.height = self.contentStartPos.height;\r\n\r\n    $.fancybox.animate(self.$content, newPos, 366);\r\n  };\r\n\r\n  Guestures.prototype.endZooming = function () {\r\n    var self = this;\r\n\r\n    var current = self.instance.current;\r\n\r\n    var newOffsetX, newOffsetY, newPos, reset;\r\n\r\n    var newWidth = self.newWidth;\r\n    var newHeight = self.newHeight;\r\n\r\n    if (!self.contentLastPos) {\r\n      return;\r\n    }\r\n\r\n    newOffsetX = self.contentLastPos.left;\r\n    newOffsetY = self.contentLastPos.top;\r\n\r\n    reset = {\r\n      top: newOffsetY,\r\n      left: newOffsetX,\r\n      width: newWidth,\r\n      height: newHeight,\r\n      scaleX: 1,\r\n      scaleY: 1\r\n    };\r\n\r\n    // Reset scalex/scaleY values; this helps for perfomance and does not break animation\r\n    $.fancybox.setTranslate(self.$content, reset);\r\n\r\n    if (newWidth < self.canvasWidth && newHeight < self.canvasHeight) {\r\n      self.instance.scaleToFit(150);\r\n    } else if (newWidth > current.width || newHeight > current.height) {\r\n      self.instance.scaleToActual(self.centerPointStartX, self.centerPointStartY, 150);\r\n    } else {\r\n      newPos = self.limitPosition(newOffsetX, newOffsetY, newWidth, newHeight);\r\n\r\n      $.fancybox.animate(self.$content, newPos, 150);\r\n    }\r\n  };\r\n\r\n  Guestures.prototype.onTap = function (e) {\r\n    var self = this;\r\n    var $target = $(e.target);\r\n\r\n    var instance = self.instance;\r\n    var current = instance.current;\r\n\r\n    var endPoints = (e && getPointerXY(e)) || self.startPoints;\r\n\r\n    var tapX = endPoints[0] ? endPoints[0].x - $(window).scrollLeft() - self.stagePos.left : 0;\r\n    var tapY = endPoints[0] ? endPoints[0].y - $(window).scrollTop() - self.stagePos.top : 0;\r\n\r\n    var where;\r\n\r\n    var process = function (prefix) {\r\n      var action = current.opts[prefix];\r\n\r\n      if ($.isFunction(action)) {\r\n        action = action.apply(instance, [current, e]);\r\n      }\r\n\r\n      if (!action) {\r\n        return;\r\n      }\r\n\r\n      switch (action) {\r\n        case \"close\":\r\n          instance.close(self.startEvent);\r\n\r\n          break;\r\n\r\n        case \"toggleControls\":\r\n          instance.toggleControls();\r\n\r\n          break;\r\n\r\n        case \"next\":\r\n          instance.next();\r\n\r\n          break;\r\n\r\n        case \"nextOrClose\":\r\n          if (instance.group.length > 1) {\r\n            instance.next();\r\n          } else {\r\n            instance.close(self.startEvent);\r\n          }\r\n\r\n          break;\r\n\r\n        case \"zoom\":\r\n          if (current.type == \"image\" && (current.isLoaded || current.$ghost)) {\r\n            if (instance.canPan()) {\r\n              instance.scaleToFit();\r\n            } else if (instance.isScaledDown()) {\r\n              instance.scaleToActual(tapX, tapY);\r\n            } else if (instance.group.length < 2) {\r\n              instance.close(self.startEvent);\r\n            }\r\n          }\r\n\r\n          break;\r\n      }\r\n    };\r\n\r\n    // Ignore right click\r\n    if (e.originalEvent && e.originalEvent.button == 2) {\r\n      return;\r\n    }\r\n\r\n    // Skip if clicked on the scrollbar\r\n    if (!$target.is(\"img\") && tapX > $target[0].clientWidth + $target.offset().left) {\r\n      return;\r\n    }\r\n\r\n    // Check where is clicked\r\n    if ($target.is(\".fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-container\")) {\r\n      where = \"Outside\";\r\n    } else if ($target.is(\".fancybox-slide\")) {\r\n      where = \"Slide\";\r\n    } else if (\r\n      instance.current.$content &&\r\n      instance.current.$content\r\n      .find($target)\r\n      .addBack()\r\n      .filter($target).length\r\n    ) {\r\n      where = \"Content\";\r\n    } else {\r\n      return;\r\n    }\r\n\r\n    // Check if this is a double tap\r\n    if (self.tapped) {\r\n      // Stop previously created single tap\r\n      clearTimeout(self.tapped);\r\n      self.tapped = null;\r\n\r\n      // Skip if distance between taps is too big\r\n      if (Math.abs(tapX - self.tapX) > 50 || Math.abs(tapY - self.tapY) > 50) {\r\n        return this;\r\n      }\r\n\r\n      // OK, now we assume that this is a double-tap\r\n      process(\"dblclick\" + where);\r\n    } else {\r\n      // Single tap will be processed if user has not clicked second time within 300ms\r\n      // or there is no need to wait for double-tap\r\n      self.tapX = tapX;\r\n      self.tapY = tapY;\r\n\r\n      if (current.opts[\"dblclick\" + where] && current.opts[\"dblclick\" + where] !== current.opts[\"click\" + where]) {\r\n        self.tapped = setTimeout(function () {\r\n          self.tapped = null;\r\n\r\n          if (!instance.isAnimating) {\r\n            process(\"click\" + where);\r\n          }\r\n        }, 500);\r\n      } else {\r\n        process(\"click\" + where);\r\n      }\r\n    }\r\n\r\n    return this;\r\n  };\r\n\r\n  $(document)\r\n    .on(\"onActivate.fb\", function (e, instance) {\r\n      if (instance && !instance.Guestures) {\r\n        instance.Guestures = new Guestures(instance);\r\n      }\r\n    })\r\n    .on(\"beforeClose.fb\", function (e, instance) {\r\n      if (instance && instance.Guestures) {\r\n        instance.Guestures.destroy();\r\n      }\r\n    });\r\n})(window, document, jQuery);\n// ==========================================================================\r\n//\r\n// SlideShow\r\n// Enables slideshow functionality\r\n//\r\n// Example of usage:\r\n// $.fancybox.getInstance().SlideShow.start()\r\n//\r\n// ==========================================================================\r\n(function (document, $) {\r\n  \"use strict\";\r\n\r\n  $.extend(true, $.fancybox.defaults, {\r\n    btnTpl: {\r\n      slideShow: '<button data-fancybox-play class=\"fancybox-button fancybox-button--play\" title=\"{{PLAY_START}}\">' +\r\n        '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M6.5 5.4v13.2l11-6.6z\"/></svg>' +\r\n        '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M8.33 5.75h2.2v12.5h-2.2V5.75zm5.15 0h2.2v12.5h-2.2V5.75z\"/></svg>' +\r\n        \"</button>\"\r\n    },\r\n    slideShow: {\r\n      autoStart: false,\r\n      speed: 3000,\r\n      progress: true\r\n    }\r\n  });\r\n\r\n  var SlideShow = function (instance) {\r\n    this.instance = instance;\r\n    this.init();\r\n  };\r\n\r\n  $.extend(SlideShow.prototype, {\r\n    timer: null,\r\n    isActive: false,\r\n    $button: null,\r\n\r\n    init: function () {\r\n      var self = this,\r\n        instance = self.instance,\r\n        opts = instance.group[instance.currIndex].opts.slideShow;\r\n\r\n      self.$button = instance.$refs.toolbar.find(\"[data-fancybox-play]\").on(\"click\", function () {\r\n        self.toggle();\r\n      });\r\n\r\n      if (instance.group.length < 2 || !opts) {\r\n        self.$button.hide();\r\n      } else if (opts.progress) {\r\n        self.$progress = $('<div class=\"fancybox-progress\"></div>').appendTo(instance.$refs.inner);\r\n      }\r\n    },\r\n\r\n    set: function (force) {\r\n      var self = this,\r\n        instance = self.instance,\r\n        current = instance.current;\r\n\r\n      // Check if reached last element\r\n      if (current && (force === true || current.opts.loop || instance.currIndex < instance.group.length - 1)) {\r\n        if (self.isActive && current.contentType !== \"video\") {\r\n          if (self.$progress) {\r\n            $.fancybox.animate(self.$progress.show(), {\r\n              scaleX: 1\r\n            }, current.opts.slideShow.speed);\r\n          }\r\n\r\n          self.timer = setTimeout(function () {\r\n            if (!instance.current.opts.loop && instance.current.index == instance.group.length - 1) {\r\n              instance.jumpTo(0);\r\n            } else {\r\n              instance.next();\r\n            }\r\n          }, current.opts.slideShow.speed);\r\n        }\r\n      } else {\r\n        self.stop();\r\n        instance.idleSecondsCounter = 0;\r\n        instance.showControls();\r\n      }\r\n    },\r\n\r\n    clear: function () {\r\n      var self = this;\r\n\r\n      clearTimeout(self.timer);\r\n\r\n      self.timer = null;\r\n\r\n      if (self.$progress) {\r\n        self.$progress.removeAttr(\"style\").hide();\r\n      }\r\n    },\r\n\r\n    start: function () {\r\n      var self = this,\r\n        current = self.instance.current;\r\n\r\n      if (current) {\r\n        self.$button\r\n          .attr(\"title\", (current.opts.i18n[current.opts.lang] || current.opts.i18n.en).PLAY_STOP)\r\n          .removeClass(\"fancybox-button--play\")\r\n          .addClass(\"fancybox-button--pause\");\r\n\r\n        self.isActive = true;\r\n\r\n        if (current.isComplete) {\r\n          self.set(true);\r\n        }\r\n\r\n        self.instance.trigger(\"onSlideShowChange\", true);\r\n      }\r\n    },\r\n\r\n    stop: function () {\r\n      var self = this,\r\n        current = self.instance.current;\r\n\r\n      self.clear();\r\n\r\n      self.$button\r\n        .attr(\"title\", (current.opts.i18n[current.opts.lang] || current.opts.i18n.en).PLAY_START)\r\n        .removeClass(\"fancybox-button--pause\")\r\n        .addClass(\"fancybox-button--play\");\r\n\r\n      self.isActive = false;\r\n\r\n      self.instance.trigger(\"onSlideShowChange\", false);\r\n\r\n      if (self.$progress) {\r\n        self.$progress.removeAttr(\"style\").hide();\r\n      }\r\n    },\r\n\r\n    toggle: function () {\r\n      var self = this;\r\n\r\n      if (self.isActive) {\r\n        self.stop();\r\n      } else {\r\n        self.start();\r\n      }\r\n    }\r\n  });\r\n\r\n  $(document).on({\r\n    \"onInit.fb\": function (e, instance) {\r\n      if (instance && !instance.SlideShow) {\r\n        instance.SlideShow = new SlideShow(instance);\r\n      }\r\n    },\r\n\r\n    \"beforeShow.fb\": function (e, instance, current, firstRun) {\r\n      var SlideShow = instance && instance.SlideShow;\r\n\r\n      if (firstRun) {\r\n        if (SlideShow && current.opts.slideShow.autoStart) {\r\n          SlideShow.start();\r\n        }\r\n      } else if (SlideShow && SlideShow.isActive) {\r\n        SlideShow.clear();\r\n      }\r\n    },\r\n\r\n    \"afterShow.fb\": function (e, instance, current) {\r\n      var SlideShow = instance && instance.SlideShow;\r\n\r\n      if (SlideShow && SlideShow.isActive) {\r\n        SlideShow.set();\r\n      }\r\n    },\r\n\r\n    \"afterKeydown.fb\": function (e, instance, current, keypress, keycode) {\r\n      var SlideShow = instance && instance.SlideShow;\r\n\r\n      // \"P\" or Spacebar\r\n      if (SlideShow && current.opts.slideShow && (keycode === 80 || keycode === 32) && !$(document.activeElement).is(\"button,a,input\")) {\r\n        keypress.preventDefault();\r\n\r\n        SlideShow.toggle();\r\n      }\r\n    },\r\n\r\n    \"beforeClose.fb onDeactivate.fb\": function (e, instance) {\r\n      var SlideShow = instance && instance.SlideShow;\r\n\r\n      if (SlideShow) {\r\n        SlideShow.stop();\r\n      }\r\n    }\r\n  });\r\n\r\n  // Page Visibility API to pause slideshow when window is not active\r\n  $(document).on(\"visibilitychange\", function () {\r\n    var instance = $.fancybox.getInstance(),\r\n      SlideShow = instance && instance.SlideShow;\r\n\r\n    if (SlideShow && SlideShow.isActive) {\r\n      if (document.hidden) {\r\n        SlideShow.clear();\r\n      } else {\r\n        SlideShow.set();\r\n      }\r\n    }\r\n  });\r\n})(document, jQuery);\n// ==========================================================================\r\n//\r\n// FullScreen\r\n// Adds fullscreen functionality\r\n//\r\n// ==========================================================================\r\n(function (document, $) {\r\n  \"use strict\";\r\n\r\n  // Collection of methods supported by user browser\r\n  var fn = (function () {\r\n    var fnMap = [\r\n      [\"requestFullscreen\", \"exitFullscreen\", \"fullscreenElement\", \"fullscreenEnabled\", \"fullscreenchange\", \"fullscreenerror\"],\r\n      // new WebKit\r\n      [\r\n        \"webkitRequestFullscreen\",\r\n        \"webkitExitFullscreen\",\r\n        \"webkitFullscreenElement\",\r\n        \"webkitFullscreenEnabled\",\r\n        \"webkitfullscreenchange\",\r\n        \"webkitfullscreenerror\"\r\n      ],\r\n      // old WebKit (Safari 5.1)\r\n      [\r\n        \"webkitRequestFullScreen\",\r\n        \"webkitCancelFullScreen\",\r\n        \"webkitCurrentFullScreenElement\",\r\n        \"webkitCancelFullScreen\",\r\n        \"webkitfullscreenchange\",\r\n        \"webkitfullscreenerror\"\r\n      ],\r\n      [\r\n        \"mozRequestFullScreen\",\r\n        \"mozCancelFullScreen\",\r\n        \"mozFullScreenElement\",\r\n        \"mozFullScreenEnabled\",\r\n        \"mozfullscreenchange\",\r\n        \"mozfullscreenerror\"\r\n      ],\r\n      [\"msRequestFullscreen\", \"msExitFullscreen\", \"msFullscreenElement\", \"msFullscreenEnabled\", \"MSFullscreenChange\", \"MSFullscreenError\"]\r\n    ];\r\n\r\n    var ret = {};\r\n\r\n    for (var i = 0; i < fnMap.length; i++) {\r\n      var val = fnMap[i];\r\n\r\n      if (val && val[1] in document) {\r\n        for (var j = 0; j < val.length; j++) {\r\n          ret[fnMap[0][j]] = val[j];\r\n        }\r\n\r\n        return ret;\r\n      }\r\n    }\r\n\r\n    return false;\r\n  })();\r\n\r\n  if (fn) {\r\n    var FullScreen = {\r\n      request: function (elem) {\r\n        elem = elem || document.documentElement;\r\n\r\n        elem[fn.requestFullscreen](elem.ALLOW_KEYBOARD_INPUT);\r\n      },\r\n      exit: function () {\r\n        document[fn.exitFullscreen]();\r\n      },\r\n      toggle: function (elem) {\r\n        elem = elem || document.documentElement;\r\n\r\n        if (this.isFullscreen()) {\r\n          this.exit();\r\n        } else {\r\n          this.request(elem);\r\n        }\r\n      },\r\n      isFullscreen: function () {\r\n        return Boolean(document[fn.fullscreenElement]);\r\n      },\r\n      enabled: function () {\r\n        return Boolean(document[fn.fullscreenEnabled]);\r\n      }\r\n    };\r\n\r\n    $.extend(true, $.fancybox.defaults, {\r\n      btnTpl: {\r\n        fullScreen: '<button data-fancybox-fullscreen class=\"fancybox-button fancybox-button--fsenter\" title=\"{{FULL_SCREEN}}\">' +\r\n          '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z\"/></svg>' +\r\n          '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M5 16h3v3h2v-5H5zm3-8H5v2h5V5H8zm6 11h2v-3h3v-2h-5zm2-11V5h-2v5h5V8z\"/></svg>' +\r\n          \"</button>\"\r\n      },\r\n      fullScreen: {\r\n        autoStart: false\r\n      }\r\n    });\r\n\r\n    $(document).on(fn.fullscreenchange, function () {\r\n      var isFullscreen = FullScreen.isFullscreen(),\r\n        instance = $.fancybox.getInstance();\r\n\r\n      if (instance) {\r\n        // If image is zooming, then force to stop and reposition properly\r\n        if (instance.current && instance.current.type === \"image\" && instance.isAnimating) {\r\n          instance.isAnimating = false;\r\n\r\n          instance.update(true, true, 0);\r\n\r\n          if (!instance.isComplete) {\r\n            instance.complete();\r\n          }\r\n        }\r\n\r\n        instance.trigger(\"onFullscreenChange\", isFullscreen);\r\n\r\n        instance.$refs.container.toggleClass(\"fancybox-is-fullscreen\", isFullscreen);\r\n\r\n        instance.$refs.toolbar\r\n          .find(\"[data-fancybox-fullscreen]\")\r\n          .toggleClass(\"fancybox-button--fsenter\", !isFullscreen)\r\n          .toggleClass(\"fancybox-button--fsexit\", isFullscreen);\r\n      }\r\n    });\r\n  }\r\n\r\n  $(document).on({\r\n    \"onInit.fb\": function (e, instance) {\r\n      var $container;\r\n\r\n      if (!fn) {\r\n        instance.$refs.toolbar.find(\"[data-fancybox-fullscreen]\").remove();\r\n\r\n        return;\r\n      }\r\n\r\n      if (instance && instance.group[instance.currIndex].opts.fullScreen) {\r\n        $container = instance.$refs.container;\r\n\r\n        $container.on(\"click.fb-fullscreen\", \"[data-fancybox-fullscreen]\", function (e) {\r\n          e.stopPropagation();\r\n          e.preventDefault();\r\n\r\n          FullScreen.toggle();\r\n        });\r\n\r\n        if (instance.opts.fullScreen && instance.opts.fullScreen.autoStart === true) {\r\n          FullScreen.request();\r\n        }\r\n\r\n        // Expose API\r\n        instance.FullScreen = FullScreen;\r\n      } else if (instance) {\r\n        instance.$refs.toolbar.find(\"[data-fancybox-fullscreen]\").hide();\r\n      }\r\n    },\r\n\r\n    \"afterKeydown.fb\": function (e, instance, current, keypress, keycode) {\r\n      // \"F\"\r\n      if (instance && instance.FullScreen && keycode === 70) {\r\n        keypress.preventDefault();\r\n\r\n        instance.FullScreen.toggle();\r\n      }\r\n    },\r\n\r\n    \"beforeClose.fb\": function (e, instance) {\r\n      if (instance && instance.FullScreen && instance.$refs.container.hasClass(\"fancybox-is-fullscreen\")) {\r\n        FullScreen.exit();\r\n      }\r\n    }\r\n  });\r\n})(document, jQuery);\n// ==========================================================================\r\n//\r\n// Thumbs\r\n// Displays thumbnails in a grid\r\n//\r\n// ==========================================================================\r\n(function (document, $) {\r\n  \"use strict\";\r\n\r\n  var CLASS = \"fancybox-thumbs\",\r\n    CLASS_ACTIVE = CLASS + \"-active\";\r\n\r\n  // Make sure there are default values\r\n  $.fancybox.defaults = $.extend(\r\n    true, {\r\n      btnTpl: {\r\n        thumbs: '<button data-fancybox-thumbs class=\"fancybox-button fancybox-button--thumbs\" title=\"{{THUMBS}}\">' +\r\n          '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M14.59 14.59h3.76v3.76h-3.76v-3.76zm-4.47 0h3.76v3.76h-3.76v-3.76zm-4.47 0h3.76v3.76H5.65v-3.76zm8.94-4.47h3.76v3.76h-3.76v-3.76zm-4.47 0h3.76v3.76h-3.76v-3.76zm-4.47 0h3.76v3.76H5.65v-3.76zm8.94-4.47h3.76v3.76h-3.76V5.65zm-4.47 0h3.76v3.76h-3.76V5.65zm-4.47 0h3.76v3.76H5.65V5.65z\"/></svg>' +\r\n          \"</button>\"\r\n      },\r\n      thumbs: {\r\n        autoStart: false, // Display thumbnails on opening\r\n        hideOnClose: true, // Hide thumbnail grid when closing animation starts\r\n        parentEl: \".fancybox-container\", // Container is injected into this element\r\n        axis: \"y\" // Vertical (y) or horizontal (x) scrolling\r\n      }\r\n    },\r\n    $.fancybox.defaults\r\n  );\r\n\r\n  var FancyThumbs = function (instance) {\r\n    this.init(instance);\r\n  };\r\n\r\n  $.extend(FancyThumbs.prototype, {\r\n    $button: null,\r\n    $grid: null,\r\n    $list: null,\r\n    isVisible: false,\r\n    isActive: false,\r\n\r\n    init: function (instance) {\r\n      var self = this,\r\n        group = instance.group,\r\n        enabled = 0;\r\n\r\n      self.instance = instance;\r\n      self.opts = group[instance.currIndex].opts.thumbs;\r\n\r\n      instance.Thumbs = self;\r\n\r\n      self.$button = instance.$refs.toolbar.find(\"[data-fancybox-thumbs]\");\r\n\r\n      // Enable thumbs if at least two group items have thumbnails\r\n      for (var i = 0, len = group.length; i < len; i++) {\r\n        if (group[i].thumb) {\r\n          enabled++;\r\n        }\r\n\r\n        if (enabled > 1) {\r\n          break;\r\n        }\r\n      }\r\n\r\n      if (enabled > 1 && !!self.opts) {\r\n        self.$button.removeAttr(\"style\").on(\"click\", function () {\r\n          self.toggle();\r\n        });\r\n\r\n        self.isActive = true;\r\n      } else {\r\n        self.$button.hide();\r\n      }\r\n    },\r\n\r\n    create: function () {\r\n      var self = this,\r\n        instance = self.instance,\r\n        parentEl = self.opts.parentEl,\r\n        list = [],\r\n        src;\r\n\r\n      if (!self.$grid) {\r\n        // Create main element\r\n        self.$grid = $('<div class=\"' + CLASS + \" \" + CLASS + \"-\" + self.opts.axis + '\"></div>').appendTo(\r\n          instance.$refs.container\r\n          .find(parentEl)\r\n          .addBack()\r\n          .filter(parentEl)\r\n        );\r\n\r\n        // Add \"click\" event that performs gallery navigation\r\n        self.$grid.on(\"click\", \"a\", function () {\r\n          instance.jumpTo($(this).attr(\"data-index\"));\r\n        });\r\n      }\r\n\r\n      // Build the list\r\n      if (!self.$list) {\r\n        self.$list = $('<div class=\"' + CLASS + '__list\">').appendTo(self.$grid);\r\n      }\r\n\r\n      $.each(instance.group, function (i, item) {\r\n        src = item.thumb;\r\n\r\n        if (!src && item.type === \"image\") {\r\n          src = item.src;\r\n        }\r\n\r\n        list.push(\r\n          '<a href=\"javascript:;\" tabindex=\"0\" data-index=\"' +\r\n          i +\r\n          '\"' +\r\n          (src && src.length ? ' style=\"background-image:url(' + src + ')\"' : 'class=\"fancybox-thumbs-missing\"') +\r\n          \"></a>\"\r\n        );\r\n      });\r\n\r\n      self.$list[0].innerHTML = list.join(\"\");\r\n\r\n      if (self.opts.axis === \"x\") {\r\n        // Set fixed width for list element to enable horizontal scrolling\r\n        self.$list.width(\r\n          parseInt(self.$grid.css(\"padding-right\"), 10) +\r\n          instance.group.length *\r\n          self.$list\r\n          .children()\r\n          .eq(0)\r\n          .outerWidth(true)\r\n        );\r\n      }\r\n    },\r\n\r\n    focus: function (duration) {\r\n      var self = this,\r\n        $list = self.$list,\r\n        $grid = self.$grid,\r\n        thumb,\r\n        thumbPos;\r\n\r\n      if (!self.instance.current) {\r\n        return;\r\n      }\r\n\r\n      thumb = $list\r\n        .children()\r\n        .removeClass(CLASS_ACTIVE)\r\n        .filter('[data-index=\"' + self.instance.current.index + '\"]')\r\n        .addClass(CLASS_ACTIVE);\r\n\r\n      thumbPos = thumb.position();\r\n\r\n      // Check if need to scroll to make current thumb visible\r\n      if (self.opts.axis === \"y\" && (thumbPos.top < 0 || thumbPos.top > $list.height() - thumb.outerHeight())) {\r\n        $list.stop().animate({\r\n            scrollTop: $list.scrollTop() + thumbPos.top\r\n          },\r\n          duration\r\n        );\r\n      } else if (\r\n        self.opts.axis === \"x\" &&\r\n        (thumbPos.left < $grid.scrollLeft() || thumbPos.left > $grid.scrollLeft() + ($grid.width() - thumb.outerWidth()))\r\n      ) {\r\n        $list\r\n          .parent()\r\n          .stop()\r\n          .animate({\r\n              scrollLeft: thumbPos.left\r\n            },\r\n            duration\r\n          );\r\n      }\r\n    },\r\n\r\n    update: function () {\r\n      var that = this;\r\n      that.instance.$refs.container.toggleClass(\"fancybox-show-thumbs\", this.isVisible);\r\n\r\n      if (that.isVisible) {\r\n        if (!that.$grid) {\r\n          that.create();\r\n        }\r\n\r\n        that.instance.trigger(\"onThumbsShow\");\r\n\r\n        that.focus(0);\r\n      } else if (that.$grid) {\r\n        that.instance.trigger(\"onThumbsHide\");\r\n      }\r\n\r\n      // Update content position\r\n      that.instance.update();\r\n    },\r\n\r\n    hide: function () {\r\n      this.isVisible = false;\r\n      this.update();\r\n    },\r\n\r\n    show: function () {\r\n      this.isVisible = true;\r\n      this.update();\r\n    },\r\n\r\n    toggle: function () {\r\n      this.isVisible = !this.isVisible;\r\n      this.update();\r\n    }\r\n  });\r\n\r\n  $(document).on({\r\n    \"onInit.fb\": function (e, instance) {\r\n      var Thumbs;\r\n\r\n      if (instance && !instance.Thumbs) {\r\n        Thumbs = new FancyThumbs(instance);\r\n\r\n        if (Thumbs.isActive && Thumbs.opts.autoStart === true) {\r\n          Thumbs.show();\r\n        }\r\n      }\r\n    },\r\n\r\n    \"beforeShow.fb\": function (e, instance, item, firstRun) {\r\n      var Thumbs = instance && instance.Thumbs;\r\n\r\n      if (Thumbs && Thumbs.isVisible) {\r\n        Thumbs.focus(firstRun ? 0 : 250);\r\n      }\r\n    },\r\n\r\n    \"afterKeydown.fb\": function (e, instance, current, keypress, keycode) {\r\n      var Thumbs = instance && instance.Thumbs;\r\n\r\n      // \"G\"\r\n      if (Thumbs && Thumbs.isActive && keycode === 71) {\r\n        keypress.preventDefault();\r\n\r\n        Thumbs.toggle();\r\n      }\r\n    },\r\n\r\n    \"beforeClose.fb\": function (e, instance) {\r\n      var Thumbs = instance && instance.Thumbs;\r\n\r\n      if (Thumbs && Thumbs.isVisible && Thumbs.opts.hideOnClose !== false) {\r\n        Thumbs.$grid.hide();\r\n      }\r\n    }\r\n  });\r\n})(document, jQuery);\n//// ==========================================================================\r\n//\r\n// Share\r\n// Displays simple form for sharing current url\r\n//\r\n// ==========================================================================\r\n(function (document, $) {\r\n  \"use strict\";\r\n\r\n  $.extend(true, $.fancybox.defaults, {\r\n    btnTpl: {\r\n      share: '<button data-fancybox-share class=\"fancybox-button fancybox-button--share\" title=\"{{SHARE}}\">' +\r\n        '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M2.55 19c1.4-8.4 9.1-9.8 11.9-9.8V5l7 7-7 6.3v-3.5c-2.8 0-10.5 2.1-11.9 4.2z\"/></svg>' +\r\n        \"</button>\"\r\n    },\r\n    share: {\r\n      url: function (instance, item) {\r\n        return (\r\n          (!instance.currentHash && !(item.type === \"inline\" || item.type === \"html\") ? item.origSrc || item.src : false) || window.location\r\n        );\r\n      },\r\n      tpl: '<div class=\"fancybox-share\">' +\r\n        \"<h1>{{SHARE}}</h1>\" +\r\n        \"<p>\" +\r\n        '<a class=\"fancybox-share__button fancybox-share__button--fb\" href=\"https://www.facebook.com/sharer/sharer.php?u={{url}}\">' +\r\n        '<svg viewBox=\"0 0 512 512\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"m287 456v-299c0-21 6-35 35-35h38v-63c-7-1-29-3-55-3-54 0-91 33-91 94v306m143-254h-205v72h196\" /></svg>' +\r\n        \"<span>Facebook</span>\" +\r\n        \"</a>\" +\r\n        '<a class=\"fancybox-share__button fancybox-share__button--tw\" href=\"https://twitter.com/intent/tweet?url={{url}}&text={{descr}}\">' +\r\n        '<svg viewBox=\"0 0 512 512\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"m456 133c-14 7-31 11-47 13 17-10 30-27 37-46-15 10-34 16-52 20-61-62-157-7-141 75-68-3-129-35-169-85-22 37-11 86 26 109-13 0-26-4-37-9 0 39 28 72 65 80-12 3-25 4-37 2 10 33 41 57 77 57-42 30-77 38-122 34 170 111 378-32 359-208 16-11 30-25 41-42z\" /></svg>' +\r\n        \"<span>Twitter</span>\" +\r\n        \"</a>\" +\r\n        '<a class=\"fancybox-share__button fancybox-share__button--pt\" href=\"https://www.pinterest.com/pin/create/button/?url={{url}}&description={{descr}}&media={{media}}\">' +\r\n        '<svg viewBox=\"0 0 512 512\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"m265 56c-109 0-164 78-164 144 0 39 15 74 47 87 5 2 10 0 12-5l4-19c2-6 1-8-3-13-9-11-15-25-15-45 0-58 43-110 113-110 62 0 96 38 96 88 0 67-30 122-73 122-24 0-42-19-36-44 6-29 20-60 20-81 0-19-10-35-31-35-25 0-44 26-44 60 0 21 7 36 7 36l-30 125c-8 37-1 83 0 87 0 3 4 4 5 2 2-3 32-39 42-75l16-64c8 16 31 29 56 29 74 0 124-67 124-157 0-69-58-132-146-132z\" fill=\"#fff\"/></svg>' +\r\n        \"<span>Pinterest</span>\" +\r\n        \"</a>\" +\r\n        \"</p>\" +\r\n        '<p><input class=\"fancybox-share__input\" type=\"text\" value=\"{{url_raw}}\" onclick=\"select()\" /></p>' +\r\n        \"</div>\"\r\n    }\r\n  });\r\n\r\n  function escapeHtml(string) {\r\n    var entityMap = {\r\n      \"&\": \"&amp;\",\r\n      \"<\": \"&lt;\",\r\n      \">\": \"&gt;\",\r\n      '\"': \"&quot;\",\r\n      \"'\": \"&#39;\",\r\n      \"/\": \"&#x2F;\",\r\n      \"`\": \"&#x60;\",\r\n      \"=\": \"&#x3D;\"\r\n    };\r\n\r\n    return String(string).replace(/[&<>\"'`=\\/]/g, function (s) {\r\n      return entityMap[s];\r\n    });\r\n  }\r\n\r\n  $(document).on(\"click\", \"[data-fancybox-share]\", function () {\r\n    var instance = $.fancybox.getInstance(),\r\n      current = instance.current || null,\r\n      url,\r\n      tpl;\r\n\r\n    if (!current) {\r\n      return;\r\n    }\r\n\r\n    if ($.type(current.opts.share.url) === \"function\") {\r\n      url = current.opts.share.url.apply(current, [instance, current]);\r\n    }\r\n\r\n    tpl = current.opts.share.tpl\r\n      .replace(/\\{\\{media\\}\\}/g, current.type === \"image\" ? encodeURIComponent(current.src) : \"\")\r\n      .replace(/\\{\\{url\\}\\}/g, encodeURIComponent(url))\r\n      .replace(/\\{\\{url_raw\\}\\}/g, escapeHtml(url))\r\n      .replace(/\\{\\{descr\\}\\}/g, instance.$caption ? encodeURIComponent(instance.$caption.text()) : \"\");\r\n\r\n    $.fancybox.open({\r\n      src: instance.translate(instance, tpl),\r\n      type: \"html\",\r\n      opts: {\r\n        touch: false,\r\n        animationEffect: false,\r\n        afterLoad: function (shareInstance, shareCurrent) {\r\n          // Close self if parent instance is closing\r\n          instance.$refs.container.one(\"beforeClose.fb\", function () {\r\n            shareInstance.close(null, 0);\r\n          });\r\n\r\n          // Opening links in a popup window\r\n          shareCurrent.$content.find(\".fancybox-share__button\").click(function () {\r\n            window.open(this.href, \"Share\", \"width=550, height=450\");\r\n            return false;\r\n          });\r\n        },\r\n        mobile: {\r\n          autoFocus: false\r\n        }\r\n      }\r\n    });\r\n  });\r\n})(document, jQuery);\n// ==========================================================================\r\n//\r\n// Hash\r\n// Enables linking to each modal\r\n//\r\n// ==========================================================================\r\n(function (window, document, $) {\r\n  \"use strict\";\r\n\r\n  // Simple $.escapeSelector polyfill (for jQuery prior v3)\r\n  if (!$.escapeSelector) {\r\n    $.escapeSelector = function (sel) {\r\n      var rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\r\n      var fcssescape = function (ch, asCodePoint) {\r\n        if (asCodePoint) {\r\n          // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\r\n          if (ch === \"\\0\") {\r\n            return \"\\uFFFD\";\r\n          }\r\n\r\n          // Control characters and (dependent upon position) numbers get escaped as code points\r\n          return ch.slice(0, -1) + \"\\\\\" + ch.charCodeAt(ch.length - 1).toString(16) + \" \";\r\n        }\r\n\r\n        // Other potentially-special ASCII characters get backslash-escaped\r\n        return \"\\\\\" + ch;\r\n      };\r\n\r\n      return (sel + \"\").replace(rcssescape, fcssescape);\r\n    };\r\n  }\r\n\r\n  // Get info about gallery name and current index from url\r\n  function parseUrl() {\r\n    var hash = window.location.hash.substr(1),\r\n      rez = hash.split(\"-\"),\r\n      index = rez.length > 1 && /^\\+?\\d+$/.test(rez[rez.length - 1]) ? parseInt(rez.pop(-1), 10) || 1 : 1,\r\n      gallery = rez.join(\"-\");\r\n\r\n    return {\r\n      hash: hash,\r\n      /* Index is starting from 1 */\r\n      index: index < 1 ? 1 : index,\r\n      gallery: gallery\r\n    };\r\n  }\r\n\r\n  // Trigger click evnt on links to open new fancyBox instance\r\n  function triggerFromUrl(url) {\r\n    if (url.gallery !== \"\") {\r\n      // If we can find element matching 'data-fancybox' atribute,\r\n      // then triggering click event should start fancyBox\r\n      $(\"[data-fancybox='\" + $.escapeSelector(url.gallery) + \"']\")\r\n        .eq(url.index - 1)\r\n        .focus()\r\n        .trigger(\"click.fb-start\");\r\n    }\r\n  }\r\n\r\n  // Get gallery name from current instance\r\n  function getGalleryID(instance) {\r\n    var opts, ret;\r\n\r\n    if (!instance) {\r\n      return false;\r\n    }\r\n\r\n    opts = instance.current ? instance.current.opts : instance.opts;\r\n    ret = opts.hash || (opts.$orig ? opts.$orig.data(\"fancybox\") || opts.$orig.data(\"fancybox-trigger\") : \"\");\r\n\r\n    return ret === \"\" ? false : ret;\r\n  }\r\n\r\n  // Start when DOM becomes ready\r\n  $(function () {\r\n    // Check if user has disabled this module\r\n    if ($.fancybox.defaults.hash === false) {\r\n      return;\r\n    }\r\n\r\n    // Update hash when opening/closing fancyBox\r\n    $(document).on({\r\n      \"onInit.fb\": function (e, instance) {\r\n        var url, gallery;\r\n\r\n        if (instance.group[instance.currIndex].opts.hash === false) {\r\n          return;\r\n        }\r\n\r\n        url = parseUrl();\r\n        gallery = getGalleryID(instance);\r\n\r\n        // Make sure gallery start index matches index from hash\r\n        if (gallery && url.gallery && gallery == url.gallery) {\r\n          instance.currIndex = url.index - 1;\r\n        }\r\n      },\r\n\r\n      \"beforeShow.fb\": function (e, instance, current, firstRun) {\r\n        var gallery;\r\n\r\n        if (!current || current.opts.hash === false) {\r\n          return;\r\n        }\r\n\r\n        // Check if need to update window hash\r\n        gallery = getGalleryID(instance);\r\n\r\n        if (!gallery) {\r\n          return;\r\n        }\r\n\r\n        // Variable containing last hash value set by fancyBox\r\n        // It will be used to determine if fancyBox needs to close after hash change is detected\r\n        instance.currentHash = gallery + (instance.group.length > 1 ? \"-\" + (current.index + 1) : \"\");\r\n\r\n        // If current hash is the same (this instance most likely is opened by hashchange), then do nothing\r\n        if (window.location.hash === \"#\" + instance.currentHash) {\r\n          return;\r\n        }\r\n\r\n        if (firstRun && !instance.origHash) {\r\n          instance.origHash = window.location.hash;\r\n        }\r\n\r\n        if (instance.hashTimer) {\r\n          clearTimeout(instance.hashTimer);\r\n        }\r\n\r\n        // Update hash\r\n        instance.hashTimer = setTimeout(function () {\r\n          if (\"replaceState\" in window.history) {\r\n            window.history[firstRun ? \"pushState\" : \"replaceState\"]({},\r\n              document.title,\r\n              window.location.pathname + window.location.search + \"#\" + instance.currentHash\r\n            );\r\n\r\n            if (firstRun) {\r\n              instance.hasCreatedHistory = true;\r\n            }\r\n          } else {\r\n            window.location.hash = instance.currentHash;\r\n          }\r\n\r\n          instance.hashTimer = null;\r\n        }, 300);\r\n      },\r\n\r\n      \"beforeClose.fb\": function (e, instance, current) {\r\n        if (!current || current.opts.hash === false) {\r\n          return;\r\n        }\r\n\r\n        clearTimeout(instance.hashTimer);\r\n\r\n        // Goto previous history entry\r\n        if (instance.currentHash && instance.hasCreatedHistory) {\r\n          window.history.back();\r\n        } else if (instance.currentHash) {\r\n          if (\"replaceState\" in window.history) {\r\n            window.history.replaceState({}, document.title, window.location.pathname + window.location.search + (instance.origHash || \"\"));\r\n          } else {\r\n            window.location.hash = instance.origHash;\r\n          }\r\n        }\r\n\r\n        instance.currentHash = null;\r\n      }\r\n    });\r\n\r\n    // Check if need to start/close after url has changed\r\n    $(window).on(\"hashchange.fb\", function () {\r\n      var url = parseUrl(),\r\n        fb = null;\r\n\r\n      // Find last fancyBox instance that has \"hash\"\r\n      $.each(\r\n        $(\".fancybox-container\")\r\n        .get()\r\n        .reverse(),\r\n        function (index, value) {\r\n          var tmp = $(value).data(\"FancyBox\");\r\n\r\n          if (tmp && tmp.currentHash) {\r\n            fb = tmp;\r\n            return false;\r\n          }\r\n        }\r\n      );\r\n\r\n      if (fb) {\r\n        // Now, compare hash values\r\n        if (fb.currentHash !== url.gallery + \"-\" + url.index && !(url.index === 1 && fb.currentHash == url.gallery)) {\r\n          fb.currentHash = null;\r\n\r\n          fb.close();\r\n        }\r\n      } else if (url.gallery !== \"\") {\r\n        triggerFromUrl(url);\r\n      }\r\n    });\r\n\r\n    // Check current hash and trigger click event on matching element to start fancyBox, if needed\r\n    setTimeout(function () {\r\n      if (!$.fancybox.getInstance()) {\r\n        triggerFromUrl(parseUrl());\r\n      }\r\n    }, 50);\r\n  });\r\n})(window, document, jQuery);\n// ==========================================================================\r\n//\r\n// Wheel\r\n// Basic mouse weheel support for gallery navigation\r\n//\r\n// ==========================================================================\r\n(function (document, $) {\r\n  \"use strict\";\r\n\r\n  var prevTime = new Date().getTime();\r\n\r\n  $(document).on({\r\n    \"onInit.fb\": function (e, instance, current) {\r\n      instance.$refs.stage.on(\"mousewheel DOMMouseScroll wheel MozMousePixelScroll\", function (e) {\r\n        var current = instance.current,\r\n          currTime = new Date().getTime();\r\n\r\n        if (instance.group.length < 2 || current.opts.wheel === false || (current.opts.wheel === \"auto\" && current.type !== \"image\")) {\r\n          return;\r\n        }\r\n\r\n        e.preventDefault();\r\n        e.stopPropagation();\r\n\r\n        if (current.$slide.hasClass(\"fancybox-animated\")) {\r\n          return;\r\n        }\r\n\r\n        e = e.originalEvent || e;\r\n\r\n        if (currTime - prevTime < 250) {\r\n          return;\r\n        }\r\n\r\n        prevTime = currTime;\r\n\r\n        instance[(-e.deltaY || -e.deltaX || e.wheelDelta || -e.detail) < 0 ? \"next\" : \"previous\"]();\r\n      });\r\n    }\r\n  });\r\n})(document, jQuery);","!function(root, factory) {\n    \"function\" == typeof define && define.amd ? // AMD. Register as an anonymous module unless amdModuleId is set\n    define([], function() {\n        return root.svg4everybody = factory();\n    }) : \"object\" == typeof module && module.exports ? // Node. Does not work with strict CommonJS, but\n    // only CommonJS-like environments that support module.exports,\n    // like Node.\n    module.exports = factory() : root.svg4everybody = factory();\n}(this, function() {\n    /*! svg4everybody v2.1.9 | github.com/jonathantneal/svg4everybody */\n    function embed(parent, svg, target) {\n        // if the target exists\n        if (target) {\n            // create a document fragment to hold the contents of the target\n            var fragment = document.createDocumentFragment(), viewBox = !svg.hasAttribute(\"viewBox\") && target.getAttribute(\"viewBox\");\n            // conditionally set the viewBox on the svg\n            viewBox && svg.setAttribute(\"viewBox\", viewBox);\n            // copy the contents of the clone into the fragment\n            for (// clone the target\n            var clone = target.cloneNode(!0); clone.childNodes.length; ) {\n                fragment.appendChild(clone.firstChild);\n            }\n            // append the fragment into the svg\n            parent.appendChild(fragment);\n        }\n    }\n    function loadreadystatechange(xhr) {\n        // listen to changes in the request\n        xhr.onreadystatechange = function() {\n            // if the request is ready\n            if (4 === xhr.readyState) {\n                // get the cached html document\n                var cachedDocument = xhr._cachedDocument;\n                // ensure the cached html document based on the xhr response\n                cachedDocument || (cachedDocument = xhr._cachedDocument = document.implementation.createHTMLDocument(\"\"), \n                cachedDocument.body.innerHTML = xhr.responseText, xhr._cachedTarget = {}), // clear the xhr embeds list and embed each item\n                xhr._embeds.splice(0).map(function(item) {\n                    // get the cached target\n                    var target = xhr._cachedTarget[item.id];\n                    // ensure the cached target\n                    target || (target = xhr._cachedTarget[item.id] = cachedDocument.getElementById(item.id)), \n                    // embed the target into the svg\n                    embed(item.parent, item.svg, target);\n                });\n            }\n        }, // test the ready state change immediately\n        xhr.onreadystatechange();\n    }\n    function svg4everybody(rawopts) {\n        function oninterval() {\n            // while the index exists in the live <use> collection\n            for (// get the cached <use> index\n            var index = 0; index < uses.length; ) {\n                // get the current <use>\n                var use = uses[index], parent = use.parentNode, svg = getSVGAncestor(parent), src = use.getAttribute(\"xlink:href\") || use.getAttribute(\"href\");\n                if (!src && opts.attributeName && (src = use.getAttribute(opts.attributeName)), \n                svg && src) {\n                    if (polyfill) {\n                        if (!opts.validate || opts.validate(src, svg, use)) {\n                            // remove the <use> element\n                            parent.removeChild(use);\n                            // parse the src and get the url and id\n                            var srcSplit = src.split(\"#\"), url = srcSplit.shift(), id = srcSplit.join(\"#\");\n                            // if the link is external\n                            if (url.length) {\n                                // get the cached xhr request\n                                var xhr = requests[url];\n                                // ensure the xhr request exists\n                                xhr || (xhr = requests[url] = new XMLHttpRequest(), xhr.open(\"GET\", url), xhr.send(), \n                                xhr._embeds = []), // add the svg and id as an item to the xhr embeds list\n                                xhr._embeds.push({\n                                    parent: parent,\n                                    svg: svg,\n                                    id: id\n                                }), // prepare the xhr ready state change event\n                                loadreadystatechange(xhr);\n                            } else {\n                                // embed the local id into the svg\n                                embed(parent, svg, document.getElementById(id));\n                            }\n                        } else {\n                            // increase the index when the previous value was not \"valid\"\n                            ++index, ++numberOfSvgUseElementsToBypass;\n                        }\n                    }\n                } else {\n                    // increase the index when the previous value was not \"valid\"\n                    ++index;\n                }\n            }\n            // continue the interval\n            (!uses.length || uses.length - numberOfSvgUseElementsToBypass > 0) && requestAnimationFrame(oninterval, 67);\n        }\n        var polyfill, opts = Object(rawopts), newerIEUA = /\\bTrident\\/[567]\\b|\\bMSIE (?:9|10)\\.0\\b/, webkitUA = /\\bAppleWebKit\\/(\\d+)\\b/, olderEdgeUA = /\\bEdge\\/12\\.(\\d+)\\b/, edgeUA = /\\bEdge\\/.(\\d+)\\b/, inIframe = window.top !== window.self;\n        polyfill = \"polyfill\" in opts ? opts.polyfill : newerIEUA.test(navigator.userAgent) || (navigator.userAgent.match(olderEdgeUA) || [])[1] < 10547 || (navigator.userAgent.match(webkitUA) || [])[1] < 537 || edgeUA.test(navigator.userAgent) && inIframe;\n        // create xhr requests object\n        var requests = {}, requestAnimationFrame = window.requestAnimationFrame || setTimeout, uses = document.getElementsByTagName(\"use\"), numberOfSvgUseElementsToBypass = 0;\n        // conditionally start the interval if the polyfill is active\n        polyfill && oninterval();\n    }\n    function getSVGAncestor(node) {\n        for (var svg = node; \"svg\" !== svg.nodeName.toLowerCase() && (svg = svg.parentNode); ) {}\n        return svg;\n    }\n    return svg4everybody;\n});","var DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isRegExp = require('../internals/is-regexp');\nvar getFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar setInternalState = require('../internals/internal-state').set;\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\n\nvar FORCED = DESCRIPTORS && isForced('RegExp', (!CORRECT_NEW || UNSUPPORTED_Y || fails(function () {\n  re2[MATCH] = false;\n  // RegExp constructor can alter flags and IsRegExp works correct with @@match\n  return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n})));\n\n// `RegExp` constructor\n// https://tc39.github.io/ecma262/#sec-regexp-constructor\nif (FORCED) {\n  var RegExpWrapper = function RegExp(pattern, flags) {\n    var thisIsRegExp = this instanceof RegExpWrapper;\n    var patternIsRegExp = isRegExp(pattern);\n    var flagsAreUndefined = flags === undefined;\n    var sticky;\n\n    if (!thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined) {\n      return pattern;\n    }\n\n    if (CORRECT_NEW) {\n      if (patternIsRegExp && !flagsAreUndefined) pattern = pattern.source;\n    } else if (pattern instanceof RegExpWrapper) {\n      if (flagsAreUndefined) flags = getFlags.call(pattern);\n      pattern = pattern.source;\n    }\n\n    if (UNSUPPORTED_Y) {\n      sticky = !!flags && flags.indexOf('y') > -1;\n      if (sticky) flags = flags.replace(/y/g, '');\n    }\n\n    var result = inheritIfRequired(\n      CORRECT_NEW ? new NativeRegExp(pattern, flags) : NativeRegExp(pattern, flags),\n      thisIsRegExp ? this : RegExpPrototype,\n      RegExpWrapper\n    );\n\n    if (UNSUPPORTED_Y && sticky) setInternalState(result, { sticky: sticky });\n\n    return result;\n  };\n  var proxy = function (key) {\n    key in RegExpWrapper || defineProperty(RegExpWrapper, key, {\n      configurable: true,\n      get: function () { return NativeRegExp[key]; },\n      set: function (it) { NativeRegExp[key] = it; }\n    });\n  };\n  var keys = getOwnPropertyNames(NativeRegExp);\n  var index = 0;\n  while (keys.length > index) proxy(keys[index++]);\n  RegExpPrototype.constructor = RegExpWrapper;\n  RegExpWrapper.prototype = RegExpPrototype;\n  redefine(global, 'RegExp', RegExpWrapper);\n}\n\n// https://tc39.github.io/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n","var isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n  var NewTarget, NewTargetPrototype;\n  if (\n    // it can work only with native `setPrototypeOf`\n    setPrototypeOf &&\n    // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n    typeof (NewTarget = dummy.constructor) == 'function' &&\n    NewTarget !== Wrapper &&\n    isObject(NewTargetPrototype = NewTarget.prototype) &&\n    NewTargetPrototype !== Wrapper.prototype\n  ) setPrototypeOf($this, NewTargetPrototype);\n  return $this;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","/*!\n * Glide.js v3.4.1\n * (c) 2013-2019 Jędrzej Chałubek <jedrzej.chalubek@gmail.com> (http://jedrzejchalubek.com/)\n * Released under the MIT License.\n */\n\nvar defaults = {\n  /**\n   * Type of the movement.\n   *\n   * Available types:\n   * `slider` - Rewinds slider to the start/end when it reaches the first or last slide.\n   * `carousel` - Changes slides without starting over when it reaches the first or last slide.\n   *\n   * @type {String}\n   */\n  type: 'slider',\n\n  /**\n   * Start at specific slide number defined with zero-based index.\n   *\n   * @type {Number}\n   */\n  startAt: 0,\n\n  /**\n   * A number of slides visible on the single viewport.\n   *\n   * @type {Number}\n   */\n  perView: 1,\n\n  /**\n   * Focus currently active slide at a specified position in the track.\n   *\n   * Available inputs:\n   * `center` - Current slide will be always focused at the center of a track.\n   * `0,1,2,3...` - Current slide will be focused on the specified zero-based index.\n   *\n   * @type {String|Number}\n   */\n  focusAt: 0,\n\n  /**\n   * A size of the gap added between slides.\n   *\n   * @type {Number}\n   */\n  gap: 10,\n\n  /**\n   * Change slides after a specified interval. Use `false` for turning off autoplay.\n   *\n   * @type {Number|Boolean}\n   */\n  autoplay: false,\n\n  /**\n   * Stop autoplay on mouseover event.\n   *\n   * @type {Boolean}\n   */\n  hoverpause: true,\n\n  /**\n   * Allow for changing slides with left and right keyboard arrows.\n   *\n   * @type {Boolean}\n   */\n  keyboard: true,\n\n  /**\n   * Stop running `perView` number of slides from the end. Use this\n   * option if you don't want to have an empty space after\n   * a slider. Works only with `slider` type and a\n   * non-centered `focusAt` setting.\n   *\n   * @type {Boolean}\n   */\n  bound: false,\n\n  /**\n   * Minimal swipe distance needed to change the slide. Use `false` for turning off a swiping.\n   *\n   * @type {Number|Boolean}\n   */\n  swipeThreshold: 80,\n\n  /**\n   * Minimal mouse drag distance needed to change the slide. Use `false` for turning off a dragging.\n   *\n   * @type {Number|Boolean}\n   */\n  dragThreshold: 120,\n\n  /**\n   * A maximum number of slides to which movement will be made on swiping or dragging. Use `false` for unlimited.\n   *\n   * @type {Number|Boolean}\n   */\n  perTouch: false,\n\n  /**\n   * Moving distance ratio of the slides on a swiping and dragging.\n   *\n   * @type {Number}\n   */\n  touchRatio: 0.5,\n\n  /**\n   * Angle required to activate slides moving on swiping or dragging.\n   *\n   * @type {Number}\n   */\n  touchAngle: 45,\n\n  /**\n   * Duration of the animation in milliseconds.\n   *\n   * @type {Number}\n   */\n  animationDuration: 400,\n\n  /**\n   * Allows looping the `slider` type. Slider will rewind to the first/last slide when it's at the start/end.\n   *\n   * @type {Boolean}\n   */\n  rewind: true,\n\n  /**\n   * Duration of the rewinding animation of the `slider` type in milliseconds.\n   *\n   * @type {Number}\n   */\n  rewindDuration: 800,\n\n  /**\n   * Easing function for the animation.\n   *\n   * @type {String}\n   */\n  animationTimingFunc: 'cubic-bezier(.165, .840, .440, 1)',\n\n  /**\n   * Throttle costly events at most once per every wait milliseconds.\n   *\n   * @type {Number}\n   */\n  throttle: 10,\n\n  /**\n   * Moving direction mode.\n   *\n   * Available inputs:\n   * - 'ltr' - left to right movement,\n   * - 'rtl' - right to left movement.\n   *\n   * @type {String}\n   */\n  direction: 'ltr',\n\n  /**\n   * The distance value of the next and previous viewports which\n   * have to peek in the current view. Accepts number and\n   * pixels as a string. Left and right peeking can be\n   * set up separately with a directions object.\n   *\n   * For example:\n   * `100` - Peek 100px on the both sides.\n   * { before: 100, after: 50 }` - Peek 100px on the left side and 50px on the right side.\n   *\n   * @type {Number|String|Object}\n   */\n  peek: 0,\n\n  /**\n   * Collection of options applied at specified media breakpoints.\n   * For example: display two slides per view under 800px.\n   * `{\n   *   '800px': {\n   *     perView: 2\n   *   }\n   * }`\n   */\n  breakpoints: {},\n\n  /**\n   * Collection of internally used HTML classes.\n   *\n   * @todo Refactor `slider` and `carousel` properties to single `type: { slider: '', carousel: '' }` object\n   * @type {Object}\n   */\n  classes: {\n    direction: {\n      ltr: 'glide--ltr',\n      rtl: 'glide--rtl'\n    },\n    slider: 'glide--slider',\n    carousel: 'glide--carousel',\n    swipeable: 'glide--swipeable',\n    dragging: 'glide--dragging',\n    cloneSlide: 'glide__slide--clone',\n    activeNav: 'glide__bullet--active',\n    activeSlide: 'glide__slide--active',\n    disabledArrow: 'glide__arrow--disabled'\n  }\n};\n\n/**\n * Outputs warning message to the bowser console.\n *\n * @param  {String} msg\n * @return {Void}\n */\nfunction warn(msg) {\n  console.error(\"[Glide warn]: \" + msg);\n}\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n  return typeof obj;\n} : function (obj) {\n  return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar classCallCheck = function (instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n};\n\nvar createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\nvar get = function get(object, property, receiver) {\n  if (object === null) object = Function.prototype;\n  var desc = Object.getOwnPropertyDescriptor(object, property);\n\n  if (desc === undefined) {\n    var parent = Object.getPrototypeOf(object);\n\n    if (parent === null) {\n      return undefined;\n    } else {\n      return get(parent, property, receiver);\n    }\n  } else if (\"value\" in desc) {\n    return desc.value;\n  } else {\n    var getter = desc.get;\n\n    if (getter === undefined) {\n      return undefined;\n    }\n\n    return getter.call(receiver);\n  }\n};\n\nvar inherits = function (subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n/**\n * Converts value entered as number\n * or string to integer value.\n *\n * @param {String} value\n * @returns {Number}\n */\nfunction toInt(value) {\n  return parseInt(value);\n}\n\n/**\n * Converts value entered as number\n * or string to flat value.\n *\n * @param {String} value\n * @returns {Number}\n */\nfunction toFloat(value) {\n  return parseFloat(value);\n}\n\n/**\n * Indicates whether the specified value is a string.\n *\n * @param  {*}   value\n * @return {Boolean}\n */\nfunction isString(value) {\n  return typeof value === 'string';\n}\n\n/**\n * Indicates whether the specified value is an object.\n *\n * @param  {*} value\n * @return {Boolean}\n *\n * @see https://github.com/jashkenas/underscore\n */\nfunction isObject(value) {\n  var type = typeof value === 'undefined' ? 'undefined' : _typeof(value);\n\n  return type === 'function' || type === 'object' && !!value; // eslint-disable-line no-mixed-operators\n}\n\n/**\n * Indicates whether the specified value is a number.\n *\n * @param  {*} value\n * @return {Boolean}\n */\nfunction isNumber(value) {\n  return typeof value === 'number';\n}\n\n/**\n * Indicates whether the specified value is a function.\n *\n * @param  {*} value\n * @return {Boolean}\n */\nfunction isFunction(value) {\n  return typeof value === 'function';\n}\n\n/**\n * Indicates whether the specified value is undefined.\n *\n * @param  {*} value\n * @return {Boolean}\n */\nfunction isUndefined(value) {\n  return typeof value === 'undefined';\n}\n\n/**\n * Indicates whether the specified value is an array.\n *\n * @param  {*} value\n * @return {Boolean}\n */\nfunction isArray(value) {\n  return value.constructor === Array;\n}\n\n/**\n * Creates and initializes specified collection of extensions.\n * Each extension receives access to instance of glide and rest of components.\n *\n * @param {Object} glide\n * @param {Object} extensions\n *\n * @returns {Object}\n */\nfunction mount(glide, extensions, events) {\n  var components = {};\n\n  for (var name in extensions) {\n    if (isFunction(extensions[name])) {\n      components[name] = extensions[name](glide, components, events);\n    } else {\n      warn('Extension must be a function');\n    }\n  }\n\n  for (var _name in components) {\n    if (isFunction(components[_name].mount)) {\n      components[_name].mount();\n    }\n  }\n\n  return components;\n}\n\n/**\n * Defines getter and setter property on the specified object.\n *\n * @param  {Object} obj         Object where property has to be defined.\n * @param  {String} prop        Name of the defined property.\n * @param  {Object} definition  Get and set definitions for the property.\n * @return {Void}\n */\nfunction define(obj, prop, definition) {\n  Object.defineProperty(obj, prop, definition);\n}\n\n/**\n * Sorts aphabetically object keys.\n *\n * @param  {Object} obj\n * @return {Object}\n */\nfunction sortKeys(obj) {\n  return Object.keys(obj).sort().reduce(function (r, k) {\n    r[k] = obj[k];\n\n    return r[k], r;\n  }, {});\n}\n\n/**\n * Merges passed settings object with default options.\n *\n * @param  {Object} defaults\n * @param  {Object} settings\n * @return {Object}\n */\nfunction mergeOptions(defaults, settings) {\n  var options = _extends({}, defaults, settings);\n\n  // `Object.assign` do not deeply merge objects, so we\n  // have to do it manually for every nested object\n  // in options. Although it does not look smart,\n  // it's smaller and faster than some fancy\n  // merging deep-merge algorithm script.\n  if (settings.hasOwnProperty('classes')) {\n    options.classes = _extends({}, defaults.classes, settings.classes);\n\n    if (settings.classes.hasOwnProperty('direction')) {\n      options.classes.direction = _extends({}, defaults.classes.direction, settings.classes.direction);\n    }\n  }\n\n  if (settings.hasOwnProperty('breakpoints')) {\n    options.breakpoints = _extends({}, defaults.breakpoints, settings.breakpoints);\n  }\n\n  return options;\n}\n\nvar EventsBus = function () {\n  /**\n   * Construct a EventBus instance.\n   *\n   * @param {Object} events\n   */\n  function EventsBus() {\n    var events = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    classCallCheck(this, EventsBus);\n\n    this.events = events;\n    this.hop = events.hasOwnProperty;\n  }\n\n  /**\n   * Adds listener to the specifed event.\n   *\n   * @param {String|Array} event\n   * @param {Function} handler\n   */\n\n\n  createClass(EventsBus, [{\n    key: 'on',\n    value: function on(event, handler) {\n      if (isArray(event)) {\n        for (var i = 0; i < event.length; i++) {\n          this.on(event[i], handler);\n        }\n      }\n\n      // Create the event's object if not yet created\n      if (!this.hop.call(this.events, event)) {\n        this.events[event] = [];\n      }\n\n      // Add the handler to queue\n      var index = this.events[event].push(handler) - 1;\n\n      // Provide handle back for removal of event\n      return {\n        remove: function remove() {\n          delete this.events[event][index];\n        }\n      };\n    }\n\n    /**\n     * Runs registered handlers for specified event.\n     *\n     * @param {String|Array} event\n     * @param {Object=} context\n     */\n\n  }, {\n    key: 'emit',\n    value: function emit(event, context) {\n      if (isArray(event)) {\n        for (var i = 0; i < event.length; i++) {\n          this.emit(event[i], context);\n        }\n      }\n\n      // If the event doesn't exist, or there's no handlers in queue, just leave\n      if (!this.hop.call(this.events, event)) {\n        return;\n      }\n\n      // Cycle through events queue, fire!\n      this.events[event].forEach(function (item) {\n        item(context || {});\n      });\n    }\n  }]);\n  return EventsBus;\n}();\n\nvar Glide = function () {\n  /**\r\n   * Construct glide.\r\n   *\r\n   * @param  {String} selector\r\n   * @param  {Object} options\r\n   */\n  function Glide(selector) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    classCallCheck(this, Glide);\n\n    this._c = {};\n    this._t = [];\n    this._e = new EventsBus();\n\n    this.disabled = false;\n    this.selector = selector;\n    this.settings = mergeOptions(defaults, options);\n    this.index = this.settings.startAt;\n  }\n\n  /**\r\n   * Initializes glide.\r\n   *\r\n   * @param {Object} extensions Collection of extensions to initialize.\r\n   * @return {Glide}\r\n   */\n\n\n  createClass(Glide, [{\n    key: 'mount',\n    value: function mount$$1() {\n      var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n      this._e.emit('mount.before');\n\n      if (isObject(extensions)) {\n        this._c = mount(this, extensions, this._e);\n      } else {\n        warn('You need to provide a object on `mount()`');\n      }\n\n      this._e.emit('mount.after');\n\n      return this;\n    }\n\n    /**\r\n     * Collects an instance `translate` transformers.\r\n     *\r\n     * @param  {Array} transformers Collection of transformers.\r\n     * @return {Void}\r\n     */\n\n  }, {\n    key: 'mutate',\n    value: function mutate() {\n      var transformers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n      if (isArray(transformers)) {\n        this._t = transformers;\n      } else {\n        warn('You need to provide a array on `mutate()`');\n      }\n\n      return this;\n    }\n\n    /**\r\n     * Updates glide with specified settings.\r\n     *\r\n     * @param {Object} settings\r\n     * @return {Glide}\r\n     */\n\n  }, {\n    key: 'update',\n    value: function update() {\n      var settings = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n      this.settings = mergeOptions(this.settings, settings);\n\n      if (settings.hasOwnProperty('startAt')) {\n        this.index = settings.startAt;\n      }\n\n      this._e.emit('update');\n\n      return this;\n    }\n\n    /**\r\n     * Change slide with specified pattern. A pattern must be in the special format:\r\n     * `>` - Move one forward\r\n     * `<` - Move one backward\r\n     * `={i}` - Go to {i} zero-based slide (eq. '=1', will go to second slide)\r\n     * `>>` - Rewinds to end (last slide)\r\n     * `<<` - Rewinds to start (first slide)\r\n     *\r\n     * @param {String} pattern\r\n     * @return {Glide}\r\n     */\n\n  }, {\n    key: 'go',\n    value: function go(pattern) {\n      this._c.Run.make(pattern);\n\n      return this;\n    }\n\n    /**\r\n     * Move track by specified distance.\r\n     *\r\n     * @param {String} distance\r\n     * @return {Glide}\r\n     */\n\n  }, {\n    key: 'move',\n    value: function move(distance) {\n      this._c.Transition.disable();\n      this._c.Move.make(distance);\n\n      return this;\n    }\n\n    /**\r\n     * Destroy instance and revert all changes done by this._c.\r\n     *\r\n     * @return {Glide}\r\n     */\n\n  }, {\n    key: 'destroy',\n    value: function destroy() {\n      this._e.emit('destroy');\n\n      return this;\n    }\n\n    /**\r\n     * Start instance autoplaying.\r\n     *\r\n     * @param {Boolean|Number} interval Run autoplaying with passed interval regardless of `autoplay` settings\r\n     * @return {Glide}\r\n     */\n\n  }, {\n    key: 'play',\n    value: function play() {\n      var interval = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n      if (interval) {\n        this.settings.autoplay = interval;\n      }\n\n      this._e.emit('play');\n\n      return this;\n    }\n\n    /**\r\n     * Stop instance autoplaying.\r\n     *\r\n     * @return {Glide}\r\n     */\n\n  }, {\n    key: 'pause',\n    value: function pause() {\n      this._e.emit('pause');\n\n      return this;\n    }\n\n    /**\r\n     * Sets glide into a idle status.\r\n     *\r\n     * @return {Glide}\r\n     */\n\n  }, {\n    key: 'disable',\n    value: function disable() {\n      this.disabled = true;\n\n      return this;\n    }\n\n    /**\r\n     * Sets glide into a active status.\r\n     *\r\n     * @return {Glide}\r\n     */\n\n  }, {\n    key: 'enable',\n    value: function enable() {\n      this.disabled = false;\n\n      return this;\n    }\n\n    /**\r\n     * Adds cuutom event listener with handler.\r\n     *\r\n     * @param  {String|Array} event\r\n     * @param  {Function} handler\r\n     * @return {Glide}\r\n     */\n\n  }, {\n    key: 'on',\n    value: function on(event, handler) {\n      this._e.on(event, handler);\n\n      return this;\n    }\n\n    /**\r\n     * Checks if glide is a precised type.\r\n     *\r\n     * @param  {String} name\r\n     * @return {Boolean}\r\n     */\n\n  }, {\n    key: 'isType',\n    value: function isType(name) {\n      return this.settings.type === name;\n    }\n\n    /**\r\n     * Gets value of the core options.\r\n     *\r\n     * @return {Object}\r\n     */\n\n  }, {\n    key: 'settings',\n    get: function get$$1() {\n      return this._o;\n    }\n\n    /**\r\n     * Sets value of the core options.\r\n     *\r\n     * @param  {Object} o\r\n     * @return {Void}\r\n     */\n    ,\n    set: function set$$1(o) {\n      if (isObject(o)) {\n        this._o = o;\n      } else {\n        warn('Options must be an `object` instance.');\n      }\n    }\n\n    /**\r\n     * Gets current index of the slider.\r\n     *\r\n     * @return {Object}\r\n     */\n\n  }, {\n    key: 'index',\n    get: function get$$1() {\n      return this._i;\n    }\n\n    /**\r\n     * Sets current index a slider.\r\n     *\r\n     * @return {Object}\r\n     */\n    ,\n    set: function set$$1(i) {\n      this._i = toInt(i);\n    }\n\n    /**\r\n     * Gets type name of the slider.\r\n     *\r\n     * @return {String}\r\n     */\n\n  }, {\n    key: 'type',\n    get: function get$$1() {\n      return this.settings.type;\n    }\n\n    /**\r\n     * Gets value of the idle status.\r\n     *\r\n     * @return {Boolean}\r\n     */\n\n  }, {\n    key: 'disabled',\n    get: function get$$1() {\n      return this._d;\n    }\n\n    /**\r\n     * Sets value of the idle status.\r\n     *\r\n     * @return {Boolean}\r\n     */\n    ,\n    set: function set$$1(status) {\n      this._d = !!status;\n    }\n  }]);\n  return Glide;\n}();\n\nfunction Run (Glide, Components, Events) {\n  var Run = {\n    /**\n     * Initializes autorunning of the glide.\n     *\n     * @return {Void}\n     */\n    mount: function mount() {\n      this._o = false;\n    },\n\n\n    /**\n     * Makes glides running based on the passed moving schema.\n     *\n     * @param {String} move\n     */\n    make: function make(move) {\n      var _this = this;\n\n      if (!Glide.disabled) {\n        Glide.disable();\n\n        this.move = move;\n\n        Events.emit('run.before', this.move);\n\n        this.calculate();\n\n        Events.emit('run', this.move);\n\n        Components.Transition.after(function () {\n          if (_this.isStart()) {\n            Events.emit('run.start', _this.move);\n          }\n\n          if (_this.isEnd()) {\n            Events.emit('run.end', _this.move);\n          }\n\n          if (_this.isOffset('<') || _this.isOffset('>')) {\n            _this._o = false;\n\n            Events.emit('run.offset', _this.move);\n          }\n\n          Events.emit('run.after', _this.move);\n\n          Glide.enable();\n        });\n      }\n    },\n\n\n    /**\n     * Calculates current index based on defined move.\n     *\n     * @return {Void}\n     */\n    calculate: function calculate() {\n      var move = this.move,\n          length = this.length;\n      var steps = move.steps,\n          direction = move.direction;\n\n\n      var countableSteps = isNumber(toInt(steps)) && toInt(steps) !== 0;\n\n      switch (direction) {\n        case '>':\n          if (steps === '>') {\n            Glide.index = length;\n          } else if (this.isEnd()) {\n            if (!(Glide.isType('slider') && !Glide.settings.rewind)) {\n              this._o = true;\n\n              Glide.index = 0;\n            }\n          } else if (countableSteps) {\n            Glide.index += Math.min(length - Glide.index, -toInt(steps));\n          } else {\n            Glide.index++;\n          }\n          break;\n\n        case '<':\n          if (steps === '<') {\n            Glide.index = 0;\n          } else if (this.isStart()) {\n            if (!(Glide.isType('slider') && !Glide.settings.rewind)) {\n              this._o = true;\n\n              Glide.index = length;\n            }\n          } else if (countableSteps) {\n            Glide.index -= Math.min(Glide.index, toInt(steps));\n          } else {\n            Glide.index--;\n          }\n          break;\n\n        case '=':\n          Glide.index = steps;\n          break;\n\n        default:\n          warn('Invalid direction pattern [' + direction + steps + '] has been used');\n          break;\n      }\n    },\n\n\n    /**\n     * Checks if we are on the first slide.\n     *\n     * @return {Boolean}\n     */\n    isStart: function isStart() {\n      return Glide.index === 0;\n    },\n\n\n    /**\n     * Checks if we are on the last slide.\n     *\n     * @return {Boolean}\n     */\n    isEnd: function isEnd() {\n      return Glide.index === this.length;\n    },\n\n\n    /**\n     * Checks if we are making a offset run.\n     *\n     * @param {String} direction\n     * @return {Boolean}\n     */\n    isOffset: function isOffset(direction) {\n      return this._o && this.move.direction === direction;\n    }\n  };\n\n  define(Run, 'move', {\n    /**\n     * Gets value of the move schema.\n     *\n     * @returns {Object}\n     */\n    get: function get() {\n      return this._m;\n    },\n\n\n    /**\n     * Sets value of the move schema.\n     *\n     * @returns {Object}\n     */\n    set: function set(value) {\n      var step = value.substr(1);\n\n      this._m = {\n        direction: value.substr(0, 1),\n        steps: step ? toInt(step) ? toInt(step) : step : 0\n      };\n    }\n  });\n\n  define(Run, 'length', {\n    /**\n     * Gets value of the running distance based\n     * on zero-indexing number of slides.\n     *\n     * @return {Number}\n     */\n    get: function get() {\n      var settings = Glide.settings;\n      var length = Components.Html.slides.length;\n\n      // If the `bound` option is acitve, a maximum running distance should be\n      // reduced by `perView` and `focusAt` settings. Running distance\n      // should end before creating an empty space after instance.\n\n      if (Glide.isType('slider') && settings.focusAt !== 'center' && settings.bound) {\n        return length - 1 - (toInt(settings.perView) - 1) + toInt(settings.focusAt);\n      }\n\n      return length - 1;\n    }\n  });\n\n  define(Run, 'offset', {\n    /**\n     * Gets status of the offsetting flag.\n     *\n     * @return {Boolean}\n     */\n    get: function get() {\n      return this._o;\n    }\n  });\n\n  return Run;\n}\n\n/**\n * Returns a current time.\n *\n * @return {Number}\n */\nfunction now() {\n  return new Date().getTime();\n}\n\n/**\n * Returns a function, that, when invoked, will only be triggered\n * at most once during a given window of time.\n *\n * @param {Function} func\n * @param {Number} wait\n * @param {Object=} options\n * @return {Function}\n *\n * @see https://github.com/jashkenas/underscore\n */\nfunction throttle(func, wait, options) {\n  var timeout = void 0,\n      context = void 0,\n      args = void 0,\n      result = void 0;\n  var previous = 0;\n  if (!options) options = {};\n\n  var later = function later() {\n    previous = options.leading === false ? 0 : now();\n    timeout = null;\n    result = func.apply(context, args);\n    if (!timeout) context = args = null;\n  };\n\n  var throttled = function throttled() {\n    var at = now();\n    if (!previous && options.leading === false) previous = at;\n    var remaining = wait - (at - previous);\n    context = this;\n    args = arguments;\n    if (remaining <= 0 || remaining > wait) {\n      if (timeout) {\n        clearTimeout(timeout);\n        timeout = null;\n      }\n      previous = at;\n      result = func.apply(context, args);\n      if (!timeout) context = args = null;\n    } else if (!timeout && options.trailing !== false) {\n      timeout = setTimeout(later, remaining);\n    }\n    return result;\n  };\n\n  throttled.cancel = function () {\n    clearTimeout(timeout);\n    previous = 0;\n    timeout = context = args = null;\n  };\n\n  return throttled;\n}\n\nvar MARGIN_TYPE = {\n  ltr: ['marginLeft', 'marginRight'],\n  rtl: ['marginRight', 'marginLeft']\n};\n\nfunction Gaps (Glide, Components, Events) {\n  var Gaps = {\n    /**\n     * Applies gaps between slides. First and last\n     * slides do not receive it's edge margins.\n     *\n     * @param {HTMLCollection} slides\n     * @return {Void}\n     */\n    apply: function apply(slides) {\n      for (var i = 0, len = slides.length; i < len; i++) {\n        var style = slides[i].style;\n        var direction = Components.Direction.value;\n\n        if (i !== 0) {\n          style[MARGIN_TYPE[direction][0]] = this.value / 2 + 'px';\n        } else {\n          style[MARGIN_TYPE[direction][0]] = '';\n        }\n\n        if (i !== slides.length - 1) {\n          style[MARGIN_TYPE[direction][1]] = this.value / 2 + 'px';\n        } else {\n          style[MARGIN_TYPE[direction][1]] = '';\n        }\n      }\n    },\n\n\n    /**\n     * Removes gaps from the slides.\n     *\n     * @param {HTMLCollection} slides\n     * @returns {Void}\n    */\n    remove: function remove(slides) {\n      for (var i = 0, len = slides.length; i < len; i++) {\n        var style = slides[i].style;\n\n        style.marginLeft = '';\n        style.marginRight = '';\n      }\n    }\n  };\n\n  define(Gaps, 'value', {\n    /**\n     * Gets value of the gap.\n     *\n     * @returns {Number}\n     */\n    get: function get() {\n      return toInt(Glide.settings.gap);\n    }\n  });\n\n  define(Gaps, 'grow', {\n    /**\n     * Gets additional dimentions value caused by gaps.\n     * Used to increase width of the slides wrapper.\n     *\n     * @returns {Number}\n     */\n    get: function get() {\n      return Gaps.value * (Components.Sizes.length - 1);\n    }\n  });\n\n  define(Gaps, 'reductor', {\n    /**\n     * Gets reduction value caused by gaps.\n     * Used to subtract width of the slides.\n     *\n     * @returns {Number}\n     */\n    get: function get() {\n      var perView = Glide.settings.perView;\n\n      return Gaps.value * (perView - 1) / perView;\n    }\n  });\n\n  /**\n   * Apply calculated gaps:\n   * - after building, so slides (including clones) will receive proper margins\n   * - on updating via API, to recalculate gaps with new options\n   */\n  Events.on(['build.after', 'update'], throttle(function () {\n    Gaps.apply(Components.Html.wrapper.children);\n  }, 30));\n\n  /**\n   * Remove gaps:\n   * - on destroying to bring markup to its inital state\n   */\n  Events.on('destroy', function () {\n    Gaps.remove(Components.Html.wrapper.children);\n  });\n\n  return Gaps;\n}\n\n/**\n * Finds siblings nodes of the passed node.\n *\n * @param  {Element} node\n * @return {Array}\n */\nfunction siblings(node) {\n  if (node && node.parentNode) {\n    var n = node.parentNode.firstChild;\n    var matched = [];\n\n    for (; n; n = n.nextSibling) {\n      if (n.nodeType === 1 && n !== node) {\n        matched.push(n);\n      }\n    }\n\n    return matched;\n  }\n\n  return [];\n}\n\n/**\n * Checks if passed node exist and is a valid element.\n *\n * @param  {Element} node\n * @return {Boolean}\n */\nfunction exist(node) {\n  if (node && node instanceof window.HTMLElement) {\n    return true;\n  }\n\n  return false;\n}\n\nvar TRACK_SELECTOR = '[data-glide-el=\"track\"]';\n\nfunction Html (Glide, Components) {\n  var Html = {\n    /**\n     * Setup slider HTML nodes.\n     *\n     * @param {Glide} glide\n     */\n    mount: function mount() {\n      this.root = Glide.selector;\n      this.track = this.root.querySelector(TRACK_SELECTOR);\n      this.slides = Array.prototype.slice.call(this.wrapper.children).filter(function (slide) {\n        return !slide.classList.contains(Glide.settings.classes.cloneSlide);\n      });\n    }\n  };\n\n  define(Html, 'root', {\n    /**\n     * Gets node of the glide main element.\n     *\n     * @return {Object}\n     */\n    get: function get() {\n      return Html._r;\n    },\n\n\n    /**\n     * Sets node of the glide main element.\n     *\n     * @return {Object}\n     */\n    set: function set(r) {\n      if (isString(r)) {\n        r = document.querySelector(r);\n      }\n\n      if (exist(r)) {\n        Html._r = r;\n      } else {\n        warn('Root element must be a existing Html node');\n      }\n    }\n  });\n\n  define(Html, 'track', {\n    /**\n     * Gets node of the glide track with slides.\n     *\n     * @return {Object}\n     */\n    get: function get() {\n      return Html._t;\n    },\n\n\n    /**\n     * Sets node of the glide track with slides.\n     *\n     * @return {Object}\n     */\n    set: function set(t) {\n      if (exist(t)) {\n        Html._t = t;\n      } else {\n        warn('Could not find track element. Please use ' + TRACK_SELECTOR + ' attribute.');\n      }\n    }\n  });\n\n  define(Html, 'wrapper', {\n    /**\n     * Gets node of the slides wrapper.\n     *\n     * @return {Object}\n     */\n    get: function get() {\n      return Html.track.children[0];\n    }\n  });\n\n  return Html;\n}\n\nfunction Peek (Glide, Components, Events) {\n  var Peek = {\n    /**\n     * Setups how much to peek based on settings.\n     *\n     * @return {Void}\n     */\n    mount: function mount() {\n      this.value = Glide.settings.peek;\n    }\n  };\n\n  define(Peek, 'value', {\n    /**\n     * Gets value of the peek.\n     *\n     * @returns {Number|Object}\n     */\n    get: function get() {\n      return Peek._v;\n    },\n\n\n    /**\n     * Sets value of the peek.\n     *\n     * @param {Number|Object} value\n     * @return {Void}\n     */\n    set: function set(value) {\n      if (isObject(value)) {\n        value.before = toInt(value.before);\n        value.after = toInt(value.after);\n      } else {\n        value = toInt(value);\n      }\n\n      Peek._v = value;\n    }\n  });\n\n  define(Peek, 'reductor', {\n    /**\n     * Gets reduction value caused by peek.\n     *\n     * @returns {Number}\n     */\n    get: function get() {\n      var value = Peek.value;\n      var perView = Glide.settings.perView;\n\n      if (isObject(value)) {\n        return value.before / perView + value.after / perView;\n      }\n\n      return value * 2 / perView;\n    }\n  });\n\n  /**\n   * Recalculate peeking sizes on:\n   * - when resizing window to update to proper percents\n   */\n  Events.on(['resize', 'update'], function () {\n    Peek.mount();\n  });\n\n  return Peek;\n}\n\nfunction Move (Glide, Components, Events) {\n  var Move = {\n    /**\n     * Constructs move component.\n     *\n     * @returns {Void}\n     */\n    mount: function mount() {\n      this._o = 0;\n    },\n\n\n    /**\n     * Calculates a movement value based on passed offset and currently active index.\n     *\n     * @param  {Number} offset\n     * @return {Void}\n     */\n    make: function make() {\n      var _this = this;\n\n      var offset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n      this.offset = offset;\n\n      Events.emit('move', {\n        movement: this.value\n      });\n\n      Components.Transition.after(function () {\n        Events.emit('move.after', {\n          movement: _this.value\n        });\n      });\n    }\n  };\n\n  define(Move, 'offset', {\n    /**\n     * Gets an offset value used to modify current translate.\n     *\n     * @return {Object}\n     */\n    get: function get() {\n      return Move._o;\n    },\n\n\n    /**\n     * Sets an offset value used to modify current translate.\n     *\n     * @return {Object}\n     */\n    set: function set(value) {\n      Move._o = !isUndefined(value) ? toInt(value) : 0;\n    }\n  });\n\n  define(Move, 'translate', {\n    /**\n     * Gets a raw movement value.\n     *\n     * @return {Number}\n     */\n    get: function get() {\n      return Components.Sizes.slideWidth * Glide.index;\n    }\n  });\n\n  define(Move, 'value', {\n    /**\n     * Gets an actual movement value corrected by offset.\n     *\n     * @return {Number}\n     */\n    get: function get() {\n      var offset = this.offset;\n      var translate = this.translate;\n\n      if (Components.Direction.is('rtl')) {\n        return translate + offset;\n      }\n\n      return translate - offset;\n    }\n  });\n\n  /**\n   * Make movement to proper slide on:\n   * - before build, so glide will start at `startAt` index\n   * - on each standard run to move to newly calculated index\n   */\n  Events.on(['build.before', 'run'], function () {\n    Move.make();\n  });\n\n  return Move;\n}\n\nfunction Sizes (Glide, Components, Events) {\n  var Sizes = {\n    /**\n     * Setups dimentions of slides.\n     *\n     * @return {Void}\n     */\n    setupSlides: function setupSlides() {\n      var width = this.slideWidth + 'px';\n      var slides = Components.Html.slides;\n\n      for (var i = 0; i < slides.length; i++) {\n        slides[i].style.width = width;\n      }\n    },\n\n\n    /**\n     * Setups dimentions of slides wrapper.\n     *\n     * @return {Void}\n     */\n    setupWrapper: function setupWrapper(dimention) {\n      Components.Html.wrapper.style.width = this.wrapperSize + 'px';\n    },\n\n\n    /**\n     * Removes applied styles from HTML elements.\n     *\n     * @returns {Void}\n     */\n    remove: function remove() {\n      var slides = Components.Html.slides;\n\n      for (var i = 0; i < slides.length; i++) {\n        slides[i].style.width = '';\n      }\n\n      Components.Html.wrapper.style.width = '';\n    }\n  };\n\n  define(Sizes, 'length', {\n    /**\n     * Gets count number of the slides.\n     *\n     * @return {Number}\n     */\n    get: function get() {\n      return Components.Html.slides.length;\n    }\n  });\n\n  define(Sizes, 'width', {\n    /**\n     * Gets width value of the glide.\n     *\n     * @return {Number}\n     */\n    get: function get() {\n      return Components.Html.root.offsetWidth;\n    }\n  });\n\n  define(Sizes, 'wrapperSize', {\n    /**\n     * Gets size of the slides wrapper.\n     *\n     * @return {Number}\n     */\n    get: function get() {\n      return Sizes.slideWidth * Sizes.length + Components.Gaps.grow + Components.Clones.grow;\n    }\n  });\n\n  define(Sizes, 'slideWidth', {\n    /**\n     * Gets width value of the single slide.\n     *\n     * @return {Number}\n     */\n    get: function get() {\n      return Sizes.width / Glide.settings.perView - Components.Peek.reductor - Components.Gaps.reductor;\n    }\n  });\n\n  /**\n   * Apply calculated glide's dimensions:\n   * - before building, so other dimentions (e.g. translate) will be calculated propertly\n   * - when resizing window to recalculate sildes dimensions\n   * - on updating via API, to calculate dimensions based on new options\n   */\n  Events.on(['build.before', 'resize', 'update'], function () {\n    Sizes.setupSlides();\n    Sizes.setupWrapper();\n  });\n\n  /**\n   * Remove calculated glide's dimensions:\n   * - on destoting to bring markup to its inital state\n   */\n  Events.on('destroy', function () {\n    Sizes.remove();\n  });\n\n  return Sizes;\n}\n\nfunction Build (Glide, Components, Events) {\n  var Build = {\n    /**\n     * Init glide building. Adds classes, sets\n     * dimensions and setups initial state.\n     *\n     * @return {Void}\n     */\n    mount: function mount() {\n      Events.emit('build.before');\n\n      this.typeClass();\n      this.activeClass();\n\n      Events.emit('build.after');\n    },\n\n\n    /**\n     * Adds `type` class to the glide element.\n     *\n     * @return {Void}\n     */\n    typeClass: function typeClass() {\n      Components.Html.root.classList.add(Glide.settings.classes[Glide.settings.type]);\n    },\n\n\n    /**\n     * Sets active class to current slide.\n     *\n     * @return {Void}\n     */\n    activeClass: function activeClass() {\n      var classes = Glide.settings.classes;\n      var slide = Components.Html.slides[Glide.index];\n\n      if (slide) {\n        slide.classList.add(classes.activeSlide);\n\n        siblings(slide).forEach(function (sibling) {\n          sibling.classList.remove(classes.activeSlide);\n        });\n      }\n    },\n\n\n    /**\n     * Removes HTML classes applied at building.\n     *\n     * @return {Void}\n     */\n    removeClasses: function removeClasses() {\n      var classes = Glide.settings.classes;\n\n      Components.Html.root.classList.remove(classes[Glide.settings.type]);\n\n      Components.Html.slides.forEach(function (sibling) {\n        sibling.classList.remove(classes.activeSlide);\n      });\n    }\n  };\n\n  /**\n   * Clear building classes:\n   * - on destroying to bring HTML to its initial state\n   * - on updating to remove classes before remounting component\n   */\n  Events.on(['destroy', 'update'], function () {\n    Build.removeClasses();\n  });\n\n  /**\n   * Remount component:\n   * - on resizing of the window to calculate new dimentions\n   * - on updating settings via API\n   */\n  Events.on(['resize', 'update'], function () {\n    Build.mount();\n  });\n\n  /**\n   * Swap active class of current slide:\n   * - after each move to the new index\n   */\n  Events.on('move.after', function () {\n    Build.activeClass();\n  });\n\n  return Build;\n}\n\nfunction Clones (Glide, Components, Events) {\n  var Clones = {\n    /**\n     * Create pattern map and collect slides to be cloned.\n     */\n    mount: function mount() {\n      this.items = [];\n\n      if (Glide.isType('carousel')) {\n        this.items = this.collect();\n      }\n    },\n\n\n    /**\n     * Collect clones with pattern.\n     *\n     * @return {Void}\n     */\n    collect: function collect() {\n      var items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n      var slides = Components.Html.slides;\n      var _Glide$settings = Glide.settings,\n          perView = _Glide$settings.perView,\n          classes = _Glide$settings.classes;\n\n\n      var peekIncrementer = +!!Glide.settings.peek;\n      var part = perView + peekIncrementer;\n      var start = slides.slice(0, part);\n      var end = slides.slice(-part);\n\n      for (var r = 0; r < Math.max(1, Math.floor(perView / slides.length)); r++) {\n        for (var i = 0; i < start.length; i++) {\n          var clone = start[i].cloneNode(true);\n\n          clone.classList.add(classes.cloneSlide);\n\n          items.push(clone);\n        }\n\n        for (var _i = 0; _i < end.length; _i++) {\n          var _clone = end[_i].cloneNode(true);\n\n          _clone.classList.add(classes.cloneSlide);\n\n          items.unshift(_clone);\n        }\n      }\n\n      return items;\n    },\n\n\n    /**\n     * Append cloned slides with generated pattern.\n     *\n     * @return {Void}\n     */\n    append: function append() {\n      var items = this.items;\n      var _Components$Html = Components.Html,\n          wrapper = _Components$Html.wrapper,\n          slides = _Components$Html.slides;\n\n\n      var half = Math.floor(items.length / 2);\n      var prepend = items.slice(0, half).reverse();\n      var append = items.slice(half, items.length);\n      var width = Components.Sizes.slideWidth + 'px';\n\n      for (var i = 0; i < append.length; i++) {\n        wrapper.appendChild(append[i]);\n      }\n\n      for (var _i2 = 0; _i2 < prepend.length; _i2++) {\n        wrapper.insertBefore(prepend[_i2], slides[0]);\n      }\n\n      for (var _i3 = 0; _i3 < items.length; _i3++) {\n        items[_i3].style.width = width;\n      }\n    },\n\n\n    /**\n     * Remove all cloned slides.\n     *\n     * @return {Void}\n     */\n    remove: function remove() {\n      var items = this.items;\n\n\n      for (var i = 0; i < items.length; i++) {\n        Components.Html.wrapper.removeChild(items[i]);\n      }\n    }\n  };\n\n  define(Clones, 'grow', {\n    /**\n     * Gets additional dimentions value caused by clones.\n     *\n     * @return {Number}\n     */\n    get: function get() {\n      return (Components.Sizes.slideWidth + Components.Gaps.value) * Clones.items.length;\n    }\n  });\n\n  /**\n   * Append additional slide's clones:\n   * - while glide's type is `carousel`\n   */\n  Events.on('update', function () {\n    Clones.remove();\n    Clones.mount();\n    Clones.append();\n  });\n\n  /**\n   * Append additional slide's clones:\n   * - while glide's type is `carousel`\n   */\n  Events.on('build.before', function () {\n    if (Glide.isType('carousel')) {\n      Clones.append();\n    }\n  });\n\n  /**\n   * Remove clones HTMLElements:\n   * - on destroying, to bring HTML to its initial state\n   */\n  Events.on('destroy', function () {\n    Clones.remove();\n  });\n\n  return Clones;\n}\n\nvar EventsBinder = function () {\n  /**\n   * Construct a EventsBinder instance.\n   */\n  function EventsBinder() {\n    var listeners = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    classCallCheck(this, EventsBinder);\n\n    this.listeners = listeners;\n  }\n\n  /**\n   * Adds events listeners to arrows HTML elements.\n   *\n   * @param  {String|Array} events\n   * @param  {Element|Window|Document} el\n   * @param  {Function} closure\n   * @param  {Boolean|Object} capture\n   * @return {Void}\n   */\n\n\n  createClass(EventsBinder, [{\n    key: 'on',\n    value: function on(events, el, closure) {\n      var capture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n      if (isString(events)) {\n        events = [events];\n      }\n\n      for (var i = 0; i < events.length; i++) {\n        this.listeners[events[i]] = closure;\n\n        el.addEventListener(events[i], this.listeners[events[i]], capture);\n      }\n    }\n\n    /**\n     * Removes event listeners from arrows HTML elements.\n     *\n     * @param  {String|Array} events\n     * @param  {Element|Window|Document} el\n     * @param  {Boolean|Object} capture\n     * @return {Void}\n     */\n\n  }, {\n    key: 'off',\n    value: function off(events, el) {\n      var capture = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n      if (isString(events)) {\n        events = [events];\n      }\n\n      for (var i = 0; i < events.length; i++) {\n        el.removeEventListener(events[i], this.listeners[events[i]], capture);\n      }\n    }\n\n    /**\n     * Destroy collected listeners.\n     *\n     * @returns {Void}\n     */\n\n  }, {\n    key: 'destroy',\n    value: function destroy() {\n      delete this.listeners;\n    }\n  }]);\n  return EventsBinder;\n}();\n\nfunction Resize (Glide, Components, Events) {\n  /**\n   * Instance of the binder for DOM Events.\n   *\n   * @type {EventsBinder}\n   */\n  var Binder = new EventsBinder();\n\n  var Resize = {\n    /**\n     * Initializes window bindings.\n     */\n    mount: function mount() {\n      this.bind();\n    },\n\n\n    /**\n     * Binds `rezsize` listener to the window.\n     * It's a costly event, so we are debouncing it.\n     *\n     * @return {Void}\n     */\n    bind: function bind() {\n      Binder.on('resize', window, throttle(function () {\n        Events.emit('resize');\n      }, Glide.settings.throttle));\n    },\n\n\n    /**\n     * Unbinds listeners from the window.\n     *\n     * @return {Void}\n     */\n    unbind: function unbind() {\n      Binder.off('resize', window);\n    }\n  };\n\n  /**\n   * Remove bindings from window:\n   * - on destroying, to remove added EventListener\n   */\n  Events.on('destroy', function () {\n    Resize.unbind();\n    Binder.destroy();\n  });\n\n  return Resize;\n}\n\nvar VALID_DIRECTIONS = ['ltr', 'rtl'];\nvar FLIPED_MOVEMENTS = {\n  '>': '<',\n  '<': '>',\n  '=': '='\n};\n\nfunction Direction (Glide, Components, Events) {\n  var Direction = {\n    /**\n     * Setups gap value based on settings.\n     *\n     * @return {Void}\n     */\n    mount: function mount() {\n      this.value = Glide.settings.direction;\n    },\n\n\n    /**\n     * Resolves pattern based on direction value\n     *\n     * @param {String} pattern\n     * @returns {String}\n     */\n    resolve: function resolve(pattern) {\n      var token = pattern.slice(0, 1);\n\n      if (this.is('rtl')) {\n        return pattern.split(token).join(FLIPED_MOVEMENTS[token]);\n      }\n\n      return pattern;\n    },\n\n\n    /**\n     * Checks value of direction mode.\n     *\n     * @param {String} direction\n     * @returns {Boolean}\n     */\n    is: function is(direction) {\n      return this.value === direction;\n    },\n\n\n    /**\n     * Applies direction class to the root HTML element.\n     *\n     * @return {Void}\n     */\n    addClass: function addClass() {\n      Components.Html.root.classList.add(Glide.settings.classes.direction[this.value]);\n    },\n\n\n    /**\n     * Removes direction class from the root HTML element.\n     *\n     * @return {Void}\n     */\n    removeClass: function removeClass() {\n      Components.Html.root.classList.remove(Glide.settings.classes.direction[this.value]);\n    }\n  };\n\n  define(Direction, 'value', {\n    /**\n     * Gets value of the direction.\n     *\n     * @returns {Number}\n     */\n    get: function get() {\n      return Direction._v;\n    },\n\n\n    /**\n     * Sets value of the direction.\n     *\n     * @param {String} value\n     * @return {Void}\n     */\n    set: function set(value) {\n      if (VALID_DIRECTIONS.indexOf(value) > -1) {\n        Direction._v = value;\n      } else {\n        warn('Direction value must be `ltr` or `rtl`');\n      }\n    }\n  });\n\n  /**\n   * Clear direction class:\n   * - on destroy to bring HTML to its initial state\n   * - on update to remove class before reappling bellow\n   */\n  Events.on(['destroy', 'update'], function () {\n    Direction.removeClass();\n  });\n\n  /**\n   * Remount component:\n   * - on update to reflect changes in direction value\n   */\n  Events.on('update', function () {\n    Direction.mount();\n  });\n\n  /**\n   * Apply direction class:\n   * - before building to apply class for the first time\n   * - on updating to reapply direction class that may changed\n   */\n  Events.on(['build.before', 'update'], function () {\n    Direction.addClass();\n  });\n\n  return Direction;\n}\n\n/**\n * Reflects value of glide movement.\n *\n * @param  {Object} Glide\n * @param  {Object} Components\n * @return {Object}\n */\nfunction Rtl (Glide, Components) {\n  return {\n    /**\n     * Negates the passed translate if glide is in RTL option.\n     *\n     * @param  {Number} translate\n     * @return {Number}\n     */\n    modify: function modify(translate) {\n      if (Components.Direction.is('rtl')) {\n        return -translate;\n      }\n\n      return translate;\n    }\n  };\n}\n\n/**\n * Updates glide movement with a `gap` settings.\n *\n * @param  {Object} Glide\n * @param  {Object} Components\n * @return {Object}\n */\nfunction Gap (Glide, Components) {\n  return {\n    /**\n     * Modifies passed translate value with number in the `gap` settings.\n     *\n     * @param  {Number} translate\n     * @return {Number}\n     */\n    modify: function modify(translate) {\n      return translate + Components.Gaps.value * Glide.index;\n    }\n  };\n}\n\n/**\n * Updates glide movement with width of additional clones width.\n *\n * @param  {Object} Glide\n * @param  {Object} Components\n * @return {Object}\n */\nfunction Grow (Glide, Components) {\n  return {\n    /**\n     * Adds to the passed translate width of the half of clones.\n     *\n     * @param  {Number} translate\n     * @return {Number}\n     */\n    modify: function modify(translate) {\n      return translate + Components.Clones.grow / 2;\n    }\n  };\n}\n\n/**\n * Updates glide movement with a `peek` settings.\n *\n * @param  {Object} Glide\n * @param  {Object} Components\n * @return {Object}\n */\nfunction Peeking (Glide, Components) {\n  return {\n    /**\n     * Modifies passed translate value with a `peek` setting.\n     *\n     * @param  {Number} translate\n     * @return {Number}\n     */\n    modify: function modify(translate) {\n      if (Glide.settings.focusAt >= 0) {\n        var peek = Components.Peek.value;\n\n        if (isObject(peek)) {\n          return translate - peek.before;\n        }\n\n        return translate - peek;\n      }\n\n      return translate;\n    }\n  };\n}\n\n/**\n * Updates glide movement with a `focusAt` settings.\n *\n * @param  {Object} Glide\n * @param  {Object} Components\n * @return {Object}\n */\nfunction Focusing (Glide, Components) {\n  return {\n    /**\n     * Modifies passed translate value with index in the `focusAt` setting.\n     *\n     * @param  {Number} translate\n     * @return {Number}\n     */\n    modify: function modify(translate) {\n      var gap = Components.Gaps.value;\n      var width = Components.Sizes.width;\n      var focusAt = Glide.settings.focusAt;\n      var slideWidth = Components.Sizes.slideWidth;\n\n      if (focusAt === 'center') {\n        return translate - (width / 2 - slideWidth / 2);\n      }\n\n      return translate - slideWidth * focusAt - gap * focusAt;\n    }\n  };\n}\n\n/**\n * Applies diffrent transformers on translate value.\n *\n * @param  {Object} Glide\n * @param  {Object} Components\n * @return {Object}\n */\nfunction mutator (Glide, Components, Events) {\n  /**\n   * Merge instance transformers with collection of default transformers.\n   * It's important that the Rtl component be last on the list,\n   * so it reflects all previous transformations.\n   *\n   * @type {Array}\n   */\n  var TRANSFORMERS = [Gap, Grow, Peeking, Focusing].concat(Glide._t, [Rtl]);\n\n  return {\n    /**\n     * Piplines translate value with registered transformers.\n     *\n     * @param  {Number} translate\n     * @return {Number}\n     */\n    mutate: function mutate(translate) {\n      for (var i = 0; i < TRANSFORMERS.length; i++) {\n        var transformer = TRANSFORMERS[i];\n\n        if (isFunction(transformer) && isFunction(transformer().modify)) {\n          translate = transformer(Glide, Components, Events).modify(translate);\n        } else {\n          warn('Transformer should be a function that returns an object with `modify()` method');\n        }\n      }\n\n      return translate;\n    }\n  };\n}\n\nfunction Translate (Glide, Components, Events) {\n  var Translate = {\n    /**\n     * Sets value of translate on HTML element.\n     *\n     * @param {Number} value\n     * @return {Void}\n     */\n    set: function set(value) {\n      var transform = mutator(Glide, Components).mutate(value);\n\n      Components.Html.wrapper.style.transform = 'translate3d(' + -1 * transform + 'px, 0px, 0px)';\n    },\n\n\n    /**\n     * Removes value of translate from HTML element.\n     *\n     * @return {Void}\n     */\n    remove: function remove() {\n      Components.Html.wrapper.style.transform = '';\n    }\n  };\n\n  /**\n   * Set new translate value:\n   * - on move to reflect index change\n   * - on updating via API to reflect possible changes in options\n   */\n  Events.on('move', function (context) {\n    var gap = Components.Gaps.value;\n    var length = Components.Sizes.length;\n    var width = Components.Sizes.slideWidth;\n\n    if (Glide.isType('carousel') && Components.Run.isOffset('<')) {\n      Components.Transition.after(function () {\n        Events.emit('translate.jump');\n\n        Translate.set(width * (length - 1));\n      });\n\n      return Translate.set(-width - gap * length);\n    }\n\n    if (Glide.isType('carousel') && Components.Run.isOffset('>')) {\n      Components.Transition.after(function () {\n        Events.emit('translate.jump');\n\n        Translate.set(0);\n      });\n\n      return Translate.set(width * length + gap * length);\n    }\n\n    return Translate.set(context.movement);\n  });\n\n  /**\n   * Remove translate:\n   * - on destroying to bring markup to its inital state\n   */\n  Events.on('destroy', function () {\n    Translate.remove();\n  });\n\n  return Translate;\n}\n\nfunction Transition (Glide, Components, Events) {\n  /**\n   * Holds inactivity status of transition.\n   * When true transition is not applied.\n   *\n   * @type {Boolean}\n   */\n  var disabled = false;\n\n  var Transition = {\n    /**\n     * Composes string of the CSS transition.\n     *\n     * @param {String} property\n     * @return {String}\n     */\n    compose: function compose(property) {\n      var settings = Glide.settings;\n\n      if (!disabled) {\n        return property + ' ' + this.duration + 'ms ' + settings.animationTimingFunc;\n      }\n\n      return property + ' 0ms ' + settings.animationTimingFunc;\n    },\n\n\n    /**\n     * Sets value of transition on HTML element.\n     *\n     * @param {String=} property\n     * @return {Void}\n     */\n    set: function set() {\n      var property = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n\n      Components.Html.wrapper.style.transition = this.compose(property);\n    },\n\n\n    /**\n     * Removes value of transition from HTML element.\n     *\n     * @return {Void}\n     */\n    remove: function remove() {\n      Components.Html.wrapper.style.transition = '';\n    },\n\n\n    /**\n     * Runs callback after animation.\n     *\n     * @param  {Function} callback\n     * @return {Void}\n     */\n    after: function after(callback) {\n      setTimeout(function () {\n        callback();\n      }, this.duration);\n    },\n\n\n    /**\n     * Enable transition.\n     *\n     * @return {Void}\n     */\n    enable: function enable() {\n      disabled = false;\n\n      this.set();\n    },\n\n\n    /**\n     * Disable transition.\n     *\n     * @return {Void}\n     */\n    disable: function disable() {\n      disabled = true;\n\n      this.set();\n    }\n  };\n\n  define(Transition, 'duration', {\n    /**\n     * Gets duration of the transition based\n     * on currently running animation type.\n     *\n     * @return {Number}\n     */\n    get: function get() {\n      var settings = Glide.settings;\n\n      if (Glide.isType('slider') && Components.Run.offset) {\n        return settings.rewindDuration;\n      }\n\n      return settings.animationDuration;\n    }\n  });\n\n  /**\n   * Set transition `style` value:\n   * - on each moving, because it may be cleared by offset move\n   */\n  Events.on('move', function () {\n    Transition.set();\n  });\n\n  /**\n   * Disable transition:\n   * - before initial build to avoid transitioning from `0` to `startAt` index\n   * - while resizing window and recalculating dimentions\n   * - on jumping from offset transition at start and end edges in `carousel` type\n   */\n  Events.on(['build.before', 'resize', 'translate.jump'], function () {\n    Transition.disable();\n  });\n\n  /**\n   * Enable transition:\n   * - on each running, because it may be disabled by offset move\n   */\n  Events.on('run', function () {\n    Transition.enable();\n  });\n\n  /**\n   * Remove transition:\n   * - on destroying to bring markup to its inital state\n   */\n  Events.on('destroy', function () {\n    Transition.remove();\n  });\n\n  return Transition;\n}\n\n/**\n * Test via a getter in the options object to see\n * if the passive property is accessed.\n *\n * @see https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n */\n\nvar supportsPassive = false;\n\ntry {\n  var opts = Object.defineProperty({}, 'passive', {\n    get: function get() {\n      supportsPassive = true;\n    }\n  });\n\n  window.addEventListener('testPassive', null, opts);\n  window.removeEventListener('testPassive', null, opts);\n} catch (e) {}\n\nvar supportsPassive$1 = supportsPassive;\n\nvar START_EVENTS = ['touchstart', 'mousedown'];\nvar MOVE_EVENTS = ['touchmove', 'mousemove'];\nvar END_EVENTS = ['touchend', 'touchcancel', 'mouseup', 'mouseleave'];\nvar MOUSE_EVENTS = ['mousedown', 'mousemove', 'mouseup', 'mouseleave'];\n\nfunction swipe (Glide, Components, Events) {\n  /**\n   * Instance of the binder for DOM Events.\n   *\n   * @type {EventsBinder}\n   */\n  var Binder = new EventsBinder();\n\n  var swipeSin = 0;\n  var swipeStartX = 0;\n  var swipeStartY = 0;\n  var disabled = false;\n  var capture = supportsPassive$1 ? { passive: true } : false;\n\n  var Swipe = {\n    /**\n     * Initializes swipe bindings.\n     *\n     * @return {Void}\n     */\n    mount: function mount() {\n      this.bindSwipeStart();\n    },\n\n\n    /**\n     * Handler for `swipestart` event. Calculates entry points of the user's tap.\n     *\n     * @param {Object} event\n     * @return {Void}\n     */\n    start: function start(event) {\n      if (!disabled && !Glide.disabled) {\n        this.disable();\n\n        var swipe = this.touches(event);\n\n        swipeSin = null;\n        swipeStartX = toInt(swipe.pageX);\n        swipeStartY = toInt(swipe.pageY);\n\n        this.bindSwipeMove();\n        this.bindSwipeEnd();\n\n        Events.emit('swipe.start');\n      }\n    },\n\n\n    /**\n     * Handler for `swipemove` event. Calculates user's tap angle and distance.\n     *\n     * @param {Object} event\n     */\n    move: function move(event) {\n      if (!Glide.disabled) {\n        var _Glide$settings = Glide.settings,\n            touchAngle = _Glide$settings.touchAngle,\n            touchRatio = _Glide$settings.touchRatio,\n            classes = _Glide$settings.classes;\n\n\n        var swipe = this.touches(event);\n\n        var subExSx = toInt(swipe.pageX) - swipeStartX;\n        var subEySy = toInt(swipe.pageY) - swipeStartY;\n        var powEX = Math.abs(subExSx << 2);\n        var powEY = Math.abs(subEySy << 2);\n        var swipeHypotenuse = Math.sqrt(powEX + powEY);\n        var swipeCathetus = Math.sqrt(powEY);\n\n        swipeSin = Math.asin(swipeCathetus / swipeHypotenuse);\n\n        if (swipeSin * 180 / Math.PI < touchAngle) {\n          event.stopPropagation();\n\n          Components.Move.make(subExSx * toFloat(touchRatio));\n\n          Components.Html.root.classList.add(classes.dragging);\n\n          Events.emit('swipe.move');\n        } else {\n          return false;\n        }\n      }\n    },\n\n\n    /**\n     * Handler for `swipeend` event. Finitializes user's tap and decides about glide move.\n     *\n     * @param {Object} event\n     * @return {Void}\n     */\n    end: function end(event) {\n      if (!Glide.disabled) {\n        var settings = Glide.settings;\n\n        var swipe = this.touches(event);\n        var threshold = this.threshold(event);\n\n        var swipeDistance = swipe.pageX - swipeStartX;\n        var swipeDeg = swipeSin * 180 / Math.PI;\n        var steps = Math.round(swipeDistance / Components.Sizes.slideWidth);\n\n        this.enable();\n\n        if (swipeDistance > threshold && swipeDeg < settings.touchAngle) {\n          // While swipe is positive and greater than threshold move backward.\n          if (settings.perTouch) {\n            steps = Math.min(steps, toInt(settings.perTouch));\n          }\n\n          if (Components.Direction.is('rtl')) {\n            steps = -steps;\n          }\n\n          Components.Run.make(Components.Direction.resolve('<' + steps));\n        } else if (swipeDistance < -threshold && swipeDeg < settings.touchAngle) {\n          // While swipe is negative and lower than negative threshold move forward.\n          if (settings.perTouch) {\n            steps = Math.max(steps, -toInt(settings.perTouch));\n          }\n\n          if (Components.Direction.is('rtl')) {\n            steps = -steps;\n          }\n\n          Components.Run.make(Components.Direction.resolve('>' + steps));\n        } else {\n          // While swipe don't reach distance apply previous transform.\n          Components.Move.make();\n        }\n\n        Components.Html.root.classList.remove(settings.classes.dragging);\n\n        this.unbindSwipeMove();\n        this.unbindSwipeEnd();\n\n        Events.emit('swipe.end');\n      }\n    },\n\n\n    /**\n     * Binds swipe's starting event.\n     *\n     * @return {Void}\n     */\n    bindSwipeStart: function bindSwipeStart() {\n      var _this = this;\n\n      var settings = Glide.settings;\n\n      if (settings.swipeThreshold) {\n        Binder.on(START_EVENTS[0], Components.Html.wrapper, function (event) {\n          _this.start(event);\n        }, capture);\n      }\n\n      if (settings.dragThreshold) {\n        Binder.on(START_EVENTS[1], Components.Html.wrapper, function (event) {\n          _this.start(event);\n        }, capture);\n      }\n    },\n\n\n    /**\n     * Unbinds swipe's starting event.\n     *\n     * @return {Void}\n     */\n    unbindSwipeStart: function unbindSwipeStart() {\n      Binder.off(START_EVENTS[0], Components.Html.wrapper, capture);\n      Binder.off(START_EVENTS[1], Components.Html.wrapper, capture);\n    },\n\n\n    /**\n     * Binds swipe's moving event.\n     *\n     * @return {Void}\n     */\n    bindSwipeMove: function bindSwipeMove() {\n      var _this2 = this;\n\n      Binder.on(MOVE_EVENTS, Components.Html.wrapper, throttle(function (event) {\n        _this2.move(event);\n      }, Glide.settings.throttle), capture);\n    },\n\n\n    /**\n     * Unbinds swipe's moving event.\n     *\n     * @return {Void}\n     */\n    unbindSwipeMove: function unbindSwipeMove() {\n      Binder.off(MOVE_EVENTS, Components.Html.wrapper, capture);\n    },\n\n\n    /**\n     * Binds swipe's ending event.\n     *\n     * @return {Void}\n     */\n    bindSwipeEnd: function bindSwipeEnd() {\n      var _this3 = this;\n\n      Binder.on(END_EVENTS, Components.Html.wrapper, function (event) {\n        _this3.end(event);\n      });\n    },\n\n\n    /**\n     * Unbinds swipe's ending event.\n     *\n     * @return {Void}\n     */\n    unbindSwipeEnd: function unbindSwipeEnd() {\n      Binder.off(END_EVENTS, Components.Html.wrapper);\n    },\n\n\n    /**\n     * Normalizes event touches points accorting to different types.\n     *\n     * @param {Object} event\n     */\n    touches: function touches(event) {\n      if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n        return event;\n      }\n\n      return event.touches[0] || event.changedTouches[0];\n    },\n\n\n    /**\n     * Gets value of minimum swipe distance settings based on event type.\n     *\n     * @return {Number}\n     */\n    threshold: function threshold(event) {\n      var settings = Glide.settings;\n\n      if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n        return settings.dragThreshold;\n      }\n\n      return settings.swipeThreshold;\n    },\n\n\n    /**\n     * Enables swipe event.\n     *\n     * @return {self}\n     */\n    enable: function enable() {\n      disabled = false;\n\n      Components.Transition.enable();\n\n      return this;\n    },\n\n\n    /**\n     * Disables swipe event.\n     *\n     * @return {self}\n     */\n    disable: function disable() {\n      disabled = true;\n\n      Components.Transition.disable();\n\n      return this;\n    }\n  };\n\n  /**\n   * Add component class:\n   * - after initial building\n   */\n  Events.on('build.after', function () {\n    Components.Html.root.classList.add(Glide.settings.classes.swipeable);\n  });\n\n  /**\n   * Remove swiping bindings:\n   * - on destroying, to remove added EventListeners\n   */\n  Events.on('destroy', function () {\n    Swipe.unbindSwipeStart();\n    Swipe.unbindSwipeMove();\n    Swipe.unbindSwipeEnd();\n    Binder.destroy();\n  });\n\n  return Swipe;\n}\n\nfunction images (Glide, Components, Events) {\n  /**\n   * Instance of the binder for DOM Events.\n   *\n   * @type {EventsBinder}\n   */\n  var Binder = new EventsBinder();\n\n  var Images = {\n    /**\n     * Binds listener to glide wrapper.\n     *\n     * @return {Void}\n     */\n    mount: function mount() {\n      this.bind();\n    },\n\n\n    /**\n     * Binds `dragstart` event on wrapper to prevent dragging images.\n     *\n     * @return {Void}\n     */\n    bind: function bind() {\n      Binder.on('dragstart', Components.Html.wrapper, this.dragstart);\n    },\n\n\n    /**\n     * Unbinds `dragstart` event on wrapper.\n     *\n     * @return {Void}\n     */\n    unbind: function unbind() {\n      Binder.off('dragstart', Components.Html.wrapper);\n    },\n\n\n    /**\n     * Event handler. Prevents dragging.\n     *\n     * @return {Void}\n     */\n    dragstart: function dragstart(event) {\n      event.preventDefault();\n    }\n  };\n\n  /**\n   * Remove bindings from images:\n   * - on destroying, to remove added EventListeners\n   */\n  Events.on('destroy', function () {\n    Images.unbind();\n    Binder.destroy();\n  });\n\n  return Images;\n}\n\nfunction anchors (Glide, Components, Events) {\n  /**\n   * Instance of the binder for DOM Events.\n   *\n   * @type {EventsBinder}\n   */\n  var Binder = new EventsBinder();\n\n  /**\n   * Holds detaching status of anchors.\n   * Prevents detaching of already detached anchors.\n   *\n   * @private\n   * @type {Boolean}\n   */\n  var detached = false;\n\n  /**\n   * Holds preventing status of anchors.\n   * If `true` redirection after click will be disabled.\n   *\n   * @private\n   * @type {Boolean}\n   */\n  var prevented = false;\n\n  var Anchors = {\n    /**\n     * Setups a initial state of anchors component.\n     *\n     * @returns {Void}\n     */\n    mount: function mount() {\n      /**\n       * Holds collection of anchors elements.\n       *\n       * @private\n       * @type {HTMLCollection}\n       */\n      this._a = Components.Html.wrapper.querySelectorAll('a');\n\n      this.bind();\n    },\n\n\n    /**\n     * Binds events to anchors inside a track.\n     *\n     * @return {Void}\n     */\n    bind: function bind() {\n      Binder.on('click', Components.Html.wrapper, this.click);\n    },\n\n\n    /**\n     * Unbinds events attached to anchors inside a track.\n     *\n     * @return {Void}\n     */\n    unbind: function unbind() {\n      Binder.off('click', Components.Html.wrapper);\n    },\n\n\n    /**\n     * Handler for click event. Prevents clicks when glide is in `prevent` status.\n     *\n     * @param  {Object} event\n     * @return {Void}\n     */\n    click: function click(event) {\n      if (prevented) {\n        event.stopPropagation();\n        event.preventDefault();\n      }\n    },\n\n\n    /**\n     * Detaches anchors click event inside glide.\n     *\n     * @return {self}\n     */\n    detach: function detach() {\n      prevented = true;\n\n      if (!detached) {\n        for (var i = 0; i < this.items.length; i++) {\n          this.items[i].draggable = false;\n\n          this.items[i].setAttribute('data-href', this.items[i].getAttribute('href'));\n\n          this.items[i].removeAttribute('href');\n        }\n\n        detached = true;\n      }\n\n      return this;\n    },\n\n\n    /**\n     * Attaches anchors click events inside glide.\n     *\n     * @return {self}\n     */\n    attach: function attach() {\n      prevented = false;\n\n      if (detached) {\n        for (var i = 0; i < this.items.length; i++) {\n          this.items[i].draggable = true;\n\n          this.items[i].setAttribute('href', this.items[i].getAttribute('data-href'));\n        }\n\n        detached = false;\n      }\n\n      return this;\n    }\n  };\n\n  define(Anchors, 'items', {\n    /**\n     * Gets collection of the arrows HTML elements.\n     *\n     * @return {HTMLElement[]}\n     */\n    get: function get() {\n      return Anchors._a;\n    }\n  });\n\n  /**\n   * Detach anchors inside slides:\n   * - on swiping, so they won't redirect to its `href` attributes\n   */\n  Events.on('swipe.move', function () {\n    Anchors.detach();\n  });\n\n  /**\n   * Attach anchors inside slides:\n   * - after swiping and transitions ends, so they can redirect after click again\n   */\n  Events.on('swipe.end', function () {\n    Components.Transition.after(function () {\n      Anchors.attach();\n    });\n  });\n\n  /**\n   * Unbind anchors inside slides:\n   * - on destroying, to bring anchors to its initial state\n   */\n  Events.on('destroy', function () {\n    Anchors.attach();\n    Anchors.unbind();\n    Binder.destroy();\n  });\n\n  return Anchors;\n}\n\nvar NAV_SELECTOR = '[data-glide-el=\"controls[nav]\"]';\nvar CONTROLS_SELECTOR = '[data-glide-el^=\"controls\"]';\n\nfunction controls (Glide, Components, Events) {\n  /**\n   * Instance of the binder for DOM Events.\n   *\n   * @type {EventsBinder}\n   */\n  var Binder = new EventsBinder();\n\n  var capture = supportsPassive$1 ? { passive: true } : false;\n\n  var Controls = {\n    /**\n     * Inits arrows. Binds events listeners\n     * to the arrows HTML elements.\n     *\n     * @return {Void}\n     */\n    mount: function mount() {\n      /**\n       * Collection of navigation HTML elements.\n       *\n       * @private\n       * @type {HTMLCollection}\n       */\n      this._n = Components.Html.root.querySelectorAll(NAV_SELECTOR);\n\n      /**\n       * Collection of controls HTML elements.\n       *\n       * @private\n       * @type {HTMLCollection}\n       */\n      this._c = Components.Html.root.querySelectorAll(CONTROLS_SELECTOR);\n\n      this.addBindings();\n    },\n\n\n    /**\n     * Sets active class to current slide.\n     *\n     * @return {Void}\n     */\n    setActive: function setActive() {\n      for (var i = 0; i < this._n.length; i++) {\n        this.addClass(this._n[i].children);\n      }\n    },\n\n\n    /**\n     * Removes active class to current slide.\n     *\n     * @return {Void}\n     */\n    removeActive: function removeActive() {\n      for (var i = 0; i < this._n.length; i++) {\n        this.removeClass(this._n[i].children);\n      }\n    },\n\n\n    /**\n     * Toggles active class on items inside navigation.\n     *\n     * @param  {HTMLElement} controls\n     * @return {Void}\n     */\n    addClass: function addClass(controls) {\n      var settings = Glide.settings;\n      var item = controls[Glide.index];\n\n      if (item) {\n        item.classList.add(settings.classes.activeNav);\n\n        siblings(item).forEach(function (sibling) {\n          sibling.classList.remove(settings.classes.activeNav);\n        });\n      }\n    },\n\n\n    /**\n     * Removes active class from active control.\n     *\n     * @param  {HTMLElement} controls\n     * @return {Void}\n     */\n    removeClass: function removeClass(controls) {\n      var item = controls[Glide.index];\n\n      if (item) {\n        item.classList.remove(Glide.settings.classes.activeNav);\n      }\n    },\n\n\n    /**\n     * Adds handles to the each group of controls.\n     *\n     * @return {Void}\n     */\n    addBindings: function addBindings() {\n      for (var i = 0; i < this._c.length; i++) {\n        this.bind(this._c[i].children);\n      }\n    },\n\n\n    /**\n     * Removes handles from the each group of controls.\n     *\n     * @return {Void}\n     */\n    removeBindings: function removeBindings() {\n      for (var i = 0; i < this._c.length; i++) {\n        this.unbind(this._c[i].children);\n      }\n    },\n\n\n    /**\n     * Binds events to arrows HTML elements.\n     *\n     * @param {HTMLCollection} elements\n     * @return {Void}\n     */\n    bind: function bind(elements) {\n      for (var i = 0; i < elements.length; i++) {\n        Binder.on('click', elements[i], this.click);\n        Binder.on('touchstart', elements[i], this.click, capture);\n      }\n    },\n\n\n    /**\n     * Unbinds events binded to the arrows HTML elements.\n     *\n     * @param {HTMLCollection} elements\n     * @return {Void}\n     */\n    unbind: function unbind(elements) {\n      for (var i = 0; i < elements.length; i++) {\n        Binder.off(['click', 'touchstart'], elements[i]);\n      }\n    },\n\n\n    /**\n     * Handles `click` event on the arrows HTML elements.\n     * Moves slider in driection precised in\n     * `data-glide-dir` attribute.\n     *\n     * @param {Object} event\n     * @return {Void}\n     */\n    click: function click(event) {\n      event.preventDefault();\n\n      Components.Run.make(Components.Direction.resolve(event.currentTarget.getAttribute('data-glide-dir')));\n    }\n  };\n\n  define(Controls, 'items', {\n    /**\n     * Gets collection of the controls HTML elements.\n     *\n     * @return {HTMLElement[]}\n     */\n    get: function get() {\n      return Controls._c;\n    }\n  });\n\n  /**\n   * Swap active class of current navigation item:\n   * - after mounting to set it to initial index\n   * - after each move to the new index\n   */\n  Events.on(['mount.after', 'move.after'], function () {\n    Controls.setActive();\n  });\n\n  /**\n   * Remove bindings and HTML Classes:\n   * - on destroying, to bring markup to its initial state\n   */\n  Events.on('destroy', function () {\n    Controls.removeBindings();\n    Controls.removeActive();\n    Binder.destroy();\n  });\n\n  return Controls;\n}\n\nfunction keyboard (Glide, Components, Events) {\n  /**\n   * Instance of the binder for DOM Events.\n   *\n   * @type {EventsBinder}\n   */\n  var Binder = new EventsBinder();\n\n  var Keyboard = {\n    /**\n     * Binds keyboard events on component mount.\n     *\n     * @return {Void}\n     */\n    mount: function mount() {\n      if (Glide.settings.keyboard) {\n        this.bind();\n      }\n    },\n\n\n    /**\n     * Adds keyboard press events.\n     *\n     * @return {Void}\n     */\n    bind: function bind() {\n      Binder.on('keyup', document, this.press);\n    },\n\n\n    /**\n     * Removes keyboard press events.\n     *\n     * @return {Void}\n     */\n    unbind: function unbind() {\n      Binder.off('keyup', document);\n    },\n\n\n    /**\n     * Handles keyboard's arrows press and moving glide foward and backward.\n     *\n     * @param  {Object} event\n     * @return {Void}\n     */\n    press: function press(event) {\n      if (event.keyCode === 39) {\n        Components.Run.make(Components.Direction.resolve('>'));\n      }\n\n      if (event.keyCode === 37) {\n        Components.Run.make(Components.Direction.resolve('<'));\n      }\n    }\n  };\n\n  /**\n   * Remove bindings from keyboard:\n   * - on destroying to remove added events\n   * - on updating to remove events before remounting\n   */\n  Events.on(['destroy', 'update'], function () {\n    Keyboard.unbind();\n  });\n\n  /**\n   * Remount component\n   * - on updating to reflect potential changes in settings\n   */\n  Events.on('update', function () {\n    Keyboard.mount();\n  });\n\n  /**\n   * Destroy binder:\n   * - on destroying to remove listeners\n   */\n  Events.on('destroy', function () {\n    Binder.destroy();\n  });\n\n  return Keyboard;\n}\n\nfunction autoplay (Glide, Components, Events) {\n  /**\n   * Instance of the binder for DOM Events.\n   *\n   * @type {EventsBinder}\n   */\n  var Binder = new EventsBinder();\n\n  var Autoplay = {\n    /**\n     * Initializes autoplaying and events.\n     *\n     * @return {Void}\n     */\n    mount: function mount() {\n      this.start();\n\n      if (Glide.settings.hoverpause) {\n        this.bind();\n      }\n    },\n\n\n    /**\n     * Starts autoplaying in configured interval.\n     *\n     * @param {Boolean|Number} force Run autoplaying with passed interval regardless of `autoplay` settings\n     * @return {Void}\n     */\n    start: function start() {\n      var _this = this;\n\n      if (Glide.settings.autoplay) {\n        if (isUndefined(this._i)) {\n          this._i = setInterval(function () {\n            _this.stop();\n\n            Components.Run.make('>');\n\n            _this.start();\n          }, this.time);\n        }\n      }\n    },\n\n\n    /**\n     * Stops autorunning of the glide.\n     *\n     * @return {Void}\n     */\n    stop: function stop() {\n      this._i = clearInterval(this._i);\n    },\n\n\n    /**\n     * Stops autoplaying while mouse is over glide's area.\n     *\n     * @return {Void}\n     */\n    bind: function bind() {\n      var _this2 = this;\n\n      Binder.on('mouseover', Components.Html.root, function () {\n        _this2.stop();\n      });\n\n      Binder.on('mouseout', Components.Html.root, function () {\n        _this2.start();\n      });\n    },\n\n\n    /**\n     * Unbind mouseover events.\n     *\n     * @returns {Void}\n     */\n    unbind: function unbind() {\n      Binder.off(['mouseover', 'mouseout'], Components.Html.root);\n    }\n  };\n\n  define(Autoplay, 'time', {\n    /**\n     * Gets time period value for the autoplay interval. Prioritizes\n     * times in `data-glide-autoplay` attrubutes over options.\n     *\n     * @return {Number}\n     */\n    get: function get() {\n      var autoplay = Components.Html.slides[Glide.index].getAttribute('data-glide-autoplay');\n\n      if (autoplay) {\n        return toInt(autoplay);\n      }\n\n      return toInt(Glide.settings.autoplay);\n    }\n  });\n\n  /**\n   * Stop autoplaying and unbind events:\n   * - on destroying, to clear defined interval\n   * - on updating via API to reset interval that may changed\n   */\n  Events.on(['destroy', 'update'], function () {\n    Autoplay.unbind();\n  });\n\n  /**\n   * Stop autoplaying:\n   * - before each run, to restart autoplaying\n   * - on pausing via API\n   * - on destroying, to clear defined interval\n   * - while starting a swipe\n   * - on updating via API to reset interval that may changed\n   */\n  Events.on(['run.before', 'pause', 'destroy', 'swipe.start', 'update'], function () {\n    Autoplay.stop();\n  });\n\n  /**\n   * Start autoplaying:\n   * - after each run, to restart autoplaying\n   * - on playing via API\n   * - while ending a swipe\n   */\n  Events.on(['run.after', 'play', 'swipe.end'], function () {\n    Autoplay.start();\n  });\n\n  /**\n   * Remount autoplaying:\n   * - on updating via API to reset interval that may changed\n   */\n  Events.on('update', function () {\n    Autoplay.mount();\n  });\n\n  /**\n   * Destroy a binder:\n   * - on destroying glide instance to clearup listeners\n   */\n  Events.on('destroy', function () {\n    Binder.destroy();\n  });\n\n  return Autoplay;\n}\n\n/**\n * Sorts keys of breakpoint object so they will be ordered from lower to bigger.\n *\n * @param {Object} points\n * @returns {Object}\n */\nfunction sortBreakpoints(points) {\n  if (isObject(points)) {\n    return sortKeys(points);\n  } else {\n    warn('Breakpoints option must be an object');\n  }\n\n  return {};\n}\n\nfunction breakpoints (Glide, Components, Events) {\n  /**\n   * Instance of the binder for DOM Events.\n   *\n   * @type {EventsBinder}\n   */\n  var Binder = new EventsBinder();\n\n  /**\n   * Holds reference to settings.\n   *\n   * @type {Object}\n   */\n  var settings = Glide.settings;\n\n  /**\n   * Holds reference to breakpoints object in settings. Sorts breakpoints\n   * from smaller to larger. It is required in order to proper\n   * matching currently active breakpoint settings.\n   *\n   * @type {Object}\n   */\n  var points = sortBreakpoints(settings.breakpoints);\n\n  /**\n   * Cache initial settings before overwritting.\n   *\n   * @type {Object}\n   */\n  var defaults = _extends({}, settings);\n\n  var Breakpoints = {\n    /**\n     * Matches settings for currectly matching media breakpoint.\n     *\n     * @param {Object} points\n     * @returns {Object}\n     */\n    match: function match(points) {\n      if (typeof window.matchMedia !== 'undefined') {\n        for (var point in points) {\n          if (points.hasOwnProperty(point)) {\n            if (window.matchMedia('(max-width: ' + point + 'px)').matches) {\n              return points[point];\n            }\n          }\n        }\n      }\n\n      return defaults;\n    }\n  };\n\n  /**\n   * Overwrite instance settings with currently matching breakpoint settings.\n   * This happens right after component initialization.\n   */\n  _extends(settings, Breakpoints.match(points));\n\n  /**\n   * Update glide with settings of matched brekpoint:\n   * - window resize to update slider\n   */\n  Binder.on('resize', window, throttle(function () {\n    Glide.settings = mergeOptions(settings, Breakpoints.match(points));\n  }, Glide.settings.throttle));\n\n  /**\n   * Resort and update default settings:\n   * - on reinit via API, so breakpoint matching will be performed with options\n   */\n  Events.on('update', function () {\n    points = sortBreakpoints(points);\n\n    defaults = _extends({}, settings);\n  });\n\n  /**\n   * Unbind resize listener:\n   * - on destroying, to bring markup to its initial state\n   */\n  Events.on('destroy', function () {\n    Binder.off('resize', window);\n  });\n\n  return Breakpoints;\n}\n\nvar COMPONENTS = {\n  Html: Html,\n  Translate: Translate,\n  Transition: Transition,\n  Direction: Direction,\n  Peek: Peek,\n  Sizes: Sizes,\n  Gaps: Gaps,\n  Move: Move,\n  Clones: Clones,\n  Resize: Resize,\n  Build: Build,\n  Run: Run\n};\n\nvar Glide$1 = function (_Core) {\n  inherits(Glide$$1, _Core);\n\n  function Glide$$1() {\n    classCallCheck(this, Glide$$1);\n    return possibleConstructorReturn(this, (Glide$$1.__proto__ || Object.getPrototypeOf(Glide$$1)).apply(this, arguments));\n  }\n\n  createClass(Glide$$1, [{\n    key: 'mount',\n    value: function mount() {\n      var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n      return get(Glide$$1.prototype.__proto__ || Object.getPrototypeOf(Glide$$1.prototype), 'mount', this).call(this, _extends({}, COMPONENTS, extensions));\n    }\n  }]);\n  return Glide$$1;\n}(Glide);\n\nexport default Glide$1;\nexport { swipe as Swipe, images as Images, anchors as Anchors, controls as Controls, keyboard as Keyboard, autoplay as Autoplay, breakpoints as Breakpoints };\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n  trim: function trim() {\n    return $trim(this);\n  }\n});\n","var fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n  return fails(function () {\n    return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n  });\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n  if (it != undefined) return it[ITERATOR]\n    || it['@@iterator']\n    || Iterators[classof(it)];\n};\n","var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n  return function ($this, pos) {\n    var S = String(requireObjectCoercible($this));\n    var position = toInteger(pos);\n    var size = S.length;\n    var first, second;\n    if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n    first = S.charCodeAt(position);\n    return first < 0xD800 || first > 0xDBFF || position + 1 === size\n      || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n        ? CONVERT_TO_STRING ? S.charAt(position) : first\n        : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.codePointAt` method\n  // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat\n  codeAt: createMethod(false),\n  // `String.prototype.at` method\n  // https://github.com/mathiasbynens/String.prototype.at\n  charAt: createMethod(true)\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n  createIteratorConstructor(IteratorConstructor, NAME, next);\n\n  var getIterationMethod = function (KIND) {\n    if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n    if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n    switch (KIND) {\n      case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n      case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n      case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n    } return function () { return new IteratorConstructor(this); };\n  };\n\n  var TO_STRING_TAG = NAME + ' Iterator';\n  var INCORRECT_VALUES_NAME = false;\n  var IterablePrototype = Iterable.prototype;\n  var nativeIterator = IterablePrototype[ITERATOR]\n    || IterablePrototype['@@iterator']\n    || DEFAULT && IterablePrototype[DEFAULT];\n  var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n  var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n  var CurrentIteratorPrototype, methods, KEY;\n\n  // fix native\n  if (anyNativeIterator) {\n    CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n    if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n      if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n        if (setPrototypeOf) {\n          setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n        } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n          createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n        }\n      }\n      // Set @@toStringTag to native iterators\n      setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n      if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n    }\n  }\n\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n    INCORRECT_VALUES_NAME = true;\n    defaultIterator = function values() { return nativeIterator.call(this); };\n  }\n\n  // define iterator\n  if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n    createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n  }\n  Iterators[NAME] = defaultIterator;\n\n  // export additional methods\n  if (DEFAULT) {\n    methods = {\n      values: getIterationMethod(VALUES),\n      keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n      entries: getIterationMethod(ENTRIES)\n    };\n    if (FORCED) for (KEY in methods) {\n      if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n        redefine(IterablePrototype, KEY, methods[KEY]);\n      }\n    } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n  }\n\n  return methods;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var anObject = require('../internals/an-object');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n  try {\n    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n  // 7.4.6 IteratorClose(iterator, completion)\n  } catch (error) {\n    var returnMethod = iterator['return'];\n    if (returnMethod !== undefined) anObject(returnMethod.call(iterator));\n    throw error;\n  }\n};\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n  keys: function keys(it) {\n    return nativeKeys(toObject(it));\n  }\n});\n","module.exports = function (it, Constructor, name) {\n  if (!(it instanceof Constructor)) {\n    throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n  } return it;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var called = 0;\n  var iteratorWithReturn = {\n    next: function () {\n      return { done: !!called++ };\n    },\n    'return': function () {\n      SAFE_CLOSING = true;\n    }\n  };\n  iteratorWithReturn[ITERATOR] = function () {\n    return this;\n  };\n  // eslint-disable-next-line no-throw-literal\n  Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n  if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n  var ITERATION_SUPPORT = false;\n  try {\n    var object = {};\n    object[ITERATOR] = function () {\n      return {\n        next: function () {\n          return { done: ITERATION_SUPPORT = true };\n        }\n      };\n    };\n    exec(object);\n  } catch (error) { /* empty */ }\n  return ITERATION_SUPPORT;\n};\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n  CSSRuleList: 0,\n  CSSStyleDeclaration: 0,\n  CSSValueList: 0,\n  ClientRectList: 0,\n  DOMRectList: 0,\n  DOMStringList: 0,\n  DOMTokenList: 1,\n  DataTransferItemList: 0,\n  FileList: 0,\n  HTMLAllCollection: 0,\n  HTMLCollection: 0,\n  HTMLFormElement: 0,\n  HTMLSelectElement: 0,\n  MediaList: 0,\n  MimeTypeArray: 0,\n  NamedNodeMap: 0,\n  NodeList: 1,\n  PaintRequestList: 0,\n  Plugin: 0,\n  PluginArray: 0,\n  SVGLengthList: 0,\n  SVGNumberList: 0,\n  SVGPathSegList: 0,\n  SVGPointList: 0,\n  SVGStringList: 0,\n  SVGTransformList: 0,\n  SourceBufferList: 0,\n  StyleSheetList: 0,\n  TextTrackCueList: 0,\n  TextTrackList: 0,\n  TouchList: 0\n};\n","var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseFloat = global.parseFloat;\nvar FORCED = 1 / $parseFloat(whitespaces + '-0') !== -Infinity;\n\n// `parseFloat` method\n// https://tc39.github.io/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n  var trimmedString = trim(String(string));\n  var result = $parseFloat(trimmedString);\n  return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n","'use strict';\nvar $ = require('../internals/export');\nvar aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar test = [];\nvar nativeSort = test.sort;\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n  test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n  test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD;\n\n// `Array.prototype.sort` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  sort: function sort(comparefn) {\n    return comparefn === undefined\n      ? nativeSort.call(toObject(this))\n      : nativeSort.call(toObject(this), aFunction(comparefn));\n  }\n});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t(require(\"core-js/modules/es.array.index-of\"),require(\"core-js/modules/es.array.join\"),require(\"core-js/modules/es.array.slice\"),require(\"core-js/modules/es.array.splice\"),require(\"core-js/modules/es.object.keys\"),require(\"core-js/modules/es.parse-int\"),require(\"core-js/modules/es.string.anchor\")):\"function\"==typeof define&&define.amd?define([\"core-js/modules/es.array.index-of\",\"core-js/modules/es.array.join\",\"core-js/modules/es.array.slice\",\"core-js/modules/es.array.splice\",\"core-js/modules/es.object.keys\",\"core-js/modules/es.parse-int\",\"core-js/modules/es.string.anchor\"],t):(e=e||self).MarkerClusterer=t()}(this,(function(){\"use strict\";function e(t){return(e=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(t)}function t(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function s(e,t){for(var s=0;s<t.length;s++){var i=t[s];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function i(e,t,i){return t&&s(e.prototype,t),i&&s(e,i),e}var r=function(){function e(s,i,r){t(this,e),this.extend(e,google.maps.OverlayView),this.map_=s,this.MARKER_CLUSTER_IMAGE_PATH_=\"../images/m\",this.MARKER_CLUSTER_IMAGE_EXTENSION_=\"png\",this.markers_=[],this.clusters_=[],this.sizes=[53,56,66,78,90],this.styles_=[],this.ready_=!1;var n=r||{};this.zIndex_=n.zIndex||google.maps.Marker.MAX_ZINDEX+1,this.gridSize_=n.gridSize||60,this.minClusterSize_=n.minimumClusterSize||2,this.maxZoom_=n.maxZoom||null,this.styles_=n.styles||[],this.imagePath_=n.imagePath||this.MARKER_CLUSTER_IMAGE_PATH_,this.imageExtension_=n.imageExtension||this.MARKER_CLUSTER_IMAGE_EXTENSION_,this.zoomOnClick_=!0,null!=n.zoomOnClick&&(this.zoomOnClick_=n.zoomOnClick),this.averageCenter_=!1,null!=n.averageCenter&&(this.averageCenter_=n.averageCenter),this.setupStyles_(),this.setMap(s),this.prevZoom_=this.map_.getZoom();var a=this;google.maps.event.addListener(this.map_,\"zoom_changed\",(function(){var e=a.map_.getZoom(),t=a.map_.minZoom||0,s=Math.min(a.map_.maxZoom||100,a.map_.mapTypes[a.map_.getMapTypeId()].maxZoom);e=Math.min(Math.max(e,t),s),a.prevZoom_!=e&&(a.prevZoom_=e,a.resetViewport())})),google.maps.event.addListener(this.map_,\"idle\",(function(){a.redraw()})),i&&(i.length||Object.keys(i).length)&&this.addMarkers(i,!1)}return i(e,[{key:\"extend\",value:function(e,t){return function(e){for(var t in e.prototype)this.prototype[t]=e.prototype[t];return this}.apply(e,[t])}},{key:\"onAdd\",value:function(){this.setReady_(!0)}},{key:\"draw\",value:function(){}},{key:\"setupStyles_\",value:function(){if(!this.styles_.length)for(var e,t=0;e=this.sizes[t];t++)this.styles_.push({url:this.imagePath_+(t+1)+\".\"+this.imageExtension_,height:e,width:e})}},{key:\"fitMapToMarkers\",value:function(){for(var e,t=this.getMarkers(),s=new google.maps.LatLngBounds,i=0;e=t[i];i++)s.extend(e.getPosition());this.map_.fitBounds(s)}},{key:\"setZIndex\",value:function(e){this.zIndex_=e}},{key:\"getZIndex\",value:function(){return this.zIndex_}},{key:\"setStyles\",value:function(e){this.styles_=e}},{key:\"getStyles\",value:function(){return this.styles_}},{key:\"isZoomOnClick\",value:function(){return this.zoomOnClick_}},{key:\"isAverageCenter\",value:function(){return this.averageCenter_}},{key:\"getMarkers\",value:function(){return this.markers_}},{key:\"getTotalMarkers\",value:function(){return this.markers_.length}},{key:\"setMaxZoom\",value:function(e){this.maxZoom_=e}},{key:\"getMaxZoom\",value:function(){return this.maxZoom_}},{key:\"calculator_\",value:function(e,t){for(var s=0,i=e.length,r=i;0!==r;)r=parseInt(r/10,10),s++;return{text:i,index:s=Math.min(s,t)}}},{key:\"setCalculator\",value:function(e){this.calculator_=e}},{key:\"getCalculator\",value:function(){return this.calculator_}},{key:\"addMarkers\",value:function(e,t){if(e.length)for(var s,i=0;s=e[i];i++)this.pushMarkerTo_(s);else if(Object.keys(e).length)for(var r in e)this.pushMarkerTo_(e[r]);t||this.redraw()}},{key:\"pushMarkerTo_\",value:function(e){if(e.isAdded=!1,e.draggable){var t=this;google.maps.event.addListener(e,\"dragend\",(function(){e.isAdded=!1,t.repaint()}))}this.markers_.push(e)}},{key:\"addMarker\",value:function(e,t){this.pushMarkerTo_(e),t||this.redraw()}},{key:\"removeMarker_\",value:function(e){var t=-1;if(this.markers_.indexOf)t=this.markers_.indexOf(e);else for(var s,i=0;s=this.markers_[i];i++)if(s==e){t=i;break}return-1!=t&&(e.setMap(null),this.markers_.splice(t,1),!0)}},{key:\"removeMarker\",value:function(e,t){var s=this.removeMarker_(e);return!(t||!s)&&(this.resetViewport(),this.redraw(),!0)}},{key:\"removeMarkers\",value:function(e,t){for(var s,i=e===this.getMarkers()?e.slice():e,r=!1,n=0;s=i[n];n++){var a=this.removeMarker_(s);r=r||a}if(!t&&r)return this.resetViewport(),this.redraw(),!0}},{key:\"setReady_\",value:function(e){this.ready_||(this.ready_=e,this.createClusters_())}},{key:\"getTotalClusters\",value:function(){return this.clusters_.length}},{key:\"getMap\",value:function(){return this.map_}},{key:\"setMap\",value:function(e){this.map_=e}},{key:\"getGridSize\",value:function(){return this.gridSize_}},{key:\"setGridSize\",value:function(e){this.gridSize_=e}},{key:\"getMinClusterSize\",value:function(){return this.minClusterSize_}},{key:\"setMinClusterSize\",value:function(e){this.minClusterSize_=e}},{key:\"getExtendedBounds\",value:function(e){var t=this.getProjection(),s=new google.maps.LatLng(e.getNorthEast().lat(),e.getNorthEast().lng()),i=new google.maps.LatLng(e.getSouthWest().lat(),e.getSouthWest().lng()),r=t.fromLatLngToDivPixel(s);r.x+=this.gridSize_,r.y-=this.gridSize_;var n=t.fromLatLngToDivPixel(i);n.x-=this.gridSize_,n.y+=this.gridSize_;var a=t.fromDivPixelToLatLng(r),o=t.fromDivPixelToLatLng(n);return e.extend(a),e.extend(o),e}},{key:\"isMarkerInBounds_\",value:function(e,t){return t.contains(e.getPosition())}},{key:\"clearMarkers\",value:function(){this.resetViewport(!0),this.markers_=[]}},{key:\"resetViewport\",value:function(e){for(var t,s=0;t=this.clusters_[s];s++)t.remove();for(var i,r=0;i=this.markers_[r];r++)i.isAdded=!1,e&&i.setMap(null);this.clusters_=[]}},{key:\"repaint\",value:function(){var e=this.clusters_.slice();this.clusters_.length=0,this.resetViewport(),this.redraw(),setTimeout((function(){for(var t,s=0;t=e[s];s++)t.remove()}),0)}},{key:\"redraw\",value:function(){this.createClusters_()}},{key:\"distanceBetweenPoints_\",value:function(e,t){if(!e||!t)return 0;var s=(t.lat()-e.lat())*Math.PI/180,i=(t.lng()-e.lng())*Math.PI/180,r=Math.sin(s/2)*Math.sin(s/2)+Math.cos(e.lat()*Math.PI/180)*Math.cos(t.lat()*Math.PI/180)*Math.sin(i/2)*Math.sin(i/2);return 6371*(2*Math.atan2(Math.sqrt(r),Math.sqrt(1-r)))}},{key:\"addToClosestCluster_\",value:function(e){for(var t,s=4e4,i=null,r=0;t=this.clusters_[r];r++){var a=t.getCenter();if(a){var o=this.distanceBetweenPoints_(a,e.getPosition());o<s&&(s=o,i=t)}}if(i&&i.isMarkerInClusterBounds(e))i.addMarker(e);else{var h=new n(this);h.addMarker(e),this.clusters_.push(h)}}},{key:\"createClusters_\",value:function(){if(this.ready_)for(var e,t=new google.maps.LatLngBounds(this.map_.getBounds().getSouthWest(),this.map_.getBounds().getNorthEast()),s=this.getExtendedBounds(t),i=0;e=this.markers_[i];i++)!e.isAdded&&this.isMarkerInBounds_(e,s)&&this.addToClosestCluster_(e)}}]),e}(),n=function(){function e(s){t(this,e),this.markerClusterer_=s,this.map_=s.getMap(),this.gridSize_=s.getGridSize(),this.minClusterSize_=s.getMinClusterSize(),this.averageCenter_=s.isAverageCenter(),this.center_=null,this.markers_=[],this.bounds_=null,this.clusterIcon_=new a(this,s.getStyles(),s.getGridSize())}return i(e,[{key:\"isMarkerAlreadyAdded\",value:function(e){if(this.markers_.indexOf)return-1!=this.markers_.indexOf(e);for(var t,s=0;t=this.markers_[s];s++)if(t==e)return!0;return!1}},{key:\"addMarker\",value:function(e){if(this.isMarkerAlreadyAdded(e))return!1;if(this.center_){if(this.averageCenter_){var t=this.markers_.length+1,s=(this.center_.lat()*(t-1)+e.getPosition().lat())/t,i=(this.center_.lng()*(t-1)+e.getPosition().lng())/t;this.center_=new google.maps.LatLng(s,i),this.calculateBounds_()}}else this.center_=e.getPosition(),this.calculateBounds_();e.isAdded=!0,this.markers_.push(e);var r=this.markers_.length;if(r<this.minClusterSize_&&e.getMap()!=this.map_&&e.setMap(this.map_),r==this.minClusterSize_)for(var n=0;n<r;n++)this.markers_[n].setMap(null);return r>=this.minClusterSize_&&e.setMap(null),this.updateIcon(),!0}},{key:\"getMarkerClusterer\",value:function(){return this.markerClusterer_}},{key:\"getBounds\",value:function(){for(var e,t=new google.maps.LatLngBounds(this.center_,this.center_),s=this.getMarkers(),i=0;e=s[i];i++)t.extend(e.getPosition());return t}},{key:\"remove\",value:function(){this.clusterIcon_.remove(),this.markers_.length=0,delete this.markers_}},{key:\"getSize\",value:function(){return this.markers_.length}},{key:\"getMarkers\",value:function(){return this.markers_}},{key:\"getCenter\",value:function(){return this.center_}},{key:\"calculateBounds_\",value:function(){var e=new google.maps.LatLngBounds(this.center_,this.center_);this.bounds_=this.markerClusterer_.getExtendedBounds(e)}},{key:\"isMarkerInClusterBounds\",value:function(e){return this.bounds_.contains(e.getPosition())}},{key:\"getMap\",value:function(){return this.map_}},{key:\"updateIcon\",value:function(){var e=this.map_.getZoom(),t=this.markerClusterer_.getMaxZoom();if(t&&e>t)for(var s,i=0;s=this.markers_[i];i++)s.setMap(this.map_);else if(this.markers_.length<this.minClusterSize_)this.clusterIcon_.hide();else{var r=this.markerClusterer_.getStyles().length,n=this.markerClusterer_.getCalculator()(this.markers_,r);this.clusterIcon_.setCenter(this.center_),this.clusterIcon_.setSums(n),this.clusterIcon_.show()}}}]),e}(),a=function(){function s(e,i,r){t(this,s),e.getMarkerClusterer().extend(s,google.maps.OverlayView),this.styles_=i,this.padding_=r||0,this.cluster_=e,this.center_=null,this.map_=e.getMap(),this.div_=null,this.sums_=null,this.visible_=!1,this.setMap(this.map_)}return i(s,[{key:\"triggerClusterClick\",value:function(){var e=this.cluster_.getBounds(),t=this.cluster_.getMarkerClusterer();google.maps.event.trigger(t.map_,\"clusterclick\",this.cluster_),t.isZoomOnClick()&&(this.map_.fitBounds(e),this.map_.setCenter(e.getCenter()))}},{key:\"onAdd\",value:function(){if(this.div_=document.createElement(\"DIV\"),this.visible_){var e=this.getPosFromLatLng_(this.center_);this.div_.style.cssText=this.createCss(e),this.div_.innerHTML=this.sums_.text}this.getPanes().overlayMouseTarget.appendChild(this.div_);var t=this;google.maps.event.addDomListener(this.div_,\"click\",(function(){t.triggerClusterClick()}))}},{key:\"getPosFromLatLng_\",value:function(e){var t=this.getProjection().fromLatLngToDivPixel(e);return t.x-=parseInt(this.width_/2,10),t.y-=parseInt(this.height_/2,10),t}},{key:\"draw\",value:function(){if(this.visible_){var e=this.getPosFromLatLng_(this.center_);this.div_.style.top=e.y+\"px\",this.div_.style.left=e.x+\"px\"}}},{key:\"hide\",value:function(){this.div_&&(this.div_.style.display=\"none\"),this.visible_=!1}},{key:\"show\",value:function(){if(this.div_){var e=this.getPosFromLatLng_(this.center_);this.div_.style.cssText=this.createCss(e),this.div_.style.display=\"\"}this.visible_=!0}},{key:\"remove\",value:function(){this.setMap(null)}},{key:\"onRemove\",value:function(){this.div_&&this.div_.parentNode&&(this.hide(),this.div_.parentNode.removeChild(this.div_),this.div_=null)}},{key:\"setSums\",value:function(e){this.sums_=e,this.text_=e.text,this.index_=e.index,this.div_&&(this.div_.innerHTML=e.text),this.useStyle()}},{key:\"useStyle\",value:function(){var e=Math.max(0,this.sums_.index-1);e=Math.min(this.styles_.length-1,e);var t=this.styles_[e];this.url_=t.url,this.height_=t.height,this.width_=t.width,this.textColor_=t.textColor,this.anchor_=t.anchor,this.textSize_=t.textSize,this.backgroundPosition_=t.backgroundPosition}},{key:\"setCenter\",value:function(e){this.center_=e}},{key:\"createCss\",value:function(t){var s=[];s.push(\"z-index:\"+this.cluster_.markerClusterer_.getZIndex()+\";\"),s.push(\"background-image:url(\"+this.url_+\");\");var i=this.backgroundPosition_?this.backgroundPosition_:\"0 0\";s.push(\"background-position:\"+i+\";\"),\"object\"===e(this.anchor_)?(\"number\"==typeof this.anchor_[0]&&this.anchor_[0]>0&&this.anchor_[0]<this.height_?s.push(\"height:\"+(this.height_-this.anchor_[0])+\"px; padding-top:\"+this.anchor_[0]+\"px;\"):s.push(\"height:\"+this.height_+\"px; line-height:\"+this.height_+\"px;\"),\"number\"==typeof this.anchor_[1]&&this.anchor_[1]>0&&this.anchor_[1]<this.width_?s.push(\"width:\"+(this.width_-this.anchor_[1])+\"px; padding-left:\"+this.anchor_[1]+\"px;\"):s.push(\"width:\"+this.width_+\"px; text-align:center;\")):s.push(\"height:\"+this.height_+\"px; line-height:\"+this.height_+\"px; width:\"+this.width_+\"px; text-align:center;\");var r=this.textColor_?this.textColor_:\"black\",n=this.textSize_?this.textSize_:11;return s.push(\"cursor:pointer; top:\"+t.y+\"px; left:\"+t.x+\"px; color:\"+r+\"; position:absolute; font-size:\"+n+\"px; font-family:Arial,sans-serif; font-weight:bold\"),s.join(\"\")}}]),s}();return r}));\n","'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('slice', { ACCESSORS: true, 0: 0, 1: 2 });\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n  slice: function slice(start, end) {\n    var O = toIndexedObject(this);\n    var length = toLength(O.length);\n    var k = toAbsoluteIndex(start, length);\n    var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n    // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n    var Constructor, result, n;\n    if (isArray(O)) {\n      Constructor = O.constructor;\n      // cross-realm fallback\n      if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n        Constructor = undefined;\n      } else if (isObject(Constructor)) {\n        Constructor = Constructor[SPECIES];\n        if (Constructor === null) Constructor = undefined;\n      }\n      if (Constructor === Array || Constructor === undefined) {\n        return nativeSlice.call(O, k, fin);\n      }\n    }\n    result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n    for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n    result.length = n;\n    return result;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.anchor` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.anchor\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('anchor') }, {\n  anchor: function anchor(name) {\n    return createHTML(this, 'a', 'name', name);\n  }\n});\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar quot = /\"/g;\n\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\n// https://tc39.github.io/ecma262/#sec-createhtml\nmodule.exports = function (string, tag, attribute, value) {\n  var S = String(requireObjectCoercible(string));\n  var p1 = '<' + tag;\n  if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '&quot;') + '\"';\n  return p1 + '>' + S + '</' + tag + '>';\n};\n","var fails = require('../internals/fails');\n\n// check the existence of a method, lowercase\n// of a tag and escaping quotes in arguments\nmodule.exports = function (METHOD_NAME) {\n  return fails(function () {\n    var test = ''[METHOD_NAME]('\"');\n    return test !== test.toLowerCase() || test.split('\"').length > 3;\n  });\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = objectKeys(Properties);\n  var length = keys.length;\n  var index = 0;\n  var key;\n  while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n  return O;\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n  var TO_STRING_TAG = NAME + ' Iterator';\n  IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n  setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n  Iterators[TO_STRING_TAG] = returnThis;\n  return IteratorConstructor;\n};\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n  for (var key in src) redefine(target, key, src[key], options);\n  return target;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\nvar nativeAssign = Object.assign;\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\nmodule.exports = !nativeAssign || fails(function () {\n  // should have correct order of operations (Edge bug)\n  if (DESCRIPTORS && nativeAssign({ b: 1 }, nativeAssign(defineProperty({}, 'a', {\n    enumerable: true,\n    get: function () {\n      defineProperty(this, 'b', {\n        value: 3,\n        enumerable: false\n      });\n    }\n  }), { b: 2 })).b !== 1) return true;\n  // should work with symbols and should have deterministic property order (V8 bug)\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line no-undef\n  var symbol = Symbol();\n  var alphabet = 'abcdefghijklmnopqrst';\n  A[symbol] = 7;\n  alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n  return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n  var T = toObject(target);\n  var argumentsLength = arguments.length;\n  var index = 1;\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  var propertyIsEnumerable = propertyIsEnumerableModule.f;\n  while (argumentsLength > index) {\n    var S = IndexedObject(arguments[index++]);\n    var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) {\n      key = keys[j++];\n      if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n    }\n  } return T;\n} : nativeAssign;\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n  if (!isObject(it) && it !== null) {\n    throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n  } return it;\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n  return '[object ' + classof(this) + ']';\n};\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\n\nvar Result = function (stopped, result) {\n  this.stopped = stopped;\n  this.result = result;\n};\n\nvar iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) {\n  var boundFunction = bind(fn, that, AS_ENTRIES ? 2 : 1);\n  var iterator, iterFn, index, length, result, next, step;\n\n  if (IS_ITERATOR) {\n    iterator = iterable;\n  } else {\n    iterFn = getIteratorMethod(iterable);\n    if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n    // optimisation for array iterators\n    if (isArrayIteratorMethod(iterFn)) {\n      for (index = 0, length = toLength(iterable.length); length > index; index++) {\n        result = AS_ENTRIES\n          ? boundFunction(anObject(step = iterable[index])[0], step[1])\n          : boundFunction(iterable[index]);\n        if (result && result instanceof Result) return result;\n      } return new Result(false);\n    }\n    iterator = iterFn.call(iterable);\n  }\n\n  next = iterator.next;\n  while (!(step = next.call(iterator)).done) {\n    result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES);\n    if (typeof result == 'object' && result && result instanceof Result) return result;\n  } return new Result(false);\n};\n\niterate.stop = function (result) {\n  return new Result(true, result);\n};\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar classof = require('../internals/classof-raw');\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar IS_NODE = classof(process) == 'process';\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n  flush = function () {\n    var parent, fn;\n    if (IS_NODE && (parent = process.domain)) parent.exit();\n    while (head) {\n      fn = head.fn;\n      head = head.next;\n      try {\n        fn();\n      } catch (error) {\n        if (head) notify();\n        else last = undefined;\n        throw error;\n      }\n    } last = undefined;\n    if (parent) parent.enter();\n  };\n\n  // Node.js\n  if (IS_NODE) {\n    notify = function () {\n      process.nextTick(flush);\n    };\n  // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n  } else if (MutationObserver && !IS_IOS) {\n    toggle = true;\n    node = document.createTextNode('');\n    new MutationObserver(flush).observe(node, { characterData: true });\n    notify = function () {\n      node.data = toggle = !toggle;\n    };\n  // environments with maybe non-completely correct, but existent Promise\n  } else if (Promise && Promise.resolve) {\n    // Promise.resolve without an argument throws an error in LG WebOS 2\n    promise = Promise.resolve(undefined);\n    then = promise.then;\n    notify = function () {\n      then.call(promise, flush);\n    };\n  // for other environments - macrotask based on:\n  // - setImmediate\n  // - MessageChannel\n  // - window.postMessag\n  // - onreadystatechange\n  // - setTimeout\n  } else {\n    notify = function () {\n      // strange IE + webpack dev server bug - use .call(global)\n      macrotask.call(global, flush);\n    };\n  }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n  var task = { fn: fn, next: undefined };\n  if (last) last.next = task;\n  if (!head) {\n    head = task;\n    notify();\n  } last = task;\n};\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n  anObject(C);\n  if (isObject(x) && x.constructor === C) return x;\n  var promiseCapability = newPromiseCapability.f(C);\n  var resolve = promiseCapability.resolve;\n  resolve(x);\n  return promiseCapability.promise;\n};\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n  var console = global.console;\n  if (console && console.error) {\n    arguments.length === 1 ? console.error(a) : console.error(a, b);\n  }\n};\n","module.exports = function (exec) {\n  try {\n    return { error: false, value: exec() };\n  } catch (error) {\n    return { error: true, value: error };\n  }\n};\n","var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseInt = global.parseInt;\nvar hex = /^[+-]?0[Xx]/;\nvar FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22;\n\n// `parseInt` method\n// https://tc39.github.io/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n  var S = trim(String(string));\n  return $parseInt(S, (radix >>> 0) || (hex.test(S) ? 16 : 10));\n} : $parseInt;\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n  ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n  try {\n    return nativeGetOwnPropertyNames(it);\n  } catch (error) {\n    return windowNames.slice();\n  }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n  return windowNames && toString.call(it) == '[object Window]'\n    ? getWindowNames(it)\n    : nativeGetOwnPropertyNames(toIndexedObject(it));\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nmodule.exports = function (hint) {\n  if (hint !== 'string' && hint !== 'number' && hint !== 'default') {\n    throw TypeError('Incorrect hint');\n  } return toPrimitive(anObject(this), hint !== 'number');\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\nmodule.exports = (!STRICT_METHOD || !USES_TO_LENGTH) ? function forEach(callbackfn /* , thisArg */) {\n  return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', 1, function (SEARCH, nativeSearch, maybeCallNative) {\n  return [\n    // `String.prototype.search` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.search\n    function search(regexp) {\n      var O = requireObjectCoercible(this);\n      var searcher = regexp == undefined ? undefined : regexp[SEARCH];\n      return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n    },\n    // `RegExp.prototype[@@search]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n    function (regexp) {\n      var res = maybeCallNative(nativeSearch, regexp, this);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n\n      var previousLastIndex = rx.lastIndex;\n      if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n      var result = regExpExec(rx, S);\n      if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n      return result === null ? -1 : result.index;\n    }\n  ];\n});\n","// `SameValue` abstract operation\n// https://tc39.github.io/ecma262/#sec-samevalue\nmodule.exports = Object.is || function is(x, y) {\n  // eslint-disable-next-line no-self-compare\n  return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n"],"sourceRoot":""}