{"version":3,"sources":["webpack:///build.js","webpack:///./node_modules/axios/lib/utils.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/axios/index.js","webpack:///./CMS/scripts/modules/ActivityLoggerService.js","webpack:///./node_modules/axios/lib/defaults.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./CMS/scripts/util/helper.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/lib/core/createError.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/enquire.js/src/Util.js","webpack:///./node_modules/vue/dist/vue.esm.js","webpack:///CMS/scripts/modules/slider/sliderComponent.vue","webpack:///./CMS/scripts/main.js","webpack:///./CMS/scripts/global.js","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/is-buffer/index.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./node_modules/tether/dist/js/tether.js","webpack:///./node_modules/bootstrap/dist/js/bootstrap.js","webpack:///./node_modules/popper.js/dist/esm/popper.js","webpack:///./node_modules/enquire.js/src/index.js","webpack:///./node_modules/enquire.js/src/MediaQueryDispatch.js","webpack:///./node_modules/enquire.js/src/MediaQuery.js","webpack:///./node_modules/enquire.js/src/QueryHandler.js","webpack:///./node_modules/slick-carousel/slick/slick.js","webpack:///./node_modules/jquery-match-height/dist/jquery.matchHeight.js","webpack:///./node_modules/savvior/dist/savvior.js","webpack:///./node_modules/savvior/node_modules/enquire.js/dist/enquire.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/vuex/dist/vuex.esm.js","webpack:///./node_modules/@fancyapps/fancybox/dist/jquery.fancybox.js","webpack:///./CMS/scripts/modules/azureSearch/azureSearch.bootstrapper.js","webpack:///./CMS/scripts/modules/azureSearch/azureSearch.vm.js","webpack:///./node_modules/@frontisbv/scheffer-azuresearch-searchclient/dist/index.js","webpack:///./node_modules/lodash/lodash.js","webpack:///(webpack)/buildin/module.js","webpack:///./CMS/scripts/modules/slider/sliderComponent.vue","webpack:///./CMS/scripts/modules/slider/sliderComponent.vue?6cf8","webpack:///./CMS/scripts/modules/slider/sliderComponent.vue?20d6","webpack:///./node_modules/vue-style-loader/lib/addStylesClient.js","webpack:///./node_modules/vue-style-loader/lib/listToStyles.js","webpack:///./CMS/scripts/modules/slider/sliderComponent.vue?d26b","webpack:///./node_modules/vue-loader/lib/runtime/component-normalizer.js","webpack:///./CMS/scripts/modules/TakeOverActivityLogger.js","webpack:///./CMS/scripts/modules/DownloadActivityLogger.js","webpack:///./CMS/scripts/modules/FAQActivityLogger.js","webpack:///./CMS/scripts/modules/KeukenDetailActivityLogger.js","webpack:///./node_modules/es6-promise/auto.js","webpack:///./node_modules/es6-promise/dist/es6-promise.js"],"names":["webpackJsonp","module","exports","__webpack_require__","isArray","val","toString","call","isArrayBuffer","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isString","isNumber","isUndefined","isObject","isDate","isFile","isBlob","isFunction","isStream","pipe","isURLSearchParams","URLSearchParams","trim","str","replace","isStandardBrowserEnv","navigator","product","window","document","forEach","obj","fn","i","l","length","key","Object","prototype","hasOwnProperty","merge","assignValue","result","arguments","extend","a","b","thisArg","bind","isBuffer","global","factory","w","Error","this","noGlobal","DOMEval","code","node","doc","script","createElement","text","preservedScriptAttributes","getAttribute","setAttribute","head","appendChild","parentNode","removeChild","toType","class2type","isArrayLike","type","isWindow","nodeName","elem","name","toLowerCase","fcssescape","ch","asCodePoint","slice","charCodeAt","winnow","elements","qualifier","not","jQuery","grep","nodeType","indexOf","filter","sibling","cur","dir","createOptions","options","object","each","match","rnothtmlwhite","_","flag","Identity","v","Thrower","ex","adoptValue","value","resolve","reject","noValue","method","promise","done","fail","then","apply","undefined","completed","removeEventListener","ready","fcamelCase","_all","letter","toUpperCase","camelCase","string","rmsPrefix","rdashAlpha","Data","expando","uid","getData","data","rbrace","test","JSON","parse","dataAttr","rmultiDash","e","dataUser","set","adjustCSS","prop","valueParts","tween","adjusted","scale","maxIterations","currentValue","css","initial","unit","cssNumber","initialInUnit","rcssNum","exec","style","start","end","getDefaultDisplay","temp","ownerDocument","display","defaultDisplayMap","body","showHide","show","values","index","dataPriv","get","isHiddenWithinTree","getAll","context","tag","ret","getElementsByTagName","querySelectorAll","setGlobalEval","elems","refElements","buildFragment","scripts","selection","ignored","tmp","wrap","attached","j","fragment","createDocumentFragment","nodes","rhtml","rtagName","wrapMap","_default","innerHTML","htmlPrefilter","lastChild","childNodes","firstChild","textContent","push","createTextNode","inArray","isAttached","rscriptType","returnTrue","returnFalse","on","types","selector","one","origFn","event","off","guid","add","leverageNative","el","isSetup","namespace","handler","saved","isTrigger","special","delegateType","stopPropagation","stopImmediatePropagation","preventDefault","trigger","isImmediatePropagationStopped","manipulationTarget","content","children","disableScript","restoreScript","removeAttribute","cloneCopyEvent","src","dest","pdataOld","udataOld","udataCur","events","hasData","remove","access","fixInput","rcheckableType","checked","defaultValue","domManip","collection","args","callback","flat","first","hasScripts","iNoClone","valueIsFunction","support","checkClone","rchecked","self","eq","html","map","clone","contains","_evalUrl","noModule","nonce","rcleanScript","keepData","cleanData","curCSS","computed","width","minWidth","maxWidth","isCustomProp","rcustomProp","getStyles","getPropertyValue","rtrimCSS","pixelBoxStyles","rnumnonpx","rboxStyle","addGetHookIf","conditionFn","hookFn","vendorPropName","capName","cssPrefixes","emptyStyle","finalPropName","final","cssProps","vendorProps","setPositiveNumber","_elem","subtract","matches","Math","max","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","marginDelta","cssExpand","ceil","getWidthOrHeight","boxSizingNeeded","boxSizingReliable","valueIsBorderBox","offsetProp","reliableTrDimensions","parseFloat","getClientRects","Tween","easing","init","schedule","inProgress","hidden","requestAnimationFrame","setTimeout","fx","interval","tick","createFxNow","fxNow","Date","now","genFx","includeWidth","which","attrs","height","opacity","createTween","animation","Animation","tweeners","concat","defaultPrefilter","props","opts","toggle","hooks","oldfire","propTween","restoreDisplay","isBox","anim","orig","dataShow","queue","_queueHooks","unqueued","empty","fire","always","rfxtypes","isEmptyObject","overflow","overflowX","overflowY","propFilter","specialEasing","Array","cssHooks","expand","properties","stopped","prefilters","deferred","Deferred","currentTime","remaining","startTime","duration","percent","tweens","run","notifyWith","resolveWith","originalProperties","originalOptions","stop","gotoEnd","rejectWith","progress","complete","timer","stripAndCollapse","join","getClass","classesToArray","buildParams","prefix","traditional","rbracket","addToPrefiltersOrTransports","structure","dataTypeExpression","func","dataType","dataTypes","unshift","inspectPrefiltersOrTransports","jqXHR","inspect","selected","inspected","prefilterOrFactory","dataTypeOrTransport","seekingTransport","transports","ajaxExtend","target","deep","flatOptions","ajaxSettings","ajaxHandleResponses","s","responses","ct","finalDataType","firstDataType","contents","shift","mimeType","getResponseHeader","converters","ajaxConvert","response","isSuccess","conv2","current","conv","prev","responseFields","dataFilter","split","throws","state","error","arr","getProto","getPrototypeOf","array","hasOwn","fnToString","ObjectFunctionString","item","rhtmlSuffix","jquery","constructor","toArray","num","pushStack","prevObject","last","even","odd","len","sort","splice","copy","copyIsArray","isPlainObject","random","isReady","msg","noop","proto","Ctor","globalEval","documentElement","nodeValue","makeArray","results","isXMLDoc","namespaceURI","docElem","second","invert","callbackExpect","arg","Symbol","iterator","_i","pop","whitespace","RegExp","bup","compareDocumentPosition","rcssescape","escapeSelector","sel","preferredDoc","pushNative","safeActiveElement","activeElement","err","find","seed","m","nid","groups","newSelector","newContext","setDocument","documentIsHTML","rquickExpr","getElementById","id","getElementsByClassName","nonnativeSelectorCache","rbuggyQSA","rdescend","rleadingCombinator","rsibling","testContext","scope","tokenize","toSelector","qsaError","select","createCache","cache","keys","Expr","cacheLength","markFunction","assert","createDisabledPseudo","disabled","isDisabled","inDisabledFieldset","createPositionalPseudo","argument","matchIndexes","subWindow","webkitMatchesSelector","msMatchesSelector","defaultView","top","addEventListener","unloadHandler","getById","getElementsByName","disconnectedMatch","cssHas","querySelector","ID","attrId","runescape","funescape","getAttributeNode","TAG","CLASS","className","input","booleans","sortOrder","hasDuplicate","compare","sortDetached","sortInput","setFilters","parseOnly","matched","tokens","soFar","preFilters","cached","tokenCache","preFilter","rcomma","matchExpr","addCombinator","matcher","combinator","base","skip","next","checkNonElements","doneName","xml","oldCache","outerCache","newCache","dirruns","elementMatcher","matchers","multipleContexts","contexts","condense","unmatched","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","matcherOut","preMap","postMap","preexisting","matcherIn","matcherFromTokens","checkContext","leadingRelative","relative","implicitRelative","matchContext","matchAnyContext","outermostContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","uniqueSort","compile","compilerCache","token","compiled","needsContext","classCache","identifier","attributes","pseudos","rwhitespace","rpseudo","ridentifier","ATTR","PSEUDO","CHILD","bool","rinputs","rheader","escape","nonHex","high","String","fromCharCode","els","expr","matchesSelector","attr","attrHandle","duplicates","sortStable","createPseudo","excess","unquoted","nodeNameSelector","expectedNodeName","pattern","operator","check","what","_argument","simple","forward","ofType","_context","nodeIndex","parent","useCache","diff","pseudo","idx","has","lang","elemLang","hash","location","root","focus","hasFocus","href","tabIndex","enabled","selectedIndex","nextSibling","header","button","_matchIndexes","lt","gt","nth","radio","checkbox","file","password","image","submit","reset","filters","unique","getText","isXML","selectors","until","truncate","is","siblings","n","rneedsContext","rsingleTag","rootjQuery","parseHTML","rparentsprev","guaranteedUnique","targets","closest","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","reverse","Callbacks","firing","memory","fired","locked","list","firingIndex","once","stopOnFalse","disable","lock","fireWith","tuples","fns","newDefer","tuple","returned","notify","onFulfilled","onRejected","onProgress","depth","that","mightThrow","maxDepth","TypeError","process","exceptionHook","getErrorHook","getStackHook","stateString","when","singleValue","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","asyncError","console","warn","message","stack","readyException","readyList","catch","readyWait","wait","readyState","doScroll","chainable","emptyGet","raw","bulk","_key","acceptData","owner","defineProperty","configurable","removeData","_data","_removeData","dequeue","startLength","setter","clearQueue","count","defer","pnum","source","composed","getRootNode","hide","div","cloneNode","noCloneChecked","option","thead","col","tr","td","tbody","tfoot","colgroup","caption","th","optgroup","rtypenamespace","handleObjIn","eventHandle","t","handleObj","handlers","namespaces","origType","elemData","create","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","Event","enumerable","originalEvent","writable","load","noBubble","click","beforeunload","returnValue","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","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","blur","focusMappedHandler","documentMode","simulate","attaches","dataHolder","mouseenter","mouseleave","pointerenter","pointerleave","related","rnoInnerhtml","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","opener","getComputedStyle","swap","old","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","position","scrollboxSizeVal","offsetWidth","measure","round","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","pixelPosition","reliableMarginLeft","scrollboxSize","table","trChild","trStyle","parseInt","borderTopWidth","borderBottomWidth","offsetHeight","rdisplayswap","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","animationIterationCount","aspectRatio","borderImageSlice","columnCount","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","order","orphans","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeMiterlimit","strokeOpacity","origName","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","left","margin","padding","border","suffix","expanded","parts","propHooks","eased","pos","step","scrollTop","scrollLeft","linear","p","swing","cos","PI","rrun","tweener","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","attrNames","getter","lowercaseName","rfocusable","rclickable","removeProp","propFix","tabindex","addClass","classNames","curValue","finalValue","removeClass","toggleClass","stateVal","isValidValue","hasClass","rreturn","valHooks","optionSet","rquery","parseXML","parserErrorElem","DOMParser","parseFromString","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","triggerHandler","rCRLF","rsubmitterTypes","rsubmittable","param","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rlocalProtocol","rnoContent","rprotocol","allTypes","originAnchor","active","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","json","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","status","nativeStatusText","headers","success","modified","statusText","timeoutTimer","transport","responseHeadersString","ifModified","cacheURL","callbackContext","statusCode","fireGlobals","globalEventContext","completeDeferred","responseHeaders","urlAnchor","uncached","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","overrideMimeType","abort","finalText","crossDomain","host","hasContent","beforeSend","send","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","params","animated","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","unbind","delegate","undelegate","hover","fnOver","fnOut","rtrim","proxy","holdReady","hold","parseJSON","isNumeric","isNaN","_jQuery","_$","$","noConflict","g","Function","eval","__webpack_exports__","_classCallCheck","instance","Constructor","d","activityLoggerService","__WEBPACK_IMPORTED_MODULE_0_axios__","__WEBPACK_IMPORTED_MODULE_0_axios___default","_createClass","defineProperties","descriptor","protoProps","staticProps","ActivityLoggerService","client","axios","baseURL","post","setContentTypeIfUnset","utils","normalizeHeaderName","DEFAULT_CONTENT_TYPE","defaults","adapter","transformRequest","stringify","transformResponse","xsrfCookieName","xsrfHeaderName","maxContentLength","validateStatus","common","defaultSetTimout","defaultClearTimeout","runTimeout","fun","cachedSetTimeout","runClearTimeout","marker","cachedClearTimeout","cleanUpNextTick","draining","currentQueue","queueIndex","drainQueue","Item","nextTick","title","browser","env","argv","version","versions","addListener","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","Timeout","clearFn","_id","_clearFn","setInterval","clearInterval","close","unref","ref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","setImmediate","clearImmediate","decimalPlaces","getParameterByName","regex","decodeURIComponent","settle","buildURL","parseHeaders","isURLSameOrigin","createError","config","Promise","requestData","request","auth","Authorization","btoa","paramsSerializer","responseURL","responseData","cookies","xsrfValue","withCredentials","read","onDownloadProgress","onUploadProgress","upload","cancelToken","cancel","enhanceError","__CANCEL__","Cancel","isUndef","isDef","isTrue","isFalse","isPrimitive","_toString","isRegExp","isValidArrayIndex","floor","isPromise","replacer","__v_isRef","toNumber","makeMap","expectsLowerCase","remove$2","polyfillBind","ctx","boundFn","_length","nativeBind","_from","toObject","res","c","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","every","getTime","keysA","keysB","looseIndexOf","called","hasChanged","x","y","isReserved","def","parsePath","path","bailRE","segments","isNative","setCurrentInstance","vm","currentInstance","_scope","createTextVNode","VNode","cloneVNode","vnode","cloned","elm","componentOptions","asyncFactory","ns","isStatic","isComment","fnContext","fnOptions","fnScopeId","asyncMeta","isCloned","pushTarget","targetStack","Dep","popTarget","toggleObserving","shouldObserve","observe","shallow","ssrMockReactivity","__ob__","Observer","isServerRendering","isExtensible","__v_skip","isRef","defineReactive","customSetter","mock","observeEvenIfShallow","dep","property","getOwnPropertyDescriptor","NO_INITIAL_VALUE","childOb","depend","dependArray","newVal","isReadonly","ob","_isVue","vmCount","del","shallowReactive","makeReactive","isReactive","isShallow","__v_isShallow","__v_isReadonly","r","proxyWithRefUnwrap","oldValue","createFnInvoker","invoker","invokeWithErrorHandling","updateListeners","oldOn","createOnceHandler","normalizeEvent","capture","passive","mergeVNodeHook","hookKey","wrappedHook","oldHook","merged","extractPropsFromVNodeData","propOptions","hyphenate","checkProp","preserve","simpleNormalizeChildren","normalizeChildren","normalizeArrayChildren","isTextNode","nestedIndex","lastIndex","_isVList","createElement$1","normalizationType","alwaysNormalize","ALWAYS_NORMALIZE","_createElement","createEmptyVNode","scopedSlots","default","SIMPLE_NORMALIZE","$vnode","getTagNamespace","isReservedTag","parsePlatformTagName","pre","resolveAsset","$options","createComponent","applyNS","registerDeepBindings","force","child","traverse","class","renderList","render","hasSymbol","renderSlot","fallbackRender","bindObject","scopedSlotFn","$scopedSlots","$slots","slot","$createElement","resolveFilter","identity","isKeyNotMatch","expect","actual","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","keyCodes","bindObjectProps","asProp","isSync","isReservedAttribute","mustUseProp","domProps","camelizedKey","camelize","hyphenatedKey","$event","renderStatic","isInFor","_staticTrees","tree","staticRenderFns","_renderProxy","_c","markStatic$1","markOnce","isOnce","markStaticNode","bindObjectListeners","existing","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","$stable","$key","bindDynamicKeys","baseObj","prependModifier","symbol","installRenderHelpers","_o","_n","_s","_l","_t","_q","_m","_f","_k","_b","_v","_e","_u","_g","_d","_p","resolveSlots","slots","name_1","name_2","isWhitespace","isAsyncPlaceholder","normalizeScopedSlots","ownerVm","normalSlots","prevScopedSlots","hasNormalSlots","isStable","_normalized","emptyObject","$hasNormal","key_1","normalizeScopedSlot","key_2","proxyNormalSlot","normalized","initSetup","_setupContext","createSetupContext","setupResult","_props","_setupState","__sfc","_setupProxy","_attrsProxy","syncSetupProxy","$attrs","_listenersProxy","$listeners","initSlotsProxy","bind$1","$emit","expose","exposed","from","changed","defineProxyAttr","_slotsProxy","syncSetupSlots","initRender","_vnode","parentVnode","_parentVnode","renderContext","_renderChildren","$parent","parentData","_parentListeners","ensureCtor","comp","__esModule","toStringTag","createAsyncPlaceholder","resolveAsyncComponent","baseCtor","errorComp","resolved","currentRenderingInstance","owners","loading","loadingComp","owners_1","sync_1","timerLoading_1","timerTimeout_1","$on","forceRender_1","renderCompleted","$forceUpdate","reject_1","reason","res_1","component","getFirstComponentChild","initEvents","_events","_hasHookEvent","updateComponentListeners","add$1","target$1","remove$1","$off","createOnceHandler$1","_target","onceHandler","oldListeners","recordEffectScope","effect","activeEffectScope","effects","getCurrentScope","setActiveInstance","prevActiveInstance","activeInstance","initLifecycle","abstract","$children","$root","$refs","_provided","_watcher","_inactive","_directInactive","_isMounted","_isDestroyed","_isBeingDestroyed","mountComponent","hydrating","$el","callHook$1","updateComponent","_update","_render","watcherOptions","Watcher","preWatchers","_preWatchers","updateChildComponent","propsData","renderChildren","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","prevVNode","prevListeners","propKeys","_propKeys","validateProp","isInInactiveTree","activateChildComponent","direct","deactivateChildComponent","setContext","prevInst","prevScope","info","resetSchedulerState","index$1","activatedChildren","waiting","flushing","flushSchedulerQueue","currentFlushTimestamp","getNow","watcher","sortCompareFn","activatedQueue","updatedQueue","callActivatedHooks","callUpdatedHooks","cleanupDeps","devtools","queueActivatedComponent","queueWatcher","noRecurse","doWatch","cb","_a","immediate","flush","onTrack","onTrigger","forceTrigger","isMultiSource","some","WATCHER_GETTER","cleanup","WATCHER","onCleanup","baseGetter_1","onStop","WATCHER_CLEANUP","WATCHER_CB","lazy","INITIAL_WATCHER_VALUE","newValue","update","$once","resolveProvided","parentProvides","handleError","errorCaptured","globalHandleError","_handled","errorHandler","logError","inBrowser","flushCallbacks","pending","copies","callbacks","_resolve","timerFunc","createLifeCycle","hookName","injectHook","mergeLifecycleHook","_traverse","seenObjects","clear","seen","isA","isFrozen","depId","sourceKey","sharedPropertyDefinition","initState","initProps$1","methods","initMethods","initData","initComputed$1","watch","nativeWatch","initWatch","propsOptions","isRoot","watchers","_computedWatchers","isSSR","userDef","computedWatcherOptions","defineComputed","shouldCache","createComputedGetter","createGetterInvoker","dirty","evaluate","createWatcher","expOrFn","$watch","initProvide","provideOption","provide","provided","Reflect","ownKeys","initInjections","resolveInject","inject","provideKey","provideDefault","initInternalComponent","vnodeComponentOptions","_componentTag","resolveConstructorOptions","super","superOptions","modifiedOptions","resolveModifiedOptions","extendOptions","mergeOptions","components","latest","sealed","sealedOptions","FunctionalRenderContext","contextVm","_this","_original","isCompiled","_compiled","needNormalization","injections","_scopeId","createFunctionalComponent","mergeProps","cloneAndMarkFunctionalResult","vnodes","getComponentName","__name","_base","cid","model","transformModel","functional","nativeOn","installComponentHooks","createComponentInstanceForVnode","_isComponent","inlineTemplate","hooksToMerge","toMerge","componentVNodeHooks","_merged","mergeHook","f1","f2","mergeData","recursive","toVal","fromVal","mergeDataOrFn","parentVal","childVal","instanceData","defaultData","dedupeHooks","mergeAssets","normalizeProps","normalizeInject","normalizeDirectives$1","dirs","directives","mergeField","strat","strats","defaultStrat","extends","mixins","warnMissing","assets","camelizedId","PascalCaseId","capitalize","absent","booleanIndex","getTypeIndex","Boolean","stringIndex","getPropDefaultValue","prevShouldObserve","getType","functionTypeCheckRE","isSameType","expectedTypes","Vue","_init","initUse","use","plugin","installedPlugins","_installedPlugins","install","initMixin","mixin","initExtend","Super","SuperId","cachedCtors","_Ctor","Sub","initProps","initComputed","ASSET_TYPES","Comp","initAssetRegisters","definition","_getComponentName","pruneCache","keepAliveInstance","entry","pruneCacheEntry","componentInstance","$destroy","genClassForVnode","childNode","mergeClassData","renderClass","staticClass","dynamicClass","stringifyClass","stringifyArray","stringifyObject","stringified","isSVG","isUnknownElement","unknownElementCache","HTMLUnknownElement","HTMLElement","query","tagName","multiple","createElementNS","namespaceMap","createComment","newNode","referenceNode","setTextContent","setStyleScope","scopeId","registerRef","isRemoval","refValue","$refsValue","isFor","refInFor","_isString","_isRef","refs","includes","setSetupRef","sameVnode","sameInputType","typeA","typeB","isTextInputType","createKeyToOldIdx","beginIdx","endIdx","updateDirectives","oldVnode","oldDir","isCreate","emptyNode","isDestroy","oldDirs","normalizeDirectives","newDirs","dirsWithInsert","dirsWithPostpatch","oldArg","callHook","componentUpdated","inserted","callInsert","modifiers","emptyModifiers","getRawDirName","setupDef","rawName","updateAttrs","inheritAttrs","oldAttrs","_v_attr_proxy","setAttr","isIE","isEdge","isXlink","removeAttributeNS","xlinkNS","getXlinkProp","isEnumeratedAttr","isInPre","baseSetAttr","isBooleanAttr","isFalsyAttrValue","convertEnumeratedValue","setAttributeNS","isIE9","__ieph","blocker_1","updateClass","oldData","cls","transitionClass","_transitionClasses","_prevClass","parseFilters","exp","pushFilter","lastFilterIndex","expression","inSingle","inDouble","inTemplateString","inRegex","curly","square","paren","charAt","validDivisionCharRE","wrapFilter","baseWarn","range","pluckModuleFunction","modules","dynamic","rangeSetItem","plain","addAttr","dynamicAttrs","addRawAttr","attrsMap","attrsList","addDirective","isDynamicArg","prependModifierMarker","addHandler","important","middle","native","nativeEvents","newHandler","getRawBindingAttr","rawAttrsMap","getBindingAttr","getStatic","dynamicValue","getAndRemoveAttr","staticValue","removeFromMap","getAndRemoveAttrByRegex","genComponentModel","number","valueExpression","assignment","genAssignmentCode","parseModel","lastIndexOf","expressionPos","expressionEndPos","eof","chr","isStringStart","parseString","parseBracket","inBracket","stringQuote","model$1","_warn","warn$1","genSelect","genCheckboxModel","genRadioModel","genDefaultModel","valueBinding","trueValueBinding","falseValueBinding","selectedVal","needCompositionGuard","RANGE_TOKEN","normalizeEvents","event_1","CHECKBOX_RADIO_TOKEN","change","useMicrotaskFix","attachedTimestamp_1","original_1","_wrapper","supportsPassive","updateDOMListeners","updateDOMProps","oldProps","_value","strCur","shouldUpdateValue","svgContainer","svg","checkVal","composing","isNotInFocusAndDirty","isDirtyWithModifiers","notInFocus","_vModifiers","normalizeStyleData","normalizeStyleBinding","staticStyle","bindingStyle","parseStyleText","getStyle","checkChild","styleData","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","setProp","classList","whitespaceRE$1","tar","resolveTransition","autoCssTransition","nextFrame","raf","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","expectedType","getTransitionInfo","propCount","TRANSITION","transitionEndEvent","animationEndEvent","ended","onEnd","transitionDelays","transitionProp","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationProp","animationDurations","animationTimeout","ANIMATION","hasTransform","transformRE","delays","durations","toMs","Number","enter","toggleDisplay","_leaveCb","cancelled","transition","_enterCb","enterClass","enterToClass","enterActiveClass","appearClass","appearToClass","appearActiveClass","beforeEnter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","transitionNode","isAppear","isRootInsert","startClass","activeClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","pendingNode","_pending","isValidDuration","leave","rm","performLeave","beforeLeave","leaveClass","leaveActiveClass","leaveToClass","explicitLeaveDuration","afterLeave","leaveCancelled","delayLeave","invokerFns","_enter","setSelected","actuallySetSelected","isMultiple","getValue","hasNoMatchingOption","o","onCompositionStart","onCompositionEnd","createEvent","initEvent","dispatchEvent","locateNode","getRealChild","compOptions","extractTransitionData","placeholder","h","rawChild","hasParentTransition","isSameChild","oldChild","callPendingCbs","_moveCb","recordPosition","newPos","applyTranslation","oldPos","dx","dy","moved","transform","WebkitTransform","transitionDuration","parseText","delimiters","tagRE","buildRegex","defaultTagRE","tokenValue","rawTokens","transformNode$1","classBinding","genData$2","transformNode","styleBinding","genData$1","decodeAttr","shouldDecodeNewlines","re","encodedAttrWithNewLines","encodedAttr","decodingMap","advance","substring","parseStartTag","startTagOpen","startTagClose","dynamicArgAttribute","attribute","unarySlash","handleStartTag","expectHTML","lastTag","isNonPhrasingTag","parseEndTag","canBeLeftOpenTag","unary","isUnaryTag","shouldDecodeNewlinesForHref","lowerCasedTag","lowerCasedTagName","no","isPlainTextElement","endTagLength_1","stackedTag_1","reStackedTag","reCache","rest","all","endTag","shouldIgnoreFirstNewline","chars","textEnd","comment","commentEnd","shouldKeepComment","conditionalComment","conditionalEnd","doctypeMatch","doctype","endTagMatch","curIndex","startTagMatch","createASTElement","makeAttrsMap","template","closeElement","element","trimEndingWhitespace","inVPre","processed","processElement","if","elseif","else","addIfCondition","block","currentParent","forbidden","processIfConditions","slotScope","slotTarget","platformIsPreTag","inPre","postTransforms","lastNode","isPreTag","platformMustUseProp","platformGetTagNamespace","maybeComponent","transforms","preTransforms","preserveWhitespace","whitespaceOption","comments","outputSourceRange","guardIESVGBug","isForbiddenTag","processPre","processRawAttrs","processFor","processIf","processOnce","isTextTag","decodeHTMLCached","lineBreakRE","whitespaceRE","processKey","processRef","processSlotContent","processSlotOutlet","processComponent","processAttrs","checkInFor","parseFor","inMatch","forAliasRE","for","alias","stripParensRE","iteratorMatch","forIteratorRE","iterator1","iterator2","findPrevElement","condition","ifConditions","slotTargetDynamic","slotBinding","slotRE","getSlotName","emptySlotScopeToken","name_3","slotContainer_1","dynamicArgRE","slotName","syncGen","isDynamic","dirRE","hasBindings","parseModifiers","modifierRE","bindRE","camel","sync","onRE","argMatch","argRE","ret_1","ieNSBug","ieNSPrefix","preTransformNode","typeBinding","ifCondition","ifConditionExtra","hasElse","elseIfCondition","branch0","cloneASTElement","branch1","branch2","optimize","isStaticKey","genStaticKeysCached","staticKeys","isPlatformReservedTag","markStatic","markStaticRoots","genStaticKeys","static","staticInFor","staticRoot","isBuiltInTag","isDirectChildOfTemplateFor","genHandlers","staticHandlers","dynamicHandlers","handlerCode","genHandler","isMethodPath","simplePathRE","isFunctionExpression","fnExpRE","isFunctionInvocation","fnInvokeRE","genModifierCode","modifierCode","modifiers_1","genGuard","keyModifier","genKeyFilter","genFilterCode","keyVal","keyName","keyNames","wrapListeners","wrapData","generate","ast","CodegenState","genElement","staticProcessed","genStatic","onceProcessed","genOnce","forProcessed","genFor","ifProcessed","genIf","genSlot","genComponent","genData","bindings","__isScriptSetup","checkBindingType","genChildren","camelName","PascalName","checkType","fromConst","fromMaybeRef","originalPreState","parent_1","onceId","altGen","altEmpty","genIfConditions","conditions","genTernaryExp","altHelper","genDirectives","dataGenFns","genProps","genScopedSlots","genInlineTemplate","needRuntime","hasRuntime","gen","inlineRenderFns","containsSlotChild","needsKey","parent_2","generatedSlots","genScopedSlot","isLegacySyntax","reverseProxy","checkSkip","altGenElement","altGenNode","el_1","normalizationType_1","getNormalizationType","gen_1","genNode","needsNormalization","genComment","genText","transformSpecialNewlines","componentName","dynamicProps","createFunction","errors","createCompileToFunctionFn","fnGenErrors","getShouldDecode","getOuterHTML","outerHTML","freeze","camelizeRE","hyphenateRE","SSR_ATTR","LIFECYCLE_HOOKS","optionMergeStrategies","silent","productionTip","performance","warnHandler","ignoredElements","isReservedAttr","_lifecycleHooks","unicodeRegExp","hasProto","UA","userAgent","isIOS","isFF","_isServer","_Set","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","Set","SuppressedError","uid$2","pendingCleanupDeps","subs","addSub","sub","removeSub","addDep","arrayProto","arrayMethods","observeArray","arrayKeys","getOwnPropertyNames","mockDep","__proto__","RefFlag","EffectScope","detached","cleanups","scopes","currentEffectScope","fromParent","performance_1","isUsingMicroTask","p_1","MutationObserver","counter_1","observer","textNode_1","characterData","uid$1","isRenderWatcher","_vm","user","deps","newDeps","depIds","newDepIds","keepAlive","mountedNode","prepatch","$mount","destroy","warn$2","_uid","_self","dataDef","propsDef","$set","$delete","hookRE","i_1","cbs","prevEl","prevVnode","restoreActiveInstance","__patch__","__vue__","wrapper","$nextTick","prevRenderInst","patternTypes","KeepAlive","include","exclude","cacheVNode","vnodeToCache","keyToCache","created","destroyed","mounted","updated","builtInComponents","configDef","util","delete","observable","ssrContext","acceptValue","isValidContentEditableValue","math","isHTMLTag","nodeOps","directives$1","baseModules","klass$1","listDelimiter","propertyDelimiter","cssVarRE","importantRE","normalizedName","normalize","vendorNames","style$1","hasTransition","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","activate","platformModules","modules$1","patch","backend","emptyNodeAt","createRmCb","childElm","removeNode","createElm","insertedVnodeQueue","parentElm","refElm","nested","ownerArray","setScope","createChildren","invokeCreateHooks","isReactivated","initComponent","reactivateComponent","pendingInsert","isPatchable","innerNode","i_2","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","removeAndInvokeRemoveHook","i_3","updateChildren","oldCh","newCh","removeOnly","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","patchVnode","findIdxInOld","i_5","hydrate","postpatch","invokeInsertHook","i_6","hasChildNodes","childrenMatch","i_7","fullInvoke","isRenderedModule","isInitialPatch","isRealElement","hasAttribute","oldElm","patchable","i_8","i_9","insert_1","i_10","vmodel","directive","_vOptions","prevOptions_1","curOptions_1","originalDisplay","__vOriginalDisplay","platformDirectives","transitionProps","mode","isNotTextNode","isVShowDirective","Transition","_leaving","oldRawChild","delayedLeave_1","moveClass","TransitionGroup","beforeMount","kept","prevChildren","rawChildren","transitionData","removed","hasMove","_reflow","propertyName","_hasMove","platformComponents","decoder","regexEscapeRE","klass","he","decode","ncname","qnameCapture","isIgnoreNewlineTag","baseOptions","reduce","esc","tab","space","up","down","prevent","ctrl","alt","meta","baseDirectives","cloak","createCompiler","baseCompile","finalOptions","tips","tip","compileToFunctions","idToTemplate","mount","startup","actiebanner","items","onscroll","innerHeight","TakeOverActivityLogger","DownloadActivityLogger","FAQActivityLogger","KeukenDetailActivityLogger","Sys","Application","add_load","clientWidth","onDocLoad","slick","fade","autoplay","autoplaySpeed","arrows","dots","appendDots","infinite","slidesToShow","slidesToScroll","responsive","breakpoint","matchHeight","byRow","asNavFor","variableWidth","focusOnSelect","centerMode","savvior","columns","popover","urlString","urlName","subItems","onclick","setupFilter","referrerURL","URL","referrer","pathname","hrefAttValue","AzureSearchBootstrapper","sender","require","createInstance","defaultConfig","Axios","instanceConfig","CancelToken","isCancel","promises","spread","interceptors","InterceptorManager","dispatchRequest","chain","interceptor","fulfilled","rejected","encode","serializedParams","toISOString","ignoreDuplicateOf","line","substr","resolveURL","msie","urlParsingNode","search","hostname","port","originURL","requestURL","write","expires","domain","secure","cookie","toGMTString","eject","throwIfCancellationRequested","throwIfRequested","transformData","isAbsoluteURL","combineURLs","relativeURL","executor","resolvePromise","getActualBoundingClientRect","boundingRect","k","_frameElement","frameElement","frameRect","bottom","getScrollParents","computedStyle","_style","removeUtilElements","zeroElement","getBounds","docEl","origin","getOrigin","scrollWidth","scrollHeight","clientTop","clientLeft","clientHeight","getOffsetParent","getScrollBarSize","_scrollBarSize","inner","outer","pointerEvents","widthContained","widthScroll","out","getClassName","setClassName","SVGAnimatedString","baseVal","updateClasses","_inherits","subClass","superClass","setPrototypeOf","within","addOffset","_len","offsets","_ref","offsetToPx","size","getBoundingRect","tether","scrollParents","innerWidth","BOUNDS_FORMAT","side","TetherBase","uniqueId","zeroPosCache","Evented","_bindings$event$i","Utils","_slicedToArray","sliceIterator","_arr","_get","_x6","_x7","_x8","_again","receiver","desc","_TetherBase$Utils","transformKey","tethers","lastCall","lastDuration","pendingTimeout","min","MIRROR_LR","center","MIRROR_TB","OFFSET_MAP","autoToFixedAttachment","attachment","relativeToAttachment","attachmentToOffset","parseOffset","_value$split","_value$split2","parseAttachment","TetherClass","_Evented","history","setOptions","initialize","classes","classPrefix","_this2","targetOffset","targetAttachment","_options","targetModifier","addTargetClasses","enable","bounds","hasBottomScroll","scrollBottom","borderLeftWidth","fitAdj","pow","scrollPercentage","_cache","_this3","_this4","_this5","elementAttach","targetAttach","_this6","sides","_addAttachClasses","_this7","flushChanges","clearCache","updateAttachClasses","elementPos","lastSize","_lastSize","targetPos","getTargetBounds","targetSize","manualOffset","manualTargetOffset","_module2","scrollbarSize","page","viewport","parentElement","optimizations","moveElement","offsetPosition","offsetParentStyle","offsetParentSize","offsetBorder","move","_this8","same","found","point","transcribe","_same","_pos","gpu","yPos","xPos","devicePixelRatio","bodyElement","offsetParentIsBody","currentNode","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","writeCSS","Tether","constraints","targetHeight","targetWidth","allClasses","constraint","outOfBoundsClass","pinnedClass","addClasses","tAttachment","eAttachment","pin","changeAttachX","changeAttachY","_attachment$split","_attachment$split2","pinned","oob","oobClass","abutted","targetPosSide","shiftTop","shiftLeft","_shift","_shift2","Popper","_interopDefaultLegacy","_defineProperties","_extends","assign","_inheritsLoose","_setPrototypeOf","getSpecialTransitionEndEvent","TRANSITION_END","$__default","transitionEndEmulator","Util","triggerTransitionEnd","allowedAttribute","allowedAttributeList","attrName","uriAttrs","SAFE_URL_PATTERN","DATA_URL_PATTERN","regExp","attrRegex","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","domParser","createdDocument","whitelistKeys","elName","attributeList","whitelistedAttributes","Popper__default","getUID","getSelectorFromElement","hrefAttr","getTransitionDurationFromElement","transitionDelay","floatTransitionDuration","floatTransitionDelay","reflow","supportsTransitionEnd","isElement","typeCheckConfig","configTypes","valueType","findShadowRoot","attachShadow","ShadowRoot","jQueryDetection","emulateTransitionEnd","JQUERY_NO_CONFLICT$a","Alert","_element","_proto","rootElement","_getRootElement","_triggerCloseEvent","_removeElement","dispose","closeEvent","_destroyElement","_jQueryInterface","$element","_handleDismiss","alertInstance","JQUERY_NO_CONFLICT$9","Button","shouldAvoidTriggerChange","triggerChangeEvent","addAriaPressed","avoidTriggerChange","initialButton","inputBtn","_button","NAME$8","EVENT_KEY$8","JQUERY_NO_CONFLICT$8","SELECTOR_INDICATORS","Default$7","keyboard","slide","pause","touch","DefaultType$7","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","maxTouchPoints","_pointerEvent","PointerEvent","MSPointerEvent","_addEventListeners","_slide","nextWhenVisible","cycle","_updateInterval","visibilityState","activeIndex","_getItemIndex","direction","_handleSwipe","absDeltax","abs","_keydown","_addTouchEventListeners","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","eventDirectionName","targetIndex","fromIndex","slideEvent","_setActiveIndicatorElement","indicators","nextIndicator","elementInterval","defaultInterval","directionalClassName","orderClassName","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","CLASS_NAME_ACTIVE$2","action","ride","_dataApiClickHandler","slideIndex","carousels","$carousel","NAME$7","JQUERY_NO_CONFLICT$7","SELECTOR_DATA_TOGGLE$3","Default$6","DefaultType$6","Collapse","_isTransitioning","_triggerArray","toggleList","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","actives","activesData","startEvent","_getDimension","setTransitioning","CLASS_NAME_COLLAPSE","capitalizedDimension","scrollSize","triggerArrayLength","$elem","isTransitioning","_getTargetFromElement","triggerArray","isOpen","$trigger","$target","NAME$6","JQUERY_NO_CONFLICT$6","REGEXP_KEYDOWN","ARROW_UP_KEYCODE","Default$5","flip","boundary","reference","popperConfig","DefaultType$5","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","isActive","_clearMenus","usePopper","showEvent","_getParentFromElement","referenceElement","_getPopperConfig","hideEvent","scheduleUpdate","Default","DefaultType","_getPlacement","$parentDropdown","placement","_getOffset","preventOverflow","boundariesElement","applyStyle","toggles","clickEvent","dropdownMenu","_dataApiKeydownHandler","EVENT_CLICK_DATA_API$2","JQUERY_NO_CONFLICT$5","SELECTOR_DIALOG","Default$4","backdrop","DefaultType$4","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","_hideModal","htmlElement","handleUpdate","_triggerBackdropTransition","hideEventPrevented","isModalOverflowing","modalTransitionDuration","modalBody","Node","ELEMENT_NODE","_enforceFocus","shownEvent","transitionComplete","_resetAdjustments","_resetScrollbar","_removeBackdrop","_this9","backdropTransitionDuration","callbackRemove","_backdropTransitionDuration","paddingLeft","paddingRight","_getScrollbarWidth","_this10","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","marginRight","calculatedMargin","scrollDiv","scrollbarWidth","_this11","ARIA_ATTRIBUTE_PATTERN","DefaultWhitelist","area","br","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","small","span","sup","strong","u","ul","NAME$4","JQUERY_NO_CONFLICT$4","BSCLS_PREFIX_REGEX$1","DISALLOWED_ATTRIBUTES","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","Default$3","fallbackPlacement","customClass","sanitize","DefaultType$3","Event$1","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","_setListeners","toggleEnabled","dataKey","DATA_KEY","_getDelegateConfig","_isWithActiveTrigger","_leave","getTipElement","EVENT_KEY","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","tipId","NAME","setContent","_getAttachment","addAttachmentClass","_getContainer","_fixTransition","prevHoverState","_cleanTipClass","getTitle","CLASS_PREFIX$1","setElementContent","CLASS_NAME_FADE$3","behavior","arrow","onCreate","originalPlacement","_handlePopperPlacementChange","onUpdate","eventIn","eventOut","_fixTitle","titleType","dataAttributes","$tip","tabClass","popperData","popper","initConfigAnimation","NAME$3","JQUERY_NO_CONFLICT$3","BSCLS_PREFIX_REGEX","Default$2","DefaultType$2","Popover","_Tooltip","_getContent","CLASS_PREFIX","CLASS_NAME_FADE$2","NAME$2","JQUERY_NO_CONFLICT$2","EVENT_SCROLL","SELECTOR_NAV_LINKS","SELECTOR_LIST_ITEMS","SELECTOR_DROPDOWN_ITEMS","Default$1","DefaultType$1","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","_getOffsetHeight","maxScroll","_activate","_clear","queries","$link","scrollSpys","scrollSpysLength","$spy","JQUERY_NO_CONFLICT$1","Tab","previous","listElement","itemSelector","hiddenEvent","activeElements","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","$this","JQUERY_NO_CONFLICT","autohide","Toast","_clearTimeout","_close","Scrollspy","microtaskDebounce","taskDebounce","scheduled","timeoutDuration","functionToCheck","getStyleComputedProperty","getParentNode","getScrollParent","_getStyleComputedProp","getReferenceNode","isIE11","isIE10","noOffsetParent","nextElementSibling","isOffsetContainer","getRoot","findCommonOffsetParent","element1","element2","DOCUMENT_POSITION_FOLLOWING","createRange","setStart","setEnd","commonAncestorContainer","element1root","getScroll","upperSide","scrollingElement","includeScroll","modifier","getBordersSize","axis","sideA","sideB","getSize","getWindowSizes","getClientRect","sizes","horizScrollbar","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","marginTop","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","isFixed","getFixedPositionOffsetParent","getBoundaries","boundaries","boundariesNode","_getWindowSizes","isPaddingNumber","getArea","computeAutoPlacement","refRect","rects","sortedAreas","filteredAreas","_ref2","computedPlacement","variation","getReferenceOffsets","getOuterSizes","marginBottom","getOppositePlacement","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","findIndex","runModifiers","ends","isDestroyed","arrowStyles","flipped","positionFixed","isCreated","isModifierEnabled","modifierName","getSupportedPropertyName","prefixes","upperProp","toCheck","willChange","disableEventListeners","removeOnDestroy","getWindow","attachToScrollParents","isBody","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","removeEventListeners","cancelAnimationFrame","setStyles","setAttributes","arrowElement","applyStyleOnLoad","modifierOptions","getRoundedOffsets","shouldRound","_data$offsets","noRound","referenceWidth","popperWidth","isVertical","isVariation","sameWidthParity","bothOddWidth","horizontalToInteger","verticalToInteger","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","isFirefox","prefixedProperty","invertTop","invertLeft","isModifierRequired","requestingName","requestedName","requesting","isRequired","_data$offsets$arrow","sideCapitalized","altSide","opSide","arrowElementSize","popperMarginSide","popperBorderSide","sideValue","getOppositeVariation","clockwise","counter","validPlacements","placementOpposite","flipOrder","BEHAVIORS","FLIP","CLOCKWISE","COUNTERCLOCKWISE","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","keepTogether","toValue","basePlacement","useHeight","fragments","frag","divider","splitRegex","ops","op","mergeWithPrevious","index2","transformProp","popperStyles","priority","escapeWithReference","secondary","shiftvariation","shiftOffsets","bound","subtractLength","isBrowser","longerTimeoutBrowsers","supportsMicroTasks","debounce","MSInputMethodContext","classCallCheck","createClass","placements","onLoad","Defaults","PopperUtils","MediaQueryDispatch","matchMedia","browserIsIncapable","MediaQuery","register","q","shouldDegrade","isUnconditional","unregister","removeHandler","mql","listener","assess","QueryHandler","constuctor","qh","equals","deferSetup","initialised","unmatch","Slick","dataSettings","accessibility","adaptiveHeight","appendArrows","prevArrow","nextArrow","centerPadding","cssEase","customPaging","slider","dotsClass","draggable","edgeFriction","focusOnChange","initialSlide","lazyLoad","mobileFirst","pauseOnHover","pauseOnFocus","pauseOnDotsHover","respondTo","rows","rtl","slidesPerRow","swipe","swipeToSlide","touchMove","touchThreshold","useCSS","useTransform","vertical","verticalSwiping","waitForAnimate","initials","animating","dragging","autoPlayTimer","currentDirection","currentLeft","currentSlide","$dots","listWidth","listHeight","loadIndex","$nextArrow","$prevArrow","scrolling","slideCount","slideWidth","$slideTrack","$slides","sliding","slideOffset","swipeLeft","swiping","$list","touchObject","transformsEnabled","unslicked","activeBreakpoint","animType","animProp","breakpoints","breakpointSettings","cssTransitions","focussed","interrupted","paused","positionProp","rowCount","shouldClick","$slider","$slidesCache","transformType","transitionType","visibilityChange","windowWidth","windowTimer","mozHidden","webkitHidden","autoPlay","autoPlayClear","autoPlayIterator","changeSlide","clickHandler","selectHandler","setPosition","swipeHandler","dragHandler","keyHandler","instanceUid","htmlExpr","registerBreakpoints","activateADA","addSlide","slickAdd","markup","addBefore","unload","reinit","animateHeight","outerHeight","animateSlide","targetLeft","animProps","animStart","applyTransition","disableTransition","getNavTarget","slideHandler","slideTo","buildArrows","buildDots","dot","getDotCount","buildOut","setupInfinite","updateDots","setSlideClasses","buildRows","newSlides","numOfSlides","originalSlides","slidesPerSection","row","checkResponsive","forceUpdate","targetBreakpoint","respondToWidth","triggerBreakpoint","sliderWidth","unslick","dontAnimate","indexOffset","unevenOffset","checkNavigable","navigables","prevNavigable","getNavigableIndexes","cleanUpEvents","interrupt","cleanUpSlideEvents","orientationChange","resize","cleanUpRows","fadeSlide","fadeSlideOut","filterSlides","slickFilter","focusHandler","$sf","getCurrent","slickCurrentSlide","breakPoint","pagerQty","getLeft","verticalHeight","targetSlide","coef","verticalOffset","offsetLeft","outerWidth","getOption","slickGetOption","indexes","getSlick","getSlideCount","swipedSlide","centerOffset","goTo","slickGoTo","creation","setProps","startLoad","loadSlider","initializeEvents","updateArrows","initADA","numDotGroups","tabControlIndexes","slideControlIndex","ariaButtonControl","mappedSlideIndex","initArrowEvents","initDotEvents","initSlideEvents","initUI","loadImages","imagesScope","imageSource","imageSrcSet","imageSizes","imageToLoad","loadRange","cloneRange","rangeStart","rangeEnd","prevSlide","nextSlide","progressiveLazyLoad","slickNext","slickPause","play","slickPlay","postSlide","slickPrev","tryCount","$imgsToLoad","initializing","lastVisibleIndex","currentBreakpoint","responsiveSettings","windowDelay","removeSlide","slickRemove","removeBefore","removeAll","setCSS","positionProps","setDimensions","setFade","setHeight","setOption","slickSetOption","bodyStyle","WebkitTransition","MozTransition","msTransition","OTransform","perspectiveProperty","webkitPerspective","MozTransform","MozPerspective","webkitTransform","msTransform","allSlides","remainder","evenCoef","infiniteCount","targetElement","animSlide","oldSlide","slideLeft","navTarget","swipeDirection","xDist","yDist","swipeAngle","startX","curX","startY","curY","atan2","swipeEnd","swipeLength","edgeHit","minSwipe","fingerCount","swipeStart","swipeMove","positionOffset","verticalSwipeLength","sqrt","unfilterSlides","slickUnfilter","fromBreakpoint","_previousResizeWidth","_updateTimeout","_parse","_rows","$elements","lastTop","$that","lastRow","_parseOptions","_groups","group","_apply","_throttle","_maintainScroll","_beforeUpdate","_afterUpdate","htmlHeight","$hiddenParents","$row","verticalPadding","_applyDataApi","groupId","throttle","a0","enquire","addToDataset","forceCompat","dataset","isEmpty","CustomEvent","initCustomEvent","lastTime","vendors","currTime","timeToCall","Grid","filtered","columnClasses","selectNodeContents","extractContents","addColumns","childSelector","column","rowsFragment","columnsFragment","columnsItems","filterItems","nodeList","removeColumns","sortedRows","columnIndex","rowIndex","redraw","newOptions","restoreFiltered","allItems","restore","addItems","grid","prepareElement","newEl","NodeList","GridHandler","queryHandlers","grids","mq","constructHandler","gridSetup","gridMatch","GridDispatch","total","gridSelector","task","tasksByHandle","nextHandle","registerImmediate","runIfPresent","currentlyRunningATask","attachTo","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","messagePrefix","onGlobalMessage","attachEvent","MessageChannel","channel","port1","port2","applyMixin","vuexInit","store","$store","beforeCreate","devtoolPlugin","devtoolHook","_devtoolHook","targetState","replaceState","subscribe","mutation","subscribeAction","forEachValue","partial","targetModule","newModule","getChild","genericSubscribe","resetStore","hot","_actions","_mutations","_wrappedGetters","_modulesNamespaceMap","installModule","_modules","resetStoreVM","oldVm","getters","_makeLocalGettersCache","wrappedGetters","$$state","strict","enableStrictMode","_withCommit","rootState","getNamespace","namespaced","parentState","getNestedState","moduleName","local","makeLocalContext","forEachMutation","registerMutation","forEachAction","registerAction","forEachGetter","registerGetter","forEachChild","noNamespace","_type","_payload","unifyObjectStyle","payload","commit","makeLocalGetters","gettersProxy","splitPos","localType","rootGetters","rawGetter","_Vue","normalizeMap","isValidMap","normalizeNamespace","getModuleByNamespace","helper","Module","rawModule","runtime","_children","_rawModule","rawState","prototypeAccessors","addChild","hasChild","actions","mutations","ModuleCollection","rawRootModule","this$1","rawChildModule","isRegistered","Store","plugins","_committing","_actionSubscribers","_subscribers","_watcherVM","prototypeAccessors$1","registerModule","preserveState","unregisterModule","hasModule","hotUpdate","committing","states","vuex","_run","mergeOpts","fancybox","getInstance","stuff","closeExisting","loop","gutter","preventCaptionOverlap","infobar","smallBtn","toolbar","idleTime","protect","modal","preload","iframe","tpl","video","format","autoStart","defaultType","animationEffect","animationDuration","zoomOpacity","transitionEffect","slideClass","baseClass","baseTpl","spinnerTpl","errorTpl","btnTpl","download","arrowLeft","arrowRight","parentEl","hideScrollbar","autoFocus","backFocus","trapFocus","fullScreen","momentum","media","slideShow","thumbs","hideOnClose","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","isQuery","requestAFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","cancelAFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","oCancelAnimationFrame","transitionEnd","transitions","OTransition","forceRedraw","opts1","opts2","rez","inViewport","elemCenter","elementFromPoint","FancyBox","isMobile","currIndex","prevIndex","prevPos","currPos","firstRun","slides","addContent","$container","buttonStr","firstItem","firstItemOpts","translate","jumpTo","$item","srcParts","$orig","$thumb","thumb","updateControls","Thumbs","addEvents","removeEvents","isScaledDown","requestId","stage","keycode","idleSecondsCounter","isIdle","showControls","idleInterval","isDragging","hideControls","isMoved","slidePos","stagePos","groupLen","isClosing","isAnimating","createSlide","forcedDuration","$slide","loadSlide","getTranslate","isComplete","leftPos","setTranslate","isLoaded","revealContent","updateSlide","scaleToActual","imgPos","posX","posY","scaleX","scaleY","$content","canvasWidth","canvasHeight","newImgWidth","newImgHeight","hasError","updateCursor","SlideShow","scaleToFit","getFitPos","maxHeight","minRatio","ratio","adjustCaption","adjustLayout","navigation","centerSlide","nextWidth","nextHeight","canPan","isZoomable","Guestures","fitPos","ajaxLoad","isLoading","setImage","setIframe","videoFormat","setError","showLoading","textStatus","ghost","$img","$image","checkSrcset","$ghost","setBigImage","pxRatio","srcset","postfix","resolveImageSlideSize","naturalWidth","naturalHeight","hideLoading","imgWidth","imgHeight","$iframe","$contents","$body","frameWidth","frameHeight","ignore","isRevealed","$placeholder","$smallBtn","$spinner","$clone","preventOverlap","$caption","captionH","inlinePadding","disableLayoutFix","effectClassName","getThumbPos","thumbPos","btw","brw","bbw","blw","Document","exitFullscreen","webkitExitFullscreen","focusableItems","focusedItemIndex","focusableStr","isVisible","domRect","cleanUp","$focus","scrollX","scrollY","hasHiddenControls","andCaption","toggleControls","command","use3d","leaveAnimationName","callCallback","$pressed","youtube","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","p1","origSrc","contentSource","VideoAPILoader","loaded","vendor","onYouTubeIframeAPIReady","player","YT","Player","onStateChange","Vimeo","getPointerXY","distance","point2","point1","isClickable","atts","hasScrollbars","horizontal","isScrollable","$bg","bg","$stage","tapped","ontouchstart","isTouchDevice","realPoints","startPoints","canTap","isPanning","isSwiping","isZooming","isScrolling","distanceX","distanceY","contentLastPos","contentStartPos","sliderStartPos","centerPointStartX","centerPointStartY","percentageOfImageAtPinchPointX","percentageOfImageAtPinchPointY","startDistanceBetweenFingers","ontouchmove","ontouchend","newPoints","onSwipe","onPan","onZoom","angle","sliderLastPos","limitMovement","minTranslateX","minTranslateY","maxTranslateX","maxTranslateY","newOffsetX","newOffsetY","currentOffsetX","currentOffsetY","currentWidth","currentHeight","limitPosition","newWidth","newHeight","endDistanceBetweenFingers","pinchRatio","translateFromZoomingX","translateFromZoomingY","centerPointEndX","centerPointEndY","translateFromTranslatingX","translateFromTranslatingY","panning","zooming","endPoints","dMs","onTap","velocityX","velocityY","endPanning","endZooming","endSwiping","canAdvance","where","tapX","tapY","$button","$progress","keypress","fnMap","FullScreen","requestFullscreen","ALLOW_KEYBOARD_INPUT","exit","isFullscreen","fullscreenEnabled","fullscreenchange","FancyThumbs","$grid","escapeHtml","entityMap","share","currentHash","shareInstance","shareCurrent","parseUrl","gallery","triggerFromUrl","getGalleryID","origHash","hashTimer","hasCreatedHistory","back","fb","prevTime","deltaY","deltaX","wheelDelta","__WEBPACK_IMPORTED_MODULE_0__azureSearch_vm__","filterElementId","settingsElementId","facetSettingsElementId","rangeSlidersElementId","numRangeSlidersElementId","pageDataElementId","seoSettingsElementId","fltElId","setElId","facElId","rslElId","nrsElId","pgdElId","seoElId","settingsElement","facetSettingsElement","rangeSlidersElement","numRangeSlidersElement","pageDataElement","seoSettingsElement","facetSettings","rangeSliders","numRangeSliders","pageData","searchVM","numRangeFacets","seoSettings","azureSearchVM","searchSettings","vueSlider","rangeFacets","facetValueOverrides","searchText","facets","currentPage","tempRestorePage","checkedFacets","initialSearch","restoreFromStorage","noResults","searchApi","localStorageName","productsBlockBounds","scrollToTopTargetId","scrollToTopPos","isScrollToTopClicked","scrollDelay","defaultSearchRequest","orderBy","setScrollPosition","calculateProductsBlockBounds","secondResponse","secondError","maxPages","searchRequest","numPageRanges","numRanges","pageRanges","ranges","firstInRange","secondInRange","thirdInRange","previousRangeEnd","nextRangeStart","lastRange","currentPageRange","pointerEventPreviousPage","pointerEventNextPage","orderedFacets","facet","aParts","bParts","isProductItemsOutsideViewport","scroll","setFacetValueOverrides","overrides","foundFacetValue","setMinMaxValuesForRangeFacets","minvalue","minBy","f","maxvalue","maxBy","actualMinValue","actualMaxValue","rangeCallback","eventTargetId","facetClicked","resetFilters","changeQuery","hasSelectedASelectedFacetValue","facetKey","doHasASelectedFacetValue","getHighlight","highlight","createSearchRequest","azuresearch","AzureSearchRequest","predefinedfilter","facetfilters","GetFacetFilter","rangefilters","GetRangeFilter","ConcatFilters","executeSearch","setFacets","getAndUpdatePricesFromSystem","priceResponse","priceError","updateHistory","previousPage","nextPage","goToPage","pageNumber","getPaginatedUrlPreviousPage","getPaginatedUrlForPage","getPaginatedUrlNextPage","createQueryString","addToCart","AdviesprijsWeergeven","saveBeforeRedirect","ProductURL","skuid","SKUID","axiosClient","saveSettingsToLocalStorage","exception","skuIds","skuids","itemResponseData","changedValue","Price","price","storeObject","storeJSON","localStorage","setItem","boundsTop","targetRect","bodyRect","scrollToTop","itemAddedToCart","pushState","queryParams","vals","rangeFacet","getHasChanged","queryString","applyFiltersFromQueryString","urlSearchParams","queryCheckedFacets","keyVals","gui","kv","facetSetting","AzureSearchApi","field","rfsQueryParam","localStorageJSON","getItem","storedObject","removeItem","executeSearchOnLoad","beforeDestroy","startsWith","currentFacets","newFacets","difference","differenceBy","intersect","intersectionBy","inter","arFilters","facetValue","facetType","groupedFacets","groupBy","subFilter","stripLastAndOr","reAnd","reOr","trimEnd","AzureSearchApiSettings","searchServiceName","searchServiceAdminApiKey","searchServiceQueryApiKey","indexName","apiVersion","corsSettings","queryType","highlightPreTag","highlightPostTag","scoringProfile","requestBody","orderby","AzureSearchGui","showFacets","showSearchBar","Page","AzureSearchFacetDefinition","textTop","textBottom","tooltipText","facetMode","showMoreAfter","sliderSettings","AzureSearchSearchSettings","apiSettings","azureSearchRequest","getSearchRequestBody","arrayAggregator","iteratee","accumulator","arrayEach","arrayEachRight","arrayEvery","predicate","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","arrayPush","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiToArray","asciiWords","reAsciiWord","baseFindKey","eachFunc","baseFindIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","NAN","baseProperty","basePropertyOf","baseReduce","baseSortBy","comparer","baseTimes","baseToPairs","baseTrim","trimmedEndIndex","reTrimStart","baseUnary","baseValues","cacheHas","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","countHolders","escapeStringChar","stringEscapes","hasUnicode","reHasUnicode","hasUnicodeWord","reHasUnicodeWord","iteratorToArray","mapToArray","overArg","replaceHolders","PLACEHOLDER","setToArray","setToPairs","strictLastIndexOf","stringSize","unicodeSize","asciiSize","stringToArray","unicodeToArray","reWhitespace","reUnicode","unicodeWords","reUnicodeWord","LARGE_ARRAY_SIZE","CORE_ERROR_TEXT","FUNC_ERROR_TEXT","INVALID_TEMPL_VAR_ERROR_TEXT","HASH_UNDEFINED","MAX_MEMOIZE_SIZE","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","WRAP_BIND_FLAG","WRAP_BIND_KEY_FLAG","WRAP_CURRY_BOUND_FLAG","WRAP_CURRY_FLAG","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","WRAP_FLIP_FLAG","DEFAULT_TRUNC_LENGTH","DEFAULT_TRUNC_OMISSION","HOT_COUNT","HOT_SPAN","LAZY_FILTER_FLAG","LAZY_MAP_FLAG","INFINITY","MAX_SAFE_INTEGER","MAX_INTEGER","MAX_ARRAY_LENGTH","MAX_ARRAY_INDEX","HALF_MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","asyncTag","boolTag","dateTag","domExcTag","errorTag","funcTag","genTag","mapTag","numberTag","nullTag","objectTag","proxyTag","regexpTag","setTag","stringTag","symbolTag","undefinedTag","weakMapTag","weakSetTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reWrapComment","reWrapDetails","reSplitDetails","reForbiddenIdentifierChars","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsComboRange","rsComboMarksRange","rsBreakRange","rsMathOpRange","rsBreak","rsCombo","rsLower","rsMisc","rsFitz","rsRegional","rsSurrPair","rsUpper","rsMiscLower","reOptMod","rsModifier","rsOptJoin","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","rsMiscUpper","contextProps","templateCounter","typedArrayTags","cloneableTags","deburredLetters","htmlEscapes","htmlUnescapes","freeParseFloat","freeParseInt","freeGlobal","freeSelf","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","nodeIsArrayBuffer","nodeIsDate","nodeIsMap","isMap","nodeIsRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","deburrLetter","escapeHtmlChar","unescapeHtmlChar","runInContext","lodash","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","lazyClone","copyArray","lazyReverse","lazyValue","isArr","isRight","arrLength","getView","iteratees","iterLength","takeCount","nativeMin","baseWrapperValue","iterIndex","Hash","entries","hashClear","__data__","nativeCreate","hashDelete","hashGet","hashHas","hashSet","ListCache","listCacheClear","listCacheDelete","assocIndexOf","listCacheGet","listCacheHas","listCacheSet","MapCache","mapCacheClear","Map","mapCacheDelete","getMapData","mapCacheGet","mapCacheHas","mapCacheSet","SetCache","setCacheAdd","setCacheHas","Stack","stackClear","stackDelete","stackGet","stackHas","stackSet","pairs","arrayLikeKeys","inherited","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","baseClamp","arrayShuffle","assignMergeValue","baseAssignValue","objValue","baseAggregator","baseEach","baseAssign","copyObject","baseAssignIn","keysIn","baseAt","paths","lower","upper","baseClone","bitmask","customizer","isDeep","isFlat","isFull","initCloneArray","getTag","isFunc","cloneBuffer","initCloneObject","copySymbolsIn","copySymbols","initCloneByTag","stacked","subValue","keysFunc","getAllKeysIn","getAllKeys","baseConforms","baseConformsTo","baseDelay","baseDifference","isCommon","valuesLength","valuesIndex","baseEvery","baseExtremum","isSymbol","baseFill","toInteger","toLength","baseFilter","baseFlatten","isStrict","isFlattenable","baseForOwn","baseFor","baseForOwnRight","baseForRight","baseFunctions","baseGet","castPath","toKey","baseGetAllKeys","symbolsFunc","baseGetTag","symToStringTag","getRawTag","objectToString","baseGt","other","baseHas","baseHasIn","baseInRange","nativeMax","baseIntersection","arrays","othLength","othIndex","caches","maxLength","Infinity","baseInverter","baseInvoke","baseIsArguments","baseIsArrayBuffer","baseIsDate","baseIsEqual","baseIsEqualDeep","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","equalObjects","baseIsMap","baseIsMatch","matchData","noCustomizer","srcValue","baseIsNative","isMasked","reIsNative","toSource","baseIsRegExp","baseIsSet","baseIsTypedArray","isLength","baseIteratee","baseMatchesProperty","baseMatches","baseKeys","isPrototype","nativeKeys","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","baseMergeDeep","safeGet","mergeFunc","isTyped","isArrayLikeObject","cloneTypedArray","toPlainObject","baseNth","baseOrderBy","orders","getIteratee","compareMultiple","basePick","basePickBy","baseSet","basePropertyDeep","basePullAll","basePullAt","baseUnset","nativeFloor","nativeRandom","baseRange","nativeCeil","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","low","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","symbolToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castSlice","allocUnsafe","cloneArrayBuffer","arrayBuffer","byteLength","Uint8Array","cloneDataView","dataView","byteOffset","cloneRegExp","regexp","cloneSymbol","symbolValueOf","typedArray","compareAscending","valIsDefined","valIsReflexive","objCriteria","criteria","othCriteria","ordersLength","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","getSymbols","getSymbolsIn","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","createBaseEach","iterable","createBaseFor","createBind","isBind","createCtor","createCaseFirst","methodName","trailing","createCompounder","words","deburr","thisBinding","baseCreate","createCurry","arity","getHolder","createRecurry","createHybrid","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","thru","getFuncName","isLaziable","plant","partialsRight","holdersRight","argPos","ary","holdersCount","newHolders","isBindKey","reorder","isFlip","isAry","createInverter","toIteratee","createMathOperation","createOver","arrayFunc","createPadding","charsLength","createPartial","toFinite","createRelationalOperation","wrapFunc","isCurry","newHoldersRight","newPartials","newPartialsRight","newData","setData","setWrapToString","createRound","precision","nativeIsFinite","pair","createToPairs","createWrap","baseSetData","customDefaultsAssignIn","objectProto","customDefaultsMerge","customOmitClone","isPartial","arrStacked","othStacked","arrValue","othValue","compared","convert","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","flatten","realNames","otherFunc","isKeyable","getNative","isOwn","unmasked","nativeObjectToString","getWrapDetails","hasPath","hasFunc","getPrototype","insertWrapDetails","details","spreadableSymbol","maskSrcKey","srcBitmask","newBitmask","isCombo","otherArgs","oldArray","updateWrapDetails","shortOut","lastCalled","stamp","nativeNow","rand","funcToString","chunk","compact","drop","dropRight","dropRightWhile","dropWhile","fill","findLastIndex","flattenDeep","flattenDepth","fromPairs","separator","nativeJoin","pullAll","pullAllBy","pullAllWith","nativeReverse","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sortedUniq","sortedUniqBy","tail","take","takeRight","takeRightWhile","takeWhile","uniq","uniqBy","uniqWith","unzip","unzipWith","zipObject","zipObjectDeep","tap","wrapperChain","wrapperCommit","wrapperNext","wrapperToIterator","wrapperPlant","wrapperReverse","wrapped","wrapperValue","flatMap","flatMapDeep","flatMapDepth","forEachRight","baseEachRight","reduceRight","negate","sample","sampleSize","shuffle","curry","curryRight","invokeFunc","lastArgs","lastThis","lastInvokeTime","leadingEdge","timerId","timerExpired","leading","remainingWait","timeSinceLastCall","lastCallTime","timeSinceLastInvoke","timeWaiting","maxing","maxWait","shouldInvoke","trailingEdge","debounced","isInvoking","memoize","resolver","memoized","Cache","castArray","cloneWith","cloneDeep","cloneDeepWith","conformsTo","isBoolean","isEqual","isEqualWith","isError","isInteger","isMatch","isMatchWith","isMaskable","isNull","isNil","objectCtorString","isSafeInteger","isWeakMap","isWeakSet","symIterator","valueOf","isBinary","toSafeInteger","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","functions","functionsIn","mapKeys","mapValues","omitBy","pickBy","setWith","isArrLike","unset","updateWith","valuesIn","clamp","inRange","floating","upperFirst","endsWith","escapeRegExp","pad","strLength","padEnd","padStart","radix","nativeParseInt","repeat","limit","templateSettings","assignInWith","isEscaping","isEvaluating","imports","importsKeys","importsValues","interpolate","reDelimiters","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","attempt","toLower","toUpper","trimStart","omission","newEnd","unescape","cond","conforms","constant","defaultTo","matchesProperty","methodNames","oldDash","nthArg","propertyOf","stubArray","stubFalse","stubObject","stubString","stubTrue","times","toPath","idCounter","mean","meanBy","sum","sumBy","pick","funcProto","coreJsData","IE_PROTO","Buffer","objectCreate","propertyIsEnumerable","isConcatSpreadable","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","DataView","WeakMap","metaMap","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","baseSetToString","castRest","ctorString","quote","subString","differenceWith","intersection","intersectionWith","pull","pullAt","union","unionBy","unionWith","without","xor","xorBy","xorWith","zip","zipWith","wrapperAt","countBy","findLast","invokeMap","keyBy","partition","sortBy","bindKey","overArgs","funcsLength","partialRight","rearg","gte","lte","assignIn","assignWith","at","propsIndex","propsLength","defaultsDeep","mergeWith","invertBy","invoke","omit","toPairs","toPairsIn","word","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","bindAll","flow","flowRight","methodOf","over","overEvery","overSome","rangeRight","augend","addend","divide","dividend","divisor","multiply","multiplier","multiplicand","minuend","subtrahend","entriesIn","extendWith","eachRight","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","toJSON","webpackPolyfill","deprecate","injectStyle","__vue_styles__","Component","locals","addStylesClient","parentId","_isProduction","isProduction","addStylesToDom","newList","mayRemove","domStyle","stylesInDom","addStyle","createStyleElement","styleElement","ssrIdKey","isOldIE","styleIndex","singletonCounter","singletonElement","applyToSingletonTag","applyToTag","newObj","sourceMap","styleSheet","replaceText","cssNode","ssrId","hasDocument","DEBUG","textStore","replacement","listToStyles","newStyles","part","_h","flowDirection","disabledClass","stateClass","piecewiseLabel","wrapStyles","boolDisabled","disabledStyle","wrapClick","elemStyles","bgStyle","tooltipStatus","focusFlag","focusSlider","currentSlider","disabledArray","dotStyles","disabledDotStyles","sliderStyles","focusStyles","moveStart","tooltipDirection","tooltipStyles","formatter","formatting","piecewiseObj","piecewiseDotStyle","piecewiseStyle","piecewiseActiveStyle","label","piecewiseDotWrap","labelStyle","labelActiveStyle","isRange","processDragable","processClick","mergeFormatter","mergeFormatting","normalizeComponent","scriptExports","functionalTemplate","injectStyles","moduleIdentifier","shadowMode","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","_injectStyles","originalRender","lsName","objTakeOver","closed","sessionStorage","elKeukenDetail","logConfiguratorActivity","dataLayer","situation","findSelectedDownload","dataItemAttribute","faqTitle","innerText","polyfill","objectOrFunction","setScheduler","scheduleFn","customSchedulerFn","setAsap","asapFn","asap","useVertxTimer","vertxNext","useSetTimeout","globalSetTimeout","onFulfillment","onRejection","PROMISE_ID","makePromise","_state","invokeCallback","_result","resolve$1","selfFulfillment","cannotReturnOwn","tryThen","then$$1","fulfillmentHandler","rejectionHandler","handleForeignThenable","thenable","fulfill","_label","handleOwnThenable","FULFILLED","REJECTED","handleMaybeThenable","maybeThenable","publishRejection","_onerror","publish","PENDING","subscribers","settled","hasCallback","succeeded","initializePromise","nextId","validationError","Enumerator","race","reject$1","needsResolver","needsNew","P","promiseToString","cast","Promise$1","_isArray","scheduleFlush","browserWindow","browserGlobal","BrowserMutationObserver","WebKitMutationObserver","isNode","isWorker","Uint8ClampedArray","iterations","vertx","runOnLoop","runOnContext","_instanceConstructor","_remaining","_enumerate","_eachEntry","resolve$$1","_then","didError","_settledAt","_willSettleAt","enumerator","finally","_setScheduler","_setAsap","_asap"],"mappings":"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","file":"build.js","sourcesContent":["webpackJsonp([0],[\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar bind = __webpack_require__(9);\nvar isBuffer = __webpack_require__(20);\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim\n};\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n * jQuery JavaScript Library v3.7.1\n * https://jquery.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2023-08-28T13:37Z\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 trac-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 getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\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\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\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 version = \"3.7.1\",\n\n\trhtmlSuffix = /HTML$/i,\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\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\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\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 provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\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\n\t// Retrieve the text value of an array of DOM nodes\n\ttext: function( elem ) {\n\t\tvar node,\n\t\t\tret = \"\",\n\t\t\ti = 0,\n\t\t\tnodeType = elem.nodeType;\n\n\t\tif ( !nodeType ) {\n\n\t\t\t// If no nodeType, this is expected to be an array\n\t\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t\t// Do not traverse comment nodes\n\t\t\t\tret += jQuery.text( node );\n\t\t\t}\n\t\t}\n\t\tif ( nodeType === 1 || nodeType === 11 ) {\n\t\t\treturn elem.textContent;\n\t\t}\n\t\tif ( nodeType === 9 ) {\n\t\t\treturn elem.documentElement.textContent;\n\t\t}\n\t\tif ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\n\t\t// Do not include comment or processing instruction nodes\n\n\t\treturn ret;\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\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\tisXMLDoc: function( elem ) {\n\t\tvar namespace = elem && elem.namespaceURI,\n\t\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t\t// Assume HTML when documentElement doesn't yet exist, such as inside\n\t\t// document fragments.\n\t\treturn !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || \"HTML\" );\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 flat( 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( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\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}\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar pop = arr.pop;\n\n\nvar sort = arr.sort;\n\n\nvar splice = arr.splice;\n\n\nvar whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\n\nvar rtrimCSS = new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\n\n\n\n// Note: an element does not contain itself\njQuery.contains = function( a, b ) {\n\tvar bup = b && b.parentNode;\n\n\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE doesn't have `contains` on SVG.\n\t\ta.contains ?\n\t\t\ta.contains( bup ) :\n\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t) );\n};\n\n\n\n\n// CSS string/identifier serialization\n// https://drafts.csswg.org/cssom/#common-serializing-idioms\nvar rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n\nfunction fcssescape( ch, asCodePoint ) {\n\tif ( asCodePoint ) {\n\n\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\tif ( ch === \"\\0\" ) {\n\t\t\treturn \"\\uFFFD\";\n\t\t}\n\n\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t}\n\n\t// Other potentially-special ASCII characters get backslash-escaped\n\treturn \"\\\\\" + ch;\n}\n\njQuery.escapeSelector = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\n\n\n\nvar preferredDoc = document,\n\tpushNative = push;\n\n( function() {\n\nvar i,\n\tExpr,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\tpush = pushNative,\n\n\t// Local document vars\n\tdocument,\n\tdocumentElement,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\tmatches,\n\n\t// Instance-specific data\n\texpando = jQuery.expando,\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\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|\" +\n\t\t\"loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\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\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\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\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trleadingCombinator = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" +\n\t\twhitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\tID: new RegExp( \"^#(\" + identifier + \")\" ),\n\t\tCLASS: new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\tTAG: new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\tATTR: new RegExp( \"^\" + attributes ),\n\t\tPSEUDO: new RegExp( \"^\" + pseudos ),\n\t\tCHILD: new RegExp(\n\t\t\t\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\tbool: new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\tneedsContext: new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\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// https://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\tif ( nonHex ) {\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\treturn nonHex;\n\t\t}\n\n\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t// Support: IE <=11+\n\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t// surrogate pair\n\t\treturn high < 0 ?\n\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes; see `setDocument`.\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE/Edge.\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && nodeName( elem, \"fieldset\" );\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\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\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\n\t// Support: Android <=4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = {\n\t\tapply: function( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t},\n\t\tcall: function( target ) {\n\t\t\tpushNative.apply( target, slice.call( arguments, 1 ) );\n\t\t}\n\t};\n}\n\nfunction find( 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\t\tsetDocument( context );\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 9 only\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\tpush.call( results, 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 9 only\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\tfind.contains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tpush.call( results, 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 ] ) && context.getElementsByClassName ) {\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 ( !nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) {\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// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) {\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\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when\n\t\t\t\t\t// strict-comparing two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( newContext != context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = jQuery.escapeSelector( nid );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\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 ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\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( rtrimCSS, \"$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\n\t\t// Use (key + \" \") to avoid collision with native prototype properties\n\t\t// (see https://github.com/jquery/sizzle/issues/157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\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 jQuery selector module\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\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\n\t\t// release memory in IE\n\t\tel = null;\n\t}\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\treturn nodeName( elem, \"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\treturn ( nodeName( elem, \"input\" ) || nodeName( elem, \"button\" ) ) &&\n\t\t\telem.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\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 jQuery selector 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/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [node] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nfunction setDocument( node ) {\n\tvar subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\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\tdocumentElement = document.documentElement;\n\tdocumentIsHTML = !jQuery.isXMLDoc( document );\n\n\t// Support: iOS 7 only, IE 9 - 11+\n\t// Older browsers didn't support unprefixed `matches`.\n\tmatches = documentElement.matches ||\n\t\tdocumentElement.webkitMatchesSelector ||\n\t\tdocumentElement.msMatchesSelector;\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors\n\t// (see trac-13936).\n\t// Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`,\n\t// all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well.\n\tif ( documentElement.msMatchesSelector &&\n\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tpreferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t\tsubWindow.addEventListener( \"unload\", unloadHandler );\n\t}\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\tdocumentElement.appendChild( el ).id = jQuery.expando;\n\t\treturn !document.getElementsByName ||\n\t\t\t!document.getElementsByName( jQuery.expando ).length;\n\t} );\n\n\t// Support: IE 9 only\n\t// Check to see if it's possible to do matchesSelector\n\t// on a disconnected node.\n\tsupport.disconnectedMatch = assert( function( el ) {\n\t\treturn matches.call( el, \"*\" );\n\t} );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// IE/Edge don't support the :scope pseudo-class.\n\tsupport.scope = assert( function() {\n\t\treturn document.querySelectorAll( \":scope\" );\n\t} );\n\n\t// Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only\n\t// Make sure the `:has()` argument is parsed unforgivingly.\n\t// We include `*` in the test to detect buggy implementations that are\n\t// _selectively_ forgiving (specifically when the list includes at least\n\t// one valid selector).\n\t// Note that we treat complete lack of support for `:has()` as if it were\n\t// spec-compliant support, which is fine because use of `:has()` in such\n\t// environments will fail in the qSA path and fall back to jQuery traversal\n\t// anyway.\n\tsupport.cssHas = assert( function() {\n\t\ttry {\n\t\t\tdocument.querySelector( \":has(*,:jqfake)\" );\n\t\t\treturn false;\n\t\t} catch ( e ) {\n\t\t\treturn true;\n\t\t}\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 = function( tag, context ) {\n\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t// DocumentFragment nodes don't have gEBTN\n\t\t} else {\n\t\t\treturn context.querySelectorAll( tag );\n\t\t}\n\t};\n\n\t// Class\n\tExpr.find.CLASS = 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\trbuggyQSA = [];\n\n\t// Build QSA regex\n\t// Regex strategy adopted from Diego Perini\n\tassert( function( el ) {\n\n\t\tvar input;\n\n\t\tdocumentElement.appendChild( el ).innerHTML =\n\t\t\t\"\" +\n\t\t\t\"\";\n\n\t\t// Support: iOS <=7 - 8 only\n\t\t// Boolean attributes and \"value\" are not treated correctly in some XML documents\n\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t}\n\n\t\t// Support: iOS <=7 - 8 only\n\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\trbuggyQSA.push( \"~=\" );\n\t\t}\n\n\t\t// Support: iOS 8 only\n\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t}\n\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\trbuggyQSA.push( \":checked\" );\n\t\t}\n\n\t\t// Support: Windows 8 Native Apps\n\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tdocumentElement.appendChild( el ).disabled = true;\n\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t}\n\n\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t// Adding a temporary attribute to the document before the selection works\n\t\t// around the issue.\n\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"name\", \"\" );\n\t\tel.appendChild( input );\n\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t}\n\t} );\n\n\tif ( !support.cssHas ) {\n\n\t\t// Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n\t\t// Our regular `try-catch` mechanism fails to detect natively-unsupported\n\t\t// pseudo-classes inside `:has()` (such as `:has(:contains(\"Foo\"))`)\n\t\t// in browsers that parse the `:has()` argument as a forgiving selector list.\n\t\t// https://drafts.csswg.org/selectors/#relational now requires the argument\n\t\t// to be parsed unforgivingly, but browsers have not yet fully adjusted.\n\t\trbuggyQSA.push( \":has\" );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = function( 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\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\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\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a === document || a.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b === document || b.ownerDocument == preferredDoc &&\n\t\t\t\tfind.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.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t};\n\n\treturn document;\n}\n\nfind.matches = function( expr, elements ) {\n\treturn find( expr, null, null, elements );\n};\n\nfind.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( documentIsHTML &&\n\t\t!nonnativeSelectorCache[ 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\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 find( expr, document, null, [ elem ] ).length > 0;\n};\n\nfind.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn jQuery.contains( context, elem );\n};\n\n\nfind.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (see trac-13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\tif ( val !== undefined ) {\n\t\treturn val;\n\t}\n\n\treturn elem.getAttribute( name );\n};\n\nfind.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 */\njQuery.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\t//\n\t// Support: Android <=4.0+\n\t// Testing for detecting duplicates is unpredictable so instead assume we can't\n\t// depend on duplicate detection in all browsers without a stable sort.\n\thasDuplicate = !support.sortStable;\n\tsortInput = !support.sortStable && slice.call( results, 0 );\n\tsort.call( results, 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\tsplice.call( results, 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\njQuery.fn.uniqueSort = function() {\n\treturn this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) );\n};\n\nExpr = jQuery.expr = {\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\tATTR: 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 ] || \"\" )\n\t\t\t\t.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\tCHILD: function( match ) {\n\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\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tfind.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 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" )\n\t\t\t\t);\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\tfind.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: 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\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\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\tTAG: function( nodeNameSelector ) {\n\t\t\tvar expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn nodeName( elem, expectedNodeName );\n\t\t\t\t};\n\t\t},\n\n\t\tCLASS: 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 +\n\t\t\t\t\t\"(\" + whitespace + \"|$)\" ) ) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\tATTR: function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = find.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\tif ( operator === \"=\" ) {\n\t\t\t\t\treturn result === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"!=\" ) {\n\t\t\t\t\treturn result !== check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"^=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) === 0;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"*=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"$=\" ) {\n\t\t\t\t\treturn check && result.slice( -check.length ) === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"~=\" ) {\n\t\t\t\t\treturn ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" )\n\t\t\t\t\t\t.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"|=\" ) {\n\t\t\t\t\treturn result === check || result.slice( 0, check.length + 1 ) === check + \"-\";\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t};\n\t\t},\n\n\t\tCHILD: function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, 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\tnodeName( node, 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\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\t\t\t\t\t\t\touterCache = parent[ expando ] || ( parent[ expando ] = {} );\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = 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\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\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\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\t\t\t\t\t\t\t\tcache = outerCache[ 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\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\tnodeName( node, 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 ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\t\t\t\t\t\t\t\t\t\t\touterCache[ 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\tPSEUDO: function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// https://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\tfind.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 jQuery 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.call( 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\n\t\t// Potentially complex pseudos\n\t\tnot: markFunction( function( selector ) {\n\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( rtrimCSS, \"$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\n\t\t\t\t\t// Don't keep the element\n\t\t\t\t\t// (see https://github.com/jquery/sizzle/issues/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\thas: markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn find( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\tcontains: markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || jQuery.text( 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// https://www.w3.org/TR/selectors/#lang-pseudo\n\t\tlang: markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tfind.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\ttarget: 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\troot: function( elem ) {\n\t\t\treturn elem === documentElement;\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === safeActiveElement() &&\n\t\t\t\tdocument.hasFocus() &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\tenabled: createDisabledPseudo( false ),\n\t\tdisabled: createDisabledPseudo( true ),\n\n\t\tchecked: function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\treturn ( nodeName( elem, \"input\" ) && !!elem.checked ) ||\n\t\t\t\t( nodeName( elem, \"option\" ) && !!elem.selected );\n\t\t},\n\n\t\tselected: function( elem ) {\n\n\t\t\t// Support: IE <=11+\n\t\t\t// Accessing the selectedIndex property\n\t\t\t// forces the browser to treat the default option as\n\t\t\t// selected when in an optgroup.\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\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\tempty: function( elem ) {\n\n\t\t\t// https://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\tparent: function( elem ) {\n\t\t\treturn !Expr.pseudos.empty( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\theader: function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"button\" ||\n\t\t\t\tnodeName( elem, \"button\" );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"text\" &&\n\n\t\t\t\t// Support: IE <10 only\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear\n\t\t\t\t// with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\tfirst: createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\tlast: createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\teq: createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\teven: 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\todd: 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\tlt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i;\n\n\t\t\tif ( argument < 0 ) {\n\t\t\t\ti = argument + length;\n\t\t\t} else if ( argument > length ) {\n\t\t\t\ti = length;\n\t\t\t} else {\n\t\t\t\ti = argument;\n\t\t\t}\n\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\tgt: 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\nfunction tokenize( 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\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 = rleadingCombinator.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrimCSS, \" \" )\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\tif ( parseOnly ) {\n\t\treturn soFar.length;\n\t}\n\n\treturn soFar ?\n\t\tfind.error( selector ) :\n\n\t\t// Cache the tokens\n\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\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, 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\tif ( skip && nodeName( elem, skip ) ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = outerCache[ 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\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ 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\tfind( 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, matcherOut,\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 ||\n\t\t\t\tmultipleContexts( selector || \"*\",\n\t\t\t\t\tcontext.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\tif ( matcher ) {\n\n\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter\n\t\t\t// or preexisting results,\n\t\t\tmatcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t[] :\n\n\t\t\t\t// ...otherwise use results directly\n\t\t\t\tresults;\n\n\t\t\t// Find primary matches\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t} else {\n\t\t\tmatcherOut = matcherIn;\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\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\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.call( 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.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\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\n\t\t\t// Avoid hanging onto element\n\t\t\t// (see https://github.com/jquery/sizzle/issues/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\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\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 )\n\t\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrimCSS, \"$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\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\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\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\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: iOS <=7 - 9 only\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching\n\t\t\t// elements by id. (see trac-14142)\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\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\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\tpush.call( results, 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\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\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\tjQuery.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\nfunction compile( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\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,\n\t\t\tmatcherFromGroupMatchers( 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 jQuery's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with jQuery selector compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nfunction select( 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(\n\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\tcontext\n\t\t\t) || [] )[ 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\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 ) &&\n\t\t\t\t\t\ttestContext( 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// Support: Android <=4.0 - 4.1+\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Android <=4.0 - 4.1+\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\njQuery.find = find;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.unique = jQuery.uniqueSort;\n\n// These have always been private, but they used to be documented as part of\n// Sizzle so let's maintain them for now for backwards compatibility purposes.\nfind.compile = compile;\nfind.select = select;\nfind.setDocument = setDocument;\nfind.tokenize = tokenize;\n\nfind.escape = jQuery.escapeSelector;\nfind.getText = jQuery.text;\nfind.isXML = jQuery.isXMLDoc;\nfind.selectors = jQuery.expr;\nfind.support = jQuery.support;\nfind.uniqueSort = jQuery.uniqueSort;\n\n\t/* eslint-enable */\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\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 to avoid XSS via location.hash (trac-9521)\n\t// Strict HTML recognition (trac-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 jQuery#find\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 ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\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.error );\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 error, 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.getErrorHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getErrorHook();\n\n\t\t\t\t\t\t\t\t// The deprecated alias of the above. While the name suggests\n\t\t\t\t\t\t\t\t// returning the stack, not an error instance, jQuery just passes\n\t\t\t\t\t\t\t\t// it directly to `console.warn` so both will work; an instance\n\t\t\t\t\t\t\t\t// just better cooperates with source maps.\n\t\t\t\t\t\t\t\t} else if ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = 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 primary Deferred\n\t\t\tprimary = 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\tprimary.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, primary.done( updateFunc( i ) ).resolve, primary.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 ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.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 ), primary.reject );\n\t\t}\n\n\t\treturn primary.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\n// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error\n// captured before the async barrier to get the original error cause\n// which may otherwise be hidden.\njQuery.Deferred.exceptionHook = function( error, asyncError ) {\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,\n\t\t\terror.stack, asyncError );\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 trac-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\t\tvalue :\n\t\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 (trac-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 trac-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 (trac-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\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( 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 (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-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 = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (trac-13200)\nvar wrapMap = {\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 or other required elements.\n\tthead: [ 1, \"\", \"
\" ],\n\tcol: [ 2, \"\", \"
\" ],\n\ttr: [ 2, \"\", \"
\" ],\n\ttd: [ 3, \"\", \"
\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\" ];\n}\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 (trac-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 (trac-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\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\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// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\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 = Object.create( null );\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\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ 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 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 (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-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 (trac-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\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\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\", true );\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, isSetup ) {\n\n\t// Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !isSetup ) {\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 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\tif ( !saved ) {\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\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tdataPriv.set( this, type, false );\n\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\n\t\t\t\t\t\treturn result;\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\n\t\t\t\t// the 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 ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, jQuery.event.trigger(\n\t\t\t\t\tsaved[ 0 ],\n\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\tthis\n\t\t\t\t) );\n\n\t\t\t\t// Abort handling of the native event by all jQuery handlers while allowing\n\t\t\t\t// native handlers on the same element to run. On target, this is achieved\n\t\t\t\t// by stopping immediate propagation just on the jQuery event. However,\n\t\t\t\t// the native event is re-wrapped by a jQuery one on each level of the\n\t\t\t\t// propagation so the only way to stop it for jQuery is to stop it for\n\t\t\t\t// everyone via native `stopPropagation()`. This is not a problem for\n\t\t\t\t// focus/blur which don't bubble, but it does also stop click on checkboxes\n\t\t\t\t// and radios. We accept this limitation.\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.isImmediatePropagationStopped = returnTrue;\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 (trac-504, trac-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\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\n\tfunction focusMappedHandler( nativeEvent ) {\n\t\tif ( document.documentMode ) {\n\n\t\t\t// Support: IE 11+\n\t\t\t// Attach a single focusin/focusout handler on the document while someone wants\n\t\t\t// focus/blur. This is because the former are synchronous in IE while the latter\n\t\t\t// are async. In other browsers, all those handlers are invoked synchronously.\n\n\t\t\t// `handle` from private data would already wrap the event, but we need\n\t\t\t// to change the `type` here.\n\t\t\tvar handle = dataPriv.get( this, \"handle\" ),\n\t\t\t\tevent = jQuery.event.fix( nativeEvent );\n\t\t\tevent.type = nativeEvent.type === \"focusin\" ? \"focus\" : \"blur\";\n\t\t\tevent.isSimulated = true;\n\n\t\t\t// First, handle focusin/focusout\n\t\t\thandle( nativeEvent );\n\n\t\t\t// ...then, handle focus/blur\n\t\t\t//\n\t\t\t// focus/blur don't bubble while focusin/focusout do; simulate the former by only\n\t\t\t// invoking the handler at the lower level.\n\t\t\tif ( event.target === event.currentTarget ) {\n\n\t\t\t\t// The setup part calls `leverageNative`, which, in turn, calls\n\t\t\t\t// `jQuery.event.add`, so event handle will already have been set\n\t\t\t\t// by this point.\n\t\t\t\thandle( event );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// For non-IE browsers, attach a single capturing handler on the document\n\t\t\t// while someone wants focusin/focusout.\n\t\t\tjQuery.event.simulate( delegateType, nativeEvent.target,\n\t\t\t\tjQuery.event.fix( nativeEvent ) );\n\t\t}\n\t}\n\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\tvar attaches;\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, true );\n\n\t\t\tif ( document.documentMode ) {\n\n\t\t\t\t// Support: IE 9 - 11+\n\t\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\t\tattaches = dataPriv.get( this, delegateType );\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t}\n\t\t\t\tdataPriv.set( this, delegateType, ( attaches || 0 ) + 1 );\n\t\t\t} else {\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},\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\tteardown: function() {\n\t\t\tvar attaches;\n\n\t\t\tif ( document.documentMode ) {\n\t\t\t\tattaches = dataPriv.get( this, delegateType ) - 1;\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t\tdataPriv.remove( this, delegateType );\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.set( this, delegateType, attaches );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Return false to indicate standard teardown should be applied\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n\n\t// Support: Firefox <=44\n\t// Firefox doesn't have focus(in | out) events\n\t// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n\t//\n\t// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n\t// focus(in | out) events fire after focus & blur events,\n\t// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n\t// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n\t//\n\t// Support: IE 9 - 11+\n\t// To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,\n\t// attach a single handler for both events in IE.\n\tjQuery.event.special[ delegateType ] = {\n\t\tsetup: function() {\n\n\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType );\n\n\t\t\t// Support: IE 9 - 11+\n\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.addEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\tdataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 );\n\t\t},\n\t\tteardown: function() {\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType ) - 1;\n\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.removeEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( dataHolder, delegateType );\n\t\t\t} else {\n\t\t\t\tdataPriv.set( dataHolder, delegateType, attaches );\n\t\t\t}\n\t\t}\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// 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 = /\\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, 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.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle 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 = flat( 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 (trac-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// Re-enable 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}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Unwrap a CDATA section containing script contents. This shouldn't be\n\t\t\t\t\t\t\t// needed as in XML documents they're already not visible when\n\t\t\t\t\t\t\t// inspecting element contents and in HTML documents they have no\n\t\t\t\t\t\t\t// meaning but we're preserving that logic for backwards compatibility.\n\t\t\t\t\t\t\t// This will be removed completely in 4.0. See gh-4904.\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;\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 jQuery#find here for performance reasons:\n\t\t\t// 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 rcustomProp = /^--/;\n\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-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 swap = function( elem, options, callback ) {\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.call( elem );\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\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\treliableTrDimensionsVal, reliableMarginLeftVal,\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 (trac-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\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"box-sizing:content-box;border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is `display: block`\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tisCustomProp = rcustomProp.test( name ),\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, trac-12537)\n\t// .css('--customProperty) (gh-3144)\n\tif ( computed ) {\n\n\t\t// Support: IE <=9 - 11+\n\t\t// IE only supports `\"float\"` in `getPropertyValue`; in computed styles\n\t\t// it's only available as `\"cssFloat\"`. We no longer modify properties\n\t\t// sent to `.css()` apart from camelCasing, so we need to check both.\n\t\t// Normally, this would create difference in behavior: if\n\t\t// `getPropertyValue` returns an empty string, the value returned\n\t\t// by `.css()` would be `undefined`. This is usually the case for\n\t\t// disconnected elements. However, in IE even disconnected elements\n\t\t// with no styles return `\"none\"` for `getPropertyValue( \"float\" )`\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( isCustomProp && ret ) {\n\n\t\t\t// Support: Firefox 105+, Chrome <=105+\n\t\t\t// Spec requires trimming whitespace for custom properties (gh-4926).\n\t\t\t// Firefox only trims leading whitespace. Chrome just collapses\n\t\t\t// both leading & trailing whitespace to a single space.\n\t\t\t//\n\t\t\t// Fall back to `undefined` if empty string returned.\n\t\t\t// This collapses a missing definition with property defined\n\t\t\t// and set to an empty string but there's no standard API\n\t\t\t// allowing us to differentiate them without a performance penalty\n\t\t\t// and returning `undefined` aligns with older jQuery.\n\t\t\t//\n\t\t\t// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" ) || undefined;\n\t\t}\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\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\t\tmarginDelta = 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\t// Count margin delta separately to only add it after scroll gutter adjustment.\n\t\t// This is needed to make negative margins work with `outerHeight( true )` (gh-3982).\n\t\tif ( box === \"margin\" ) {\n\t\t\tmarginDelta += 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 + marginDelta;\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// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\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\tanimationIterationCount: true,\n\t\taspectRatio: true,\n\t\tborderImageSlice: true,\n\t\tcolumnCount: true,\n\t\tflexGrow: true,\n\t\tflexShrink: true,\n\t\tfontWeight: true,\n\t\tgridArea: true,\n\t\tgridColumn: true,\n\t\tgridColumnEnd: true,\n\t\tgridColumnStart: true,\n\t\tgridRow: true,\n\t\tgridRowEnd: true,\n\t\tgridRowStart: true,\n\t\tlineHeight: true,\n\t\topacity: true,\n\t\torder: true,\n\t\torphans: true,\n\t\tscale: true,\n\t\twidows: true,\n\t\tzIndex: true,\n\t\tzoom: true,\n\n\t\t// SVG-related\n\t\tfillOpacity: true,\n\t\tfloodOpacity: true,\n\t\tstopOpacity: true,\n\t\tstrokeMiterlimit: true,\n\t\tstrokeOpacity: 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 (trac-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 trac-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 (trac-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\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\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) + \"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\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\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 )` (trac-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\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\n\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 ) {\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.\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// Use proper attribute retrieval (trac-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 classNames, cur, curValue, className, i, finalValue;\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\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\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\tthis.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 classNames, cur, curValue, className, i, finalValue;\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\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\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\tthis.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 classNames, className, i, self,\n\t\t\ttype = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\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\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\treturn this.each( function() {\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = 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\t\"\" :\n\t\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\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 (trac-14686, trac-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 (trac-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\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\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\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\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 (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-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\" ) || Object.create( null ) )[ 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 (trac-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\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} ).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} ).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// trac-7653, trac-8125, trac-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 (trac-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\noriginAnchor.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 trac-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\tjQuery( callbackContext ) :\n\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 (trac-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 trac-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 (trac-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// trac-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.guid++ ) +\n\t\t\t\t\tuncached;\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// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\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\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (trac-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, doc );\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// trac-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 trac-8605, trac-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// trac-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( \"\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// CMS/scripts/modules/slider/sliderComponent.vue","import global from './global';\r\nglobal.init();\r\n\n\n\n// WEBPACK FOOTER //\n// ./CMS/scripts/main.js","/* global Sys:true */\r\n// the above line makes the linter ignore Sys.* errors, Sys DOES exist, it is part of ASP.Net, but logically it does NOT exist 'here'\r\n// requires for external dependencies and other global stuff go here\r\n/* eslint-disable no-unused-vars */\r\nimport helper from './util/helper';\r\nimport axios from 'axios';\r\nimport $ from 'jquery';\r\nimport tether from 'tether';\r\nimport * as bootstrap from 'bootstrap';\r\nimport enquire from 'enquire.js';\r\nimport slick from 'slick-carousel';\r\nimport jmh from 'jquery-match-height';\r\nimport savvior from 'savvior';\r\nimport Vue from 'vue';\r\nimport Vuex from 'vuex';\r\nimport fancybox from '@fancyapps/fancybox';\r\nimport AzureSearchBootstrapper from './modules/azureSearch/azureSearch.bootstrapper';\r\nimport TakeOverActivityLogger from './modules/TakeOverActivityLogger';\r\nimport DownloadActivityLogger from './modules/DownloadActivityLogger';\r\nimport FAQActivityLogger from './modules/FAQActivityLogger';\r\nimport KeukenDetailActivityLogger from './modules/KeukenDetailActivityLogger';\r\n\r\n/* eslint-enable no-unused-vars */\r\n\r\n// make sure Promise is present\r\nrequire('es6-promise/auto');\r\n\r\n// make sure that jquery is globally accessible\r\nwindow.jQuery = window.$ = $;\r\n\r\n// use this function to add things that you want to run when the application runs first time (when init is called)\r\nfunction startup()\r\n{\r\n $(document).ready(function ()\r\n {\r\n var body = document.getElementsByTagName('BODY')[0];\r\n var actiebanner = document.getElementById('actiebanner');\r\n\r\n const items = document.querySelectorAll('.fly-in');\r\n\r\n window.onscroll = function () {\r\n // Don't run the rest of the code if every section is already visible\r\n if (document.querySelectorAll('.fly-in:not(.come-in)').length === 0) return;\r\n\r\n // Run this code for every item in items\r\n for (const item of items) {\r\n if (item.getBoundingClientRect().top <= window.innerHeight && item.getBoundingClientRect().top > 0) {\r\n item.classList.add('come-in');\r\n }\r\n }\r\n };\r\n\r\n if ($('.block-take-overlay-inner')) {\r\n TakeOverActivityLogger.init();\r\n }\r\n\r\n if ($('.download-overview')) {\r\n DownloadActivityLogger.init();\r\n }\r\n\r\n if ($('.webpart-faq')) {\r\n FAQActivityLogger.init();\r\n }\r\n\r\n if ($('.block-keukenfilters')) {\r\n KeukenDetailActivityLogger.init();\r\n }\r\n // This is needed because the Take-Over is in a Update-Panel\r\n if (typeof Sys !== 'undefined' && Sys && Sys.Application) {\r\n Sys.Application.add_load(() => {\r\n TakeOverActivityLogger.init();\r\n });\r\n }\r\n if (document.documentElement.clientWidth >= 992) {\r\n $('.submenuitem .dropdown-toggle').removeClass();\r\n }\r\n\r\n if (actiebanner != null) {\r\n body.classList.add('actiebanner');\r\n }\r\n });\r\n}\r\n\r\n// use this function for things you want to happen on (partial-)postback (i.e.: $(document).ready())\r\nfunction onDocLoad()\r\n{\r\n $('.dropdown-menu-2 a.dropdown-toggle').on('click', function (e)\r\n {\r\n if (!$(this).next().hasClass('show'))\r\n {\r\n $(this).parents('.dropdown-menu-2').first().find('.show').removeClass('show');\r\n }\r\n var $subMenu = $(this).next('.dropdown-menu-2');\r\n $subMenu.toggleClass('show');\r\n $(this).parents('li.nav-item.dropdown.show').on('hidden.bs.dropdown', function (e)\r\n {\r\n $('.dropdown-submenu .show').removeClass('show');\r\n });\r\n return false;\r\n });\r\n\r\n $('.slider').slick({\r\n fade: true,\r\n autoplay: true,\r\n autoplaySpeed: 8000,\r\n speed: 1000,\r\n arrows: false,\r\n dots: true,\r\n appendDots: $('.sliderdots')\r\n });\r\n\r\n $('.webpart-item-slider .item-slider').slick({\r\n dots: true,\r\n arrows: false,\r\n infinite: true,\r\n autoplay: true,\r\n autoplaySpeed: 4000,\r\n speed: 600,\r\n slidesToShow: 2,\r\n slidesToScroll: 2,\r\n responsive: [\r\n {\r\n breakpoint: 992,\r\n settings: {\r\n slidesToShow: 1,\r\n slidesToScroll: 1\r\n }\r\n }\r\n ]\r\n });\r\n\r\n $('.webpart-image-slider .item-slider').slick({\r\n dots: true,\r\n arrows: false,\r\n infinite: false,\r\n autoplay: true,\r\n autoplaySpeed: 4000,\r\n speed: 600,\r\n slidesToShow: 2,\r\n slidesToScroll: 1,\r\n responsive: [\r\n {\r\n breakpoint: 992,\r\n settings: {\r\n slidesToShow: 1,\r\n slidesToScroll: 1\r\n }\r\n }\r\n ]\r\n });\r\n\r\n $('.tiles-slider').slick({\r\n dots: true,\r\n arrows: false,\r\n infinite: true,\r\n autoplay: true,\r\n autoplaySpeed: 4000,\r\n speed: 600,\r\n slidesToShow: 3,\r\n slidesToScroll: 1,\r\n responsive: [\r\n {\r\n breakpoint: 992,\r\n settings: {\r\n slidesToShow: 2,\r\n slidesToScroll: 2\r\n }\r\n },\r\n {\r\n breakpoint: 768,\r\n settings: {\r\n slidesToShow: 1,\r\n slidesToScroll: 1\r\n }\r\n }\r\n ]\r\n });\r\n\r\n $(function () {\r\n $('.tiles-slider .slick-track .slick-slide').matchHeight(\r\n {\r\n byRow: true,\r\n property: 'height',\r\n target: null,\r\n remove: false\r\n });\r\n });\r\n\r\n $(function () {\r\n $('.images-technisch-large .slick-track .slick-slide').matchHeight(\r\n {\r\n byRow: true,\r\n property: 'height',\r\n target: null,\r\n remove: false\r\n });\r\n });\r\n\r\n if ($('.product-image-gallery').length) {\r\n $('.images-large').slick({\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n infinite: false,\r\n arrows: false,\r\n asNavFor: '.images-small',\r\n responsive: [\r\n {\r\n breakpoint: 600,\r\n settings: {\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n arrows: true\r\n }\r\n }\r\n ]\r\n });\r\n $('.images-small').slick({\r\n slidesToShow: 3,\r\n slidesToScroll: 1,\r\n infinite: false,\r\n asNavFor: '.images-large',\r\n arrows: true,\r\n dots: false,\r\n variableWidth: true,\r\n focusOnSelect: true\r\n });\r\n }\r\n\r\n if ($('.webpart-technischslider').length) {\r\n $('.images-technisch-large').slick({\r\n slidesToShow: 2,\r\n slidesToScroll: 1,\r\n infinite: false,\r\n arrows: false,\r\n asNavFor: '.images-technisch-small',\r\n responsive: [\r\n {\r\n breakpoint: 600,\r\n settings: {\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n arrows: true\r\n }\r\n }\r\n ]\r\n });\r\n $('.images-technisch-small').slick({\r\n slidesToShow: 4,\r\n centerMode: false,\r\n slidesToScroll: 1,\r\n infinite: true,\r\n asNavFor: '.images-technisch-large',\r\n arrows: false,\r\n dots: false,\r\n variableWidth: true,\r\n focusOnSelect: true\r\n });\r\n }\r\n\r\n\r\n if ($('#inspiratietips').length) {\r\n savvior.init('#inspiratietips', {\r\n 'screen and (max-width: 751px)': { columns: 1 },\r\n 'screen and (min-width: 752px) and (max-width: 1199.98px)': { columns: 2 },\r\n 'screen and (min-width: 1200px)': { columns: 3 }\r\n });\r\n }\r\n\r\n $('.popover-tooltip').popover({\r\n trigger: 'focus hover',\r\n template: '

'\r\n });\r\n\r\n var urlString = document.location.toString();\r\n var urlName = urlString.split('#anchor')[1];\r\n if (urlString.match('#')) {\r\n $('#collapse' + urlName).addClass('show');\r\n $('#card' + urlName).addClass('active');\r\n $('#card' + urlName + ' a').removeClass('collapsed');\r\n $('#card' + urlName).addClass('highlighted');\r\n setTimeout(function () {\r\n $('#card' + urlName).removeClass('active');\r\n $('div#card' + urlName).removeClass('highlighted');\r\n }, 1000);\r\n }\r\n\r\n if (document.documentElement.clientWidth >= 992) {\r\n $('.submenuitem .dropdown-toggle').removeClass('dropdown-toggle').addClass('dropdown-notoggle');\r\n } else {\r\n $('.submenuitem .dropdown-notoggle').removeClass('dropdown-notoggle').addClass('dropdown-toggle');\r\n }\r\n\r\n var subItems = document.querySelectorAll('ul.dropdown-menu-2 > li.dropdown-submenu > a.dropdown-toggle');\r\n\r\n if (subItems && subItems.length) {\r\n for (const subItem of subItems) {\r\n subItem.onclick = function () {\r\n this.classList.toggle('opened');\r\n };\r\n }\r\n }\r\n\r\n if ($('.my-profile-toggle .ErrorLabel').length) {\r\n var items = $('.my-profile-toggle');\r\n for (let i = 0; i < items.length; i++) {\r\n items[i].classList.toggle('show');\r\n }\r\n }\r\n\r\n setupFilter();\r\n\r\n if ($('#productoverviewreturnlink').length) {\r\n const referrerURL = new window.URL(document.referrer);\r\n if (referrerURL.pathname.includes('/keukenonderdelen/')) {\r\n let hrefAttValue = referrerURL.pathname;\r\n\r\n if (hrefAttValue != null && hrefAttValue !== '') {\r\n $('#productoverviewreturnlink').attr('href', hrefAttValue + '?action=rfs');\r\n }\r\n }\r\n }\r\n\r\n if ($('.shoppingcart-totals .b-modal').length) {\r\n $('.shoppingcart-totals .b-modal').on('hidden.bs.modal', function () {\r\n document.location = window.location;\r\n });\r\n }\r\n}\r\n\r\nfunction setupFilter()\r\n{\r\n let filterInstance = new AzureSearchBootstrapper();\r\n if (!filterInstance) console.log('no filters');\r\n}\r\n\r\n// Init function, can be used for startup stuff\r\nfunction init()\r\n{\r\n try\r\n {\r\n let done = false;\r\n\r\n startup();\r\n $(document).ready(() =>\r\n {\r\n onDocLoad();\r\n done = true;\r\n\r\n if (typeof Sys !== 'undefined' && Sys && Sys.Application) {\r\n Sys.Application.add_load((sender, args) => {\r\n if (!done) onDocLoad();\r\n });\r\n }\r\n });\r\n }\r\n catch (ex)\r\n {\r\n }\r\n}\r\n\r\nexport default {\r\n init\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./CMS/scripts/global.js","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(utils.merge(defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/axios.js\n// module id = 19\n// module chunks = 0","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\nmodule.exports = function isBuffer (obj) {\n return obj != null && obj.constructor != null &&\n typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/is-buffer/index.js\n// module id = 20\n// module chunks = 0","'use strict';\n\nvar defaults = require('./../defaults');\nvar utils = require('./../utils');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = utils.merge({\n url: arguments[0]\n }, arguments[1]);\n }\n\n config = utils.merge(defaults, {method: 'get'}, this.defaults, config);\n config.method = config.method.toLowerCase();\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/core/Axios.js\n// module id = 21\n// module chunks = 0","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/normalizeHeaderName.js\n// module id = 22\n// module chunks = 0","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n // Note: status is not exposed by XDomainRequest\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/core/settle.js\n// module id = 23\n// module chunks = 0","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n error.request = request;\n error.response = response;\n return error;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/core/enhanceError.js\n// module id = 24\n// module chunks = 0","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/buildURL.js\n// module id = 25\n// module chunks = 0","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/parseHeaders.js\n// module id = 26\n// module chunks = 0","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/isURLSameOrigin.js\n// module id = 27\n// module chunks = 0","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/cookies.js\n// module id = 28\n// module chunks = 0","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/core/InterceptorManager.js\n// module id = 29\n// module chunks = 0","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar isAbsoluteURL = require('./../helpers/isAbsoluteURL');\nvar combineURLs = require('./../helpers/combineURLs');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Support baseURL config\n if (config.baseURL && !isAbsoluteURL(config.url)) {\n config.url = combineURLs(config.baseURL, config.url);\n }\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers || {}\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/core/dispatchRequest.js\n// module id = 30\n// module chunks = 0","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/core/transformData.js\n// module id = 31\n// module chunks = 0","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/isAbsoluteURL.js\n// module id = 32\n// module chunks = 0","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/combineURLs.js\n// module id = 33\n// module chunks = 0","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/cancel/CancelToken.js\n// module id = 34\n// module chunks = 0","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/spread.js\n// module id = 35\n// module chunks = 0","/*! tether 1.4.7 */\n\n(function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.Tether = factory();\n }\n}(this, function() {\n\n'use strict';\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar TetherBase = undefined;\nif (typeof TetherBase === 'undefined') {\n TetherBase = { modules: [] };\n}\n\nvar zeroElement = null;\n\n// Same as native getBoundingClientRect, except it takes into account parent offsets\n// if the element lies within a nested document ( or ',\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: '\",\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: '
' +\r\n '
' +\r\n '
' +\r\n '
 / 
' +\r\n '
{{buttons}}
' +\r\n '
{{arrows}}
' +\r\n '
' +\r\n '
' +\r\n \"
\" +\r\n \"
\",\r\n\r\n // Loading indicator template\r\n spinnerTpl: '
',\r\n\r\n // Error message template\r\n errorTpl: '

{{ERROR}}

',\r\n\r\n btnTpl: {\r\n download: '' +\r\n '' +\r\n \"\",\r\n\r\n zoom: '\",\r\n\r\n close: '\",\r\n\r\n // Arrows\r\n arrowLeft: '\",\r\n\r\n arrowRight: '\",\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: '\"\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.
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ßen\",\r\n NEXT: \"Weiter\",\r\n PREV: \"Zurück\",\r\n ERROR: \"Die angeforderten Daten konnten nicht geladen werden.
Bitte versuchen Sie es spä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öß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 '\"\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( '

Hi!

' );\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 = $('
').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 = $('
')\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 = $('
')\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 = $(\"
\")\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 = $(\"
\")\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 = $(\"
\")\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(\"
\");\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(\"
\")\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 $('
').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: '\"\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 = $('
').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: '\"\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: '\"\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 = $('
').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 = $('
').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 '\"\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: '\"\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: '
' +\r\n \"

{{SHARE}}

\" +\r\n \"

\" +\r\n '' +\r\n '' +\r\n \"Facebook\" +\r\n \"\" +\r\n '' +\r\n '' +\r\n \"Twitter\" +\r\n \"\" +\r\n '' +\r\n '' +\r\n \"Pinterest\" +\r\n \"\" +\r\n \"

\" +\r\n '

' +\r\n \"
\"\r\n }\r\n });\r\n\r\n function escapeHtml(string) {\r\n var entityMap = {\r\n \"&\": \"&\",\r\n \"<\": \"<\",\r\n \">\": \">\",\r\n '\"': \""\",\r\n \"'\": \"'\",\r\n \"/\": \"/\",\r\n \"`\": \"`\",\r\n \"=\": \"=\"\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);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@fancyapps/fancybox/dist/jquery.fancybox.js\n// module id = 49\n// module chunks = 0","/* eslint-disable no-unused-vars */\r\nimport azureSearchVM from './azureSearch.vm';\r\n/* eslint-enable no-unused-vars */\r\nexport default class AzureSearchBootstrapper\r\n{\r\n constructor(filterElementId, settingsElementId, facetSettingsElementId, rangeSlidersElementId, numRangeSlidersElementId, pageDataElementId, seoSettingsElementId)\r\n {\r\n let fltElId = filterElementId || 'frFilters';\r\n this.filterElement = document.getElementById(fltElId);\r\n if (this.filterElement)\r\n {\r\n let setElId = settingsElementId || 'search-settings';\r\n let facElId = facetSettingsElementId || 'facet-settings';\r\n let rslElId = rangeSlidersElementId || 'range-sliders';\r\n let nrsElId = numRangeSlidersElementId || 'num-range-sliders';\r\n let pgdElId = pageDataElementId || 'page-data';\r\n let seoElId = seoSettingsElementId || 'seo-settings';\r\n this.settingsElement = document.getElementById(setElId);\r\n this.facetSettingsElement = document.getElementById(facElId);\r\n this.rangeSlidersElement = document.getElementById(rslElId);\r\n this.numRangeSlidersElement = document.getElementById(nrsElId);\r\n this.pageDataElement = document.getElementById(pgdElId);\r\n this.seoSettingsElement = document.getElementById(seoElId);\r\n this.settings = null;\r\n this.facetSettings = null;\r\n this.rangeSliders = [];\r\n this.numRangeSliders = 0;\r\n this.pageData = {};\r\n this.searchVM = null;\r\n if (this.settingsElement && this.facetSettingsElement)\r\n {\r\n this.settings = JSON.parse(this.settingsElement.innerHTML);\r\n this.facetSettings = JSON.parse(this.facetSettingsElement.innerHTML);\r\n if (this.rangeSlidersElement) this.rangeSliders = JSON.parse(this.rangeSlidersElement.innerHTML);\r\n if (this.numRangeSlidersElement) this.numRangeSliders = (JSON.parse(this.numRangeSlidersElement.innerHTML)).numRangeFacets;\r\n if (this.pageDataElement) this.pageData = JSON.parse(this.pageDataElement.innerHTML);\r\n if (this.seoSettingsElement) this.seoSettings = JSON.parse(this.seoSettingsElement.innerHTML);\r\n this.searchVM = azureSearchVM.init(fltElId, this.settings, this.facetSettings, this.rangeSliders, this.numRangeSliders, this.pageData, this.seoSettings);\r\n console.log('filter application initialized');\r\n\r\n // Additional stuff can be done here, like doing something with the filters once they're fully initialized\r\n }\r\n else console.error('FILTER SETTINGS NOT FOUND');\r\n }\r\n else console.log('no filter elements on this page');\r\n }\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./CMS/scripts/modules/azureSearch/azureSearch.bootstrapper.js","/* global history */\r\n/* eslint-disable no-unused-vars */\r\nimport axios from 'axios';\r\nimport azuresearch, { AzureSearchApiSettings, AzureSearchRequest, AzureSearchGui, AzureSearchFacetDefinition, AzureSearchSearchSettings, AzureSearchApi } from '@frontisbv/scheffer-azuresearch-searchclient';\r\nimport Vue from 'vue';\r\nimport _ from 'lodash';\r\nimport vueSlider from '../slider/sliderComponent.vue';\r\nimport helper from '../../util/helper';\r\nimport $ from 'jquery';\r\nimport { setTimeout } from 'timers';\r\n/* eslint-enable no-unused-vars */\r\n\r\nfunction init(filterElementId, searchSettings, facetSettings, rangeSliders, numRangeFacets, pageData, seoSettings)\r\n{\r\n var filtersApp = new Vue({\r\n el: '#' + filterElementId,\r\n components: {\r\n vueSlider\r\n },\r\n data: {\r\n searchSettings: {},\r\n facetSettings: [],\r\n rangeFacets: {},\r\n numRangeFacets: 0,\r\n pageData: {},\r\n facetValueOverrides: [],\r\n searchText: '',\r\n items: [],\r\n facets: [],\r\n count: 0,\r\n currentPage: 1,\r\n tempRestorePage: 1,\r\n hasError: false,\r\n checkedFacets: [],\r\n initialSearch: true,\r\n restoreFromStorage: false,\r\n noResults: false,\r\n filtered: false,\r\n searchApi: null,\r\n localStorageName: 'schefferLocal',\r\n ready: false,\r\n seoSettings: {},\r\n productsBlockBounds: null,\r\n scrollToTopTargetId: '',\r\n scrollToTopPos: {},\r\n isScrollToTopClicked: false,\r\n scrollDelay: 0,\r\n defaultSearchRequest: {\r\n orderBy: 'ListPrice asc',\r\n page: 1,\r\n top: 24\r\n }\r\n },\r\n watch: {\r\n checkedFacets: function (val)\r\n {\r\n this.currentPage = 1;\r\n this.search()\r\n .then((response) =>\r\n {\r\n this.setScrollPosition();\r\n this.calculateProductsBlockBounds();\r\n\r\n if (this.restoreFromStorage)\r\n {\r\n this.currentPage = this.tempRestorePage;\r\n this.search()\r\n .then((secondResponse) =>\r\n {\r\n this.tempRestorePage = 1;\r\n this.restoreFromStorage = false;\r\n })\r\n .catch((secondError) => { console.error(secondError); });\r\n }\r\n })\r\n .catch((error) => { console.error(error); });\r\n },\r\n restoreFromStorage: function (val)\r\n {\r\n if (!val) this.ready = true;\r\n }\r\n },\r\n computed: {\r\n maxPages: function ()\r\n {\r\n // Calculate the amount of pages\r\n if (this.searchSettings.searchRequest.top === 0)\r\n {\r\n console.log('To use paging you should set the searchRequest.top value');\r\n return 0;\r\n }\r\n return Math.ceil(this.count / this.searchSettings.searchRequest.top);\r\n },\r\n numPageRanges: function ()\r\n {\r\n if (this.maxPages > 0)\r\n {\r\n let numRanges = Math.floor((this.maxPages / 3));\r\n if (numRanges > 0) return numRanges;\r\n }\r\n return 1;\r\n },\r\n pageRanges: function ()\r\n {\r\n let ranges = {};\r\n let current = 0;\r\n for (let i = 0; i < this.numPageRanges; i++)\r\n {\r\n let firstInRange = ++current;\r\n let secondInRange = ++current;\r\n let thirdInRange = ++current;\r\n\r\n let previousRangeEnd = firstInRange <= 1 ? 1 : firstInRange - 1;\r\n let nextRangeStart = thirdInRange >= this.maxPages ? this.maxPages : thirdInRange + 1;\r\n\r\n if (secondInRange > this.maxPages) secondInRange = -1;\r\n if (thirdInRange > this.maxPages) thirdInRange = -1;\r\n if (thirdInRange < 0) nextRangeStart = -1;\r\n\r\n let range = { firstInRange: firstInRange, secondInRange: secondInRange, thirdInRange: thirdInRange, previousRangeEnd: previousRangeEnd, nextRangeStart: nextRangeStart };\r\n ranges[firstInRange] = range;\r\n ranges[secondInRange] = range;\r\n ranges[thirdInRange] = range;\r\n }\r\n\r\n // Specific deviation for the last few pages (last range), only if there is more than one range\r\n if (this.maxPages > 3)\r\n {\r\n let lastRange =\r\n {\r\n firstInRange: this.maxPages - 2,\r\n secondInRange: this.maxPages - 1,\r\n thirdInRange: this.maxPages,\r\n previousRangeEnd: this.maxPages - 3,\r\n nextRangeStart: this.maxPages\r\n };\r\n ranges[(this.maxPages - 2)] = lastRange;\r\n ranges[(this.maxPages - 1)] = lastRange;\r\n ranges[(this.maxPages)] = lastRange;\r\n }\r\n return ranges;\r\n },\r\n currentPageRange: function ()\r\n {\r\n if (this.maxPages <= 3) return this.pageRanges[1];\r\n let range = this.pageRanges[this.currentPage];\r\n return range;\r\n },\r\n pointerEventPreviousPage: function ()\r\n {\r\n return this.currentPage === 1 ? 'none' : 'auto';\r\n },\r\n pointerEventNextPage: function ()\r\n {\r\n return this.currentPage === this.maxPages ? 'none' : 'auto';\r\n },\r\n orderedFacets: function () {\r\n for (var key in this.facets) {\r\n if (this.facets.hasOwnProperty(key) && key.indexOf('@odata') === -1) {\r\n var facet = this.facets[key];\r\n if (facet) {\r\n this.facets[key].sort((a, b) => {\r\n if (!isNaN(a.value) && !isNaN(b.value)) return a.value - b.value;\r\n var aParts = a.value.split(' ');\r\n var bParts = b.value.split(' ');\r\n if (!isNaN(aParts[0]) && !isNaN(bParts[0])) return aParts[0] - bParts[0];\r\n if (!isNaN(aParts[1]) && !isNaN(bParts[1])) return aParts[1] - bParts[1];\r\n });\r\n }\r\n }\r\n }\r\n return this.facets;\r\n },\r\n isProductItemsOutsideViewport: function () {\r\n if (this.productsBlockBounds !== null && this.maxPages === 1) {\r\n const scroll = window.scrollY || window.pageYOffset;\r\n\r\n const viewport = {\r\n top: scroll,\r\n bottom: scroll + window.innerHeight\r\n };\r\n\r\n const isInViewport = (this.productsBlockBounds.top >= viewport.top && this.productsBlockBounds.top <= viewport.bottom) ||\r\n (this.productsBlockBounds.bottom >= viewport.top && this.productsBlockBounds.bottom <= viewport.bottom) ||\r\n this.productsBlockBounds.bottom >= viewport.bottom;\r\n\r\n return !isInViewport;\r\n } else {\r\n return false;\r\n }\r\n }\r\n },\r\n methods: {\r\n setFacetValueOverrides: function (overrides)\r\n {\r\n var facet, foundFacetValue;\r\n for (var key in overrides)\r\n {\r\n facet = this.facets[key];\r\n if (facet)\r\n {\r\n _.forEach(overrides[key], function (value)\r\n {\r\n foundFacetValue = _.find(facet, function (x) { return x.value === value.key; });\r\n if (foundFacetValue)\r\n {\r\n foundFacetValue['displayValue'] = value.value;\r\n }\r\n });\r\n }\r\n }\r\n },\r\n setMinMaxValuesForRangeFacets: function ()\r\n {\r\n var facet;\r\n for (var key in this.rangeFacets)\r\n {\r\n facet = this.facets[key];\r\n if (facet)\r\n {\r\n var minvalue = _.minBy(facet, function (f) { return f.value; });\r\n var maxvalue = _.maxBy(facet, function (f) { return f.value; });\r\n if (minvalue)\r\n {\r\n if (isNaN(minvalue.value))\r\n {\r\n // Try to replace , with . (in case it's an NL number or a string)\r\n minvalue.value = ('' + minvalue.value).replace(',', '.');\r\n }\r\n let actualMinValue = Math.floor(minvalue.value);\r\n this.rangeFacets[key].value[0] = (this.rangeFacets[key].value[0] <= actualMinValue ? actualMinValue : this.rangeFacets[key].value[0]);\r\n this.rangeFacets[key].min = Math.floor(minvalue.value);\r\n }\r\n if (maxvalue)\r\n {\r\n if (isNaN(maxvalue.value))\r\n {\r\n // Try to replace , with . (in case it's an NL number or a string)\r\n maxvalue.value = ('' + maxvalue.value).replace(',', '.');\r\n }\r\n let actualMaxValue = Math.floor(maxvalue.value);\r\n this.rangeFacets[key].value[1] = (this.rangeFacets[key].value[1] >= actualMaxValue ? actualMaxValue : this.rangeFacets[key].value[1]);\r\n this.rangeFacets[key].max = Math.floor(maxvalue.value);\r\n }\r\n }\r\n }\r\n },\r\n rangeCallback: function (val, eventTargetId)\r\n {\r\n this.scrollToTopTargetId = eventTargetId;\r\n // re-enable scroll to top button\r\n this.isScrollToTopClicked = false;\r\n\r\n this.filtered = true;\r\n this.currentPage = 1;\r\n this.search()\r\n .then((res) => {\r\n this.setScrollPosition();\r\n this.calculateProductsBlockBounds();\r\n })\r\n .catch((err) => {\r\n this.hasError = true;\r\n console.error(err);\r\n });\r\n },\r\n facetClicked: function (val, event)\r\n {\r\n this.scrollToTopTargetId = event.target.id;\r\n // re-enable scroll to top button\r\n this.isScrollToTopClicked = false;\r\n\r\n this.filtered = true;\r\n return false;\r\n },\r\n resetFilters: function ()\r\n {\r\n this.checkedFacets = [];\r\n for (var key in this.rangeFacets)\r\n {\r\n this.rangeFacets[key].value = [this.rangeFacets[key].min, this.rangeFacets[key].max];\r\n }\r\n this.filtered = false;\r\n },\r\n changeQuery: function ()\r\n {\r\n this.currentPage = 1;\r\n this.search();\r\n },\r\n hasSelectedASelectedFacetValue: function (facetKey)\r\n {\r\n return doHasASelectedFacetValue(facetKey, this.checkedFacets);\r\n },\r\n getHighlight: function (item, key)\r\n {\r\n if (item && item['@search.highlights'] && item['@search.highlights'][key] && item['@search.highlights'][key].length)\r\n {\r\n var highlight = '';\r\n if (item['@search.highlights'][key].length === 1) highlight = item['@search.highlights'][key][0];\r\n else\r\n {\r\n for (var i = 0; i < item['@search.highlights'][key].length; i++)\r\n {\r\n highlight += item['@search.highlights'][key][i] + '..';\r\n }\r\n highlight = highlight.slice(0, -2);\r\n }\r\n return highlight;\r\n }\r\n return item[key];\r\n },\r\n createSearchRequest: function ()\r\n {\r\n var searchRequest = new azuresearch.AzureSearchRequest(this.searchSettings.searchRequest);\r\n var predefinedfilter = this.searchSettings.searchRequest.filter;\r\n var facetfilters = this.initialSearch ? null : GetFacetFilter(this.checkedFacets, this.facetSettings);\r\n var rangefilters = this.initialSearch ? null : GetRangeFilter(this.rangeFacets);\r\n var filter = ConcatFilters([predefinedfilter, facetfilters, rangefilters]);\r\n\r\n this.searchSettings.searchRequest.skip = searchRequest.skip = (this.currentPage - 1) * this.searchSettings.searchRequest.top;\r\n searchRequest.filter = filter;\r\n return searchRequest;\r\n },\r\n executeSearch: function (searchRequest)\r\n {\r\n return new Promise((resolve, reject) =>\r\n {\r\n this.searchApi.search(searchRequest)\r\n .then((response) =>\r\n {\r\n this.noResults = false;\r\n if (response && response.data)\r\n {\r\n this.items = response.data.value;\r\n this.facets = setFacets(this.facets, response.data['@search.facets'], this.initialSearch, this.checkedFacets);\r\n this.count = response.data['@odata.count'];\r\n this.noResults = this.count <= 0;\r\n\r\n if (this.count > 0)\r\n {\r\n // Get and update the prices for all items from Kentico\r\n this.getAndUpdatePricesFromSystem()\r\n .then((priceResponse) =>\r\n {\r\n if (this.initialSearch && this.facets && this.rangeFacets)\r\n {\r\n this.setMinMaxValuesForRangeFacets();\r\n }\r\n\r\n if (this.facetValueOverrides)\r\n {\r\n this.setFacetValueOverrides(this.facetValueOverrides);\r\n }\r\n\r\n if (this.initialSearch && !this.noResults)\r\n {\r\n console.log('initial search done...');\r\n this.initialSearch = false;\r\n }\r\n\r\n resolve(priceResponse);\r\n })\r\n .catch((priceError) =>\r\n {\r\n resolve(priceError);\r\n });\r\n }\r\n else resolve('NO_PRODUCTS');\r\n }\r\n else resolve('NO_DATA_IN_SEARCH_RESPONSE');\r\n })\r\n .catch((error) =>\r\n {\r\n this.hasError = true;\r\n console.error(error);\r\n reject(error);\r\n });\r\n });\r\n },\r\n search: function (event)\r\n {\r\n return new Promise((resolve, reject) =>\r\n {\r\n if (event) event.preventDefault();\r\n this.updateHistory();\r\n this.hasError = false;\r\n\r\n let searchRequest = this.createSearchRequest();\r\n if (this.initialSearch)\r\n {\r\n searchRequest.select = 'Apparaatsoort';\r\n this.searchApi.search(searchRequest)\r\n .then((response) =>\r\n {\r\n this.noResults = false;\r\n if (response && response.data)\r\n {\r\n this.count = response.data['@odata.count'];\r\n this.noResults = this.count <= 0;\r\n }\r\n\r\n if (this.tempRestorePage > this.maxPages) {\r\n this.tempRestorePage = this.maxPages;\r\n }\r\n\r\n if (this.count > 0)\r\n {\r\n for (let i = 0; i < this.searchSettings.searchRequest.facets.length; i++)\r\n {\r\n this.searchSettings.searchRequest.facets[i] += ',count:' + this.count;\r\n }\r\n }\r\n\r\n searchRequest = this.createSearchRequest();\r\n this.executeSearch(searchRequest)\r\n .then((response) => {\r\n resolve(response);\r\n setTimeout(function () {\r\n window.scrollTo({ top: 0, behavior: 'smooth' });\r\n }, this.scrollDelay);\r\n })\r\n .catch((error) => {\r\n reject(error);\r\n });\r\n })\r\n .catch((error) =>\r\n {\r\n this.hasError = true;\r\n console.error(error);\r\n reject(error);\r\n });\r\n }\r\n else\r\n {\r\n this.executeSearch(searchRequest)\r\n .then((response) => {\r\n setTimeout(function () {\r\n window.scrollTo({ top: 0, behavior: 'smooth' });\r\n }, this.scrollDelay);\r\n resolve(response);\r\n })\r\n .catch((error) => { reject(error); });\r\n }\r\n });\r\n },\r\n previousPage: function () {\r\n this.currentPage--;\r\n this.search();\r\n },\r\n nextPage: function () {\r\n this.currentPage++;\r\n this.search();\r\n },\r\n goToPage: function (pageNumber) {\r\n if (!isNaN(pageNumber) && pageNumber >= 1 && pageNumber <= this.maxPages) {\r\n this.currentPage = pageNumber;\r\n this.search();\r\n }\r\n },\r\n getPaginatedUrlPreviousPage: function () {\r\n return this.getPaginatedUrlForPage(this.currentPage - 1);\r\n },\r\n getPaginatedUrlNextPage: function () {\r\n return this.getPaginatedUrlForPage(this.currentPage + 1);\r\n },\r\n getPaginatedUrlForPage: function (pageNumber) {\r\n const url = this.createQueryString(pageNumber);\r\n return url || window.location.pathname;\r\n },\r\n addToCart: function (item)\r\n {\r\n if (item !== undefined && item !== null)\r\n {\r\n if (item.AdviesprijsWeergeven === true)\r\n {\r\n this.saveBeforeRedirect();\r\n window.location.href = item.ProductURL;\r\n }\r\n else\r\n {\r\n let skuid = item.SKUID;\r\n let axiosClient = axios.create({ baseURL: '/FRHandlers/' });\r\n axiosClient.post('SchefferBasketHandler.ashx', { skuid: skuid })\r\n .then((response) =>\r\n {\r\n if (response && response.data && response.data.success)\r\n {\r\n // The following situation: after addToCart, redirect to the shopping cart page, does not save previous facet/paging settings\r\n // window.location.href = response.data.basketUrl;\r\n\r\n // The following situation: stays on the page after addToCart, preserves facet/paging settings, triggers an animation\r\n // Store some stuff in local storage to re-set it after postback\r\n this.saveSettingsToLocalStorage();\r\n\r\n // Push history to add action=add_cart parameter to the url (this triggers an animation).\r\n // Then 'redirect-to-self'. The item stored in localstorage will make sure that the facet and paging settings are restored after postback\r\n this.updateHistory(this.currentPage, true);\r\n window.location.href = window.location.href;\r\n }\r\n else\r\n {\r\n console.log('failure');\r\n }\r\n })\r\n .catch((exception) =>\r\n {\r\n console.error(exception);\r\n });\r\n }\r\n }\r\n },\r\n getAndUpdatePricesFromSystem: function ()\r\n {\r\n return new Promise((resolve, reject) =>\r\n {\r\n if (this.items && this.items.length > 0)\r\n {\r\n let skuIds = this.items.map((v) => { return v.SKUID; });\r\n let axiosClient = axios.create({ baseURL: '/FRHandlers/' });\r\n axiosClient.post('SchefferPriceRequestHandler.ashx', { skuids: skuIds })\r\n .then((response) =>\r\n {\r\n if (response && response.data)\r\n {\r\n if (this.items && this.items.length > 0)\r\n {\r\n for (let i = 0; i < this.items.length; i++)\r\n {\r\n let itemResponseData = response.data[this.items[i].SKUID];\r\n if (itemResponseData)\r\n {\r\n let changedValue = this.items[i];\r\n changedValue.Price = itemResponseData.price;\r\n this.$set(this.items, i, changedValue);\r\n }\r\n }\r\n resolve('OK');\r\n }\r\n else resolve('NO_ITEMS');\r\n }\r\n else resolve('NO_RESPONSE_FROM_SERVICE');\r\n })\r\n .catch((error) =>\r\n {\r\n console.error(error);\r\n reject(error);\r\n });\r\n }\r\n else resolve(null);\r\n });\r\n },\r\n saveSettingsToLocalStorage: function()\r\n {\r\n let storeObject = { checkedFacets: this.checkedFacets, rangeFacets: this.rangeFacets, currentPage: this.currentPage };\r\n let storeJSON = JSON.stringify(storeObject);\r\n window.localStorage.setItem(this.localStorageName, storeJSON);\r\n },\r\n saveBeforeRedirect: function()\r\n {\r\n this.saveSettingsToLocalStorage();\r\n this.updateHistory(this.currentPage, false, true);\r\n },\r\n calculateProductsBlockBounds: function () {\r\n const scroll = window.scrollY || window.pageYOffset;\r\n const el = $('.block-products')[0];\r\n if (el) {\r\n const boundsTop = el.getBoundingClientRect().top + scroll;\r\n\r\n this.productsBlockBounds = {\r\n top: boundsTop,\r\n bottom: boundsTop + el.clientHeight\r\n };\r\n }\r\n },\r\n setScrollPosition() {\r\n if (this.scrollToTopTargetId) {\r\n const target = document.getElementById(this.scrollToTopTargetId);\r\n const targetRect = target.getBoundingClientRect();\r\n const bodyRect = document.body.getBoundingClientRect();\r\n const offset = targetRect.top - bodyRect.top - window.innerHeight / 2;\r\n\r\n // Set vertical position of scroll to top button\r\n this.scrollToTopPos = {\r\n 'top': offset + 'px'\r\n };\r\n setTimeout(function () {\r\n window.scrollTo({ top: offset, behavior: 'smooth' });\r\n }, this.scrollDelay);\r\n }\r\n },\r\n scrollToTop() {\r\n this.isScrollToTopClicked = true;\r\n setTimeout(function () {\r\n window.scrollTo({ top: 0, behavior: 'smooth' });\r\n }, this.scrollDelay);\r\n },\r\n updateHistory(page, itemAddedToCart, restoreFromStorage) {\r\n const url = this.createQueryString(page, itemAddedToCart, restoreFromStorage);\r\n if (itemAddedToCart) history.replaceState(null, null, url);\r\n else if (restoreFromStorage) history.replaceState(null, null, url);\r\n else if (this.restoreFromStorage) history.replaceState(null, null, url);\r\n else if (window.location.pathname === url) history.replaceState(null, null, url);\r\n else history.pushState(null, null, url);\r\n },\r\n createQueryString(page, itemAddedToCart, restoreFromStorage) {\r\n let queryParams = {};\r\n if (!page) page = this.currentPage;\r\n\r\n _.forEach(this.checkedFacets, function (x) {\r\n const vals = x.split('|');\r\n const key = vals[0];\r\n const value = vals[1];\r\n const existingFilter = queryParams[key];\r\n if (existingFilter === undefined) {\r\n queryParams[key] = value;\r\n } else {\r\n queryParams[key] += '|' + value;\r\n }\r\n });\r\n\r\n for (const key in this.rangeFacets) {\r\n const rangeFacet = this.rangeFacets[key];\r\n if (getHasChanged(rangeFacet)) {\r\n queryParams[key] = rangeFacet.value[0] + '|' + rangeFacet.value[1];\r\n }\r\n }\r\n\r\n if (this.searchSettings.searchRequest.orderBy !== this.defaultSearchRequest.orderBy) queryParams['order'] = this.searchSettings.searchRequest.orderBy;\r\n if (page !== this.defaultSearchRequest.page) queryParams['page'] = page;\r\n if (parseInt(this.searchSettings.searchRequest.top) !== this.defaultSearchRequest.top) queryParams['top'] = this.searchSettings.searchRequest.top;\r\n if (itemAddedToCart === true) queryParams['action'] = 'add_cart';\r\n if (restoreFromStorage === true && !itemAddedToCart) queryParams['action'] = 'rfs';\r\n\r\n if (_.isEmpty(queryParams)) return window.location.pathname;\r\n let queryString = '?';\r\n _.forEach(queryParams, (value, key) => {\r\n queryString += encodeURIComponent(key) + '=' + encodeURIComponent(value) + '&';\r\n });\r\n return queryString.slice(0, -1);\r\n },\r\n applyFiltersFromQueryString () {\r\n const urlSearchParams = new window.URLSearchParams(window.location.search);\r\n const queryCheckedFacets = [];\r\n for (const key of urlSearchParams.keys()) {\r\n const keyVals = urlSearchParams.get(key);\r\n if (key === 'page') {\r\n this.tempRestorePage = this.searchSettings.gui.page;\r\n }\r\n if (_.has(this.rangeFacets, key)) {\r\n const kv = keyVals.split('|');\r\n if (kv.length === 2 && !isNaN(kv[0]) && !isNaN(kv[1])) this.rangeFacets[key].value = [kv[0], kv[1]];\r\n } else {\r\n _.forEach(this.facetSettings, function (facetSetting) {\r\n if (facetSetting.key === key) {\r\n _.forEach(keyVals.split('|'), function (x) {\r\n queryCheckedFacets.push(key + '|' + x);\r\n });\r\n return false;\r\n }\r\n });\r\n }\r\n }\r\n this.restoreFromStorage = true;\r\n this.checkedFacets = queryCheckedFacets;\r\n }\r\n },\r\n created: function ()\r\n {\r\n // Set default data properties\r\n this.searchSettings = searchSettings;\r\n this.rangeFacets = rangeSliders;\r\n this.numRangeFacets = numRangeFacets;\r\n this.pageData = pageData;\r\n this.facetSettings = facetSettings;\r\n this.seoSettings = seoSettings;\r\n this.searchText = this.searchSettings.searchRequest.search;\r\n this.currentPage = this.searchSettings.gui.page;\r\n\r\n // Set default orderBy if not set\r\n if (!this.searchSettings.searchRequest.orderBy) this.searchSettings.searchRequest.orderBy = this.defaultSearchRequest.orderBy;\r\n\r\n // Set localStorage key if pageData is available\r\n if (this.pageData && this.pageData.uniqueId) this.localStorageName = this.pageData.uniqueId;\r\n\r\n // Init Azure Search API\r\n this.searchApi = new azuresearch.AzureSearchApi(this.searchSettings);\r\n\r\n // Extract facet value overrides (if any)\r\n _.forEach(this.searchSettings.facets, (facet) => {\r\n if (facet && facet.facetValueOverrides) {\r\n // Set facet-value-overrides coming from the system\r\n this.facetValueOverrides[facet.field] = facet.facetValueOverrides;\r\n\r\n // Set one extra override, this handles the 'empty' field stuff\r\n this.facetValueOverrides[facet.field].push({ key: '', value: '(onbekend)' });\r\n } else if (facet) {\r\n // Set at least one override for all fields to handle 'empty' values\r\n this.facetValueOverrides[facet.field] = [{ key: '', value: '(onbekend)' }];\r\n }\r\n });\r\n\r\n // Try get object from local storage, if it exist set it back up\r\n let rfsQueryParam = helper.getParameterByName('action');\r\n if (rfsQueryParam === 'rfs' || rfsQueryParam === 'add_cart') {\r\n let localStorageJSON = window.localStorage.getItem(this.localStorageName);\r\n if (localStorageJSON) {\r\n // Parse to object, it is stored as JSON\r\n let storedObject = JSON.parse(localStorageJSON);\r\n\r\n // Set this to true to indicate we've done a postback due to a click on the add-to-cart button\r\n this.restoreFromStorage = true;\r\n\r\n // Re-set some variables from the object\r\n this.tempRestorePage = storedObject.currentPage;\r\n this.currentPage = storedObject.currentPage;\r\n this.rangeFacets = storedObject.rangeFacets;\r\n this.checkedFacets = storedObject.checkedFacets;\r\n\r\n // Remove the item from storage\r\n window.localStorage.removeItem(this.localStorageName);\r\n }\r\n } else { // If object from localstorage should not be applied, apply filters from query string\r\n this.applyFiltersFromQueryString();\r\n }\r\n\r\n if (this.searchSettings.gui.executeSearchOnLoad && !this.restoreFromStorage) {\r\n this.search()\r\n .then((response) =>\r\n {\r\n this.ready = true;\r\n })\r\n .catch((error) =>\r\n {\r\n this.ready = true;\r\n console.error(error);\r\n });\r\n } else if (!this.restoreFromStorage) {\r\n this.ready = true;\r\n console.log('testink');\r\n }\r\n },\r\n mounted: function () {\r\n window.addEventListener('popstate', this.applyFiltersFromQueryString, false);\r\n },\r\n beforeDestroy: function () {\r\n window.removeEventListener('popstate', this.applyFiltersFromQueryString);\r\n }\r\n });\r\n return filtersApp;\r\n}\r\n\r\nfunction doHasASelectedFacetValue(facetKey, checkedFacets)\r\n{\r\n if (checkedFacets !== null && checkedFacets.length > 0)\r\n {\r\n if (_.findIndex(checkedFacets, function (f) { return f.startsWith(facetKey); }) > -1)\r\n {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n\r\nfunction setFacets(currentFacets, newFacets, initialSearch, checkedFacets) {\r\n // Guard checks\r\n if (initialSearch) return newFacets;\r\n\r\n // loop trough all facets\r\n for (var key in newFacets) {\r\n if (newFacets.hasOwnProperty(key) && key.indexOf('@odata') === -1) {\r\n // Get the items that are not in the new facet result and set the count to zero\r\n var difference = _.differenceBy(currentFacets[key], newFacets[key], 'value');\r\n if (difference && difference.length > 0) {\r\n _.forEach(difference, function (diff) {\r\n if (!doHasASelectedFacetValue(key, checkedFacets)) diff.count = 0;\r\n });\r\n }\r\n\r\n // Get all items that still are in the new facet results and set them to their new count\r\n var intersect = _.intersectionBy(newFacets[key], currentFacets[key], 'value');\r\n if (intersect && intersect.length > 0) {\r\n _.forEach(intersect, function (inter) {\r\n var item = _.find(currentFacets[key], function (x) { return x.value === inter.value; });\r\n if (item) item.count = inter.count;\r\n });\r\n }\r\n }\r\n }\r\n return currentFacets;\r\n}\r\n\r\nfunction ConcatFilters(arFilters)\r\n{\r\n if (arFilters)\r\n {\r\n var filters;\r\n for (var i = 0; i < arFilters.length; i++)\r\n {\r\n if (arFilters[i] && arFilters[i] !== '')\r\n {\r\n if (filters)\r\n {\r\n filters = (filters + ' and ' + arFilters[i]);\r\n }\r\n else\r\n {\r\n filters = arFilters[i];\r\n }\r\n }\r\n }\r\n return filters;\r\n }\r\n return null;\r\n}\r\n\r\nfunction getHasChanged(item)\r\n{\r\n if (item.value && (Array.isArray(item.value)))\r\n {\r\n if (item.value[0] === item.min && item.value[1] === item.max)\r\n {\r\n return false;\r\n }\r\n else\r\n {\r\n return true;\r\n }\r\n }\r\n}\r\n\r\nfunction GetRangeFilter(items)\r\n{\r\n if (items)\r\n {\r\n var filter = '';\r\n for (var key in items)\r\n {\r\n var haschanged = getHasChanged(items[key]);\r\n if (haschanged)\r\n {\r\n filter += '(' + key + ' ge ' + items[key].value[0] + ' and ' + key + ' le ' + items[key].value[1] + ') and ';\r\n }\r\n }\r\n\r\n if (filter.length)\r\n {\r\n filter = filter.slice(0, -5);\r\n }\r\n\r\n return filter;\r\n }\r\n return '';\r\n}\r\n\r\nfunction GetFacetFilter(items, facetSettings)\r\n{\r\n var filter = '';\r\n var facets = _.map(items, function (f)\r\n {\r\n var kv = f.split('|');\r\n var facet = _.find(facetSettings, function (x)\r\n {\r\n return x.key === kv[0];\r\n });\r\n return { facetKey: kv[0], facetValue: kv[1], facetType: facet.value };\r\n });\r\n\r\n var groupedFacets = _.groupBy(facets, 'facetKey');\r\n _.forEach(groupedFacets, function (key)\r\n {\r\n var subFilter = '';\r\n _.forEach(key, function (facet)\r\n {\r\n if (facet.facetType === 'Collection')\r\n {\r\n subFilter += facet.facetKey + '/any(t: t eq \\'' + facet.facetValue + '\\') and ';\r\n }\r\n else if (facet.facetType === 'String')\r\n {\r\n subFilter += facet.facetKey + ' eq \\'' + facet.facetValue + '\\' or ';\r\n }\r\n else\r\n {\r\n subFilter += facet.facetKey + ' eq ' + facet.facetValue + ' or ';\r\n }\r\n });\r\n\r\n subFilter = `(${stripLastAndOr(subFilter)})`;\r\n filter += subFilter + ' and ';\r\n });\r\n\r\n return stripLastAndOr(filter);\r\n}\r\n\r\nfunction stripLastAndOr(filter)\r\n{\r\n var tmp = filter + '';\r\n var reAnd = /and$/;\r\n var reOr = /or$/;\r\n\r\n tmp = tmp.trimEnd();\r\n tmp = tmp.replace(reAnd, '');\r\n tmp = tmp.replace(reOr, '');\r\n\r\n return tmp;\r\n}\r\n\r\nexport default { init };\r\n\n\n\n// WEBPACK FOOTER //\n// ./CMS/scripts/modules/azureSearch/azureSearch.vm.js","import axios from 'axios';\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 AzureSearchApiSettings = function AzureSearchApiSettings(settings) {\n classCallCheck(this, AzureSearchApiSettings);\n\n this.searchServiceName = null;\n this.searchServiceAdminApiKey = null;\n this.searchServiceQueryApiKey = null;\n this.indexName = null;\n this.apiVersion = '2017-11-11';\n this.url = null;\n this.corsSettings = [];\n if (settings) {\n if (settings.searchServiceName) this.searchServiceName = settings.searchServiceName;\n if (settings.searchServiceAdminApiKey) this.searchServiceAdminApiKey = settings.searchServiceAdminApiKey;\n if (settings.searchServiceQueryApiKey) this.searchServiceQueryApiKey = settings.searchServiceQueryApiKey;\n if (settings.indexName) this.indexName = settings.indexName;\n if (settings.apiVersion) this.apiVersion = settings.apiVersion;\n if (settings.url) this.url = settings.url;\n if (settings.corsSettings) this.corsSettings = settings.corsSettings;\n }\n};\n\nvar AzureSearchRequest = function () {\n function AzureSearchRequest(settings) {\n classCallCheck(this, AzureSearchRequest);\n\n this.search = '*';\n this.select = null;\n this.filter = null;\n this.queryType = 'full';\n this.orderBy = null;\n this.top = null;\n this.skip = null;\n this.count = null;\n this.facets = [];\n this.highlight = null;\n this.highlightPreTag = null;\n this.highlightPostTag = null;\n this.scoringProfile = null;\n if (settings) {\n if (settings.search) this.search = settings.search;\n if (settings.select) this.select = settings.select;\n if (settings.filter) this.filter = settings.filter;\n if (settings.queryType) this.queryType = settings.queryType;\n if (settings.orderBy) this.orderBy = settings.orderBy;\n if (settings.top !== undefined && settings.top !== null) this.top = settings.top;\n if (settings.skip !== undefined && settings.skip !== null) this.skip = settings.skip;\n if (settings.count !== undefined && settings.count !== null) this.count = settings.count;\n if (settings.facets) this.facets = settings.facets;\n if (settings.highlight) this.highlight = settings.highlight;\n if (settings.highlightPreTag) this.highlightPreTag = settings.highlightPreTag;\n if (settings.highlightPostTag) this.highlightPostTag = settings.highlightPostTag;\n if (settings.scoringProfile) this.scoringProfile = settings.scoringProfile;\n }\n }\n\n createClass(AzureSearchRequest, [{\n key: 'getSearchRequestBody',\n value: function getSearchRequestBody() {\n var requestBody = {};\n if (this.search) requestBody.search = this.search;\n if (this.select) requestBody.select = this.select;\n if (this.filter) requestBody.filter = this.filter;\n if (this.queryType) requestBody.queryType = this.queryType;\n if (this.orderBy) requestBody.orderby = this.orderBy;\n if (this.top !== undefined && this.top !== null) requestBody.top = this.top;\n if (this.skip !== undefined && this.skip !== null) requestBody.skip = this.skip;\n if (this.count !== undefined && this.count !== null) requestBody.count = this.count;\n if (this.facets) requestBody.facets = this.facets;\n if (this.highlight) requestBody.highlight = this.highlight;\n if (this.highlightPreTag) requestBody.highlightPreTag = this.highlightPreTag;\n if (this.highlightPostTag) requestBody.highlightPostTag = this.highlightPostTag;\n if (this.scoringProfile) requestBody.scoringProfile = this.scoringProfile;\n return requestBody;\n }\n }]);\n return AzureSearchRequest;\n}();\n\nvar AzureSearchGui = function AzureSearchGui(settings) {\n classCallCheck(this, AzureSearchGui);\n\n this.showFacets = true;\n this.showSearchBar = false;\n this.executeSearchOnLoad = true;\n this.Page = 1;\n if (settings) {\n if (settings.showFacets !== undefined && settings.showFacets !== null) this.showFacets = settings.showFacets;\n if (settings.showSearchBar !== undefined && settings.showSearchBar !== null) this.showSearchBar = settings.showSearchBar;\n if (settings.executeSearchOnLoad !== undefined && settings.executeSearchOnLoad !== null) this.executeSearchOnLoad = settings.executeSearchOnLoad;\n if (settings.Page !== undefined && settings.Page !== null) this.Page = settings.Page;\n }\n};\n\nvar AzureSearchFacetDefinition = function AzureSearchFacetDefinition(settings) {\n classCallCheck(this, AzureSearchFacetDefinition);\n\n this.title = null;\n this.field = null;\n this.textTop = null;\n this.textBottom = null;\n this.tooltipText = null;\n this.valueType = null;\n this.facetMode = null;\n this.expanded = true;\n this.showMoreAfter = -1;\n this.facetValueOverrides = {};\n this.sliderSettings = {};\n if (settings) {\n if (settings.title) this.title = settings.title;\n if (settings.field) this.field = settings.field;\n if (settings.textTop) this.textTop = settings.textTop;\n if (settings.textBottom) this.textBottom = settings.textBottom;\n if (settings.tooltipText) this.tooltipText = settings.tooltipText;\n if (settings.valueType) this.valueType = settings.valueType;\n if (settings.facetMode) this.facetMode = settings.facetMode;\n if (settings.expanded !== undefined && settings.expanded !== null) this.expanded = settings.expanded;\n if (settings.showMoreAfter !== undefined && settings.showMoreAfter !== null) this.showMoreAfter = setImmediate.showMoreAfter;\n if (settings.facetValueOverrides) this.facetValueOverrides = settings.facetValueOverrides;\n if (settings.sliderSettings) this.sliderSettings = settings.sliderSettings;\n }\n};\n\nvar AzureSearchSearchSettings = function AzureSearchSearchSettings(settings) {\n classCallCheck(this, AzureSearchSearchSettings);\n\n this.apiSettings = new AzureSearchApiSettings();\n this.gui = new AzureSearchGui();\n this.searchRequest = new AzureSearchRequest();\n this.facets = [];\n if (settings) {\n if (settings.apiSettings) this.apiSettings = settings.apiSettings;\n if (settings.gui) this.gui = settings.gui;\n if (settings.searchRequest) this.searchRequest = settings.searchRequest;\n if (settings.facets) this.facets = settings.facets;\n }\n};\n\nvar AzureSearchApi = function () {\n function AzureSearchApi(settings) {\n var _this = this;\n\n classCallCheck(this, AzureSearchApi);\n\n this.settings = new AzureSearchSearchSettings();\n if (settings) this.settings = new AzureSearchSearchSettings(settings);\n\n this.client = axios.create({ baseURL: this.settings.apiSettings.url + '/indexes/' + this.settings.apiSettings.indexName + '/docs' });\n this.client.defaults.headers.common['Content-Type'] = 'application/json';\n this.client.defaults.headers.common['Api-Key'] = this.settings.apiSettings.searchServiceQueryApiKey;\n this.client.defaults.timeout = 0;\n this.client.defaults.method = 'post';\n\n this.client.interceptors.request.use(function (config) {\n config.url = config.url + '?api-version=' + _this.settings.apiSettings.apiVersion;\n return config;\n }, function (error) {\n return Promise.reject(error);\n });\n }\n\n createClass(AzureSearchApi, [{\n key: 'search',\n value: function search(searchRequest) {\n var azureSearchRequest = new AzureSearchRequest(searchRequest);\n return this.client.post('/search', azureSearchRequest.getSearchRequestBody());\n }\n }]);\n return AzureSearchApi;\n}();\n\nvar index = { AzureSearchApiSettings: AzureSearchApiSettings, AzureSearchRequest: AzureSearchRequest, AzureSearchGui: AzureSearchGui, AzureSearchFacetDefinition: AzureSearchFacetDefinition, AzureSearchSearchSettings: AzureSearchSearchSettings, AzureSearchApi: AzureSearchApi };\n\nexport default index;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@frontisbv/scheffer-azuresearch-searchclient/dist/index.js\n// module id = 52\n// module chunks = 0","/**\n * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

' + func(text) + '

';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '

fred, barney, & pebbles

'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '