Welcome to mirror list, hosted at ThFree Co, Russian Federation.

vendors~editor~files-modal.js.map « js - github.com/nextcloud/text.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: c5903e426e3557f3de925666a1114677cb5f2295 (plain)
1
{"version":3,"sources":["webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/lodash/_getNative.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/v-tooltip/dist/v-tooltip.esm.js","webpack:///./node_modules/lodash/eq.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///../lib/index.ts","webpack:///./node_modules/lodash/_ListCache.js","webpack:///./node_modules/lodash/_assocIndexOf.js","webpack:///./node_modules/lodash/_nativeCreate.js","webpack:///./node_modules/lodash/_getMapData.js","webpack:///./node_modules/lodash/isArray.js","webpack:///./node_modules/lodash/isArrayLike.js","webpack:///./node_modules/node-gettext/lib/gettext.js","webpack:///./node_modules/lodash/_Map.js","webpack:///./node_modules/lodash/isFunction.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/lodash/isBuffer.js","webpack:///./node_modules/lodash/isTypedArray.js","webpack:///./node_modules/lodash/_isPrototype.js","webpack:///./node_modules/lodash/_baseAssignValue.js","webpack:///./node_modules/lodash/_Stack.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/lodash/_toSource.js","webpack:///./node_modules/lodash/_MapCache.js","webpack:///./node_modules/lodash/_equalArrays.js","webpack:///./node_modules/lodash/_Uint8Array.js","webpack:///./node_modules/lodash/_arrayLikeKeys.js","webpack:///./node_modules/lodash/isArguments.js","webpack:///./node_modules/lodash/_isIndex.js","webpack:///./node_modules/lodash/isLength.js","webpack:///./node_modules/lodash/_overArg.js","webpack:///./node_modules/lodash/_assignMergeValue.js","webpack:///./node_modules/lodash/_defineProperty.js","webpack:///./node_modules/lodash/_getPrototype.js","webpack:///./node_modules/lodash/_safeGet.js","webpack:///./node_modules/lodash/keysIn.js","webpack:///./node_modules/lodash/identity.js","webpack:///./node_modules/lodash.get/index.js","webpack:///./node_modules/node-gettext/lib/plurals.js","webpack:///../../src/utils/isBrowser.js","webpack:///../../src/utils/debounce.js","webpack:///../../src/utils/isFunction.js","webpack:///../../src/utils/getStyleComputedProperty.js","webpack:///../../src/utils/getParentNode.js","webpack:///../../src/utils/getScrollParent.js","webpack:///../../src/utils/getReferenceNode.js","webpack:///../../src/utils/isIE.js","webpack:///../../src/utils/getOffsetParent.js","webpack:///../../src/utils/getRoot.js","webpack:///../../src/utils/findCommonOffsetParent.js","webpack:///../../src/utils/isOffsetContainer.js","webpack:///../../src/utils/getScroll.js","webpack:///../../src/utils/includeScroll.js","webpack:///../../src/utils/getBordersSize.js","webpack:///../../src/utils/getWindowSizes.js","webpack:///../../src/utils/getClientRect.js","webpack:///../../src/utils/getBoundingClientRect.js","webpack:///../../src/utils/getOffsetRectRelativeToArbitraryNode.js","webpack:///../../src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","webpack:///../../src/utils/isFixed.js","webpack:///../../src/utils/getFixedPositionOffsetParent.js","webpack:///../../src/utils/getBoundaries.js","webpack:///../../src/utils/computeAutoPlacement.js","webpack:///../../src/utils/getReferenceOffsets.js","webpack:///../../src/utils/getOuterSizes.js","webpack:///../../src/utils/getOppositePlacement.js","webpack:///../../src/utils/getPopperOffsets.js","webpack:///../../src/utils/find.js","webpack:///../../src/utils/runModifiers.js","webpack:///../../src/utils/findIndex.js","webpack:///../../src/methods/update.js","webpack:///../../src/utils/isModifierEnabled.js","webpack:///../../src/utils/getSupportedPropertyName.js","webpack:///../../src/methods/destroy.js","webpack:///../../src/utils/getWindow.js","webpack:///../../src/utils/setupEventListeners.js","webpack:///../../src/methods/enableEventListeners.js","webpack:///../../src/methods/disableEventListeners.js","webpack:///../../src/utils/removeEventListeners.js","webpack:///../../src/utils/isNumeric.js","webpack:///../../src/utils/setStyles.js","webpack:///../../src/modifiers/computeStyle.js","webpack:///../../src/utils/isModifierRequired.js","webpack:///../../src/methods/placements.js","webpack:///../../src/utils/clockwise.js","webpack:///../../src/modifiers/flip.js","webpack:///../../src/modifiers/offset.js","webpack:///../../src/modifiers/index.js","webpack:///../../src/methods/defaults.js","webpack:///../../src/modifiers/shift.js","webpack:///../../src/modifiers/preventOverflow.js","webpack:///../../src/modifiers/keepTogether.js","webpack:///../../src/modifiers/arrow.js","webpack:///../../src/utils/getOppositeVariation.js","webpack:///../../src/modifiers/inner.js","webpack:///../../src/modifiers/hide.js","webpack:///../../src/utils/getRoundedOffsets.js","webpack:///../../src/modifiers/applyStyle.js","webpack:///../../src/utils/setAttributes.js","webpack:///../../src/index.js","webpack:///./node_modules/lodash/isEqual.js","webpack:///./node_modules/lodash/_baseIsEqual.js","webpack:///./node_modules/lodash/_baseIsEqualDeep.js","webpack:///./node_modules/lodash/_listCacheClear.js","webpack:///./node_modules/lodash/_listCacheDelete.js","webpack:///./node_modules/lodash/_listCacheGet.js","webpack:///./node_modules/lodash/_listCacheHas.js","webpack:///./node_modules/lodash/_listCacheSet.js","webpack:///./node_modules/lodash/_stackClear.js","webpack:///./node_modules/lodash/_stackDelete.js","webpack:///./node_modules/lodash/_stackGet.js","webpack:///./node_modules/lodash/_stackHas.js","webpack:///./node_modules/lodash/_stackSet.js","webpack:///./node_modules/lodash/_baseIsNative.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/_isMasked.js","webpack:///./node_modules/lodash/_coreJsData.js","webpack:///./node_modules/lodash/_getValue.js","webpack:///./node_modules/lodash/_mapCacheClear.js","webpack:///./node_modules/lodash/_Hash.js","webpack:///./node_modules/lodash/_hashClear.js","webpack:///./node_modules/lodash/_hashDelete.js","webpack:///./node_modules/lodash/_hashGet.js","webpack:///./node_modules/lodash/_hashHas.js","webpack:///./node_modules/lodash/_hashSet.js","webpack:///./node_modules/lodash/_mapCacheDelete.js","webpack:///./node_modules/lodash/_isKeyable.js","webpack:///./node_modules/lodash/_mapCacheGet.js","webpack:///./node_modules/lodash/_mapCacheHas.js","webpack:///./node_modules/lodash/_mapCacheSet.js","webpack:///./node_modules/lodash/_SetCache.js","webpack:///./node_modules/lodash/_setCacheAdd.js","webpack:///./node_modules/lodash/_setCacheHas.js","webpack:///./node_modules/lodash/_arraySome.js","webpack:///./node_modules/lodash/_cacheHas.js","webpack:///./node_modules/lodash/_equalByTag.js","webpack:///./node_modules/lodash/_mapToArray.js","webpack:///./node_modules/lodash/_setToArray.js","webpack:///./node_modules/lodash/_equalObjects.js","webpack:///./node_modules/lodash/_getAllKeys.js","webpack:///./node_modules/lodash/_baseGetAllKeys.js","webpack:///./node_modules/lodash/_arrayPush.js","webpack:///./node_modules/lodash/_getSymbols.js","webpack:///./node_modules/lodash/_arrayFilter.js","webpack:///./node_modules/lodash/stubArray.js","webpack:///./node_modules/lodash/keys.js","webpack:///./node_modules/lodash/_baseTimes.js","webpack:///./node_modules/lodash/_baseIsArguments.js","webpack:///./node_modules/lodash/stubFalse.js","webpack:///./node_modules/lodash/_baseIsTypedArray.js","webpack:///./node_modules/lodash/_baseUnary.js","webpack:///./node_modules/lodash/_nodeUtil.js","webpack:///./node_modules/lodash/_baseKeys.js","webpack:///./node_modules/lodash/_nativeKeys.js","webpack:///./node_modules/lodash/_getTag.js","webpack:///./node_modules/lodash/_DataView.js","webpack:///./node_modules/lodash/_Promise.js","webpack:///./node_modules/lodash/_Set.js","webpack:///./node_modules/lodash/_WeakMap.js","webpack:///./node_modules/vue-resize/dist/vue-resize.esm.js","webpack:///./node_modules/lodash/merge.js","webpack:///./node_modules/lodash/_baseMerge.js","webpack:///./node_modules/lodash/_baseFor.js","webpack:///./node_modules/lodash/_createBaseFor.js","webpack:///./node_modules/lodash/_baseMergeDeep.js","webpack:///./node_modules/lodash/_cloneBuffer.js","webpack:///./node_modules/lodash/_cloneTypedArray.js","webpack:///./node_modules/lodash/_cloneArrayBuffer.js","webpack:///./node_modules/lodash/_copyArray.js","webpack:///./node_modules/lodash/_initCloneObject.js","webpack:///./node_modules/lodash/_baseCreate.js","webpack:///./node_modules/lodash/isArrayLikeObject.js","webpack:///./node_modules/lodash/isPlainObject.js","webpack:///./node_modules/lodash/toPlainObject.js","webpack:///./node_modules/lodash/_copyObject.js","webpack:///./node_modules/lodash/_assignValue.js","webpack:///./node_modules/lodash/_baseKeysIn.js","webpack:///./node_modules/lodash/_nativeKeysIn.js","webpack:///./node_modules/lodash/_createAssigner.js","webpack:///./node_modules/lodash/_baseRest.js","webpack:///./node_modules/lodash/_overRest.js","webpack:///./node_modules/lodash/_apply.js","webpack:///./node_modules/lodash/_setToString.js","webpack:///./node_modules/lodash/_baseSetToString.js","webpack:///./node_modules/lodash/constant.js","webpack:///./node_modules/lodash/_shortOut.js","webpack:///./node_modules/lodash/_isIterateeCall.js"],"names":["module","exports","webpackPolyfill","deprecate","paths","children","Object","defineProperty","enumerable","get","l","i","freeGlobal","require","freeSelf","self","root","Function","baseIsNative","getValue","object","key","value","undefined","type","_typeof","obj","Symbol","iterator","constructor","prototype","_defineProperties","target","props","length","descriptor","configurable","writable","_defineProperty","ownKeys","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","push","apply","_objectSpread2","arguments","source","forEach","getOwnPropertyDescriptors","defineProperties","SVGAnimatedString","convertToArray","split","addClasses","el","classes","classList","newClasses","className","baseVal","newClass","indexOf","SVGElement","setAttribute","join","removeClasses","index","splice","window","supportsPassive","opts","addEventListener","e","DEFAULT_OPTIONS","container","delay","html","placement","title","template","trigger","offset","openTooltips","Tooltip","_reference","_options","_this","this","instance","Constructor","TypeError","_classCallCheck","evt","reference","options","relatedreference","toElement","relatedTarget","_tooltipNode","contains","callback","evt2","relatedreference2","removeEventListener","_scheduleHide","jquery","show","bind","hide","_isOpen","_init","protoProps","staticProps","_show","_hide","_dispose","_classes","content","_setContent","classesUpdated","directive","defaultClass","setClasses","getOptions","needPopperUpdate","needRestart","isOpen","dispose","popperInstance","update","events","_isDisposed","_enableDocumentTouch","_setEventListeners","$_originalTitle","getAttribute","removeAttribute","_this2","tooltipGenerator","document","createElement","innerHTML","trim","tooltipNode","childNodes","id","ariaId","concat","Math","random","toString","substr","autoHide","_this3","asyncContent","_applyContent","then","_this4","Promise","resolve","reject","allowHtml","rootNode","titleNode","querySelector","innerSelector","nodeType","firstChild","removeChild","appendChild","result","loadingClass","loadingContent","asyncResult","catch","innerText","clearTimeout","_disposeTimer","assign","updateClasses","_ensureShown","_this5","style","display","enableEventListeners","_create","_findContainer","_append","popperOptions","modifiers","arrow","element","arrowSelector","boundariesElement","preventOverflow","Popper","requestAnimationFrame","_this6","_noLongerOpen","disableEventListeners","disposeTime","disposeTimeout","setTimeout","_removeTooltipNode","parentNode","_this7","_events","_ref","func","event","destroy","removeOnDestroy","_this8","directEvents","oppositeEvents","hideOnTargetClick","usedByTooltip","_scheduleShow","_this9","computedDelay","_scheduleTimer","_this10","ownerDocument","body","_setTooltipNodeEvent","_onDocumentTouch","passive","capture","state","enabled","positions","defaultOptions","defaultPlacement","defaultTargetClass","defaultHtml","defaultTemplate","defaultArrowSelector","defaultInnerSelector","defaultDelay","defaultTrigger","defaultOffset","defaultContainer","defaultBoundariesElement","defaultPopperOptions","defaultLoadingClass","defaultLoadingContent","defaultHideOnTargetClick","popover","defaultBaseClass","defaultWrapperClass","defaultInnerClass","defaultArrowClass","defaultOpenClass","defaultAutoHide","defaultHandleResize","typeofOffset","getPlacement","pos","getContent","createTooltip","tooltip","_tooltip","_vueEl","targetClasses","_tooltipTargetClasses","destroyTooltip","_tooltipOldShow","oldValue","setContent","setOptions","unbind","addListeners","onClick","onTouchStart","removeListeners","onTouchEnd","onTouchCancel","currentTarget","closePopover","$_vclosepopover_touch","closeAllPopover","$_closePopoverModifiers","all","changedTouches","touch","$_vclosepopover_touchPoint","firstTouch","abs","screenY","screenX","vclosepopover","_ref2","getDefault","isIOS","navigator","test","userAgent","MSStream","openPopovers","Element","script","name","components","ResizeObserver","open","Boolean","default","disabled","String","Number","popoverClass","Array","popoverBaseClass","popoverInnerClass","popoverWrapperClass","popoverArrowClass","handleResize","openGroup","openClass","data","computed","cssClass","popoverId","watch","val","oldVal","popoverNode","$refs","$_findContainer","console","warn","scheduleUpdate","$_removeEventListeners","$_addEventListeners","$_updatePopper","handler","deep","created","$_isDisposed","$_mounted","$_events","$_preventOpen","mounted","$_init","deactivated","beforeDestroy","methods","_ref2$force","skipDelay","force","$_scheduleShow","$emit","$_beingShowed","_ref3","$_scheduleHide","$_show","$_disposeTimer","hidden","$_getOffset","$_hide","$_scheduleTimer","parseInt","$_setTooltipNodeEvent","event2","_ref4","cb","$_restartPopper","$_handleGlobalClose","$_handleResize","handleGlobalClose","_loop","normalizeComponent","scopeId","isFunctionalTemplate","moduleIdentifier","shadowMode","createInjector","createInjectorSSR","createInjectorShadow","hook","render","staticRenderFns","_compiled","functional","_scopeId","context","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","call","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","originalRender","h","existing","beforeCreate","__vue_script__","__vue_render__","_vm","_h","$createElement","_c","_self","staticClass","class","ref","staticStyle","attrs","tabindex","_t","_v","visibility","on","keyup","$event","_k","keyCode","position","notify","_e","_withStripped","__vue_component__","install","Vue","installed","finalOptions","plugin","component","css","insertAt","head","getElementsByTagName","insertBefore","styleSheet","cssText","createTextNode","styleInject","VTooltip","VClosePopover","VPopover","GlobalVue","global","use","other","getRawTag","objectToString","symToStringTag","toStringTag","getLocale","OC","app","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","entries","clear","entry","set","has","eq","array","nativeCreate","getNative","isKeyable","map","__data__","isArray","isFunction","isLength","plurals","Gettext","catalogs","locale","domain","listeners","sourceLocale","debug","eventName","off","listener","emit","eventData","message","Error","addTranslations","translations","setLocale","setTextDomain","gettext","msgid","dnpgettext","dgettext","ngettext","msgidPlural","count","dngettext","pgettext","msgctxt","dpgettext","npgettext","translation","defaultTranslation","isNaN","_getTranslation","pluralsFunc","getLanguageCode","msgstr","getComment","comments","toLowerCase","textdomain","setlocale","addTextdomain","error","Map","baseGetTag","isObject","tag","stubFalse","freeExports","freeModule","Buffer","isBuffer","baseIsTypedArray","baseUnary","nodeUtil","nodeIsTypedArray","isTypedArray","objectProto","Ctor","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","size","funcToString","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","SetCache","arraySome","cacheHas","bitmask","customizer","equalFunc","stack","isPartial","arrLength","othLength","stacked","seen","arrValue","othValue","compared","othIndex","Uint8Array","baseTimes","isArguments","isIndex","hasOwnProperty","inherited","isArr","isArg","isBuff","isType","skipIndexes","baseIsArguments","isObjectLike","propertyIsEnumerable","reIsUint","transform","arg","baseAssignValue","getPrototype","overArg","getPrototypeOf","arrayLikeKeys","baseKeysIn","isArrayLike","reIsDeepProp","reIsPlainProp","reLeadingDot","rePropName","reEscapeChar","reIsHostCtor","uid","arrayProto","funcProto","coreJsData","maskSrcKey","exec","IE_PROTO","reIsNative","RegExp","replace","symbolProto","symbolToString","Hash","assocIndexOf","baseGet","path","isSymbol","isKey","stringToPath","toKey","isHostObject","toSource","getMapData","pop","memoize","string","baseToString","match","number","quote","resolver","memoized","args","cache","Cache","defaultValue","ach","examples","plural","sample","nplurals","pluralsText","n","af","ak","am","an","ar","arn","ast","ay","az","be","bg","bn","bo","br","brx","bs","ca","cgg","cs","csb","cy","da","de","doi","dz","en","eo","es","et","eu","fa","ff","fi","fil","fo","fr","fur","fy","ga","gd","gl","gu","gun","ha","he","hi","hne","hr","hu","hy","is","it","ja","jbo","jv","ka","kk","km","kn","ko","ku","kw","ky","lb","ln","lo","lt","lv","mai","mfe","mg","mi","mk","ml","mn","mni","mnk","mr","ms","mt","my","nah","nap","nb","ne","nl","nn","no","nso","oc","or","pa","pap","pl","pms","ps","pt","rm","ro","ru","rw","sah","sat","sco","sd","se","si","sk","sl","so","son","sq","sr","su","sv","sw","ta","te","tg","th","ti","tk","tr","tt","ug","uk","ur","uz","vi","wa","wo","yo","zh","timeoutDuration","longerTimeoutBrowsers","isBrowser","fn","called","scheduled","functionToCheck","getType","getStyleComputedProperty","property","getParentNode","getScrollParent","overflow","overflowX","overflowY","getReferenceNode","isIE11","isIE10","isIE","version","getOffsetParent","noOffsetParent","offsetParent","nodeName","getRoot","node","findCommonOffsetParent","element1","element2","order","Node","start","end","range","commonAncestorContainer","element1root","getScroll","side","upperSide","scrollingElement","includeScroll","rect","subtract","scrollTop","scrollLeft","modifier","getBordersSize","styles","axis","sideA","sideB","parseFloat","getSize","computedStyle","getWindowSizes","getComputedStyle","getClientRect","offsets","height","getBoundingClientRect","top","sizes","width","horizScrollbar","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","runIsIE","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","isFixed","getFixedPositionOffsetParent","getBoundaries","boundaries","left","boundariesNode","popper","isPaddingNumber","padding","getArea","computeAutoPlacement","rects","refRect","bottom","sortedAreas","b","a","filteredAreas","computedPlacement","variation","getReferenceOffsets","commonOffsetParent","getOuterSizes","x","y","getOppositePlacement","hash","right","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","find","arr","check","runModifiers","ends","prop","findIndex","cur","flip","positionFixed","isModifierEnabled","modifierName","some","getSupportedPropertyName","prefixes","upperProp","prefix","toCheck","getWindow","setupEventListeners","scrollElement","attachToScrollParents","scrollParents","isBody","removeEventListeners","isNumeric","isFinite","setStyles","unit","isFirefox","isModifierRequired","requesting","isRequired","requested","validPlacements","placements","clockwise","counter","BEHAVIORS","parseOffset","useHeight","basePlacement","fragments","frag","divider","splitRegex","ops","mergeWithPrevious","op","str","toValue","index2","shiftvariation","isVertical","shiftOffsets","transformProp","popperStyles","floor","opSide","arrowElement","len","sideCapitalized","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","placementOpposite","flipOrder","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flippedVariationByContent","flippedVariation","getOppositeVariation","subtractLength","bound","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","round","noRound","v","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","bothOddWidth","getRoundedOffsets","prefixedProperty","invertTop","invertLeft","attributes","debounce","modifierOptions","eventsEnabled","Utils","PopperUtils","Defaults","baseIsEqual","baseIsEqualDeep","equalArrays","equalByTag","equalObjects","getTag","objectTag","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","pairs","LARGE_ARRAY_SIZE","isMasked","nativeObjectToString","isOwn","unmasked","hashClear","hashDelete","hashGet","hashHas","hashSet","setCacheAdd","setCacheHas","values","predicate","mapToArray","setToArray","symbolValueOf","valueOf","byteLength","byteOffset","buffer","convert","getAllKeys","objProps","objLength","skipCtor","objValue","objCtor","othCtor","baseGetAllKeys","getSymbols","arrayPush","keysFunc","symbolsFunc","arrayFilter","stubArray","nativeGetSymbols","symbol","resIndex","baseKeys","iteratee","typedArrayTags","freeProcess","process","types","binding","isPrototype","nativeKeys","DataView","Set","WeakMap","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ArrayBuffer","ctorString","initCompat","init","ua","msie","substring","rv","edge","getInternetExplorerVersion","compareAndNotify","_w","$el","offsetWidth","offsetHeight","addResizeHandlers","_resizeObject","contentDocument","defaultView","removeResizeHandlers","onload","$nextTick","baseMerge","merge","createAssigner","srcIndex","assignMergeValue","baseFor","baseMergeDeep","keysIn","safeGet","srcValue","newValue","createBaseFor","fromRight","iterable","cloneBuffer","cloneTypedArray","copyArray","initCloneObject","isArrayLikeObject","isPlainObject","toPlainObject","mergeFunc","isCommon","isTyped","allocUnsafe","isDeep","slice","copy","cloneArrayBuffer","typedArray","arrayBuffer","baseCreate","objectCreate","create","proto","objectCtorString","copyObject","assignValue","isNew","nativeKeysIn","isProto","baseRest","isIterateeCall","assigner","sources","guard","identity","overRest","setToString","nativeMax","max","otherArgs","thisArg","baseSetToString","shortOut","constant","nativeNow","Date","now","lastCalled","stamp","remaining"],"mappings":"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","file":"vendors~editor~files-modal.js?v=80f811e39260c7149129","sourcesContent":["module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var baseIsNative = require('./_baseIsNative'),\n    getValue = require('./_getValue');\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 */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\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 */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\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 */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","import Popper from 'popper.js';\nimport isEqual from 'lodash/isEqual';\nimport { ResizeObserver } from 'vue-resize';\nimport merge from 'lodash/merge';\n\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _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\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    if (enumerableOnly) symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    });\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(Object(source), true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nvar SVGAnimatedString = function SVGAnimatedString() {};\n\nif (typeof window !== 'undefined') {\n  SVGAnimatedString = window.SVGAnimatedString;\n}\n\nfunction convertToArray(value) {\n  if (typeof value === 'string') {\n    value = value.split(' ');\n  }\n\n  return value;\n}\n/**\n * Add classes to an element.\n * This method checks to ensure that the classes don't already exist before adding them.\n * It uses el.className rather than classList in order to be IE friendly.\n * @param {object} el - The element to add the classes to.\n * @param {classes} string - List of space separated classes to be added to the element.\n */\n\nfunction addClasses(el, classes) {\n  var newClasses = convertToArray(classes);\n  var classList;\n\n  if (el.className instanceof SVGAnimatedString) {\n    classList = convertToArray(el.className.baseVal);\n  } else {\n    classList = convertToArray(el.className);\n  }\n\n  newClasses.forEach(function (newClass) {\n    if (classList.indexOf(newClass) === -1) {\n      classList.push(newClass);\n    }\n  });\n\n  if (el instanceof SVGElement) {\n    el.setAttribute('class', classList.join(' '));\n  } else {\n    el.className = classList.join(' ');\n  }\n}\n/**\n * Remove classes from an element.\n * It uses el.className rather than classList in order to be IE friendly.\n * @export\n * @param {any} el The element to remove the classes from.\n * @param {any} classes List of space separated classes to be removed from the element.\n */\n\nfunction removeClasses(el, classes) {\n  var newClasses = convertToArray(classes);\n  var classList;\n\n  if (el.className instanceof SVGAnimatedString) {\n    classList = convertToArray(el.className.baseVal);\n  } else {\n    classList = convertToArray(el.className);\n  }\n\n  newClasses.forEach(function (newClass) {\n    var index = classList.indexOf(newClass);\n\n    if (index !== -1) {\n      classList.splice(index, 1);\n    }\n  });\n\n  if (el instanceof SVGElement) {\n    el.setAttribute('class', classList.join(' '));\n  } else {\n    el.className = classList.join(' ');\n  }\n}\nvar supportsPassive = false;\n\nif (typeof window !== 'undefined') {\n  supportsPassive = false;\n\n  try {\n    var opts = Object.defineProperty({}, 'passive', {\n      get: function get() {\n        supportsPassive = true;\n      }\n    });\n    window.addEventListener('test', null, opts);\n  } catch (e) {}\n}\n\nvar DEFAULT_OPTIONS = {\n  container: false,\n  delay: 0,\n  html: false,\n  placement: 'top',\n  title: '',\n  template: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n  trigger: 'hover focus',\n  offset: 0\n};\nvar openTooltips = [];\n\nvar Tooltip = /*#__PURE__*/function () {\n  /**\n   * Create a new Tooltip.js instance\n   * @class Tooltip\n   * @param {HTMLElement} reference - The DOM node used as reference of the tooltip (it can be a jQuery element).\n   * @param {Object} options\n   * @param {String} options.placement=bottom\n   *      Placement of the popper accepted values: `top(-start, -end), right(-start, -end), bottom(-start, -end),\n   *      left(-start, -end)`\n   * @param {HTMLElement|String|false} options.container=false - Append the tooltip to a specific element.\n   * @param {Number|Object} options.delay=0\n   *      Delay showing and hiding the tooltip (ms) - does not apply to manual trigger type.\n   *      If a number is supplied, delay is applied to both hide/show.\n   *      Object structure is: `{ show: 500, hide: 100 }`\n   * @param {Boolean} options.html=false - Insert HTML into the tooltip. If false, the content will inserted with `innerText`.\n   * @param {String|PlacementFunction} options.placement='top' - One of the allowed placements, or a function returning one of them.\n   * @param {String} [options.template='<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>']\n   *      Base HTML to used when creating the tooltip.\n   *      The tooltip's `title` will be injected into the `.tooltip-inner` or `.tooltip__inner`.\n   *      `.tooltip-arrow` or `.tooltip__arrow` will become the tooltip's arrow.\n   *      The outermost wrapper element should have the `.tooltip` class.\n   * @param {String|HTMLElement|TitleFunction} options.title='' - Default title value if `title` attribute isn't present.\n   * @param {String} [options.trigger='hover focus']\n   *      How tooltip is triggered - click, hover, focus, manual.\n   *      You may pass multiple triggers; separate them with a space. `manual` cannot be combined with any other trigger.\n   * @param {HTMLElement} options.boundariesElement\n   *      The element used as boundaries for the tooltip. For more information refer to Popper.js'\n   *      [boundariesElement docs](https://popper.js.org/popper-documentation.html)\n   * @param {Number|String} options.offset=0 - Offset of the tooltip relative to its reference. For more information refer to Popper.js'\n   *      [offset docs](https://popper.js.org/popper-documentation.html)\n   * @param {Object} options.popperOptions={} - Popper options, will be passed directly to popper instance. For more information refer to Popper.js'\n   *      [options docs](https://popper.js.org/popper-documentation.html)\n   * @param {string} [options.ariaId] Id used for accessibility\n   * @return {Object} instance - The generated tooltip instance\n   */\n  function Tooltip(_reference, _options) {\n    var _this = this;\n\n    _classCallCheck(this, Tooltip);\n\n    _defineProperty(this, \"_events\", []);\n\n    _defineProperty(this, \"_setTooltipNodeEvent\", function (evt, reference, delay, options) {\n      var relatedreference = evt.relatedreference || evt.toElement || evt.relatedTarget;\n\n      var callback = function callback(evt2) {\n        var relatedreference2 = evt2.relatedreference || evt2.toElement || evt2.relatedTarget; // Remove event listener after call\n\n        _this._tooltipNode.removeEventListener(evt.type, callback); // If the new reference is not the reference element\n\n\n        if (!reference.contains(relatedreference2)) {\n          // Schedule to hide tooltip\n          _this._scheduleHide(reference, options.delay, options, evt2);\n        }\n      };\n\n      if (_this._tooltipNode.contains(relatedreference)) {\n        // listen to mouseleave on the tooltip element to be able to hide the tooltip\n        _this._tooltipNode.addEventListener(evt.type, callback);\n\n        return true;\n      }\n\n      return false;\n    });\n\n    // apply user options over default ones\n    _options = _objectSpread2(_objectSpread2({}, DEFAULT_OPTIONS), _options);\n    _reference.jquery && (_reference = _reference[0]);\n    this.show = this.show.bind(this);\n    this.hide = this.hide.bind(this); // cache reference and options\n\n    this.reference = _reference;\n    this.options = _options; // set initial state\n\n    this._isOpen = false;\n\n    this._init();\n  } //\n  // Public methods\n  //\n\n  /**\n   * Reveals an element's tooltip. This is considered a \"manual\" triggering of the tooltip.\n   * Tooltips with zero-length titles are never displayed.\n   * @method Tooltip#show\n   * @memberof Tooltip\n   */\n\n\n  _createClass(Tooltip, [{\n    key: \"show\",\n    value: function show() {\n      this._show(this.reference, this.options);\n    }\n    /**\n     * Hides an element’s tooltip. This is considered a “manual” triggering of the tooltip.\n     * @method Tooltip#hide\n     * @memberof Tooltip\n     */\n\n  }, {\n    key: \"hide\",\n    value: function hide() {\n      this._hide();\n    }\n    /**\n     * Hides and destroys an element’s tooltip.\n     * @method Tooltip#dispose\n     * @memberof Tooltip\n     */\n\n  }, {\n    key: \"dispose\",\n    value: function dispose() {\n      this._dispose();\n    }\n    /**\n     * Toggles an element’s tooltip. This is considered a “manual” triggering of the tooltip.\n     * @method Tooltip#toggle\n     * @memberof Tooltip\n     */\n\n  }, {\n    key: \"toggle\",\n    value: function toggle() {\n      if (this._isOpen) {\n        return this.hide();\n      } else {\n        return this.show();\n      }\n    }\n  }, {\n    key: \"setClasses\",\n    value: function setClasses(classes) {\n      this._classes = classes;\n    }\n  }, {\n    key: \"setContent\",\n    value: function setContent(content) {\n      this.options.title = content;\n\n      if (this._tooltipNode) {\n        this._setContent(content, this.options);\n      }\n    }\n  }, {\n    key: \"setOptions\",\n    value: function setOptions(options) {\n      var classesUpdated = false;\n      var classes = options && options.classes || directive.options.defaultClass;\n\n      if (!isEqual(this._classes, classes)) {\n        this.setClasses(classes);\n        classesUpdated = true;\n      }\n\n      options = getOptions(options);\n      var needPopperUpdate = false;\n      var needRestart = false;\n\n      if (this.options.offset !== options.offset || this.options.placement !== options.placement) {\n        needPopperUpdate = true;\n      }\n\n      if (this.options.template !== options.template || this.options.trigger !== options.trigger || this.options.container !== options.container || classesUpdated) {\n        needRestart = true;\n      }\n\n      for (var key in options) {\n        this.options[key] = options[key];\n      }\n\n      if (this._tooltipNode) {\n        if (needRestart) {\n          var isOpen = this._isOpen;\n          this.dispose();\n\n          this._init();\n\n          if (isOpen) {\n            this.show();\n          }\n        } else if (needPopperUpdate) {\n          this.popperInstance.update();\n        }\n      }\n    } //\n    // Private methods\n    //\n\n  }, {\n    key: \"_init\",\n    value: function _init() {\n      // get events list\n      var events = typeof this.options.trigger === 'string' ? this.options.trigger.split(' ') : [];\n      this._isDisposed = false;\n      this._enableDocumentTouch = events.indexOf('manual') === -1;\n      events = events.filter(function (trigger) {\n        return ['click', 'hover', 'focus'].indexOf(trigger) !== -1;\n      }); // set event listeners\n\n      this._setEventListeners(this.reference, events, this.options); // title attribute\n\n\n      this.$_originalTitle = this.reference.getAttribute('title');\n      this.reference.removeAttribute('title');\n      this.reference.setAttribute('data-original-title', this.$_originalTitle);\n    }\n    /**\n     * Creates a new tooltip node\n     * @memberof Tooltip\n     * @private\n     * @param {HTMLElement} reference\n     * @param {String} template\n     * @param {String|HTMLElement|TitleFunction} title\n     * @param {Boolean} allowHtml\n     * @return {HTMLelement} tooltipNode\n     */\n\n  }, {\n    key: \"_create\",\n    value: function _create(reference, template) {\n      var _this2 = this;\n\n      // create tooltip element\n      var tooltipGenerator = window.document.createElement('div');\n      tooltipGenerator.innerHTML = template.trim();\n      var tooltipNode = tooltipGenerator.childNodes[0]; // add unique ID to our tooltip (needed for accessibility reasons)\n\n      tooltipNode.id = this.options.ariaId || \"tooltip_\".concat(Math.random().toString(36).substr(2, 10)); // Initially hide the tooltip\n      // The attribute will be switched in a next frame so\n      // CSS transitions can play\n\n      tooltipNode.setAttribute('aria-hidden', 'true');\n\n      if (this.options.autoHide && this.options.trigger.indexOf('hover') !== -1) {\n        tooltipNode.addEventListener('mouseenter', function (evt) {\n          return _this2._scheduleHide(reference, _this2.options.delay, _this2.options, evt);\n        });\n        tooltipNode.addEventListener('click', function (evt) {\n          return _this2._scheduleHide(reference, _this2.options.delay, _this2.options, evt);\n        });\n      } // return the generated tooltip node\n\n\n      return tooltipNode;\n    }\n  }, {\n    key: \"_setContent\",\n    value: function _setContent(content, options) {\n      var _this3 = this;\n\n      this.asyncContent = false;\n\n      this._applyContent(content, options).then(function () {\n        if (!_this3.popperInstance) return;\n\n        _this3.popperInstance.update();\n      });\n    }\n  }, {\n    key: \"_applyContent\",\n    value: function _applyContent(title, options) {\n      var _this4 = this;\n\n      return new Promise(function (resolve, reject) {\n        var allowHtml = options.html;\n        var rootNode = _this4._tooltipNode;\n        if (!rootNode) return;\n        var titleNode = rootNode.querySelector(_this4.options.innerSelector);\n\n        if (title.nodeType === 1) {\n          // if title is a node, append it only if allowHtml is true\n          if (allowHtml) {\n            while (titleNode.firstChild) {\n              titleNode.removeChild(titleNode.firstChild);\n            }\n\n            titleNode.appendChild(title);\n          }\n        } else if (typeof title === 'function') {\n          // if title is a function, call it and set innerText or innerHtml depending by `allowHtml` value\n          var result = title();\n\n          if (result && typeof result.then === 'function') {\n            _this4.asyncContent = true;\n            options.loadingClass && addClasses(rootNode, options.loadingClass);\n\n            if (options.loadingContent) {\n              _this4._applyContent(options.loadingContent, options);\n            }\n\n            result.then(function (asyncResult) {\n              options.loadingClass && removeClasses(rootNode, options.loadingClass);\n              return _this4._applyContent(asyncResult, options);\n            }).then(resolve).catch(reject);\n          } else {\n            _this4._applyContent(result, options).then(resolve).catch(reject);\n          }\n\n          return;\n        } else {\n          // if it's just a simple text, set innerText or innerHtml depending by `allowHtml` value\n          allowHtml ? titleNode.innerHTML = title : titleNode.innerText = title;\n        }\n\n        resolve();\n      });\n    }\n  }, {\n    key: \"_show\",\n    value: function _show(reference, options) {\n      if (options && typeof options.container === 'string') {\n        var container = document.querySelector(options.container);\n        if (!container) return;\n      }\n\n      clearTimeout(this._disposeTimer);\n      options = Object.assign({}, options);\n      delete options.offset;\n      var updateClasses = true;\n\n      if (this._tooltipNode) {\n        addClasses(this._tooltipNode, this._classes);\n        updateClasses = false;\n      }\n\n      var result = this._ensureShown(reference, options);\n\n      if (updateClasses && this._tooltipNode) {\n        addClasses(this._tooltipNode, this._classes);\n      }\n\n      addClasses(reference, ['v-tooltip-open']);\n      return result;\n    }\n  }, {\n    key: \"_ensureShown\",\n    value: function _ensureShown(reference, options) {\n      var _this5 = this;\n\n      // don't show if it's already visible\n      if (this._isOpen) {\n        return this;\n      }\n\n      this._isOpen = true;\n      openTooltips.push(this); // if the tooltipNode already exists, just show it\n\n      if (this._tooltipNode) {\n        this._tooltipNode.style.display = '';\n\n        this._tooltipNode.setAttribute('aria-hidden', 'false');\n\n        this.popperInstance.enableEventListeners();\n        this.popperInstance.update();\n\n        if (this.asyncContent) {\n          this._setContent(options.title, options);\n        }\n\n        return this;\n      } // get title\n\n\n      var title = reference.getAttribute('title') || options.title; // don't show tooltip if no title is defined\n\n      if (!title) {\n        return this;\n      } // create tooltip node\n\n\n      var tooltipNode = this._create(reference, options.template);\n\n      this._tooltipNode = tooltipNode; // Add `aria-describedby` to our reference element for accessibility reasons\n\n      reference.setAttribute('aria-describedby', tooltipNode.id); // append tooltip to container\n\n      var container = this._findContainer(options.container, reference);\n\n      this._append(tooltipNode, container);\n\n      var popperOptions = _objectSpread2(_objectSpread2({}, options.popperOptions), {}, {\n        placement: options.placement\n      });\n\n      popperOptions.modifiers = _objectSpread2(_objectSpread2({}, popperOptions.modifiers), {}, {\n        arrow: {\n          element: this.options.arrowSelector\n        }\n      });\n\n      if (options.boundariesElement) {\n        popperOptions.modifiers.preventOverflow = {\n          boundariesElement: options.boundariesElement\n        };\n      }\n\n      this.popperInstance = new Popper(reference, tooltipNode, popperOptions);\n\n      this._setContent(title, options); // Fix position\n\n\n      requestAnimationFrame(function () {\n        if (!_this5._isDisposed && _this5.popperInstance) {\n          _this5.popperInstance.update(); // Show the tooltip\n\n\n          requestAnimationFrame(function () {\n            if (!_this5._isDisposed) {\n              _this5._isOpen && tooltipNode.setAttribute('aria-hidden', 'false');\n            } else {\n              _this5.dispose();\n            }\n          });\n        } else {\n          _this5.dispose();\n        }\n      });\n      return this;\n    }\n  }, {\n    key: \"_noLongerOpen\",\n    value: function _noLongerOpen() {\n      var index = openTooltips.indexOf(this);\n\n      if (index !== -1) {\n        openTooltips.splice(index, 1);\n      }\n    }\n  }, {\n    key: \"_hide\",\n    value: function _hide()\n    /* reference, options */\n    {\n      var _this6 = this;\n\n      // don't hide if it's already hidden\n      if (!this._isOpen) {\n        return this;\n      }\n\n      this._isOpen = false;\n\n      this._noLongerOpen(); // hide tooltipNode\n\n\n      this._tooltipNode.style.display = 'none';\n\n      this._tooltipNode.setAttribute('aria-hidden', 'true');\n\n      if (this.popperInstance) {\n        this.popperInstance.disableEventListeners();\n      }\n\n      clearTimeout(this._disposeTimer);\n      var disposeTime = directive.options.disposeTimeout;\n\n      if (disposeTime !== null) {\n        this._disposeTimer = setTimeout(function () {\n          if (_this6._tooltipNode) {\n            _this6._tooltipNode.removeEventListener('mouseenter', _this6.hide);\n\n            _this6._tooltipNode.removeEventListener('click', _this6.hide); // Don't remove popper instance, just the HTML element\n\n\n            _this6._removeTooltipNode();\n          }\n        }, disposeTime);\n      }\n\n      removeClasses(this.reference, ['v-tooltip-open']);\n      return this;\n    }\n  }, {\n    key: \"_removeTooltipNode\",\n    value: function _removeTooltipNode() {\n      if (!this._tooltipNode) return;\n      var parentNode = this._tooltipNode.parentNode;\n\n      if (parentNode) {\n        parentNode.removeChild(this._tooltipNode);\n        this.reference.removeAttribute('aria-describedby');\n      }\n\n      this._tooltipNode = null;\n    }\n  }, {\n    key: \"_dispose\",\n    value: function _dispose() {\n      var _this7 = this;\n\n      this._isDisposed = true;\n      this.reference.removeAttribute('data-original-title');\n\n      if (this.$_originalTitle) {\n        this.reference.setAttribute('title', this.$_originalTitle);\n      } // remove event listeners first to prevent any unexpected behaviour\n\n\n      this._events.forEach(function (_ref) {\n        var func = _ref.func,\n            event = _ref.event;\n\n        _this7.reference.removeEventListener(event, func);\n      });\n\n      this._events = [];\n\n      if (this._tooltipNode) {\n        this._hide();\n\n        this._tooltipNode.removeEventListener('mouseenter', this.hide);\n\n        this._tooltipNode.removeEventListener('click', this.hide); // destroy instance\n\n\n        this.popperInstance.destroy(); // destroy tooltipNode if removeOnDestroy is not set, as popperInstance.destroy() already removes the element\n\n        if (!this.popperInstance.options.removeOnDestroy) {\n          this._removeTooltipNode();\n        }\n      } else {\n        this._noLongerOpen();\n      }\n\n      return this;\n    }\n  }, {\n    key: \"_findContainer\",\n    value: function _findContainer(container, reference) {\n      // if container is a query, get the relative element\n      if (typeof container === 'string') {\n        container = window.document.querySelector(container);\n      } else if (container === false) {\n        // if container is `false`, set it to reference parent\n        container = reference.parentNode;\n      }\n\n      return container;\n    }\n    /**\n     * Append tooltip to container\n     * @memberof Tooltip\n     * @private\n     * @param {HTMLElement} tooltip\n     * @param {HTMLElement|String|false} container\n     */\n\n  }, {\n    key: \"_append\",\n    value: function _append(tooltipNode, container) {\n      container.appendChild(tooltipNode);\n    }\n  }, {\n    key: \"_setEventListeners\",\n    value: function _setEventListeners(reference, events, options) {\n      var _this8 = this;\n\n      var directEvents = [];\n      var oppositeEvents = [];\n      events.forEach(function (event) {\n        switch (event) {\n          case 'hover':\n            directEvents.push('mouseenter');\n            oppositeEvents.push('mouseleave');\n            if (_this8.options.hideOnTargetClick) oppositeEvents.push('click');\n            break;\n\n          case 'focus':\n            directEvents.push('focus');\n            oppositeEvents.push('blur');\n            if (_this8.options.hideOnTargetClick) oppositeEvents.push('click');\n            break;\n\n          case 'click':\n            directEvents.push('click');\n            oppositeEvents.push('click');\n            break;\n        }\n      }); // schedule show tooltip\n\n      directEvents.forEach(function (event) {\n        var func = function func(evt) {\n          if (_this8._isOpen === true) {\n            return;\n          }\n\n          evt.usedByTooltip = true;\n\n          _this8._scheduleShow(reference, options.delay, options, evt);\n        };\n\n        _this8._events.push({\n          event: event,\n          func: func\n        });\n\n        reference.addEventListener(event, func);\n      }); // schedule hide tooltip\n\n      oppositeEvents.forEach(function (event) {\n        var func = function func(evt) {\n          if (evt.usedByTooltip === true) {\n            return;\n          }\n\n          _this8._scheduleHide(reference, options.delay, options, evt);\n        };\n\n        _this8._events.push({\n          event: event,\n          func: func\n        });\n\n        reference.addEventListener(event, func);\n      });\n    }\n  }, {\n    key: \"_onDocumentTouch\",\n    value: function _onDocumentTouch(event) {\n      if (this._enableDocumentTouch) {\n        this._scheduleHide(this.reference, this.options.delay, this.options, event);\n      }\n    }\n  }, {\n    key: \"_scheduleShow\",\n    value: function _scheduleShow(reference, delay, options\n    /*, evt */\n    ) {\n      var _this9 = this;\n\n      // defaults to 0\n      var computedDelay = delay && delay.show || delay || 0;\n      clearTimeout(this._scheduleTimer);\n      this._scheduleTimer = window.setTimeout(function () {\n        return _this9._show(reference, options);\n      }, computedDelay);\n    }\n  }, {\n    key: \"_scheduleHide\",\n    value: function _scheduleHide(reference, delay, options, evt) {\n      var _this10 = this;\n\n      // defaults to 0\n      var computedDelay = delay && delay.hide || delay || 0;\n      clearTimeout(this._scheduleTimer);\n      this._scheduleTimer = window.setTimeout(function () {\n        if (_this10._isOpen === false) {\n          return;\n        }\n\n        if (!_this10._tooltipNode.ownerDocument.body.contains(_this10._tooltipNode)) {\n          return;\n        } // if we are hiding because of a mouseleave, we must check that the new\n        // reference isn't the tooltip, because in this case we don't want to hide it\n\n\n        if (evt.type === 'mouseleave') {\n          var isSet = _this10._setTooltipNodeEvent(evt, reference, delay, options); // if we set the new event, don't hide the tooltip yet\n          // the new event will take care to hide it if necessary\n\n\n          if (isSet) {\n            return;\n          }\n        }\n\n        _this10._hide(reference, options);\n      }, computedDelay);\n    }\n  }]);\n\n  return Tooltip;\n}(); // Hide tooltips on touch devices\n\nif (typeof document !== 'undefined') {\n  document.addEventListener('touchstart', function (event) {\n    for (var i = 0; i < openTooltips.length; i++) {\n      openTooltips[i]._onDocumentTouch(event);\n    }\n  }, supportsPassive ? {\n    passive: true,\n    capture: true\n  } : true);\n}\n/**\n * Placement function, its context is the Tooltip instance.\n * @memberof Tooltip\n * @callback PlacementFunction\n * @param {HTMLElement} tooltip - tooltip DOM node.\n * @param {HTMLElement} reference - reference DOM node.\n * @return {String} placement - One of the allowed placement options.\n */\n\n/**\n * Title function, its context is the Tooltip instance.\n * @memberof Tooltip\n * @callback TitleFunction\n * @return {String} placement - The desired title.\n */\n\nvar state = {\n  enabled: true\n};\nvar positions = ['top', 'top-start', 'top-end', 'right', 'right-start', 'right-end', 'bottom', 'bottom-start', 'bottom-end', 'left', 'left-start', 'left-end'];\nvar defaultOptions = {\n  // Default tooltip placement relative to target element\n  defaultPlacement: 'top',\n  // Default CSS classes applied to the tooltip element\n  defaultClass: 'vue-tooltip-theme',\n  // Default CSS classes applied to the target element of the tooltip\n  defaultTargetClass: 'has-tooltip',\n  // Is the content HTML by default?\n  defaultHtml: true,\n  // Default HTML template of the tooltip element\n  // It must include `tooltip-arrow` & `tooltip-inner` CSS classes (can be configured, see below)\n  // Change if the classes conflict with other libraries (for example bootstrap)\n  defaultTemplate: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n  // Selector used to get the arrow element in the tooltip template\n  defaultArrowSelector: '.tooltip-arrow, .tooltip__arrow',\n  // Selector used to get the inner content element in the tooltip template\n  defaultInnerSelector: '.tooltip-inner, .tooltip__inner',\n  // Delay (ms)\n  defaultDelay: 0,\n  // Default events that trigger the tooltip\n  defaultTrigger: 'hover focus',\n  // Default position offset (px)\n  defaultOffset: 0,\n  // Default container where the tooltip will be appended\n  defaultContainer: 'body',\n  defaultBoundariesElement: undefined,\n  defaultPopperOptions: {},\n  // Class added when content is loading\n  defaultLoadingClass: 'tooltip-loading',\n  // Displayed when tooltip content is loading\n  defaultLoadingContent: '...',\n  // Hide on mouseover tooltip\n  autoHide: true,\n  // Close tooltip on click on tooltip target?\n  defaultHideOnTargetClick: true,\n  // Auto destroy tooltip DOM nodes (ms)\n  disposeTimeout: 5000,\n  // Options for popover\n  popover: {\n    defaultPlacement: 'bottom',\n    // Use the `popoverClass` prop for theming\n    defaultClass: 'vue-popover-theme',\n    // Base class (change if conflicts with other libraries)\n    defaultBaseClass: 'tooltip popover',\n    // Wrapper class (contains arrow and inner)\n    defaultWrapperClass: 'wrapper',\n    // Inner content class\n    defaultInnerClass: 'tooltip-inner popover-inner',\n    // Arrow class\n    defaultArrowClass: 'tooltip-arrow popover-arrow',\n    // Class added when popover is open\n    defaultOpenClass: 'open',\n    defaultDelay: 0,\n    defaultTrigger: 'click',\n    defaultOffset: 0,\n    defaultContainer: 'body',\n    defaultBoundariesElement: undefined,\n    defaultPopperOptions: {},\n    // Hides if clicked outside of popover\n    defaultAutoHide: true,\n    // Update popper on content resize\n    defaultHandleResize: true\n  }\n};\nfunction getOptions(options) {\n  var result = {\n    placement: typeof options.placement !== 'undefined' ? options.placement : directive.options.defaultPlacement,\n    delay: typeof options.delay !== 'undefined' ? options.delay : directive.options.defaultDelay,\n    html: typeof options.html !== 'undefined' ? options.html : directive.options.defaultHtml,\n    template: typeof options.template !== 'undefined' ? options.template : directive.options.defaultTemplate,\n    arrowSelector: typeof options.arrowSelector !== 'undefined' ? options.arrowSelector : directive.options.defaultArrowSelector,\n    innerSelector: typeof options.innerSelector !== 'undefined' ? options.innerSelector : directive.options.defaultInnerSelector,\n    trigger: typeof options.trigger !== 'undefined' ? options.trigger : directive.options.defaultTrigger,\n    offset: typeof options.offset !== 'undefined' ? options.offset : directive.options.defaultOffset,\n    container: typeof options.container !== 'undefined' ? options.container : directive.options.defaultContainer,\n    boundariesElement: typeof options.boundariesElement !== 'undefined' ? options.boundariesElement : directive.options.defaultBoundariesElement,\n    autoHide: typeof options.autoHide !== 'undefined' ? options.autoHide : directive.options.autoHide,\n    hideOnTargetClick: typeof options.hideOnTargetClick !== 'undefined' ? options.hideOnTargetClick : directive.options.defaultHideOnTargetClick,\n    loadingClass: typeof options.loadingClass !== 'undefined' ? options.loadingClass : directive.options.defaultLoadingClass,\n    loadingContent: typeof options.loadingContent !== 'undefined' ? options.loadingContent : directive.options.defaultLoadingContent,\n    popperOptions: _objectSpread2({}, typeof options.popperOptions !== 'undefined' ? options.popperOptions : directive.options.defaultPopperOptions)\n  };\n\n  if (result.offset) {\n    var typeofOffset = _typeof(result.offset);\n\n    var offset = result.offset; // One value -> switch\n\n    if (typeofOffset === 'number' || typeofOffset === 'string' && offset.indexOf(',') === -1) {\n      offset = \"0, \".concat(offset);\n    }\n\n    if (!result.popperOptions.modifiers) {\n      result.popperOptions.modifiers = {};\n    }\n\n    result.popperOptions.modifiers.offset = {\n      offset: offset\n    };\n  }\n\n  if (result.trigger && result.trigger.indexOf('click') !== -1) {\n    result.hideOnTargetClick = false;\n  }\n\n  return result;\n}\nfunction getPlacement(value, modifiers) {\n  var placement = value.placement;\n\n  for (var i = 0; i < positions.length; i++) {\n    var pos = positions[i];\n\n    if (modifiers[pos]) {\n      placement = pos;\n    }\n  }\n\n  return placement;\n}\nfunction getContent(value) {\n  var type = _typeof(value);\n\n  if (type === 'string') {\n    return value;\n  } else if (value && type === 'object') {\n    return value.content;\n  } else {\n    return false;\n  }\n}\nfunction createTooltip(el, value) {\n  var modifiers = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var content = getContent(value);\n  var classes = typeof value.classes !== 'undefined' ? value.classes : directive.options.defaultClass;\n\n  var opts = _objectSpread2({\n    title: content\n  }, getOptions(_objectSpread2(_objectSpread2({}, _typeof(value) === 'object' ? value : {}), {}, {\n    placement: getPlacement(value, modifiers)\n  })));\n\n  var tooltip = el._tooltip = new Tooltip(el, opts);\n  tooltip.setClasses(classes);\n  tooltip._vueEl = el; // Class on target\n\n  var targetClasses = typeof value.targetClasses !== 'undefined' ? value.targetClasses : directive.options.defaultTargetClass;\n  el._tooltipTargetClasses = targetClasses;\n  addClasses(el, targetClasses);\n  return tooltip;\n}\nfunction destroyTooltip(el) {\n  if (el._tooltip) {\n    el._tooltip.dispose();\n\n    delete el._tooltip;\n    delete el._tooltipOldShow;\n  }\n\n  if (el._tooltipTargetClasses) {\n    removeClasses(el, el._tooltipTargetClasses);\n    delete el._tooltipTargetClasses;\n  }\n}\nfunction bind(el, _ref) {\n  var value = _ref.value,\n      oldValue = _ref.oldValue,\n      modifiers = _ref.modifiers;\n  var content = getContent(value);\n\n  if (!content || !state.enabled) {\n    destroyTooltip(el);\n  } else {\n    var tooltip;\n\n    if (el._tooltip) {\n      tooltip = el._tooltip; // Content\n\n      tooltip.setContent(content); // Options\n\n      tooltip.setOptions(_objectSpread2(_objectSpread2({}, value), {}, {\n        placement: getPlacement(value, modifiers)\n      }));\n    } else {\n      tooltip = createTooltip(el, value, modifiers);\n    } // Manual show\n\n\n    if (typeof value.show !== 'undefined' && value.show !== el._tooltipOldShow) {\n      el._tooltipOldShow = value.show;\n      value.show ? tooltip.show() : tooltip.hide();\n    }\n  }\n}\nvar directive = {\n  options: defaultOptions,\n  bind: bind,\n  update: bind,\n  unbind: function unbind(el) {\n    destroyTooltip(el);\n  }\n};\n\nfunction addListeners(el) {\n  el.addEventListener('click', onClick);\n  el.addEventListener('touchstart', onTouchStart, supportsPassive ? {\n    passive: true\n  } : false);\n}\n\nfunction removeListeners(el) {\n  el.removeEventListener('click', onClick);\n  el.removeEventListener('touchstart', onTouchStart);\n  el.removeEventListener('touchend', onTouchEnd);\n  el.removeEventListener('touchcancel', onTouchCancel);\n}\n\nfunction onClick(event) {\n  var el = event.currentTarget;\n  event.closePopover = !el.$_vclosepopover_touch;\n  event.closeAllPopover = el.$_closePopoverModifiers && !!el.$_closePopoverModifiers.all;\n}\n\nfunction onTouchStart(event) {\n  if (event.changedTouches.length === 1) {\n    var el = event.currentTarget;\n    el.$_vclosepopover_touch = true;\n    var touch = event.changedTouches[0];\n    el.$_vclosepopover_touchPoint = touch;\n    el.addEventListener('touchend', onTouchEnd);\n    el.addEventListener('touchcancel', onTouchCancel);\n  }\n}\n\nfunction onTouchEnd(event) {\n  var el = event.currentTarget;\n  el.$_vclosepopover_touch = false;\n\n  if (event.changedTouches.length === 1) {\n    var touch = event.changedTouches[0];\n    var firstTouch = el.$_vclosepopover_touchPoint;\n    event.closePopover = Math.abs(touch.screenY - firstTouch.screenY) < 20 && Math.abs(touch.screenX - firstTouch.screenX) < 20;\n    event.closeAllPopover = el.$_closePopoverModifiers && !!el.$_closePopoverModifiers.all;\n  }\n}\n\nfunction onTouchCancel(event) {\n  var el = event.currentTarget;\n  el.$_vclosepopover_touch = false;\n}\n\nvar vclosepopover = {\n  bind: function bind(el, _ref) {\n    var value = _ref.value,\n        modifiers = _ref.modifiers;\n    el.$_closePopoverModifiers = modifiers;\n\n    if (typeof value === 'undefined' || value) {\n      addListeners(el);\n    }\n  },\n  update: function update(el, _ref2) {\n    var value = _ref2.value,\n        oldValue = _ref2.oldValue,\n        modifiers = _ref2.modifiers;\n    el.$_closePopoverModifiers = modifiers;\n\n    if (value !== oldValue) {\n      if (typeof value === 'undefined' || value) {\n        addListeners(el);\n      } else {\n        removeListeners(el);\n      }\n    }\n  },\n  unbind: function unbind(el) {\n    removeListeners(el);\n  }\n};\n\nfunction getDefault(key) {\n  var value = directive.options.popover[key];\n\n  if (typeof value === 'undefined') {\n    return directive.options[key];\n  }\n\n  return value;\n}\n\nvar isIOS = false;\n\nif (typeof window !== 'undefined' && typeof navigator !== 'undefined') {\n  isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n}\n\nvar openPopovers = [];\n\nvar Element = function Element() {};\n\nif (typeof window !== 'undefined') {\n  Element = window.Element;\n}\n\nvar script = {\n  name: 'VPopover',\n  components: {\n    ResizeObserver: ResizeObserver\n  },\n  props: {\n    open: {\n      type: Boolean,\n      default: false\n    },\n    disabled: {\n      type: Boolean,\n      default: false\n    },\n    placement: {\n      type: String,\n      default: function _default() {\n        return getDefault('defaultPlacement');\n      }\n    },\n    delay: {\n      type: [String, Number, Object],\n      default: function _default() {\n        return getDefault('defaultDelay');\n      }\n    },\n    offset: {\n      type: [String, Number],\n      default: function _default() {\n        return getDefault('defaultOffset');\n      }\n    },\n    trigger: {\n      type: String,\n      default: function _default() {\n        return getDefault('defaultTrigger');\n      }\n    },\n    container: {\n      type: [String, Object, Element, Boolean],\n      default: function _default() {\n        return getDefault('defaultContainer');\n      }\n    },\n    boundariesElement: {\n      type: [String, Element],\n      default: function _default() {\n        return getDefault('defaultBoundariesElement');\n      }\n    },\n    popperOptions: {\n      type: Object,\n      default: function _default() {\n        return getDefault('defaultPopperOptions');\n      }\n    },\n    popoverClass: {\n      type: [String, Array],\n      default: function _default() {\n        return getDefault('defaultClass');\n      }\n    },\n    popoverBaseClass: {\n      type: [String, Array],\n      default: function _default() {\n        return directive.options.popover.defaultBaseClass;\n      }\n    },\n    popoverInnerClass: {\n      type: [String, Array],\n      default: function _default() {\n        return directive.options.popover.defaultInnerClass;\n      }\n    },\n    popoverWrapperClass: {\n      type: [String, Array],\n      default: function _default() {\n        return directive.options.popover.defaultWrapperClass;\n      }\n    },\n    popoverArrowClass: {\n      type: [String, Array],\n      default: function _default() {\n        return directive.options.popover.defaultArrowClass;\n      }\n    },\n    autoHide: {\n      type: Boolean,\n      default: function _default() {\n        return directive.options.popover.defaultAutoHide;\n      }\n    },\n    handleResize: {\n      type: Boolean,\n      default: function _default() {\n        return directive.options.popover.defaultHandleResize;\n      }\n    },\n    openGroup: {\n      type: String,\n      default: null\n    },\n    openClass: {\n      type: [String, Array],\n      default: function _default() {\n        return directive.options.popover.defaultOpenClass;\n      }\n    },\n    ariaId: {\n      default: null\n    }\n  },\n  data: function data() {\n    return {\n      isOpen: false,\n      id: Math.random().toString(36).substr(2, 10)\n    };\n  },\n  computed: {\n    cssClass: function cssClass() {\n      return _defineProperty({}, this.openClass, this.isOpen);\n    },\n    popoverId: function popoverId() {\n      return \"popover_\".concat(this.ariaId != null ? this.ariaId : this.id);\n    }\n  },\n  watch: {\n    open: function open(val) {\n      if (val) {\n        this.show();\n      } else {\n        this.hide();\n      }\n    },\n    disabled: function disabled(val, oldVal) {\n      if (val !== oldVal) {\n        if (val) {\n          this.hide();\n        } else if (this.open) {\n          this.show();\n        }\n      }\n    },\n    container: function container(val) {\n      if (this.isOpen && this.popperInstance) {\n        var popoverNode = this.$refs.popover;\n        var reference = this.$refs.trigger;\n        var container = this.$_findContainer(this.container, reference);\n\n        if (!container) {\n          console.warn('No container for popover', this);\n          return;\n        }\n\n        container.appendChild(popoverNode);\n        this.popperInstance.scheduleUpdate();\n      }\n    },\n    trigger: function trigger(val) {\n      this.$_removeEventListeners();\n      this.$_addEventListeners();\n    },\n    placement: function placement(val) {\n      var _this = this;\n\n      this.$_updatePopper(function () {\n        _this.popperInstance.options.placement = val;\n      });\n    },\n    offset: '$_restartPopper',\n    boundariesElement: '$_restartPopper',\n    popperOptions: {\n      handler: '$_restartPopper',\n      deep: true\n    }\n  },\n  created: function created() {\n    this.$_isDisposed = false;\n    this.$_mounted = false;\n    this.$_events = [];\n    this.$_preventOpen = false;\n  },\n  mounted: function mounted() {\n    var popoverNode = this.$refs.popover;\n    popoverNode.parentNode && popoverNode.parentNode.removeChild(popoverNode);\n    this.$_init();\n\n    if (this.open) {\n      this.show();\n    }\n  },\n  deactivated: function deactivated() {\n    this.hide();\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.dispose();\n  },\n  methods: {\n    show: function show() {\n      var _this2 = this;\n\n      var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n          event = _ref2.event,\n          _ref2$skipDelay = _ref2.skipDelay,\n          _ref2$force = _ref2.force,\n          force = _ref2$force === void 0 ? false : _ref2$force;\n\n      if (force || !this.disabled) {\n        this.$_scheduleShow(event);\n        this.$emit('show');\n      }\n\n      this.$emit('update:open', true);\n      this.$_beingShowed = true;\n      requestAnimationFrame(function () {\n        _this2.$_beingShowed = false;\n      });\n    },\n    hide: function hide() {\n      var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n          event = _ref3.event,\n          _ref3$skipDelay = _ref3.skipDelay;\n\n      this.$_scheduleHide(event);\n      this.$emit('hide');\n      this.$emit('update:open', false);\n    },\n    dispose: function dispose() {\n      this.$_isDisposed = true;\n      this.$_removeEventListeners();\n      this.hide({\n        skipDelay: true\n      });\n\n      if (this.popperInstance) {\n        this.popperInstance.destroy(); // destroy tooltipNode if removeOnDestroy is not set, as popperInstance.destroy() already removes the element\n\n        if (!this.popperInstance.options.removeOnDestroy) {\n          var popoverNode = this.$refs.popover;\n          popoverNode.parentNode && popoverNode.parentNode.removeChild(popoverNode);\n        }\n      }\n\n      this.$_mounted = false;\n      this.popperInstance = null;\n      this.isOpen = false;\n      this.$emit('dispose');\n    },\n    $_init: function $_init() {\n      if (this.trigger.indexOf('manual') === -1) {\n        this.$_addEventListeners();\n      }\n    },\n    $_show: function $_show() {\n      var _this3 = this;\n\n      var reference = this.$refs.trigger;\n      var popoverNode = this.$refs.popover;\n      clearTimeout(this.$_disposeTimer); // Already open\n\n      if (this.isOpen) {\n        return;\n      } // Popper is already initialized\n\n\n      if (this.popperInstance) {\n        this.isOpen = true;\n        this.popperInstance.enableEventListeners();\n        this.popperInstance.scheduleUpdate();\n      }\n\n      if (!this.$_mounted) {\n        var container = this.$_findContainer(this.container, reference);\n\n        if (!container) {\n          console.warn('No container for popover', this);\n          return;\n        }\n\n        container.appendChild(popoverNode);\n        this.$_mounted = true;\n        this.isOpen = false;\n\n        if (this.popperInstance) {\n          requestAnimationFrame(function () {\n            if (!_this3.hidden) {\n              _this3.isOpen = true;\n            }\n          });\n        }\n      }\n\n      if (!this.popperInstance) {\n        var popperOptions = _objectSpread2(_objectSpread2({}, this.popperOptions), {}, {\n          placement: this.placement\n        });\n\n        popperOptions.modifiers = _objectSpread2(_objectSpread2({}, popperOptions.modifiers), {}, {\n          arrow: _objectSpread2(_objectSpread2({}, popperOptions.modifiers && popperOptions.modifiers.arrow), {}, {\n            element: this.$refs.arrow\n          })\n        });\n\n        if (this.offset) {\n          var offset = this.$_getOffset();\n          popperOptions.modifiers.offset = _objectSpread2(_objectSpread2({}, popperOptions.modifiers && popperOptions.modifiers.offset), {}, {\n            offset: offset\n          });\n        }\n\n        if (this.boundariesElement) {\n          popperOptions.modifiers.preventOverflow = _objectSpread2(_objectSpread2({}, popperOptions.modifiers && popperOptions.modifiers.preventOverflow), {}, {\n            boundariesElement: this.boundariesElement\n          });\n        }\n\n        this.popperInstance = new Popper(reference, popoverNode, popperOptions); // Fix position\n\n        requestAnimationFrame(function () {\n          if (_this3.hidden) {\n            _this3.hidden = false;\n\n            _this3.$_hide();\n\n            return;\n          }\n\n          if (!_this3.$_isDisposed && _this3.popperInstance) {\n            _this3.popperInstance.scheduleUpdate(); // Show the tooltip\n\n\n            requestAnimationFrame(function () {\n              if (_this3.hidden) {\n                _this3.hidden = false;\n\n                _this3.$_hide();\n\n                return;\n              }\n\n              if (!_this3.$_isDisposed) {\n                _this3.isOpen = true;\n              } else {\n                _this3.dispose();\n              }\n            });\n          } else {\n            _this3.dispose();\n          }\n        });\n      }\n\n      var openGroup = this.openGroup;\n\n      if (openGroup) {\n        var popover;\n\n        for (var i = 0; i < openPopovers.length; i++) {\n          popover = openPopovers[i];\n\n          if (popover.openGroup !== openGroup) {\n            popover.hide();\n            popover.$emit('close-group');\n          }\n        }\n      }\n\n      openPopovers.push(this);\n      this.$emit('apply-show');\n    },\n    $_hide: function $_hide() {\n      var _this4 = this;\n\n      // Already hidden\n      if (!this.isOpen) {\n        return;\n      }\n\n      var index = openPopovers.indexOf(this);\n\n      if (index !== -1) {\n        openPopovers.splice(index, 1);\n      }\n\n      this.isOpen = false;\n\n      if (this.popperInstance) {\n        this.popperInstance.disableEventListeners();\n      }\n\n      clearTimeout(this.$_disposeTimer);\n      var disposeTime = directive.options.popover.disposeTimeout || directive.options.disposeTimeout;\n\n      if (disposeTime !== null) {\n        this.$_disposeTimer = setTimeout(function () {\n          var popoverNode = _this4.$refs.popover;\n\n          if (popoverNode) {\n            // Don't remove popper instance, just the HTML element\n            popoverNode.parentNode && popoverNode.parentNode.removeChild(popoverNode);\n            _this4.$_mounted = false;\n          }\n        }, disposeTime);\n      }\n\n      this.$emit('apply-hide');\n    },\n    $_findContainer: function $_findContainer(container, reference) {\n      // if container is a query, get the relative element\n      if (typeof container === 'string') {\n        container = window.document.querySelector(container);\n      } else if (container === false) {\n        // if container is `false`, set it to reference parent\n        container = reference.parentNode;\n      }\n\n      return container;\n    },\n    $_getOffset: function $_getOffset() {\n      var typeofOffset = _typeof(this.offset);\n\n      var offset = this.offset; // One value -> switch\n\n      if (typeofOffset === 'number' || typeofOffset === 'string' && offset.indexOf(',') === -1) {\n        offset = \"0, \".concat(offset);\n      }\n\n      return offset;\n    },\n    $_addEventListeners: function $_addEventListeners() {\n      var _this5 = this;\n\n      var reference = this.$refs.trigger;\n      var directEvents = [];\n      var oppositeEvents = [];\n      var events = typeof this.trigger === 'string' ? this.trigger.split(' ').filter(function (trigger) {\n        return ['click', 'hover', 'focus'].indexOf(trigger) !== -1;\n      }) : [];\n      events.forEach(function (event) {\n        switch (event) {\n          case 'hover':\n            directEvents.push('mouseenter');\n            oppositeEvents.push('mouseleave');\n            break;\n\n          case 'focus':\n            directEvents.push('focus');\n            oppositeEvents.push('blur');\n            break;\n\n          case 'click':\n            directEvents.push('click');\n            oppositeEvents.push('click');\n            break;\n        }\n      }); // schedule show tooltip\n\n      directEvents.forEach(function (event) {\n        var func = function func(event) {\n          if (_this5.isOpen) {\n            return;\n          }\n\n          event.usedByTooltip = true;\n          !_this5.$_preventOpen && _this5.show({\n            event: event\n          });\n          _this5.hidden = false;\n        };\n\n        _this5.$_events.push({\n          event: event,\n          func: func\n        });\n\n        reference.addEventListener(event, func);\n      }); // schedule hide tooltip\n\n      oppositeEvents.forEach(function (event) {\n        var func = function func(event) {\n          if (event.usedByTooltip) {\n            return;\n          }\n\n          _this5.hide({\n            event: event\n          });\n\n          _this5.hidden = true;\n        };\n\n        _this5.$_events.push({\n          event: event,\n          func: func\n        });\n\n        reference.addEventListener(event, func);\n      });\n    },\n    $_scheduleShow: function $_scheduleShow() {\n      var skipDelay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      clearTimeout(this.$_scheduleTimer);\n\n      if (skipDelay) {\n        this.$_show();\n      } else {\n        // defaults to 0\n        var computedDelay = parseInt(this.delay && this.delay.show || this.delay || 0);\n        this.$_scheduleTimer = setTimeout(this.$_show.bind(this), computedDelay);\n      }\n    },\n    $_scheduleHide: function $_scheduleHide() {\n      var _this6 = this;\n\n      var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n      var skipDelay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      clearTimeout(this.$_scheduleTimer);\n\n      if (skipDelay) {\n        this.$_hide();\n      } else {\n        // defaults to 0\n        var computedDelay = parseInt(this.delay && this.delay.hide || this.delay || 0);\n        this.$_scheduleTimer = setTimeout(function () {\n          if (!_this6.isOpen) {\n            return;\n          } // if we are hiding because of a mouseleave, we must check that the new\n          // reference isn't the tooltip, because in this case we don't want to hide it\n\n\n          if (event && event.type === 'mouseleave') {\n            var isSet = _this6.$_setTooltipNodeEvent(event); // if we set the new event, don't hide the tooltip yet\n            // the new event will take care to hide it if necessary\n\n\n            if (isSet) {\n              return;\n            }\n          }\n\n          _this6.$_hide();\n        }, computedDelay);\n      }\n    },\n    $_setTooltipNodeEvent: function $_setTooltipNodeEvent(event) {\n      var _this7 = this;\n\n      var reference = this.$refs.trigger;\n      var popoverNode = this.$refs.popover;\n      var relatedreference = event.relatedreference || event.toElement || event.relatedTarget;\n\n      var callback = function callback(event2) {\n        var relatedreference2 = event2.relatedreference || event2.toElement || event2.relatedTarget; // Remove event listener after call\n\n        popoverNode.removeEventListener(event.type, callback); // If the new reference is not the reference element\n\n        if (!reference.contains(relatedreference2)) {\n          // Schedule to hide tooltip\n          _this7.hide({\n            event: event2\n          });\n        }\n      };\n\n      if (popoverNode.contains(relatedreference)) {\n        // listen to mouseleave on the tooltip element to be able to hide the tooltip\n        popoverNode.addEventListener(event.type, callback);\n        return true;\n      }\n\n      return false;\n    },\n    $_removeEventListeners: function $_removeEventListeners() {\n      var reference = this.$refs.trigger;\n      this.$_events.forEach(function (_ref4) {\n        var func = _ref4.func,\n            event = _ref4.event;\n        reference.removeEventListener(event, func);\n      });\n      this.$_events = [];\n    },\n    $_updatePopper: function $_updatePopper(cb) {\n      if (this.popperInstance) {\n        cb();\n        if (this.isOpen) this.popperInstance.scheduleUpdate();\n      }\n    },\n    $_restartPopper: function $_restartPopper() {\n      if (this.popperInstance) {\n        var isOpen = this.isOpen;\n        this.dispose();\n        this.$_isDisposed = false;\n        this.$_init();\n\n        if (isOpen) {\n          this.show({\n            skipDelay: true,\n            force: true\n          });\n        }\n      }\n    },\n    $_handleGlobalClose: function $_handleGlobalClose(event) {\n      var _this8 = this;\n\n      var touch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      if (this.$_beingShowed) return;\n      this.hide({\n        event: event\n      });\n\n      if (event.closePopover) {\n        this.$emit('close-directive');\n      } else {\n        this.$emit('auto-hide');\n      }\n\n      if (touch) {\n        this.$_preventOpen = true;\n        setTimeout(function () {\n          _this8.$_preventOpen = false;\n        }, 300);\n      }\n    },\n    $_handleResize: function $_handleResize() {\n      if (this.isOpen && this.popperInstance) {\n        this.popperInstance.scheduleUpdate();\n        this.$emit('resize');\n      }\n    }\n  }\n};\n\nif (typeof document !== 'undefined' && typeof window !== 'undefined') {\n  if (isIOS) {\n    document.addEventListener('touchend', handleGlobalTouchend, supportsPassive ? {\n      passive: true,\n      capture: true\n    } : true);\n  } else {\n    window.addEventListener('click', handleGlobalClick, true);\n  }\n}\n\nfunction handleGlobalClick(event) {\n  handleGlobalClose(event);\n}\n\nfunction handleGlobalTouchend(event) {\n  handleGlobalClose(event, true);\n}\n\nfunction handleGlobalClose(event) {\n  var touch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n  var _loop = function _loop(i) {\n    var popover = openPopovers[i];\n\n    if (popover.$refs.popover) {\n      var contains = popover.$refs.popover.contains(event.target);\n      requestAnimationFrame(function () {\n        if (event.closeAllPopover || event.closePopover && contains || popover.autoHide && !contains) {\n          popover.$_handleGlobalClose(event, touch);\n        }\n      });\n    }\n  };\n\n  // Delay so that close directive has time to set values\n  for (var i = 0; i < openPopovers.length; i++) {\n    _loop(i);\n  }\n}\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier /* server only */, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\r\n    if (typeof shadowMode !== 'boolean') {\r\n        createInjectorSSR = createInjector;\r\n        createInjector = shadowMode;\r\n        shadowMode = false;\r\n    }\r\n    // Vue.extend constructor export interop.\r\n    const options = typeof script === 'function' ? script.options : script;\r\n    // render functions\r\n    if (template && template.render) {\r\n        options.render = template.render;\r\n        options.staticRenderFns = template.staticRenderFns;\r\n        options._compiled = true;\r\n        // functional template\r\n        if (isFunctionalTemplate) {\r\n            options.functional = true;\r\n        }\r\n    }\r\n    // scopedId\r\n    if (scopeId) {\r\n        options._scopeId = scopeId;\r\n    }\r\n    let hook;\r\n    if (moduleIdentifier) {\r\n        // server build\r\n        hook = function (context) {\r\n            // 2.3 injection\r\n            context =\r\n                context || // cached call\r\n                    (this.$vnode && this.$vnode.ssrContext) || // stateful\r\n                    (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext); // functional\r\n            // 2.2 with runInNewContext: true\r\n            if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\r\n                context = __VUE_SSR_CONTEXT__;\r\n            }\r\n            // inject component styles\r\n            if (style) {\r\n                style.call(this, createInjectorSSR(context));\r\n            }\r\n            // register component module identifier for async chunk inference\r\n            if (context && context._registeredComponents) {\r\n                context._registeredComponents.add(moduleIdentifier);\r\n            }\r\n        };\r\n        // used by ssr in case component is cached and beforeCreate\r\n        // never gets called\r\n        options._ssrRegister = hook;\r\n    }\r\n    else if (style) {\r\n        hook = shadowMode\r\n            ? function (context) {\r\n                style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));\r\n            }\r\n            : function (context) {\r\n                style.call(this, createInjector(context));\r\n            };\r\n    }\r\n    if (hook) {\r\n        if (options.functional) {\r\n            // register for functional component in vue file\r\n            const originalRender = options.render;\r\n            options.render = function renderWithStyleInjection(h, context) {\r\n                hook.call(context);\r\n                return originalRender(h, context);\r\n            };\r\n        }\r\n        else {\r\n            // inject component registration as beforeCreate hook\r\n            const existing = options.beforeCreate;\r\n            options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\r\n        }\r\n    }\r\n    return script;\r\n}\n\n/* script */\nvar __vue_script__ = script;\n/* template */\n\nvar __vue_render__ = function __vue_render__() {\n  var _vm = this;\n\n  var _h = _vm.$createElement;\n\n  var _c = _vm._self._c || _h;\n\n  return _c(\"div\", {\n    staticClass: \"v-popover\",\n    class: _vm.cssClass\n  }, [_c(\"div\", {\n    ref: \"trigger\",\n    staticClass: \"trigger\",\n    staticStyle: {\n      display: \"inline-block\"\n    },\n    attrs: {\n      \"aria-describedby\": _vm.isOpen ? _vm.popoverId : undefined,\n      tabindex: _vm.trigger.indexOf(\"focus\") !== -1 ? 0 : undefined\n    }\n  }, [_vm._t(\"default\")], 2), _vm._v(\" \"), _c(\"div\", {\n    ref: \"popover\",\n    class: [_vm.popoverBaseClass, _vm.popoverClass, _vm.cssClass],\n    style: {\n      visibility: _vm.isOpen ? \"visible\" : \"hidden\"\n    },\n    attrs: {\n      id: _vm.popoverId,\n      \"aria-hidden\": _vm.isOpen ? \"false\" : \"true\",\n      tabindex: _vm.autoHide ? 0 : undefined\n    },\n    on: {\n      keyup: function keyup($event) {\n        if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])) {\n          return null;\n        }\n\n        _vm.autoHide && _vm.hide();\n      }\n    }\n  }, [_c(\"div\", {\n    class: _vm.popoverWrapperClass\n  }, [_c(\"div\", {\n    ref: \"inner\",\n    class: _vm.popoverInnerClass,\n    staticStyle: {\n      position: \"relative\"\n    }\n  }, [_c(\"div\", [_vm._t(\"popover\", null, {\n    isOpen: _vm.isOpen\n  })], 2), _vm._v(\" \"), _vm.handleResize ? _c(\"ResizeObserver\", {\n    on: {\n      notify: _vm.$_handleResize\n    }\n  }) : _vm._e()], 1), _vm._v(\" \"), _c(\"div\", {\n    ref: \"arrow\",\n    class: _vm.popoverArrowClass\n  })])])]);\n};\n\nvar __vue_staticRenderFns__ = [];\n__vue_render__._withStripped = true;\n/* style */\n\nvar __vue_inject_styles__ = undefined;\n/* scoped */\n\nvar __vue_scope_id__ = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__ = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__ = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__ = /*#__PURE__*/normalizeComponent({\n  render: __vue_render__,\n  staticRenderFns: __vue_staticRenderFns__\n}, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, false, undefined, undefined, undefined);\n\nfunction styleInject(css, ref) {\n  if ( ref === void 0 ) ref = {};\n  var insertAt = ref.insertAt;\n\n  if (!css || typeof document === 'undefined') { return; }\n\n  var head = document.head || document.getElementsByTagName('head')[0];\n  var style = document.createElement('style');\n  style.type = 'text/css';\n\n  if (insertAt === 'top') {\n    if (head.firstChild) {\n      head.insertBefore(style, head.firstChild);\n    } else {\n      head.appendChild(style);\n    }\n  } else {\n    head.appendChild(style);\n  }\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = css;\n  } else {\n    style.appendChild(document.createTextNode(css));\n  }\n}\n\nvar css_248z = \".resize-observer[data-v-8859cc6c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-8859cc6c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}\";\nstyleInject(css_248z);\n\nfunction install(Vue) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  if (install.installed) return;\n  install.installed = true;\n  var finalOptions = {};\n  merge(finalOptions, defaultOptions, options);\n  plugin.options = finalOptions;\n  directive.options = finalOptions;\n  Vue.directive('tooltip', directive);\n  Vue.directive('close-popover', vclosepopover);\n  Vue.component('VPopover', __vue_component__);\n}\nvar VTooltip = directive;\nvar VClosePopover = vclosepopover;\nvar VPopover = __vue_component__;\nvar plugin = {\n  install: install,\n\n  get enabled() {\n    return state.enabled;\n  },\n\n  set enabled(value) {\n    state.enabled = value;\n  }\n\n}; // Auto-install\n\nvar GlobalVue = null;\n\nif (typeof window !== 'undefined') {\n  GlobalVue = window.Vue;\n} else if (typeof global !== 'undefined') {\n  GlobalVue = global.Vue;\n}\n\nif (GlobalVue) {\n  GlobalVue.use(plugin);\n}\n\nexport default plugin;\nexport { VClosePopover, VPopover, VTooltip, createTooltip, destroyTooltip, install };\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 */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\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 */\nfunction 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\nmodule.exports = baseGetTag;\n","/// <reference types=\"@nextcloud/typings\" />\n\ndeclare var OC: Nextcloud.v16.OC | Nextcloud.v17.OC | Nextcloud.v18.OC | Nextcloud.v19.OC | Nextcloud.v20.OC;\ndeclare var window: Nextcloud.v16.WindowWithGlobals | Nextcloud.v17.WindowWithGlobals | Nextcloud.v18.WindowWithGlobals | Nextcloud.v19.WindowWithGlobals;\n\n/**\n * Returns the user's locale\n */\nexport function getLocale(): string {\n    if (typeof OC === 'undefined') {\n        console.warn('No OC found')\n        return 'en'\n    }\n\n    return OC.getLocale()\n}\n\nexport function getCanonicalLocale(): string {\n\treturn getLocale().replace(/_/g, '-')\n}\n\n/**\n * Returns the user's language\n */\nexport function getLanguage(): string {\n    if (typeof OC === 'undefined') {\n        console.warn('No OC found')\n        return 'en';\n    }\n\n    return OC.getLanguage()\n}\n\ninterface TranslationOptions {\n    escape?: boolean\n}\n\n/**\n * Translate a string\n *\n * @param {string} app the id of the app for which to translate the string\n * @param {string} text the string to translate\n * @param {object} vars map of placeholder key to value\n * @param {number} number to replace %n with\n * @param {object} [options] options object\n * @return {string}\n */\nexport function translate(app: string, text: string, vars?: object, count?: number, options?: TranslationOptions): string {\n    if (typeof OC === 'undefined') {\n        console.warn('No OC found')\n        return text\n    }\n\n    return OC.L10N.translate(app, text, vars, count, options)\n}\n\n/**\n * Translate a plural string\n *\n * @param {string} app the id of the app for which to translate the string\n * @param {string} textSingular the string to translate for exactly one object\n * @param {string} textPlural the string to translate for n objects\n * @param {number} count number to determine whether to use singular or plural\n * @param {Object} vars of placeholder key to value\n * @param {object} options options object\n * @return {string}\n */\n\nexport function translatePlural(app: string, textSingular: string, textPlural: string, count: number, vars?: object, options?: TranslationOptions): string {\n    if (typeof OC === 'undefined') {\n        console.warn('No OC found')\n        return textSingular\n    }\n\n    return OC.L10N.translatePlural(app, textSingular, textPlural, count, vars, options)\n}\n\n/**\n * Get the first day of the week\n *\n * @return {number}\n */\nexport function getFirstDay(): number {\n    if (typeof window.firstDay === 'undefined') {\n        console.warn('No firstDay found')\n        return 1\n    }\n\n    return window.firstDay\n}\n\n/**\n * Get a list of day names (full names)\n *\n * @return {string[]}\n */\nexport function getDayNames(): string[] {\n    if (typeof window.dayNames === 'undefined') {\n        console.warn('No dayNames found')\n        return ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n    }\n\n    return window.dayNames\n}\n\n/**\n * Get a list of day names (short names)\n *\n * @return {string[]}\n */\nexport function getDayNamesShort(): string[] {\n    if (typeof window.dayNamesShort === 'undefined') {\n        console.warn('No dayNamesShort found')\n        return ['Sun.', 'Mon.', 'Tue.', 'Wed.', 'Thu.', 'Fri.', 'Sat.']\n    }\n\n    return window.dayNamesShort\n}\n\n/**\n * Get a list of day names (minified names)\n *\n * @return {string[]}\n */\nexport function getDayNamesMin(): string[] {\n    if (typeof window.dayNamesMin === 'undefined') {\n        console.warn('No dayNamesMin found')\n        return ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']\n    }\n\n    return window.dayNamesMin\n}\n\n/**\n * Get a list of month names (full names)\n *\n * @return {string[]}\n */\nexport function getMonthNames(): string[] {\n    if (typeof window.monthNames === 'undefined') {\n        console.warn('No monthNames found')\n        return ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n    }\n\n    return window.monthNames\n}\n\n/**\n * Get a list of month names (short names)\n *\n * @return {string[]}\n */\nexport function getMonthNamesShort(): string[] {\n    if (typeof window.monthNamesShort === 'undefined') {\n        console.warn('No monthNamesShort found')\n        return ['Jan.', 'Feb.', 'Mar.', 'Apr.', 'May.', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Oct.', 'Nov.', 'Dec.']\n    }\n\n    return window.monthNamesShort\n}\n","var listCacheClear = require('./_listCacheClear'),\n    listCacheDelete = require('./_listCacheDelete'),\n    listCacheGet = require('./_listCacheGet'),\n    listCacheHas = require('./_listCacheHas'),\n    listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction 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// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var eq = require('./eq');\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 */\nfunction 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\nmodule.exports = assocIndexOf;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var isKeyable = require('./_isKeyable');\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 */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\nmodule.exports = getMapData;\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 */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n    isLength = require('./isLength');\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 */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","'use strict';\n\nvar get = require('lodash.get');\nvar plurals = require('./plurals');\n\nmodule.exports = Gettext;\n\n/**\n * Creates and returns a new Gettext instance.\n *\n * @constructor\n * @param  {Object}  [options]             A set of options\n * @param  {String}  options.sourceLocale  The locale that the source code and its\n *                                         texts are written in. Translations for\n *                                         this locale is not necessary.\n * @param  {Boolean} options.debug         Whether to output debug info into the\n *                                         console.\n * @return {Object}  A Gettext instance\n */\nfunction Gettext(options) {\n    options = options || {};\n\n    this.catalogs = {};\n    this.locale = '';\n    this.domain = 'messages';\n\n    this.listeners = [];\n\n    // Set source locale\n    this.sourceLocale = '';\n    if (options.sourceLocale) {\n        if (typeof options.sourceLocale === 'string') {\n            this.sourceLocale = options.sourceLocale;\n        }\n        else {\n            this.warn('The `sourceLocale` option should be a string');\n        }\n    }\n\n    // Set debug flag\n    this.debug = 'debug' in options && options.debug === true;\n}\n\n/**\n * Adds an event listener.\n *\n * @param  {String}   eventName  An event name\n * @param  {Function} callback   An event handler function\n */\nGettext.prototype.on = function(eventName, callback) {\n    this.listeners.push({\n        eventName: eventName,\n        callback: callback\n    });\n};\n\n/**\n * Removes an event listener.\n *\n * @param  {String}   eventName  An event name\n * @param  {Function} callback   A previously registered event handler function\n */\nGettext.prototype.off = function(eventName, callback) {\n    this.listeners = this.listeners.filter(function(listener) {\n        return (\n            listener.eventName === eventName &&\n            listener.callback === callback\n        ) === false;\n    });\n};\n\n/**\n * Emits an event to all registered event listener.\n *\n * @private\n * @param  {String} eventName  An event name\n * @param  {any}    eventData  Data to pass to event listeners\n */\nGettext.prototype.emit = function(eventName, eventData) {\n    for (var i = 0; i < this.listeners.length; i++) {\n        var listener = this.listeners[i];\n        if (listener.eventName === eventName) {\n            listener.callback(eventData);\n        }\n    }\n};\n\n/**\n * Logs a warning to the console if debug mode is enabled.\n *\n * @ignore\n * @param  {String} message  A warning message\n */\nGettext.prototype.warn = function(message) {\n    if (this.debug) {\n        console.warn(message);\n    }\n\n    this.emit('error', new Error(message));\n};\n\n/**\n * Stores a set of translations in the set of gettext\n * catalogs.\n *\n * @example\n *     gt.addTranslations('sv-SE', 'messages', translationsObject)\n *\n * @param {String} locale        A locale string\n * @param {String} domain        A domain name\n * @param {Object} translations  An object of gettext-parser JSON shape\n */\nGettext.prototype.addTranslations = function(locale, domain, translations) {\n    if (!this.catalogs[locale]) {\n        this.catalogs[locale] = {};\n    }\n\n    this.catalogs[locale][domain] = translations;\n};\n\n/**\n * Sets the locale to get translated messages for.\n *\n * @example\n *     gt.setLocale('sv-SE')\n *\n * @param {String} locale  A locale\n */\nGettext.prototype.setLocale = function(locale) {\n    if (typeof locale !== 'string') {\n        this.warn(\n            'You called setLocale() with an argument of type ' + (typeof locale) + '. ' +\n            'The locale must be a string.'\n        );\n        return;\n    }\n\n    if (locale.trim() === '') {\n        this.warn('You called setLocale() with an empty value, which makes little sense.');\n    }\n\n    if (locale !== this.sourceLocale && !this.catalogs[locale]) {\n        this.warn('You called setLocale() with \"' + locale + '\", but no translations for that locale has been added.');\n    }\n\n    this.locale = locale;\n};\n\n/**\n * Sets the default gettext domain.\n *\n * @example\n *     gt.setTextDomain('domainname')\n *\n * @param {String} domain  A gettext domain name\n */\nGettext.prototype.setTextDomain = function(domain) {\n    if (typeof domain !== 'string') {\n        this.warn(\n            'You called setTextDomain() with an argument of type ' + (typeof domain) + '. ' +\n            'The domain must be a string.'\n        );\n        return;\n    }\n\n    if (domain.trim() === '') {\n        this.warn('You called setTextDomain() with an empty `domain` value.');\n    }\n\n    this.domain = domain;\n};\n\n/**\n * Translates a string using the default textdomain\n *\n * @example\n *     gt.gettext('Some text')\n *\n * @param  {String} msgid  String to be translated\n * @return {String} Translation or the original string if no translation was found\n */\nGettext.prototype.gettext = function(msgid) {\n    return this.dnpgettext(this.domain, '', msgid);\n};\n\n/**\n * Translates a string using a specific domain\n *\n * @example\n *     gt.dgettext('domainname', 'Some text')\n *\n * @param  {String} domain  A gettext domain name\n * @param  {String} msgid   String to be translated\n * @return {String} Translation or the original string if no translation was found\n */\nGettext.prototype.dgettext = function(domain, msgid) {\n    return this.dnpgettext(domain, '', msgid);\n};\n\n/**\n * Translates a plural string using the default textdomain\n *\n * @example\n *     gt.ngettext('One thing', 'Many things', numberOfThings)\n *\n * @param  {String} msgid        String to be translated when count is not plural\n * @param  {String} msgidPlural  String to be translated when count is plural\n * @param  {Number} count        Number count for the plural\n * @return {String} Translation or the original string if no translation was found\n */\nGettext.prototype.ngettext = function(msgid, msgidPlural, count) {\n    return this.dnpgettext(this.domain, '', msgid, msgidPlural, count);\n};\n\n/**\n * Translates a plural string using a specific textdomain\n *\n * @example\n *     gt.dngettext('domainname', 'One thing', 'Many things', numberOfThings)\n *\n * @param  {String} domain       A gettext domain name\n * @param  {String} msgid        String to be translated when count is not plural\n * @param  {String} msgidPlural  String to be translated when count is plural\n * @param  {Number} count        Number count for the plural\n * @return {String} Translation or the original string if no translation was found\n */\nGettext.prototype.dngettext = function(domain, msgid, msgidPlural, count) {\n    return this.dnpgettext(domain, '', msgid, msgidPlural, count);\n};\n\n/**\n * Translates a string from a specific context using the default textdomain\n *\n * @example\n *    gt.pgettext('sports', 'Back')\n *\n * @param  {String} msgctxt  Translation context\n * @param  {String} msgid    String to be translated\n * @return {String} Translation or the original string if no translation was found\n */\nGettext.prototype.pgettext = function(msgctxt, msgid) {\n    return this.dnpgettext(this.domain, msgctxt, msgid);\n};\n\n/**\n * Translates a string from a specific context using s specific textdomain\n *\n * @example\n *     gt.dpgettext('domainname', 'sports', 'Back')\n *\n * @param  {String} domain   A gettext domain name\n * @param  {String} msgctxt  Translation context\n * @param  {String} msgid    String to be translated\n * @return {String} Translation or the original string if no translation was found\n */\nGettext.prototype.dpgettext = function(domain, msgctxt, msgid) {\n    return this.dnpgettext(domain, msgctxt, msgid);\n};\n\n/**\n * Translates a plural string from a specific context using the default textdomain\n *\n * @example\n *     gt.npgettext('sports', 'Back', '%d backs', numberOfBacks)\n *\n * @param  {String} msgctxt      Translation context\n * @param  {String} msgid        String to be translated when count is not plural\n * @param  {String} msgidPlural  String to be translated when count is plural\n * @param  {Number} count        Number count for the plural\n * @return {String} Translation or the original string if no translation was found\n */\nGettext.prototype.npgettext = function(msgctxt, msgid, msgidPlural, count) {\n    return this.dnpgettext(this.domain, msgctxt, msgid, msgidPlural, count);\n};\n\n/**\n * Translates a plural string from a specifi context using a specific textdomain\n *\n * @example\n *     gt.dnpgettext('domainname', 'sports', 'Back', '%d backs', numberOfBacks)\n *\n * @param  {String} domain       A gettext domain name\n * @param  {String} msgctxt      Translation context\n * @param  {String} msgid        String to be translated\n * @param  {String} msgidPlural  If no translation was found, return this on count!=1\n * @param  {Number} count        Number count for the plural\n * @return {String} Translation or the original string if no translation was found\n */\nGettext.prototype.dnpgettext = function(domain, msgctxt, msgid, msgidPlural, count) {\n    var defaultTranslation = msgid;\n    var translation;\n    var index;\n\n    msgctxt = msgctxt || '';\n\n    if (!isNaN(count) && count !== 1) {\n        defaultTranslation = msgidPlural || msgid;\n    }\n\n    translation = this._getTranslation(domain, msgctxt, msgid);\n\n    if (translation) {\n        if (typeof count === 'number') {\n            var pluralsFunc = plurals[Gettext.getLanguageCode(this.locale)].pluralsFunc;\n            index = pluralsFunc(count);\n            if (typeof index === 'boolean') {\n                index = index ? 1 : 0;\n            }\n        } else {\n            index = 0;\n        }\n\n        return translation.msgstr[index] || defaultTranslation;\n    }\n    else if (!this.sourceLocale || this.locale !== this.sourceLocale) {\n        this.warn('No translation was found for msgid \"' + msgid + '\" in msgctxt \"' + msgctxt + '\" and domain \"' + domain + '\"');\n    }\n\n    return defaultTranslation;\n};\n\n/**\n * Retrieves comments object for a translation. The comments object\n * has the shape `{ translator, extracted, reference, flag, previous }`.\n *\n * @example\n *     const comment = gt.getComment('domainname', 'sports', 'Backs')\n *\n * @private\n * @param  {String} domain   A gettext domain name\n * @param  {String} msgctxt  Translation context\n * @param  {String} msgid    String to be translated\n * @return {Object} Comments object or false if not found\n */\nGettext.prototype.getComment = function(domain, msgctxt, msgid) {\n    var translation;\n\n    translation = this._getTranslation(domain, msgctxt, msgid);\n    if (translation) {\n        return translation.comments || {};\n    }\n\n    return {};\n};\n\n/**\n * Retrieves translation object from the domain and context\n *\n * @private\n * @param  {String} domain   A gettext domain name\n * @param  {String} msgctxt  Translation context\n * @param  {String} msgid    String to be translated\n * @return {Object} Translation object or false if not found\n */\nGettext.prototype._getTranslation = function(domain, msgctxt, msgid) {\n    msgctxt = msgctxt || '';\n\n    return get(this.catalogs, [this.locale, domain, 'translations', msgctxt, msgid]);\n};\n\n/**\n * Returns the language code part of a locale\n *\n * @example\n *     Gettext.getLanguageCode('sv-SE')\n *     // -> \"sv\"\n *\n * @private\n * @param   {String} locale  A case-insensitive locale string\n * @returns {String} A language code\n */\nGettext.getLanguageCode = function(locale) {\n    return locale.split(/[\\-_]/)[0].toLowerCase();\n};\n\n/* C-style aliases */\n\n/**\n * C-style alias for [setTextDomain](#gettextsettextdomaindomain)\n *\n * @see Gettext#setTextDomain\n */\nGettext.prototype.textdomain = function(domain) {\n    if (this.debug) {\n        console.warn('textdomain(domain) was used to set locales in node-gettext v1. ' +\n            'Make sure you are using it for domains, and switch to setLocale(locale) if you are not.\\n\\n ' +\n            'To read more about the migration from node-gettext v1 to v2, ' +\n            'see https://github.com/alexanderwallin/node-gettext/#migrating-from-1x-to-2x\\n\\n' +\n            'This warning will be removed in the final 2.0.0');\n    }\n\n    this.setTextDomain(domain);\n};\n\n/**\n * C-style alias for [setLocale](#gettextsetlocalelocale)\n *\n * @see Gettext#setLocale\n */\nGettext.prototype.setlocale = function(locale) {\n    this.setLocale(locale);\n};\n\n/* Deprecated functions */\n\n/**\n * This function will be removed in the final 2.0.0 release.\n *\n * @deprecated\n */\nGettext.prototype.addTextdomain = function() {\n    console.error('addTextdomain() is deprecated.\\n\\n' +\n        '* To add translations, use addTranslations()\\n' +\n        '* To set the default domain, use setTextDomain() (or its alias textdomain())\\n' +\n        '\\n' +\n        'To read more about the migration from node-gettext v1 to v2, ' +\n        'see https://github.com/alexanderwallin/node-gettext/#migrating-from-1x-to-2x');\n};\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var baseGetTag = require('./_baseGetTag'),\n    isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\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 */\nfunction 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\nmodule.exports = isFunction;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root'),\n    stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\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 */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\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 */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\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 */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var defineProperty = require('./_defineProperty');\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 */\nfunction 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\nmodule.exports = baseAssignValue;\n","var ListCache = require('./_ListCache'),\n    stackClear = require('./_stackClear'),\n    stackDelete = require('./_stackDelete'),\n    stackGet = require('./_stackGet'),\n    stackHas = require('./_stackHas'),\n    stackSet = require('./_stackSet');\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 */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\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 */\nfunction 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\nmodule.exports = toSource;\n","var mapCacheClear = require('./_mapCacheClear'),\n    mapCacheDelete = require('./_mapCacheDelete'),\n    mapCacheGet = require('./_mapCacheGet'),\n    mapCacheHas = require('./_mapCacheHas'),\n    mapCacheSet = require('./_mapCacheSet');\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 */\nfunction 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// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var SetCache = require('./_SetCache'),\n    arraySome = require('./_arraySome'),\n    cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\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 */\nfunction 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  // Assume cyclic values are equal.\n  var stacked = stack.get(array);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\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\nmodule.exports = equalArrays;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var baseTimes = require('./_baseTimes'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isIndex = require('./_isIndex'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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 */\nfunction 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\nmodule.exports = arrayLikeKeys;\n","var baseIsArguments = require('./_baseIsArguments'),\n    isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\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 */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\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 */\nfunction 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\nmodule.exports = isIndex;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\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 */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\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 */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nmodule.exports = overArg;\n","var baseAssignValue = require('./_baseAssignValue'),\n    eq = require('./eq');\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 */\nfunction 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\nmodule.exports = assignMergeValue;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\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 */\nfunction 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\nmodule.exports = safeGet;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n    baseKeysIn = require('./_baseKeysIn'),\n    isArrayLike = require('./isArrayLike');\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 */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    symbolTag = '[object Symbol]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/,\n    reLeadingDot = /^\\./,\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 */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\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 */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n  // Many host objects are `Object` objects that can coerce to strings\n  // despite having improperly defined `toString` methods.\n  var result = false;\n  if (value != null && typeof value.toString != 'function') {\n    try {\n      result = !!(value + '');\n    } catch (e) {}\n  }\n  return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n    funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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 */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n    splice = arrayProto.splice;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n    nativeCreate = getNative(Object, 'create');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\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 */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\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 */\nfunction hashDelete(key) {\n  return this.has(key) && delete this.__data__[key];\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 */\nfunction 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 */\nfunction 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 */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\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 */\nfunction listCacheClear() {\n  this.__data__ = [];\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 */\nfunction 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  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 */\nfunction 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 */\nfunction 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 */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\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 */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\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 */\nfunction mapCacheClear() {\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 */\nfunction mapCacheDelete(key) {\n  return getMapData(this, key)['delete'](key);\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 */\nfunction 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 */\nfunction 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 */\nfunction mapCacheSet(key, value) {\n  getMapData(this, key).set(key, value);\n  return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\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 */\nfunction 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 * 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 */\nfunction baseGet(object, path) {\n  path = isKey(path, object) ? [path] : castPath(path);\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 `_.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 */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(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 */\nfunction 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 (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 * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n  return isArray(value) ? value : stringToPath(value);\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 */\nfunction 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 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 */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\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 */\nfunction 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 */\nfunction 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 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 */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\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 */\nvar stringToPath = memoize(function(string) {\n  string = toString(string);\n\n  var result = [];\n  if (reLeadingDot.test(string)) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, string) {\n    result.push(quote ? string.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 */\nfunction 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 process.\n * @returns {string} Returns the source code.\n */\nfunction 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 * 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 `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 */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver && 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);\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\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 */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\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 */\nvar isArray = Array.isArray;\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 */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\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 */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (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 */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\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 */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\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 process.\n * @returns {string} Returns the 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 */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\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 */\nfunction get(object, path, defaultValue) {\n  var result = object == null ? undefined : baseGet(object, path);\n  return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","'use strict';\n\nmodule.exports = {\n    ach: {\n        name: 'Acholi',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: function(n) {\n            return (n > 1);\n        }\n    },\n    af: {\n        name: 'Afrikaans',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    ak: {\n        name: 'Akan',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: function(n) {\n            return (n > 1);\n        }\n    },\n    am: {\n        name: 'Amharic',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: function(n) {\n            return (n > 1);\n        }\n    },\n    an: {\n        name: 'Aragonese',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    ar: {\n        name: 'Arabic',\n        examples: [{\n            plural: 0,\n            sample: 0\n        }, {\n            plural: 1,\n            sample: 1\n        }, {\n            plural: 2,\n            sample: 2\n        }, {\n            plural: 3,\n            sample: 3\n        }, {\n            plural: 4,\n            sample: 11\n        }, {\n            plural: 5,\n            sample: 100\n        }],\n        nplurals: 6,\n        pluralsText: 'nplurals = 6; plural = (n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5)',\n        pluralsFunc: function(n) {\n            return (n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n        }\n    },\n    arn: {\n        name: 'Mapudungun',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: function(n) {\n            return (n > 1);\n        }\n    },\n    ast: {\n        name: 'Asturian',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    ay: {\n        name: 'Aymará',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: function() {\n            return 0;\n        }\n    },\n    az: {\n        name: 'Azerbaijani',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    be: {\n        name: 'Belarusian',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }, {\n            plural: 2,\n            sample: 5\n        }],\n        nplurals: 3,\n        pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n        pluralsFunc: function(n) {\n            return (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n        }\n    },\n    bg: {\n        name: 'Bulgarian',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    bn: {\n        name: 'Bengali',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    bo: {\n        name: 'Tibetan',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: function() {\n            return 0;\n        }\n    },\n    br: {\n        name: 'Breton',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: function(n) {\n            return (n > 1);\n        }\n    },\n    brx: {\n        name: 'Bodo',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    bs: {\n        name: 'Bosnian',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }, {\n            plural: 2,\n            sample: 5\n        }],\n        nplurals: 3,\n        pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n        pluralsFunc: function(n) {\n            return (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n        }\n    },\n    ca: {\n        name: 'Catalan',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    cgg: {\n        name: 'Chiga',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: function() {\n            return 0;\n        }\n    },\n    cs: {\n        name: 'Czech',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }, {\n            plural: 2,\n            sample: 5\n        }],\n        nplurals: 3,\n        pluralsText: 'nplurals = 3; plural = (n === 1 ? 0 : (n >= 2 && n <= 4) ? 1 : 2)',\n        pluralsFunc: function(n) {\n            return (n === 1 ? 0 : (n >= 2 && n <= 4) ? 1 : 2);\n        }\n    },\n    csb: {\n        name: 'Kashubian',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }, {\n            plural: 2,\n            sample: 5\n        }],\n        nplurals: 3,\n        pluralsText: 'nplurals = 3; plural = (n === 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n        pluralsFunc: function(n) {\n            return (n === 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n        }\n    },\n    cy: {\n        name: 'Welsh',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }, {\n            plural: 2,\n            sample: 3\n        }, {\n            plural: 3,\n            sample: 8\n        }],\n        nplurals: 4,\n        pluralsText: 'nplurals = 4; plural = (n === 1 ? 0 : n === 2 ? 1 : (n !== 8 && n !== 11) ? 2 : 3)',\n        pluralsFunc: function(n) {\n            return (n === 1 ? 0 : n === 2 ? 1 : (n !== 8 && n !== 11) ? 2 : 3);\n        }\n    },\n    da: {\n        name: 'Danish',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    de: {\n        name: 'German',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    doi: {\n        name: 'Dogri',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    dz: {\n        name: 'Dzongkha',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: function() {\n            return 0;\n        }\n    },\n    el: {\n        name: 'Greek',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    en: {\n        name: 'English',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    eo: {\n        name: 'Esperanto',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    es: {\n        name: 'Spanish',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    et: {\n        name: 'Estonian',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    eu: {\n        name: 'Basque',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    fa: {\n        name: 'Persian',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: function() {\n            return 0;\n        }\n    },\n    ff: {\n        name: 'Fulah',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    fi: {\n        name: 'Finnish',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    fil: {\n        name: 'Filipino',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: function(n) {\n            return (n > 1);\n        }\n    },\n    fo: {\n        name: 'Faroese',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    fr: {\n        name: 'French',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: function(n) {\n            return (n > 1);\n        }\n    },\n    fur: {\n        name: 'Friulian',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    fy: {\n        name: 'Frisian',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    ga: {\n        name: 'Irish',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }, {\n            plural: 2,\n            sample: 3\n        }, {\n            plural: 3,\n            sample: 7\n        }, {\n            plural: 4,\n            sample: 11\n        }],\n        nplurals: 5,\n        pluralsText: 'nplurals = 5; plural = (n === 1 ? 0 : n === 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4)',\n        pluralsFunc: function(n) {\n            return (n === 1 ? 0 : n === 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n        }\n    },\n    gd: {\n        name: 'Scottish Gaelic',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }, {\n            plural: 2,\n            sample: 3\n        }, {\n            plural: 3,\n            sample: 20\n        }],\n        nplurals: 4,\n        pluralsText: 'nplurals = 4; plural = ((n === 1 || n === 11) ? 0 : (n === 2 || n === 12) ? 1 : (n > 2 && n < 20) ? 2 : 3)',\n        pluralsFunc: function(n) {\n            return ((n === 1 || n === 11) ? 0 : (n === 2 || n === 12) ? 1 : (n > 2 && n < 20) ? 2 : 3);\n        }\n    },\n    gl: {\n        name: 'Galician',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    gu: {\n        name: 'Gujarati',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    gun: {\n        name: 'Gun',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: function(n) {\n            return (n > 1);\n        }\n    },\n    ha: {\n        name: 'Hausa',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    he: {\n        name: 'Hebrew',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    hi: {\n        name: 'Hindi',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    hne: {\n        name: 'Chhattisgarhi',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    hr: {\n        name: 'Croatian',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }, {\n            plural: 2,\n            sample: 5\n        }],\n        nplurals: 3,\n        pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n        pluralsFunc: function(n) {\n            return (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n        }\n    },\n    hu: {\n        name: 'Hungarian',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    hy: {\n        name: 'Armenian',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    id: {\n        name: 'Indonesian',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: function() {\n            return 0;\n        }\n    },\n    is: {\n        name: 'Icelandic',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n % 10 !== 1 || n % 100 === 11)',\n        pluralsFunc: function(n) {\n            return (n % 10 !== 1 || n % 100 === 11);\n        }\n    },\n    it: {\n        name: 'Italian',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    ja: {\n        name: 'Japanese',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: function() {\n            return 0;\n        }\n    },\n    jbo: {\n        name: 'Lojban',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: function() {\n            return 0;\n        }\n    },\n    jv: {\n        name: 'Javanese',\n        examples: [{\n            plural: 0,\n            sample: 0\n        }, {\n            plural: 1,\n            sample: 1\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 0)',\n        pluralsFunc: function(n) {\n            return (n !== 0);\n        }\n    },\n    ka: {\n        name: 'Georgian',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: function() {\n            return 0;\n        }\n    },\n    kk: {\n        name: 'Kazakh',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: function() {\n            return 0;\n        }\n    },\n    km: {\n        name: 'Khmer',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: function() {\n            return 0;\n        }\n    },\n    kn: {\n        name: 'Kannada',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    ko: {\n        name: 'Korean',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: function() {\n            return 0;\n        }\n    },\n    ku: {\n        name: 'Kurdish',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    kw: {\n        name: 'Cornish',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }, {\n            plural: 2,\n            sample: 3\n        }, {\n            plural: 3,\n            sample: 4\n        }],\n        nplurals: 4,\n        pluralsText: 'nplurals = 4; plural = (n === 1 ? 0 : n === 2 ? 1 : n === 3 ? 2 : 3)',\n        pluralsFunc: function(n) {\n            return (n === 1 ? 0 : n === 2 ? 1 : n === 3 ? 2 : 3);\n        }\n    },\n    ky: {\n        name: 'Kyrgyz',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: function() {\n            return 0;\n        }\n    },\n    lb: {\n        name: 'Letzeburgesch',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    ln: {\n        name: 'Lingala',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: function(n) {\n            return (n > 1);\n        }\n    },\n    lo: {\n        name: 'Lao',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: function() {\n            return 0;\n        }\n    },\n    lt: {\n        name: 'Lithuanian',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }, {\n            plural: 2,\n            sample: 10\n        }],\n        nplurals: 3,\n        pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n        pluralsFunc: function(n) {\n            return (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n        }\n    },\n    lv: {\n        name: 'Latvian',\n        examples: [{\n            plural: 2,\n            sample: 0\n        }, {\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 3,\n        pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n !== 0 ? 1 : 2)',\n        pluralsFunc: function(n) {\n            return (n % 10 === 1 && n % 100 !== 11 ? 0 : n !== 0 ? 1 : 2);\n        }\n    },\n    mai: {\n        name: 'Maithili',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    mfe: {\n        name: 'Mauritian Creole',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: function(n) {\n            return (n > 1);\n        }\n    },\n    mg: {\n        name: 'Malagasy',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: function(n) {\n            return (n > 1);\n        }\n    },\n    mi: {\n        name: 'Maori',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: function(n) {\n            return (n > 1);\n        }\n    },\n    mk: {\n        name: 'Macedonian',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n === 1 || n % 10 === 1 ? 0 : 1)',\n        pluralsFunc: function(n) {\n            return (n === 1 || n % 10 === 1 ? 0 : 1);\n        }\n    },\n    ml: {\n        name: 'Malayalam',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    mn: {\n        name: 'Mongolian',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    mni: {\n        name: 'Manipuri',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    mnk: {\n        name: 'Mandinka',\n        examples: [{\n            plural: 0,\n            sample: 0\n        }, {\n            plural: 1,\n            sample: 1\n        }, {\n            plural: 2,\n            sample: 2\n        }],\n        nplurals: 3,\n        pluralsText: 'nplurals = 3; plural = (n === 0 ? 0 : n === 1 ? 1 : 2)',\n        pluralsFunc: function(n) {\n            return (n === 0 ? 0 : n === 1 ? 1 : 2);\n        }\n    },\n    mr: {\n        name: 'Marathi',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    ms: {\n        name: 'Malay',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: function() {\n            return 0;\n        }\n    },\n    mt: {\n        name: 'Maltese',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }, {\n            plural: 2,\n            sample: 11\n        }, {\n            plural: 3,\n            sample: 20\n        }],\n        nplurals: 4,\n        pluralsText: 'nplurals = 4; plural = (n === 1 ? 0 : n === 0 || ( n % 100 > 1 && n % 100 < 11) ? 1 : (n % 100 > 10 && n % 100 < 20 ) ? 2 : 3)',\n        pluralsFunc: function(n) {\n            return (n === 1 ? 0 : n === 0 || (n % 100 > 1 && n % 100 < 11) ? 1 : (n % 100 > 10 && n % 100 < 20) ? 2 : 3);\n        }\n    },\n    my: {\n        name: 'Burmese',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: function() {\n            return 0;\n        }\n    },\n    nah: {\n        name: 'Nahuatl',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    nap: {\n        name: 'Neapolitan',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    nb: {\n        name: 'Norwegian Bokmal',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    ne: {\n        name: 'Nepali',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    nl: {\n        name: 'Dutch',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    nn: {\n        name: 'Norwegian Nynorsk',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    no: {\n        name: 'Norwegian',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    nso: {\n        name: 'Northern Sotho',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    oc: {\n        name: 'Occitan',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: function(n) {\n            return (n > 1);\n        }\n    },\n    or: {\n        name: 'Oriya',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    pa: {\n        name: 'Punjabi',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    pap: {\n        name: 'Papiamento',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    pl: {\n        name: 'Polish',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }, {\n            plural: 2,\n            sample: 5\n        }],\n        nplurals: 3,\n        pluralsText: 'nplurals = 3; plural = (n === 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n        pluralsFunc: function(n) {\n            return (n === 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n        }\n    },\n    pms: {\n        name: 'Piemontese',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    ps: {\n        name: 'Pashto',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    pt: {\n        name: 'Portuguese',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    rm: {\n        name: 'Romansh',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    ro: {\n        name: 'Romanian',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }, {\n            plural: 2,\n            sample: 20\n        }],\n        nplurals: 3,\n        pluralsText: 'nplurals = 3; plural = (n === 1 ? 0 : (n === 0 || (n % 100 > 0 && n % 100 < 20)) ? 1 : 2)',\n        pluralsFunc: function(n) {\n            return (n === 1 ? 0 : (n === 0 || (n % 100 > 0 && n % 100 < 20)) ? 1 : 2);\n        }\n    },\n    ru: {\n        name: 'Russian',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }, {\n            plural: 2,\n            sample: 5\n        }],\n        nplurals: 3,\n        pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n        pluralsFunc: function(n) {\n            return (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n        }\n    },\n    rw: {\n        name: 'Kinyarwanda',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    sah: {\n        name: 'Yakut',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: function() {\n            return 0;\n        }\n    },\n    sat: {\n        name: 'Santali',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    sco: {\n        name: 'Scots',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    sd: {\n        name: 'Sindhi',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    se: {\n        name: 'Northern Sami',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    si: {\n        name: 'Sinhala',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    sk: {\n        name: 'Slovak',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }, {\n            plural: 2,\n            sample: 5\n        }],\n        nplurals: 3,\n        pluralsText: 'nplurals = 3; plural = (n === 1 ? 0 : (n >= 2 && n <= 4) ? 1 : 2)',\n        pluralsFunc: function(n) {\n            return (n === 1 ? 0 : (n >= 2 && n <= 4) ? 1 : 2);\n        }\n    },\n    sl: {\n        name: 'Slovenian',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }, {\n            plural: 2,\n            sample: 3\n        }, {\n            plural: 3,\n            sample: 5\n        }],\n        nplurals: 4,\n        pluralsText: 'nplurals = 4; plural = (n % 100 === 1 ? 0 : n % 100 === 2 ? 1 : n % 100 === 3 || n % 100 === 4 ? 2 : 3)',\n        pluralsFunc: function(n) {\n            return (n % 100 === 1 ? 0 : n % 100 === 2 ? 1 : n % 100 === 3 || n % 100 === 4 ? 2 : 3);\n        }\n    },\n    so: {\n        name: 'Somali',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    son: {\n        name: 'Songhay',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    sq: {\n        name: 'Albanian',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    sr: {\n        name: 'Serbian',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }, {\n            plural: 2,\n            sample: 5\n        }],\n        nplurals: 3,\n        pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n        pluralsFunc: function(n) {\n            return (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n        }\n    },\n    su: {\n        name: 'Sundanese',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: function() {\n            return 0;\n        }\n    },\n    sv: {\n        name: 'Swedish',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    sw: {\n        name: 'Swahili',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    ta: {\n        name: 'Tamil',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    te: {\n        name: 'Telugu',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    tg: {\n        name: 'Tajik',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: function(n) {\n            return (n > 1);\n        }\n    },\n    th: {\n        name: 'Thai',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: function() {\n            return 0;\n        }\n    },\n    ti: {\n        name: 'Tigrinya',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: function(n) {\n            return (n > 1);\n        }\n    },\n    tk: {\n        name: 'Turkmen',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    tr: {\n        name: 'Turkish',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: function(n) {\n            return (n > 1);\n        }\n    },\n    tt: {\n        name: 'Tatar',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: function() {\n            return 0;\n        }\n    },\n    ug: {\n        name: 'Uyghur',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: function() {\n            return 0;\n        }\n    },\n    uk: {\n        name: 'Ukrainian',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }, {\n            plural: 2,\n            sample: 5\n        }],\n        nplurals: 3,\n        pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n        pluralsFunc: function(n) {\n            return (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n        }\n    },\n    ur: {\n        name: 'Urdu',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    uz: {\n        name: 'Uzbek',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: function(n) {\n            return (n > 1);\n        }\n    },\n    vi: {\n        name: 'Vietnamese',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: function() {\n            return 0;\n        }\n    },\n    wa: {\n        name: 'Walloon',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n > 1)',\n        pluralsFunc: function(n) {\n            return (n > 1);\n        }\n    },\n    wo: {\n        name: 'Wolof',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: function() {\n            return 0;\n        }\n    },\n    yo: {\n        name: 'Yoruba',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }, {\n            plural: 1,\n            sample: 2\n        }],\n        nplurals: 2,\n        pluralsText: 'nplurals = 2; plural = (n !== 1)',\n        pluralsFunc: function(n) {\n            return (n !== 1);\n        }\n    },\n    zh: {\n        name: 'Chinese',\n        examples: [{\n            plural: 0,\n            sample: 1\n        }],\n        nplurals: 1,\n        pluralsText: 'nplurals = 1; plural = 0',\n        pluralsFunc: function() {\n            return 0;\n        }\n    }\n};\n","export default typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n","import isBrowser from './isBrowser';\n\nconst timeoutDuration = (function(){\n  const longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n  for (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n    if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n      return 1;\n    }\n  }\n  return 0;\n}());\n\nexport function microtaskDebounce(fn) {\n  let called = false\n  return () => {\n    if (called) {\n      return\n    }\n    called = true\n    window.Promise.resolve().then(() => {\n      called = false\n      fn()\n    })\n  }\n}\n\nexport function taskDebounce(fn) {\n  let scheduled = false;\n  return () => {\n    if (!scheduled) {\n      scheduled = true;\n      setTimeout(() => {\n        scheduled = false;\n        fn();\n      }, timeoutDuration);\n    }\n  };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n  ? microtaskDebounce\n  : taskDebounce);\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n  const getType = {};\n  return (\n    functionToCheck &&\n    getType.toString.call(functionToCheck) === '[object Function]'\n  );\n}\n","/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n  if (element.nodeType !== 1) {\n    return [];\n  }\n  // NOTE: 1 DOM access here\n  const window = element.ownerDocument.defaultView;\n  const css = window.getComputedStyle(element, null);\n  return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n  if (element.nodeName === 'HTML') {\n    return element;\n  }\n  return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n  // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n  if (!element) {\n    return document.body\n  }\n\n  switch (element.nodeName) {\n    case 'HTML':\n    case 'BODY':\n      return element.ownerDocument.body\n    case '#document':\n      return element.body\n  }\n\n  // Firefox want us to check `-x` and `-y` variations as well\n  const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n  if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n    return element;\n  }\n\n  return getScrollParent(getParentNode(element));\n}\n","/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nexport default function getReferenceNode(reference) {\n  return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n","import isBrowser from './isBrowser';\n\nconst isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nconst isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nexport default function isIE(version) {\n  if (version === 11) {\n    return isIE11;\n  }\n  if (version === 10) {\n    return isIE10;\n  }\n  return isIE11 || isIE10;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n  if (!element) {\n    return document.documentElement;\n  }\n\n  const noOffsetParent = isIE(10) ? document.body : null;\n\n  // NOTE: 1 DOM access here\n  let offsetParent = element.offsetParent || null;\n  // Skip hidden elements which don't have an offsetParent\n  while (offsetParent === noOffsetParent && element.nextElementSibling) {\n    offsetParent = (element = element.nextElementSibling).offsetParent;\n  }\n\n  const nodeName = offsetParent && offsetParent.nodeName;\n\n  if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n    return element ? element.ownerDocument.documentElement : document.documentElement;\n  }\n\n  // .offsetParent will return the closest TH, TD or TABLE in case\n  // no offsetParent is present, I hate this job...\n  if (\n    ['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n    getStyleComputedProperty(offsetParent, 'position') === 'static'\n  ) {\n    return getOffsetParent(offsetParent);\n  }\n\n  return offsetParent;\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n  if (node.parentNode !== null) {\n    return getRoot(node.parentNode);\n  }\n\n  return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n  // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n  if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n    return document.documentElement;\n  }\n\n  // Here we make sure to give as \"start\" the element that comes first in the DOM\n  const order =\n    element1.compareDocumentPosition(element2) &\n    Node.DOCUMENT_POSITION_FOLLOWING;\n  const start = order ? element1 : element2;\n  const end = order ? element2 : element1;\n\n  // Get common ancestor container\n  const range = document.createRange();\n  range.setStart(start, 0);\n  range.setEnd(end, 0);\n  const { commonAncestorContainer } = range;\n\n  // Both nodes are inside #document\n  if (\n    (element1 !== commonAncestorContainer &&\n      element2 !== commonAncestorContainer) ||\n    start.contains(end)\n  ) {\n    if (isOffsetContainer(commonAncestorContainer)) {\n      return commonAncestorContainer;\n    }\n\n    return getOffsetParent(commonAncestorContainer);\n  }\n\n  // one of the nodes is inside shadowDOM, find which one\n  const element1root = getRoot(element1);\n  if (element1root.host) {\n    return findCommonOffsetParent(element1root.host, element2);\n  } else {\n    return findCommonOffsetParent(element1, getRoot(element2).host);\n  }\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n  const { nodeName } = element;\n  if (nodeName === 'BODY') {\n    return false;\n  }\n  return (\n    nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n  );\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n  const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n  const nodeName = element.nodeName;\n\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\n    const html = element.ownerDocument.documentElement;\n    const scrollingElement = element.ownerDocument.scrollingElement || html;\n    return scrollingElement[upperSide];\n  }\n\n  return element[upperSide];\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n  const scrollTop = getScroll(element, 'top');\n  const scrollLeft = getScroll(element, 'left');\n  const modifier = subtract ? -1 : 1;\n  rect.top += scrollTop * modifier;\n  rect.bottom += scrollTop * modifier;\n  rect.left += scrollLeft * modifier;\n  rect.right += scrollLeft * modifier;\n  return rect;\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n  const sideA = axis === 'x' ? 'Left' : 'Top';\n  const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n  return (\n    parseFloat(styles[`border${sideA}Width`]) +\n    parseFloat(styles[`border${sideB}Width`])\n  );\n}\n","import isIE from './isIE';\n\nfunction getSize(axis, body, html, computedStyle) {\n  return Math.max(\n    body[`offset${axis}`],\n    body[`scroll${axis}`],\n    html[`client${axis}`],\n    html[`offset${axis}`],\n    html[`scroll${axis}`],\n    isIE(10)\n      ? (parseInt(html[`offset${axis}`]) + \n      parseInt(computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`]) + \n      parseInt(computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]))\n    : 0 \n  );\n}\n\nexport default function getWindowSizes(document) {\n  const body = document.body;\n  const html = document.documentElement;\n  const computedStyle = isIE(10) && getComputedStyle(html);\n\n  return {\n    height: getSize('Height', body, html, computedStyle),\n    width: getSize('Width', body, html, computedStyle),\n  };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n  return {\n    ...offsets,\n    right: offsets.left + offsets.width,\n    bottom: offsets.top + offsets.height,\n  };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE from './isIE';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n  let rect = {};\n\n  // IE10 10 FIX: Please, don't ask, the element isn't\n  // considered in DOM in some circumstances...\n  // This isn't reproducible in IE10 compatibility mode of IE11\n  try {\n    if (isIE(10)) {\n      rect = element.getBoundingClientRect();\n      const scrollTop = getScroll(element, 'top');\n      const scrollLeft = getScroll(element, 'left');\n      rect.top += scrollTop;\n      rect.left += scrollLeft;\n      rect.bottom += scrollTop;\n      rect.right += scrollLeft;\n    }\n    else {\n      rect = element.getBoundingClientRect();\n    }\n  }\n  catch(e){}\n\n  const result = {\n    left: rect.left,\n    top: rect.top,\n    width: rect.right - rect.left,\n    height: rect.bottom - rect.top,\n  };\n\n  // subtract scrollbar size from sizes\n  const sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n  const width =\n    sizes.width || element.clientWidth || result.width;\n  const height =\n    sizes.height || element.clientHeight || result.height;\n\n  let horizScrollbar = element.offsetWidth - width;\n  let vertScrollbar = element.offsetHeight - height;\n\n  // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n  // we make this check conditional for performance reasons\n  if (horizScrollbar || vertScrollbar) {\n    const styles = getStyleComputedProperty(element);\n    horizScrollbar -= getBordersSize(styles, 'x');\n    vertScrollbar -= getBordersSize(styles, 'y');\n\n    result.width -= horizScrollbar;\n    result.height -= vertScrollbar;\n  }\n\n  return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE from './isIE';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent, fixedPosition = false) {\n  const isIE10 = runIsIE(10);\n  const isHTML = parent.nodeName === 'HTML';\n  const childrenRect = getBoundingClientRect(children);\n  const parentRect = getBoundingClientRect(parent);\n  const scrollParent = getScrollParent(children);\n\n  const styles = getStyleComputedProperty(parent);\n  const borderTopWidth = parseFloat(styles.borderTopWidth);\n  const borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n  // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n  if(fixedPosition && isHTML) {\n    parentRect.top = Math.max(parentRect.top, 0);\n    parentRect.left = Math.max(parentRect.left, 0);\n  }\n  let offsets = getClientRect({\n    top: childrenRect.top - parentRect.top - borderTopWidth,\n    left: childrenRect.left - parentRect.left - borderLeftWidth,\n    width: childrenRect.width,\n    height: childrenRect.height,\n  });\n  offsets.marginTop = 0;\n  offsets.marginLeft = 0;\n\n  // Subtract margins of documentElement in case it's being used as parent\n  // we do this only on HTML because it's the only element that behaves\n  // differently when margins are applied to it. The margins are included in\n  // the box of the documentElement, in the other cases not.\n  if (!isIE10 && isHTML) {\n    const marginTop = parseFloat(styles.marginTop);\n    const marginLeft = parseFloat(styles.marginLeft);\n\n    offsets.top -= borderTopWidth - marginTop;\n    offsets.bottom -= borderTopWidth - marginTop;\n    offsets.left -= borderLeftWidth - marginLeft;\n    offsets.right -= borderLeftWidth - marginLeft;\n\n    // Attach marginTop and marginLeft because in some circumstances we may need them\n    offsets.marginTop = marginTop;\n    offsets.marginLeft = marginLeft;\n  }\n\n  if (\n    isIE10 && !fixedPosition\n      ? parent.contains(scrollParent)\n      : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n  ) {\n    offsets = includeScroll(offsets, parent);\n  }\n\n  return offsets;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element, excludeScroll = false) {\n  const html = element.ownerDocument.documentElement;\n  const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n  const width = Math.max(html.clientWidth, window.innerWidth || 0);\n  const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n  const scrollTop = !excludeScroll ? getScroll(html) : 0;\n  const scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n  const offset = {\n    top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n    left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n    width,\n    height,\n  };\n\n  return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n  const nodeName = element.nodeName;\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\n    return false;\n  }\n  if (getStyleComputedProperty(element, 'position') === 'fixed') {\n    return true;\n  }\n  const parentNode = getParentNode(element);\n  if (!parentNode) {\n    return false;\n  }\n  return isFixed(parentNode);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nexport default function getFixedPositionOffsetParent(element) {\n  // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n   if (!element || !element.parentElement || isIE()) {\n    return document.documentElement;\n  }\n  let el = element.parentElement;\n  while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n    el = el.parentElement;\n  }\n  return el || document.documentElement;\n\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport getReferenceNode from './getReferenceNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n  popper,\n  reference,\n  padding,\n  boundariesElement,\n  fixedPosition = false\n) {\n  // NOTE: 1 DOM access here\n\n  let boundaries = { top: 0, left: 0 };\n  const offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n  // Handle viewport case\n  if (boundariesElement === 'viewport' ) {\n    boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n  }\n\n  else {\n    // Handle other cases based on DOM element used as boundaries\n    let boundariesNode;\n    if (boundariesElement === 'scrollParent') {\n      boundariesNode = getScrollParent(getParentNode(reference));\n      if (boundariesNode.nodeName === 'BODY') {\n        boundariesNode = popper.ownerDocument.documentElement;\n      }\n    } else if (boundariesElement === 'window') {\n      boundariesNode = popper.ownerDocument.documentElement;\n    } else {\n      boundariesNode = boundariesElement;\n    }\n\n    const offsets = getOffsetRectRelativeToArbitraryNode(\n      boundariesNode,\n      offsetParent,\n      fixedPosition\n    );\n\n    // In case of HTML, we need a different computation\n    if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n      const { height, width } = getWindowSizes(popper.ownerDocument);\n      boundaries.top += offsets.top - offsets.marginTop;\n      boundaries.bottom = height + offsets.top;\n      boundaries.left += offsets.left - offsets.marginLeft;\n      boundaries.right = width + offsets.left;\n    } else {\n      // for all the other DOM elements, this one is good\n      boundaries = offsets;\n    }\n  }\n\n  // Add paddings\n  padding = padding || 0;\n  const isPaddingNumber = typeof padding === 'number';\n  boundaries.left += isPaddingNumber ? padding : padding.left || 0; \n  boundaries.top += isPaddingNumber ? padding : padding.top || 0; \n  boundaries.right -= isPaddingNumber ? padding : padding.right || 0; \n  boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0; \n\n  return boundaries;\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n  return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n  placement,\n  refRect,\n  popper,\n  reference,\n  boundariesElement,\n  padding = 0\n) {\n  if (placement.indexOf('auto') === -1) {\n    return placement;\n  }\n\n  const boundaries = getBoundaries(\n    popper,\n    reference,\n    padding,\n    boundariesElement\n  );\n\n  const rects = {\n    top: {\n      width: boundaries.width,\n      height: refRect.top - boundaries.top,\n    },\n    right: {\n      width: boundaries.right - refRect.right,\n      height: boundaries.height,\n    },\n    bottom: {\n      width: boundaries.width,\n      height: boundaries.bottom - refRect.bottom,\n    },\n    left: {\n      width: refRect.left - boundaries.left,\n      height: boundaries.height,\n    },\n  };\n\n  const sortedAreas = Object.keys(rects)\n    .map(key => ({\n      key,\n      ...rects[key],\n      area: getArea(rects[key]),\n    }))\n    .sort((a, b) => b.area - a.area);\n\n  const filteredAreas = sortedAreas.filter(\n    ({ width, height }) =>\n      width >= popper.clientWidth && height >= popper.clientHeight\n  );\n\n  const computedPlacement = filteredAreas.length > 0\n    ? filteredAreas[0].key\n    : sortedAreas[0].key;\n\n  const variation = placement.split('-')[1];\n\n  return computedPlacement + (variation ? `-${variation}` : '');\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\nimport getReferenceNode from './getReferenceNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference, fixedPosition = null) {\n  const commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n  return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n  const window = element.ownerDocument.defaultView;\n  const styles = window.getComputedStyle(element);\n  const x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n  const y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n  const result = {\n    width: element.offsetWidth + y,\n    height: element.offsetHeight + x,\n  };\n  return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n  const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n  return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n  placement = placement.split('-')[0];\n\n  // Get popper node sizes\n  const popperRect = getOuterSizes(popper);\n\n  // Add position, width and height to our offsets object\n  const popperOffsets = {\n    width: popperRect.width,\n    height: popperRect.height,\n  };\n\n  // depending by the popper placement we have to compute its offsets slightly differently\n  const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n  const mainSide = isHoriz ? 'top' : 'left';\n  const secondarySide = isHoriz ? 'left' : 'top';\n  const measurement = isHoriz ? 'height' : 'width';\n  const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n  popperOffsets[mainSide] =\n    referenceOffsets[mainSide] +\n    referenceOffsets[measurement] / 2 -\n    popperRect[measurement] / 2;\n  if (placement === secondarySide) {\n    popperOffsets[secondarySide] =\n      referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n  } else {\n    popperOffsets[secondarySide] =\n      referenceOffsets[getOppositePlacement(secondarySide)];\n  }\n\n  return popperOffsets;\n}\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n  // use native find if supported\n  if (Array.prototype.find) {\n    return arr.find(check);\n  }\n\n  // use `filter` to obtain the same behavior of `find`\n  return arr.filter(check)[0];\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n  const modifiersToRun = ends === undefined\n    ? modifiers\n    : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n  modifiersToRun.forEach(modifier => {\n    if (modifier['function']) { // eslint-disable-line dot-notation\n      console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n    }\n    const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n    if (modifier.enabled && isFunction(fn)) {\n      // Add properties to offsets to make them a complete clientRect object\n      // we do this before each modifier to make sure the previous one doesn't\n      // mess with these values\n      data.offsets.popper = getClientRect(data.offsets.popper);\n      data.offsets.reference = getClientRect(data.offsets.reference);\n\n      data = fn(data, modifier);\n    }\n  });\n\n  return data;\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n  // use native findIndex if supported\n  if (Array.prototype.findIndex) {\n    return arr.findIndex(cur => cur[prop] === value);\n  }\n\n  // use `find` + `indexOf` if `findIndex` isn't supported\n  const match = find(arr, obj => obj[prop] === value);\n  return arr.indexOf(match);\n}\n","import computeAutoPlacement from '../utils/computeAutoPlacement';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nexport default function update() {\n  // if popper is destroyed, don't perform any further update\n  if (this.state.isDestroyed) {\n    return;\n  }\n\n  let data = {\n    instance: this,\n    styles: {},\n    arrowStyles: {},\n    attributes: {},\n    flipped: false,\n    offsets: {},\n  };\n\n  // compute reference element offsets\n  data.offsets.reference = getReferenceOffsets(\n    this.state,\n    this.popper,\n    this.reference,\n    this.options.positionFixed\n  );\n\n  // compute auto placement, store placement inside the data object,\n  // modifiers will be able to edit `placement` if needed\n  // and refer to originalPlacement to know the original value\n  data.placement = computeAutoPlacement(\n    this.options.placement,\n    data.offsets.reference,\n    this.popper,\n    this.reference,\n    this.options.modifiers.flip.boundariesElement,\n    this.options.modifiers.flip.padding\n  );\n\n  // store the computed placement inside `originalPlacement`\n  data.originalPlacement = data.placement;\n\n  data.positionFixed = this.options.positionFixed;\n\n  // compute the popper offsets\n  data.offsets.popper = getPopperOffsets(\n    this.popper,\n    data.offsets.reference,\n    data.placement\n  );\n\n  data.offsets.popper.position = this.options.positionFixed\n    ? 'fixed'\n    : 'absolute';\n\n  // run the modifiers\n  data = runModifiers(this.modifiers, data);\n\n  // the first `update` will call `onCreate` callback\n  // the other ones will call `onUpdate` callback\n  if (!this.state.isCreated) {\n    this.state.isCreated = true;\n    this.options.onCreate(data);\n  } else {\n    this.options.onUpdate(data);\n  }\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n  return modifiers.some(\n    ({ name, enabled }) => enabled && name === modifierName\n  );\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n  const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n  const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n  for (let i = 0; i < prefixes.length; i++) {\n    const prefix = prefixes[i];\n    const toCheck = prefix ? `${prefix}${upperProp}` : property;\n    if (typeof document.body.style[toCheck] !== 'undefined') {\n      return toCheck;\n    }\n  }\n  return null;\n}\n","import isModifierEnabled from '../utils/isModifierEnabled';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nexport default function destroy() {\n  this.state.isDestroyed = true;\n\n  // touch DOM only if `applyStyle` modifier is enabled\n  if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n    this.popper.removeAttribute('x-placement');\n    this.popper.style.position = '';\n    this.popper.style.top = '';\n    this.popper.style.left = '';\n    this.popper.style.right = '';\n    this.popper.style.bottom = '';\n    this.popper.style.willChange = '';\n    this.popper.style[getSupportedPropertyName('transform')] = '';\n  }\n\n  this.disableEventListeners();\n\n  // remove the popper if user explicitly asked for the deletion on destroy\n  // do not use `remove` because IE11 doesn't support it\n  if (this.options.removeOnDestroy) {\n    this.popper.parentNode.removeChild(this.popper);\n  }\n  return this;\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n  const ownerDocument = element.ownerDocument;\n  return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n  const isBody = scrollParent.nodeName === 'BODY';\n  const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n  target.addEventListener(event, callback, { passive: true });\n\n  if (!isBody) {\n    attachToScrollParents(\n      getScrollParent(target.parentNode),\n      event,\n      callback,\n      scrollParents\n    );\n  }\n  scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n  reference,\n  options,\n  state,\n  updateBound\n) {\n  // Resize event listener on window\n  state.updateBound = updateBound;\n  getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n  // Scroll event listener on scroll parents\n  const scrollElement = getScrollParent(reference);\n  attachToScrollParents(\n    scrollElement,\n    'scroll',\n    state.updateBound,\n    state.scrollParents\n  );\n  state.scrollElement = scrollElement;\n  state.eventsEnabled = true;\n\n  return state;\n}\n","import setupEventListeners from '../utils/setupEventListeners';\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nexport default function enableEventListeners() {\n  if (!this.state.eventsEnabled) {\n    this.state = setupEventListeners(\n      this.reference,\n      this.options,\n      this.state,\n      this.scheduleUpdate\n    );\n  }\n}\n","import removeEventListeners from '../utils/removeEventListeners';\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nexport default function disableEventListeners() {\n  if (this.state.eventsEnabled) {\n    cancelAnimationFrame(this.scheduleUpdate);\n    this.state = removeEventListeners(this.reference, this.state);\n  }\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n  // Remove resize event listener on window\n  getWindow(reference).removeEventListener('resize', state.updateBound);\n\n  // Remove scroll event listener on scroll parents\n  state.scrollParents.forEach(target => {\n    target.removeEventListener('scroll', state.updateBound);\n  });\n\n  // Reset state\n  state.updateBound = null;\n  state.scrollParents = [];\n  state.scrollElement = null;\n  state.eventsEnabled = false;\n  return state;\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n  return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n  Object.keys(styles).forEach(prop => {\n    let unit = '';\n    // add unit if the value is numeric and is one of the following\n    if (\n      ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n        -1 &&\n      isNumeric(styles[prop])\n    ) {\n      unit = 'px';\n    }\n    element.style[prop] = styles[prop] + unit;\n  });\n}\n","import getSupportedPropertyName from '../utils/getSupportedPropertyName';\nimport find from '../utils/find';\nimport getOffsetParent from '../utils/getOffsetParent';\nimport getBoundingClientRect from '../utils/getBoundingClientRect';\nimport getRoundedOffsets from '../utils/getRoundedOffsets';\nimport isBrowser from '../utils/isBrowser';\n\nconst isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeStyle(data, options) {\n  const { x, y } = options;\n  const { popper } = data.offsets;\n\n  // Remove this legacy support in Popper.js v2\n  const legacyGpuAccelerationOption = find(\n    data.instance.modifiers,\n    modifier => modifier.name === 'applyStyle'\n  ).gpuAcceleration;\n  if (legacyGpuAccelerationOption !== undefined) {\n    console.warn(\n      'WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'\n    );\n  }\n  const gpuAcceleration =\n    legacyGpuAccelerationOption !== undefined\n      ? legacyGpuAccelerationOption\n      : options.gpuAcceleration;\n\n  const offsetParent = getOffsetParent(data.instance.popper);\n  const offsetParentRect = getBoundingClientRect(offsetParent);\n\n  // Styles\n  const styles = {\n    position: popper.position,\n  };\n\n  const offsets = getRoundedOffsets(\n    data,\n    window.devicePixelRatio < 2 || !isFirefox\n  );\n\n  const sideA = x === 'bottom' ? 'top' : 'bottom';\n  const sideB = y === 'right' ? 'left' : 'right';\n\n  // if gpuAcceleration is set to `true` and transform is supported,\n  //  we use `translate3d` to apply the position to the popper we\n  // automatically use the supported prefixed version if needed\n  const prefixedProperty = getSupportedPropertyName('transform');\n\n  // now, let's make a step back and look at this code closely (wtf?)\n  // If the content of the popper grows once it's been positioned, it\n  // may happen that the popper gets misplaced because of the new content\n  // overflowing its reference element\n  // To avoid this problem, we provide two options (x and y), which allow\n  // the consumer to define the offset origin.\n  // If we position a popper on top of a reference element, we can set\n  // `x` to `top` to make the popper grow towards its top instead of\n  // its bottom.\n  let left, top;\n  if (sideA === 'bottom') {\n    // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n    // and not the bottom of the html element\n    if (offsetParent.nodeName === 'HTML') {\n      top = -offsetParent.clientHeight + offsets.bottom;\n    } else {\n      top = -offsetParentRect.height + offsets.bottom;\n    }\n  } else {\n    top = offsets.top;\n  }\n  if (sideB === 'right') {\n    if (offsetParent.nodeName === 'HTML') {\n      left = -offsetParent.clientWidth + offsets.right;\n    } else {\n      left = -offsetParentRect.width + offsets.right;\n    }\n  } else {\n    left = offsets.left;\n  }\n  if (gpuAcceleration && prefixedProperty) {\n    styles[prefixedProperty] = `translate3d(${left}px, ${top}px, 0)`;\n    styles[sideA] = 0;\n    styles[sideB] = 0;\n    styles.willChange = 'transform';\n  } else {\n    // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n    const invertTop = sideA === 'bottom' ? -1 : 1;\n    const invertLeft = sideB === 'right' ? -1 : 1;\n    styles[sideA] = top * invertTop;\n    styles[sideB] = left * invertLeft;\n    styles.willChange = `${sideA}, ${sideB}`;\n  }\n\n  // Attributes\n  const attributes = {\n    'x-placement': data.placement,\n  };\n\n  // Update `data` attributes, styles and arrowStyles\n  data.attributes = { ...attributes, ...data.attributes };\n  data.styles = { ...styles, ...data.styles };\n  data.arrowStyles = { ...data.offsets.arrow, ...data.arrowStyles };\n\n  return data;\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n  modifiers,\n  requestingName,\n  requestedName\n) {\n  const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n  const isRequired =\n    !!requesting &&\n    modifiers.some(modifier => {\n      return (\n        modifier.name === requestedName &&\n        modifier.enabled &&\n        modifier.order < requesting.order\n      );\n    });\n\n  if (!isRequired) {\n    const requesting = `\\`${requestingName}\\``;\n    const requested = `\\`${requestedName}\\``;\n    console.warn(\n      `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n    );\n  }\n  return isRequired;\n}\n","/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nexport default [\n  'auto-start',\n  'auto',\n  'auto-end',\n  'top-start',\n  'top',\n  'top-end',\n  'right-start',\n  'right',\n  'right-end',\n  'bottom-end',\n  'bottom',\n  'bottom-start',\n  'left-end',\n  'left',\n  'left-start',\n];\n","import placements from '../methods/placements';\n\n// Get rid of `auto` `auto-start` and `auto-end`\nconst validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nexport default function clockwise(placement, counter = false) {\n  const index = validPlacements.indexOf(placement);\n  const arr = validPlacements\n    .slice(index + 1)\n    .concat(validPlacements.slice(0, index));\n  return counter ? arr.reverse() : arr;\n}\n","import getOppositePlacement from '../utils/getOppositePlacement';\nimport getOppositeVariation from '../utils/getOppositeVariation';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\nimport getBoundaries from '../utils/getBoundaries';\nimport isModifierEnabled from '../utils/isModifierEnabled';\nimport clockwise from '../utils/clockwise';\n\nconst BEHAVIORS = {\n  FLIP: 'flip',\n  CLOCKWISE: 'clockwise',\n  COUNTERCLOCKWISE: 'counterclockwise',\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function flip(data, options) {\n  // if `inner` modifier is enabled, we can't use the `flip` modifier\n  if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n    return data;\n  }\n\n  if (data.flipped && data.placement === data.originalPlacement) {\n    // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n    return data;\n  }\n\n  const boundaries = getBoundaries(\n    data.instance.popper,\n    data.instance.reference,\n    options.padding,\n    options.boundariesElement,\n    data.positionFixed\n  );\n\n  let placement = data.placement.split('-')[0];\n  let placementOpposite = getOppositePlacement(placement);\n  let variation = data.placement.split('-')[1] || '';\n\n  let flipOrder = [];\n\n  switch (options.behavior) {\n    case BEHAVIORS.FLIP:\n      flipOrder = [placement, placementOpposite];\n      break;\n    case BEHAVIORS.CLOCKWISE:\n      flipOrder = clockwise(placement);\n      break;\n    case BEHAVIORS.COUNTERCLOCKWISE:\n      flipOrder = clockwise(placement, true);\n      break;\n    default:\n      flipOrder = options.behavior;\n  }\n\n  flipOrder.forEach((step, index) => {\n    if (placement !== step || flipOrder.length === index + 1) {\n      return data;\n    }\n\n    placement = data.placement.split('-')[0];\n    placementOpposite = getOppositePlacement(placement);\n\n    const popperOffsets = data.offsets.popper;\n    const refOffsets = data.offsets.reference;\n\n    // using floor because the reference offsets may contain decimals we are not going to consider here\n    const floor = Math.floor;\n    const overlapsRef =\n      (placement === 'left' &&\n        floor(popperOffsets.right) > floor(refOffsets.left)) ||\n      (placement === 'right' &&\n        floor(popperOffsets.left) < floor(refOffsets.right)) ||\n      (placement === 'top' &&\n        floor(popperOffsets.bottom) > floor(refOffsets.top)) ||\n      (placement === 'bottom' &&\n        floor(popperOffsets.top) < floor(refOffsets.bottom));\n\n    const overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n    const overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n    const overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n    const overflowsBottom =\n      floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n    const overflowsBoundaries =\n      (placement === 'left' && overflowsLeft) ||\n      (placement === 'right' && overflowsRight) ||\n      (placement === 'top' && overflowsTop) ||\n      (placement === 'bottom' && overflowsBottom);\n\n    // flip the variation if required\n    const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n    // flips variation if reference element overflows boundaries\n    const flippedVariationByRef =\n      !!options.flipVariations &&\n      ((isVertical && variation === 'start' && overflowsLeft) ||\n        (isVertical && variation === 'end' && overflowsRight) ||\n        (!isVertical && variation === 'start' && overflowsTop) ||\n        (!isVertical && variation === 'end' && overflowsBottom));\n\n    // flips variation if popper content overflows boundaries\n    const flippedVariationByContent =\n      !!options.flipVariationsByContent &&\n      ((isVertical && variation === 'start' && overflowsRight) ||\n        (isVertical && variation === 'end' && overflowsLeft) ||\n        (!isVertical && variation === 'start' && overflowsBottom) ||\n        (!isVertical && variation === 'end' && overflowsTop));\n\n    const flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n    if (overlapsRef || overflowsBoundaries || flippedVariation) {\n      // this boolean to detect any flip loop\n      data.flipped = true;\n\n      if (overlapsRef || overflowsBoundaries) {\n        placement = flipOrder[index + 1];\n      }\n\n      if (flippedVariation) {\n        variation = getOppositeVariation(variation);\n      }\n\n      data.placement = placement + (variation ? '-' + variation : '');\n\n      // this object contains `position`, we want to preserve it along with\n      // any additional property we may add in the future\n      data.offsets.popper = {\n        ...data.offsets.popper,\n        ...getPopperOffsets(\n          data.instance.popper,\n          data.offsets.reference,\n          data.placement\n        ),\n      };\n\n      data = runModifiers(data.instance.modifiers, data, 'flip');\n    }\n  });\n  return data;\n}\n","import isNumeric from '../utils/isNumeric';\nimport getClientRect from '../utils/getClientRect';\nimport find from '../utils/find';\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nexport function toValue(str, measurement, popperOffsets, referenceOffsets) {\n  // separate value from unit\n  const split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n  const value = +split[1];\n  const unit = split[2];\n\n  // If it's not a number it's an operator, I guess\n  if (!value) {\n    return str;\n  }\n\n  if (unit.indexOf('%') === 0) {\n    let element;\n    switch (unit) {\n      case '%p':\n        element = popperOffsets;\n        break;\n      case '%':\n      case '%r':\n      default:\n        element = referenceOffsets;\n    }\n\n    const rect = getClientRect(element);\n    return rect[measurement] / 100 * value;\n  } else if (unit === 'vh' || unit === 'vw') {\n    // if is a vh or vw, we calculate the size based on the viewport\n    let size;\n    if (unit === 'vh') {\n      size = Math.max(\n        document.documentElement.clientHeight,\n        window.innerHeight || 0\n      );\n    } else {\n      size = Math.max(\n        document.documentElement.clientWidth,\n        window.innerWidth || 0\n      );\n    }\n    return size / 100 * value;\n  } else {\n    // if is an explicit pixel unit, we get rid of the unit and keep the value\n    // if is an implicit unit, it's px, and we return just the value\n    return value;\n  }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nexport function parseOffset(\n  offset,\n  popperOffsets,\n  referenceOffsets,\n  basePlacement\n) {\n  const offsets = [0, 0];\n\n  // Use height if placement is left or right and index is 0 otherwise use width\n  // in this way the first offset will use an axis and the second one\n  // will use the other one\n  const useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n  // Split the offset string to obtain a list of values and operands\n  // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n  const fragments = offset.split(/(\\+|\\-)/).map(frag => frag.trim());\n\n  // Detect if the offset string contains a pair of values or a single one\n  // they could be separated by comma or space\n  const divider = fragments.indexOf(\n    find(fragments, frag => frag.search(/,|\\s/) !== -1)\n  );\n\n  if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n    console.warn(\n      'Offsets separated by white space(s) are deprecated, use a comma (,) instead.'\n    );\n  }\n\n  // If divider is found, we divide the list of values and operands to divide\n  // them by ofset X and Y.\n  const splitRegex = /\\s*,\\s*|\\s+/;\n  let ops = divider !== -1\n    ? [\n        fragments\n          .slice(0, divider)\n          .concat([fragments[divider].split(splitRegex)[0]]),\n        [fragments[divider].split(splitRegex)[1]].concat(\n          fragments.slice(divider + 1)\n        ),\n      ]\n    : [fragments];\n\n  // Convert the values with units to absolute pixels to allow our computations\n  ops = ops.map((op, index) => {\n    // Most of the units rely on the orientation of the popper\n    const measurement = (index === 1 ? !useHeight : useHeight)\n      ? 'height'\n      : 'width';\n    let mergeWithPrevious = false;\n    return (\n      op\n        // This aggregates any `+` or `-` sign that aren't considered operators\n        // e.g.: 10 + +5 => [10, +, +5]\n        .reduce((a, b) => {\n          if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n            a[a.length - 1] = b;\n            mergeWithPrevious = true;\n            return a;\n          } else if (mergeWithPrevious) {\n            a[a.length - 1] += b;\n            mergeWithPrevious = false;\n            return a;\n          } else {\n            return a.concat(b);\n          }\n        }, [])\n        // Here we convert the string values into number values (in px)\n        .map(str => toValue(str, measurement, popperOffsets, referenceOffsets))\n    );\n  });\n\n  // Loop trough the offsets arrays and execute the operations\n  ops.forEach((op, index) => {\n    op.forEach((frag, index2) => {\n      if (isNumeric(frag)) {\n        offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n      }\n    });\n  });\n  return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nexport default function offset(data, { offset }) {\n  const { placement, offsets: { popper, reference } } = data;\n  const basePlacement = placement.split('-')[0];\n\n  let offsets;\n  if (isNumeric(+offset)) {\n    offsets = [+offset, 0];\n  } else {\n    offsets = parseOffset(offset, popper, reference, basePlacement);\n  }\n\n  if (basePlacement === 'left') {\n    popper.top += offsets[0];\n    popper.left -= offsets[1];\n  } else if (basePlacement === 'right') {\n    popper.top += offsets[0];\n    popper.left += offsets[1];\n  } else if (basePlacement === 'top') {\n    popper.left += offsets[0];\n    popper.top -= offsets[1];\n  } else if (basePlacement === 'bottom') {\n    popper.left += offsets[0];\n    popper.top += offsets[1];\n  }\n\n  data.popper = popper;\n  return data;\n}\n","import applyStyle, { applyStyleOnLoad } from './applyStyle';\nimport computeStyle from './computeStyle';\nimport arrow from './arrow';\nimport flip from './flip';\nimport keepTogether from './keepTogether';\nimport offset from './offset';\nimport preventOverflow from './preventOverflow';\nimport shift from './shift';\nimport hide from './hide';\nimport inner from './inner';\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nexport default {\n  /**\n   * Modifier used to shift the popper on the start or end of its reference\n   * element.<br />\n   * It will read the variation of the `placement` property.<br />\n   * It can be one either `-end` or `-start`.\n   * @memberof modifiers\n   * @inner\n   */\n  shift: {\n    /** @prop {number} order=100 - Index used to define the order of execution */\n    order: 100,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: shift,\n  },\n\n  /**\n   * The `offset` modifier can shift your popper on both its axis.\n   *\n   * It accepts the following units:\n   * - `px` or unit-less, interpreted as pixels\n   * - `%` or `%r`, percentage relative to the length of the reference element\n   * - `%p`, percentage relative to the length of the popper element\n   * - `vw`, CSS viewport width unit\n   * - `vh`, CSS viewport height unit\n   *\n   * For length is intended the main axis relative to the placement of the popper.<br />\n   * This means that if the placement is `top` or `bottom`, the length will be the\n   * `width`. In case of `left` or `right`, it will be the `height`.\n   *\n   * You can provide a single value (as `Number` or `String`), or a pair of values\n   * as `String` divided by a comma or one (or more) white spaces.<br />\n   * The latter is a deprecated method because it leads to confusion and will be\n   * removed in v2.<br />\n   * Additionally, it accepts additions and subtractions between different units.\n   * Note that multiplications and divisions aren't supported.\n   *\n   * Valid examples are:\n   * ```\n   * 10\n   * '10%'\n   * '10, 10'\n   * '10%, 10'\n   * '10 + 10%'\n   * '10 - 5vh + 3%'\n   * '-10px + 5vh, 5px - 6%'\n   * ```\n   * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n   * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n   * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  offset: {\n    /** @prop {number} order=200 - Index used to define the order of execution */\n    order: 200,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: offset,\n    /** @prop {Number|String} offset=0\n     * The offset value as described in the modifier description\n     */\n    offset: 0,\n  },\n\n  /**\n   * Modifier used to prevent the popper from being positioned outside the boundary.\n   *\n   * A scenario exists where the reference itself is not within the boundaries.<br />\n   * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n   * In this case we need to decide whether the popper should either:\n   *\n   * - detach from the reference and remain \"trapped\" in the boundaries, or\n   * - if it should ignore the boundary and \"escape with its reference\"\n   *\n   * When `escapeWithReference` is set to`true` and reference is completely\n   * outside its boundaries, the popper will overflow (or completely leave)\n   * the boundaries in order to remain attached to the edge of the reference.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  preventOverflow: {\n    /** @prop {number} order=300 - Index used to define the order of execution */\n    order: 300,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: preventOverflow,\n    /**\n     * @prop {Array} [priority=['left','right','top','bottom']]\n     * Popper will try to prevent overflow following these priorities by default,\n     * then, it could overflow on the left and on top of the `boundariesElement`\n     */\n    priority: ['left', 'right', 'top', 'bottom'],\n    /**\n     * @prop {number} padding=5\n     * Amount of pixel used to define a minimum distance between the boundaries\n     * and the popper. This makes sure the popper always has a little padding\n     * between the edges of its container\n     */\n    padding: 5,\n    /**\n     * @prop {String|HTMLElement} boundariesElement='scrollParent'\n     * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n     * `viewport` or any DOM element.\n     */\n    boundariesElement: 'scrollParent',\n  },\n\n  /**\n   * Modifier used to make sure the reference and its popper stay near each other\n   * without leaving any gap between the two. Especially useful when the arrow is\n   * enabled and you want to ensure that it points to its reference element.\n   * It cares only about the first axis. You can still have poppers with margin\n   * between the popper and its reference element.\n   * @memberof modifiers\n   * @inner\n   */\n  keepTogether: {\n    /** @prop {number} order=400 - Index used to define the order of execution */\n    order: 400,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: keepTogether,\n  },\n\n  /**\n   * This modifier is used to move the `arrowElement` of the popper to make\n   * sure it is positioned between the reference element and its popper element.\n   * It will read the outer size of the `arrowElement` node to detect how many\n   * pixels of conjunction are needed.\n   *\n   * It has no effect if no `arrowElement` is provided.\n   * @memberof modifiers\n   * @inner\n   */\n  arrow: {\n    /** @prop {number} order=500 - Index used to define the order of execution */\n    order: 500,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: arrow,\n    /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n    element: '[x-arrow]',\n  },\n\n  /**\n   * Modifier used to flip the popper's placement when it starts to overlap its\n   * reference element.\n   *\n   * Requires the `preventOverflow` modifier before it in order to work.\n   *\n   * **NOTE:** this modifier will interrupt the current update cycle and will\n   * restart it if it detects the need to flip the placement.\n   * @memberof modifiers\n   * @inner\n   */\n  flip: {\n    /** @prop {number} order=600 - Index used to define the order of execution */\n    order: 600,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: flip,\n    /**\n     * @prop {String|Array} behavior='flip'\n     * The behavior used to change the popper's placement. It can be one of\n     * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n     * placements (with optional variations)\n     */\n    behavior: 'flip',\n    /**\n     * @prop {number} padding=5\n     * The popper will flip if it hits the edges of the `boundariesElement`\n     */\n    padding: 5,\n    /**\n     * @prop {String|HTMLElement} boundariesElement='viewport'\n     * The element which will define the boundaries of the popper position.\n     * The popper will never be placed outside of the defined boundaries\n     * (except if `keepTogether` is enabled)\n     */\n    boundariesElement: 'viewport',\n    /**\n     * @prop {Boolean} flipVariations=false\n     * The popper will switch placement variation between `-start` and `-end` when\n     * the reference element overlaps its boundaries.\n     *\n     * The original placement should have a set variation.\n     */\n    flipVariations: false,\n    /**\n     * @prop {Boolean} flipVariationsByContent=false\n     * The popper will switch placement variation between `-start` and `-end` when\n     * the popper element overlaps its reference boundaries.\n     *\n     * The original placement should have a set variation.\n     */\n    flipVariationsByContent: false,\n  },\n\n  /**\n   * Modifier used to make the popper flow toward the inner of the reference element.\n   * By default, when this modifier is disabled, the popper will be placed outside\n   * the reference element.\n   * @memberof modifiers\n   * @inner\n   */\n  inner: {\n    /** @prop {number} order=700 - Index used to define the order of execution */\n    order: 700,\n    /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n    enabled: false,\n    /** @prop {ModifierFn} */\n    fn: inner,\n  },\n\n  /**\n   * Modifier used to hide the popper when its reference element is outside of the\n   * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n   * be used to hide with a CSS selector the popper when its reference is\n   * out of boundaries.\n   *\n   * Requires the `preventOverflow` modifier before it in order to work.\n   * @memberof modifiers\n   * @inner\n   */\n  hide: {\n    /** @prop {number} order=800 - Index used to define the order of execution */\n    order: 800,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: hide,\n  },\n\n  /**\n   * Computes the style that will be applied to the popper element to gets\n   * properly positioned.\n   *\n   * Note that this modifier will not touch the DOM, it just prepares the styles\n   * so that `applyStyle` modifier can apply it. This separation is useful\n   * in case you need to replace `applyStyle` with a custom implementation.\n   *\n   * This modifier has `850` as `order` value to maintain backward compatibility\n   * with previous versions of Popper.js. Expect the modifiers ordering method\n   * to change in future major versions of the library.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  computeStyle: {\n    /** @prop {number} order=850 - Index used to define the order of execution */\n    order: 850,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: computeStyle,\n    /**\n     * @prop {Boolean} gpuAcceleration=true\n     * If true, it uses the CSS 3D transformation to position the popper.\n     * Otherwise, it will use the `top` and `left` properties\n     */\n    gpuAcceleration: true,\n    /**\n     * @prop {string} [x='bottom']\n     * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n     * Change this if your popper should grow in a direction different from `bottom`\n     */\n    x: 'bottom',\n    /**\n     * @prop {string} [x='left']\n     * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n     * Change this if your popper should grow in a direction different from `right`\n     */\n    y: 'right',\n  },\n\n  /**\n   * Applies the computed styles to the popper element.\n   *\n   * All the DOM manipulations are limited to this modifier. This is useful in case\n   * you want to integrate Popper.js inside a framework or view library and you\n   * want to delegate all the DOM manipulations to it.\n   *\n   * Note that if you disable this modifier, you must make sure the popper element\n   * has its position set to `absolute` before Popper.js can do its work!\n   *\n   * Just disable this modifier and define your own to achieve the desired effect.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  applyStyle: {\n    /** @prop {number} order=900 - Index used to define the order of execution */\n    order: 900,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: applyStyle,\n    /** @prop {Function} */\n    onLoad: applyStyleOnLoad,\n    /**\n     * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n     * @prop {Boolean} gpuAcceleration=true\n     * If true, it uses the CSS 3D transformation to position the popper.\n     * Otherwise, it will use the `top` and `left` properties\n     */\n    gpuAcceleration: undefined,\n  },\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n","import modifiers from '../modifiers/index';\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n *   modifiers: {\n *     preventOverflow: { enabled: false }\n *   }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nexport default {\n  /**\n   * Popper's placement.\n   * @prop {Popper.placements} placement='bottom'\n   */\n  placement: 'bottom',\n\n  /**\n   * Set this to true if you want popper to position it self in 'fixed' mode\n   * @prop {Boolean} positionFixed=false\n   */\n  positionFixed: false,\n\n  /**\n   * Whether events (resize, scroll) are initially enabled.\n   * @prop {Boolean} eventsEnabled=true\n   */\n  eventsEnabled: true,\n\n  /**\n   * Set to true if you want to automatically remove the popper when\n   * you call the `destroy` method.\n   * @prop {Boolean} removeOnDestroy=false\n   */\n  removeOnDestroy: false,\n\n  /**\n   * Callback called when the popper is created.<br />\n   * By default, it is set to no-op.<br />\n   * Access Popper.js instance with `data.instance`.\n   * @prop {onCreate}\n   */\n  onCreate: () => {},\n\n  /**\n   * Callback called when the popper is updated. This callback is not called\n   * on the initialization/creation of the popper, but only on subsequent\n   * updates.<br />\n   * By default, it is set to no-op.<br />\n   * Access Popper.js instance with `data.instance`.\n   * @prop {onUpdate}\n   */\n  onUpdate: () => {},\n\n  /**\n   * List of modifiers used to modify the offsets before they are applied to the popper.\n   * They provide most of the functionalities of Popper.js.\n   * @prop {modifiers}\n   */\n  modifiers,\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function shift(data) {\n  const placement = data.placement;\n  const basePlacement = placement.split('-')[0];\n  const shiftvariation = placement.split('-')[1];\n\n  // if shift shiftvariation is specified, run the modifier\n  if (shiftvariation) {\n    const { reference, popper } = data.offsets;\n    const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n    const side = isVertical ? 'left' : 'top';\n    const measurement = isVertical ? 'width' : 'height';\n\n    const shiftOffsets = {\n      start: { [side]: reference[side] },\n      end: {\n        [side]: reference[side] + reference[measurement] - popper[measurement],\n      },\n    };\n\n    data.offsets.popper = { ...popper, ...shiftOffsets[shiftvariation] };\n  }\n\n  return data;\n}\n","import getOffsetParent from '../utils/getOffsetParent';\nimport getBoundaries from '../utils/getBoundaries';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function preventOverflow(data, options) {\n  let boundariesElement =\n    options.boundariesElement || getOffsetParent(data.instance.popper);\n\n  // If offsetParent is the reference element, we really want to\n  // go one step up and use the next offsetParent as reference to\n  // avoid to make this modifier completely useless and look like broken\n  if (data.instance.reference === boundariesElement) {\n    boundariesElement = getOffsetParent(boundariesElement);\n  }\n\n  // NOTE: DOM access here\n  // resets the popper's position so that the document size can be calculated excluding\n  // the size of the popper element itself\n  const transformProp = getSupportedPropertyName('transform');\n  const popperStyles = data.instance.popper.style; // assignment to help minification\n  const { top, left, [transformProp]: transform } = popperStyles;\n  popperStyles.top = '';\n  popperStyles.left = '';\n  popperStyles[transformProp] = '';\n\n  const boundaries = getBoundaries(\n    data.instance.popper,\n    data.instance.reference,\n    options.padding,\n    boundariesElement,\n    data.positionFixed\n  );\n\n  // NOTE: DOM access here\n  // restores the original style properties after the offsets have been computed\n  popperStyles.top = top;\n  popperStyles.left = left;\n  popperStyles[transformProp] = transform;\n\n  options.boundaries = boundaries;\n\n  const order = options.priority;\n  let popper = data.offsets.popper;\n\n  const check = {\n    primary(placement) {\n      let value = popper[placement];\n      if (\n        popper[placement] < boundaries[placement] &&\n        !options.escapeWithReference\n      ) {\n        value = Math.max(popper[placement], boundaries[placement]);\n      }\n      return { [placement]: value };\n    },\n    secondary(placement) {\n      const mainSide = placement === 'right' ? 'left' : 'top';\n      let value = popper[mainSide];\n      if (\n        popper[placement] > boundaries[placement] &&\n        !options.escapeWithReference\n      ) {\n        value = Math.min(\n          popper[mainSide],\n          boundaries[placement] -\n            (placement === 'right' ? popper.width : popper.height)\n        );\n      }\n      return { [mainSide]: value };\n    },\n  };\n\n  order.forEach(placement => {\n    const side =\n      ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n    popper = { ...popper, ...check[side](placement) };\n  });\n\n  data.offsets.popper = popper;\n\n  return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function keepTogether(data) {\n  const { popper, reference } = data.offsets;\n  const placement = data.placement.split('-')[0];\n  const floor = Math.floor;\n  const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n  const side = isVertical ? 'right' : 'bottom';\n  const opSide = isVertical ? 'left' : 'top';\n  const measurement = isVertical ? 'width' : 'height';\n\n  if (popper[side] < floor(reference[opSide])) {\n    data.offsets.popper[opSide] =\n      floor(reference[opSide]) - popper[measurement];\n  }\n  if (popper[opSide] > floor(reference[side])) {\n    data.offsets.popper[opSide] = floor(reference[side]);\n  }\n\n  return data;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOuterSizes from '../utils/getOuterSizes';\nimport isModifierRequired from '../utils/isModifierRequired';\nimport getStyleComputedProperty from '../utils/getStyleComputedProperty';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function arrow(data, options) {\n  // arrow depends on keepTogether in order to work\n  if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n    return data;\n  }\n\n  let arrowElement = options.element;\n\n  // if arrowElement is a string, suppose it's a CSS selector\n  if (typeof arrowElement === 'string') {\n    arrowElement = data.instance.popper.querySelector(arrowElement);\n\n    // if arrowElement is not found, don't run the modifier\n    if (!arrowElement) {\n      return data;\n    }\n  } else {\n    // if the arrowElement isn't a query selector we must check that the\n    // provided DOM node is child of its popper node\n    if (!data.instance.popper.contains(arrowElement)) {\n      console.warn(\n        'WARNING: `arrow.element` must be child of its popper element!'\n      );\n      return data;\n    }\n  }\n\n  const placement = data.placement.split('-')[0];\n  const { popper, reference } = data.offsets;\n  const isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n  const len = isVertical ? 'height' : 'width';\n  const sideCapitalized = isVertical ? 'Top' : 'Left';\n  const side = sideCapitalized.toLowerCase();\n  const altSide = isVertical ? 'left' : 'top';\n  const opSide = isVertical ? 'bottom' : 'right';\n  const arrowElementSize = getOuterSizes(arrowElement)[len];\n\n  //\n  // extends keepTogether behavior making sure the popper and its\n  // reference have enough pixels in conjunction\n  //\n\n  // top/left side\n  if (reference[opSide] - arrowElementSize < popper[side]) {\n    data.offsets.popper[side] -=\n      popper[side] - (reference[opSide] - arrowElementSize);\n  }\n  // bottom/right side\n  if (reference[side] + arrowElementSize > popper[opSide]) {\n    data.offsets.popper[side] +=\n      reference[side] + arrowElementSize - popper[opSide];\n  }\n  data.offsets.popper = getClientRect(data.offsets.popper);\n\n  // compute center of the popper\n  const center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n  // Compute the sideValue using the updated popper offsets\n  // take popper margin in account because we don't have this info available\n  const css = getStyleComputedProperty(data.instance.popper);\n  const popperMarginSide = parseFloat(css[`margin${sideCapitalized}`]);\n  const popperBorderSide = parseFloat(css[`border${sideCapitalized}Width`]);\n  let sideValue =\n    center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n  // prevent arrowElement from being placed not contiguously to its popper\n  sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n  data.arrowElement = arrowElement;\n  data.offsets.arrow = {\n    [side]: Math.round(sideValue),\n    [altSide]: '', // make sure to unset any eventual altSide value from the DOM node\n  };\n\n  return data;\n}\n","/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nexport default function getOppositeVariation(variation) {\n  if (variation === 'end') {\n    return 'start';\n  } else if (variation === 'start') {\n    return 'end';\n  }\n  return variation;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOppositePlacement from '../utils/getOppositePlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function inner(data) {\n  const placement = data.placement;\n  const basePlacement = placement.split('-')[0];\n  const { popper, reference } = data.offsets;\n  const isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n  const subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n  popper[isHoriz ? 'left' : 'top'] =\n    reference[basePlacement] -\n    (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n  data.placement = getOppositePlacement(placement);\n  data.offsets.popper = getClientRect(popper);\n\n  return data;\n}\n","import isModifierRequired from '../utils/isModifierRequired';\nimport find from '../utils/find';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function hide(data) {\n  if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n    return data;\n  }\n\n  const refRect = data.offsets.reference;\n  const bound = find(\n    data.instance.modifiers,\n    modifier => modifier.name === 'preventOverflow'\n  ).boundaries;\n\n  if (\n    refRect.bottom < bound.top ||\n    refRect.left > bound.right ||\n    refRect.top > bound.bottom ||\n    refRect.right < bound.left\n  ) {\n    // Avoid unnecessary DOM access if visibility hasn't changed\n    if (data.hide === true) {\n      return data;\n    }\n\n    data.hide = true;\n    data.attributes['x-out-of-boundaries'] = '';\n  } else {\n    // Avoid unnecessary DOM access if visibility hasn't changed\n    if (data.hide === false) {\n      return data;\n    }\n\n    data.hide = false;\n    data.attributes['x-out-of-boundaries'] = false;\n  }\n\n  return data;\n}\n","/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nexport default function getRoundedOffsets(data, shouldRound) {\n  const { popper, reference } = data.offsets;\n  const { round, floor } = Math;\n  const noRound = v => v;\n  \n  const referenceWidth = round(reference.width);\n  const popperWidth = round(popper.width);\n  \n  const isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n  const isVariation = data.placement.indexOf('-') !== -1;\n  const sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n  const bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n  const horizontalToInteger = !shouldRound\n    ? noRound\n    : isVertical || isVariation || sameWidthParity\n    ? round\n    : floor;\n  const verticalToInteger = !shouldRound ? noRound : round;\n\n  return {\n    left: horizontalToInteger(\n      bothOddWidth && !isVariation && shouldRound\n        ? popper.left - 1\n        : popper.left\n    ),\n    top: verticalToInteger(popper.top),\n    bottom: verticalToInteger(popper.bottom),\n    right: horizontalToInteger(popper.right),\n  };\n}\n","import setStyles from '../utils/setStyles';\nimport setAttributes from '../utils/setAttributes';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport computeAutoPlacement from '../utils/computeAutoPlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nexport default function applyStyle(data) {\n  // any property present in `data.styles` will be applied to the popper,\n  // in this way we can make the 3rd party modifiers add custom styles to it\n  // Be aware, modifiers could override the properties defined in the previous\n  // lines of this modifier!\n  setStyles(data.instance.popper, data.styles);\n\n  // any property present in `data.attributes` will be applied to the popper,\n  // they will be set as HTML attributes of the element\n  setAttributes(data.instance.popper, data.attributes);\n\n  // if arrowElement is defined and arrowStyles has some properties\n  if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n    setStyles(data.arrowElement, data.arrowStyles);\n  }\n\n  return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nexport function applyStyleOnLoad(\n  reference,\n  popper,\n  options,\n  modifierOptions,\n  state\n) {\n  // compute reference element offsets\n  const referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n  // compute auto placement, store placement inside the data object,\n  // modifiers will be able to edit `placement` if needed\n  // and refer to originalPlacement to know the original value\n  const placement = computeAutoPlacement(\n    options.placement,\n    referenceOffsets,\n    popper,\n    reference,\n    options.modifiers.flip.boundariesElement,\n    options.modifiers.flip.padding\n  );\n\n  popper.setAttribute('x-placement', placement);\n\n  // Apply `position` to popper before anything else because\n  // without the position applied we can't guarantee correct computations\n  setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n  return options;\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n  Object.keys(attributes).forEach(function(prop) {\n    const value = attributes[prop];\n    if (value !== false) {\n      element.setAttribute(prop, attributes[prop]);\n    } else {\n      element.removeAttribute(prop);\n    }\n  });\n}\n","// Utils\nimport debounce from './utils/debounce';\nimport isFunction from './utils/isFunction';\n\n// Methods\nimport update from './methods/update';\nimport destroy from './methods/destroy';\nimport enableEventListeners from './methods/enableEventListeners';\nimport disableEventListeners from './methods/disableEventListeners';\nimport Defaults from './methods/defaults';\nimport placements from './methods/placements';\n\nexport default class Popper {\n  /**\n   * Creates a new Popper.js instance.\n   * @class Popper\n   * @param {Element|referenceObject} reference - The reference element used to position the popper\n   * @param {Element} popper - The HTML / XML element used as the popper\n   * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n   * @return {Object} instance - The generated Popper.js instance\n   */\n  constructor(reference, popper, options = {}) {\n    // make update() debounced, so that it only runs at most once-per-tick\n    this.update = debounce(this.update.bind(this));\n\n    // with {} we create a new object with the options inside it\n    this.options = { ...Popper.Defaults, ...options };\n\n    // init state\n    this.state = {\n      isDestroyed: false,\n      isCreated: false,\n      scrollParents: [],\n    };\n\n    // get reference and popper elements (allow jQuery wrappers)\n    this.reference = reference && reference.jquery ? reference[0] : reference;\n    this.popper = popper && popper.jquery ? popper[0] : popper;\n\n    // Deep merge modifiers options\n    this.options.modifiers = {};\n    Object.keys({\n      ...Popper.Defaults.modifiers,\n      ...options.modifiers,\n    }).forEach(name => {\n      this.options.modifiers[name] = {\n        // If it's a built-in modifier, use it as base\n        ...(Popper.Defaults.modifiers[name] || {}),\n        // If there are custom options, override and merge with default ones\n        ...(options.modifiers ? options.modifiers[name] : {}),\n      };\n    });\n\n    // Refactoring modifiers' list (Object => Array)\n    this.modifiers = Object.keys(this.options.modifiers)\n      .map(name => ({\n        name,\n        ...this.options.modifiers[name],\n      }))\n      // sort the modifiers by order\n      .sort((a, b) => a.order - b.order);\n\n    // modifiers have the ability to execute arbitrary code when Popper.js get inited\n    // such code is executed in the same order of its modifier\n    // they could add new properties to their options configuration\n    // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n    this.modifiers.forEach(modifierOptions => {\n      if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n        modifierOptions.onLoad(\n          this.reference,\n          this.popper,\n          this.options,\n          modifierOptions,\n          this.state\n        );\n      }\n    });\n\n    // fire the first update to position the popper in the right place\n    this.update();\n\n    const eventsEnabled = this.options.eventsEnabled;\n    if (eventsEnabled) {\n      // setup event listeners, they will take care of update the position in specific situations\n      this.enableEventListeners();\n    }\n\n    this.state.eventsEnabled = eventsEnabled;\n  }\n\n  // We can't use class properties because they don't get listed in the\n  // class prototype and break stuff like Sinon stubs\n  update() {\n    return update.call(this);\n  }\n  destroy() {\n    return destroy.call(this);\n  }\n  enableEventListeners() {\n    return enableEventListeners.call(this);\n  }\n  disableEventListeners() {\n    return disableEventListeners.call(this);\n  }\n\n  /**\n   * Schedules an update. It will run on the next UI update available.\n   * @method scheduleUpdate\n   * @memberof Popper\n   */\n  scheduleUpdate = () => requestAnimationFrame(this.update);\n\n  /**\n   * Collection of utilities useful when writing custom modifiers.\n   * Starting from version 1.7, this method is available only if you\n   * include `popper-utils.js` before `popper.js`.\n   *\n   * **DEPRECATION**: This way to access PopperUtils is deprecated\n   * and will be removed in v2! Use the PopperUtils module directly instead.\n   * Due to the high instability of the methods contained in Utils, we can't\n   * guarantee them to follow semver. Use them at your own risk!\n   * @static\n   * @private\n   * @type {Object}\n   * @deprecated since version 1.8\n   * @member Utils\n   * @memberof Popper\n   */\n  static Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\n\n  static placements = placements;\n\n  static Defaults = Defaults;\n}\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n","var baseIsEqual = require('./_baseIsEqual');\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 */\nfunction isEqual(value, other) {\n  return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n    isObjectLike = require('./isObjectLike');\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 */\nfunction 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\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n    equalArrays = require('./_equalArrays'),\n    equalByTag = require('./_equalByTag'),\n    equalObjects = require('./_equalObjects'),\n    getTag = require('./_getTag'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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 */\nfunction 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\nmodule.exports = baseIsEqualDeep;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\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 */\nfunction 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\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\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 */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\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 */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\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 */\nfunction 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\nmodule.exports = listCacheSet;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\nmodule.exports = stackClear;\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 */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\nmodule.exports = stackDelete;\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 */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\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 */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n    Map = require('./_Map'),\n    MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\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 */\nfunction 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\nmodule.exports = stackSet;\n","var isFunction = require('./isFunction'),\n    isMasked = require('./_isMasked'),\n    isObject = require('./isObject'),\n    toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\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 */\nfunction 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\nmodule.exports = baseIsNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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 */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\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 */\nfunction 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\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\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 */\nvar nativeObjectToString = objectProto.toString;\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 */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\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 */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\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 */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var Hash = require('./_Hash'),\n    ListCache = require('./_ListCache'),\n    Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\nmodule.exports = mapCacheClear;\n","var hashClear = require('./_hashClear'),\n    hashDelete = require('./_hashDelete'),\n    hashGet = require('./_hashGet'),\n    hashHas = require('./_hashHas'),\n    hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction 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// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nmodule.exports = hashClear;\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 */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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 */\nfunction 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\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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 */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\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 */\nfunction 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\nmodule.exports = hashSet;\n","var getMapData = require('./_getMapData');\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 */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = mapCacheDelete;\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 */\nfunction 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\nmodule.exports = isKeyable;\n","var getMapData = require('./_getMapData');\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 */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\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 */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\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 */\nfunction 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\nmodule.exports = mapCacheSet;\n","var MapCache = require('./_MapCache'),\n    setCacheAdd = require('./_setCacheAdd'),\n    setCacheHas = require('./_setCacheHas');\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 */\nfunction 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// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\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 */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\nmodule.exports = setCacheAdd;\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 */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\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 */\nfunction 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\nmodule.exports = arraySome;\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 */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var Symbol = require('./_Symbol'),\n    Uint8Array = require('./_Uint8Array'),\n    eq = require('./eq'),\n    equalArrays = require('./_equalArrays'),\n    mapToArray = require('./_mapToArray'),\n    setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\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 */\nfunction 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\nmodule.exports = equalByTag;\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 */\nfunction 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\nmodule.exports = mapToArray;\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 */\nfunction 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\nmodule.exports = setToArray;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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 */\nfunction 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  // Assume cyclic values are equal.\n  var stacked = stack.get(object);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\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\nmodule.exports = equalObjects;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n    getSymbols = require('./_getSymbols'),\n    keys = require('./keys');\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 */\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var arrayPush = require('./_arrayPush'),\n    isArray = require('./isArray');\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 */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\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 */\nfunction 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\nmodule.exports = arrayPush;\n","var arrayFilter = require('./_arrayFilter'),\n    stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\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 */\nvar 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\nmodule.exports = getSymbols;\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 */\nfunction 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\nmodule.exports = arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nmodule.exports = stubArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n    baseKeys = require('./_baseKeys'),\n    isArrayLike = require('./isArrayLike');\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 */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\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 */\nfunction 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\nmodule.exports = baseTimes;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\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 */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n","var baseGetTag = require('./_baseGetTag'),\n    isLength = require('./isLength'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar 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 identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\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 */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\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 */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\nmodule.exports = baseUnary;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar 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\nmodule.exports = nodeUtil;\n","var isPrototype = require('./_isPrototype'),\n    nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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 */\nfunction 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\nmodule.exports = baseKeys;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var DataView = require('./_DataView'),\n    Map = require('./_Map'),\n    Promise = require('./_Promise'),\n    Set = require('./_Set'),\n    WeakMap = require('./_WeakMap'),\n    baseGetTag = require('./_baseGetTag'),\n    toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    setTag = '[object Set]',\n    weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\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 */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((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\nmodule.exports = getTag;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","function getInternetExplorerVersion() {\n\tvar ua = window.navigator.userAgent;\n\n\tvar msie = ua.indexOf('MSIE ');\n\tif (msie > 0) {\n\t\t// IE 10 or older => return version number\n\t\treturn parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\n\t}\n\n\tvar trident = ua.indexOf('Trident/');\n\tif (trident > 0) {\n\t\t// IE 11 => return version number\n\t\tvar rv = ua.indexOf('rv:');\n\t\treturn parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\n\t}\n\n\tvar edge = ua.indexOf('Edge/');\n\tif (edge > 0) {\n\t\t// Edge (IE 12+) => return version number\n\t\treturn parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\n\t}\n\n\t// other browser\n\treturn -1;\n}\n\nvar isIE = void 0;\n\nfunction initCompat() {\n\tif (!initCompat.init) {\n\t\tinitCompat.init = true;\n\t\tisIE = getInternetExplorerVersion() !== -1;\n\t}\n}\n\nvar ResizeObserver = { render: function render() {\n\t\tvar _vm = this;var _h = _vm.$createElement;var _c = _vm._self._c || _h;return _c('div', { staticClass: \"resize-observer\", attrs: { \"tabindex\": \"-1\" } });\n\t}, staticRenderFns: [], _scopeId: 'data-v-b329ee4c',\n\tname: 'resize-observer',\n\n\tmethods: {\n\t\tcompareAndNotify: function compareAndNotify() {\n\t\t\tif (this._w !== this.$el.offsetWidth || this._h !== this.$el.offsetHeight) {\n\t\t\t\tthis._w = this.$el.offsetWidth;\n\t\t\t\tthis._h = this.$el.offsetHeight;\n\t\t\t\tthis.$emit('notify');\n\t\t\t}\n\t\t},\n\t\taddResizeHandlers: function addResizeHandlers() {\n\t\t\tthis._resizeObject.contentDocument.defaultView.addEventListener('resize', this.compareAndNotify);\n\t\t\tthis.compareAndNotify();\n\t\t},\n\t\tremoveResizeHandlers: function removeResizeHandlers() {\n\t\t\tif (this._resizeObject && this._resizeObject.onload) {\n\t\t\t\tif (!isIE && this._resizeObject.contentDocument) {\n\t\t\t\t\tthis._resizeObject.contentDocument.defaultView.removeEventListener('resize', this.compareAndNotify);\n\t\t\t\t}\n\t\t\t\tdelete this._resizeObject.onload;\n\t\t\t}\n\t\t}\n\t},\n\n\tmounted: function mounted() {\n\t\tvar _this = this;\n\n\t\tinitCompat();\n\t\tthis.$nextTick(function () {\n\t\t\t_this._w = _this.$el.offsetWidth;\n\t\t\t_this._h = _this.$el.offsetHeight;\n\t\t});\n\t\tvar object = document.createElement('object');\n\t\tthis._resizeObject = object;\n\t\tobject.setAttribute('aria-hidden', 'true');\n\t\tobject.setAttribute('tabindex', -1);\n\t\tobject.onload = this.addResizeHandlers;\n\t\tobject.type = 'text/html';\n\t\tif (isIE) {\n\t\t\tthis.$el.appendChild(object);\n\t\t}\n\t\tobject.data = 'about:blank';\n\t\tif (!isIE) {\n\t\t\tthis.$el.appendChild(object);\n\t\t}\n\t},\n\tbeforeDestroy: function beforeDestroy() {\n\t\tthis.removeResizeHandlers();\n\t}\n};\n\n// Install the components\nfunction install(Vue) {\n\tVue.component('resize-observer', ResizeObserver);\n\tVue.component('ResizeObserver', ResizeObserver);\n}\n\n// Plugin\nvar plugin = {\n\t// eslint-disable-next-line no-undef\n\tversion: \"0.4.5\",\n\tinstall: install\n};\n\n// Auto-install\nvar GlobalVue = null;\nif (typeof window !== 'undefined') {\n\tGlobalVue = window.Vue;\n} else if (typeof global !== 'undefined') {\n\tGlobalVue = global.Vue;\n}\nif (GlobalVue) {\n\tGlobalVue.use(plugin);\n}\n\nexport { install, ResizeObserver };\nexport default plugin;\n","var baseMerge = require('./_baseMerge'),\n    createAssigner = require('./_createAssigner');\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 */\nvar merge = createAssigner(function(object, source, srcIndex) {\n  baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n","var Stack = require('./_Stack'),\n    assignMergeValue = require('./_assignMergeValue'),\n    baseFor = require('./_baseFor'),\n    baseMergeDeep = require('./_baseMergeDeep'),\n    isObject = require('./isObject'),\n    keysIn = require('./keysIn'),\n    safeGet = require('./_safeGet');\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 */\nfunction 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\nmodule.exports = baseMerge;\n","var createBaseFor = require('./_createBaseFor');\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 */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\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 */\nfunction 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\nmodule.exports = createBaseFor;\n","var assignMergeValue = require('./_assignMergeValue'),\n    cloneBuffer = require('./_cloneBuffer'),\n    cloneTypedArray = require('./_cloneTypedArray'),\n    copyArray = require('./_copyArray'),\n    initCloneObject = require('./_initCloneObject'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isArrayLikeObject = require('./isArrayLikeObject'),\n    isBuffer = require('./isBuffer'),\n    isFunction = require('./isFunction'),\n    isObject = require('./isObject'),\n    isPlainObject = require('./isPlainObject'),\n    isTypedArray = require('./isTypedArray'),\n    safeGet = require('./_safeGet'),\n    toPlainObject = require('./toPlainObject');\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 */\nfunction 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\nmodule.exports = baseMergeDeep;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\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 */\nfunction 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\nmodule.exports = cloneBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\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 */\nfunction cloneTypedArray(typedArray, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","var Uint8Array = require('./_Uint8Array');\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 */\nfunction cloneArrayBuffer(arrayBuffer) {\n  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n  new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n  return result;\n}\n\nmodule.exports = cloneArrayBuffer;\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 */\nfunction 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\nmodule.exports = copyArray;\n","var baseCreate = require('./_baseCreate'),\n    getPrototype = require('./_getPrototype'),\n    isPrototype = require('./_isPrototype');\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 */\nfunction initCloneObject(object) {\n  return (typeof object.constructor == 'function' && !isPrototype(object))\n    ? baseCreate(getPrototype(object))\n    : {};\n}\n\nmodule.exports = initCloneObject;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\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 */\nvar 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\nmodule.exports = baseCreate;\n","var isArrayLike = require('./isArrayLike'),\n    isObjectLike = require('./isObjectLike');\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 */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var baseGetTag = require('./_baseGetTag'),\n    getPrototype = require('./_getPrototype'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\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 */\nfunction 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\nmodule.exports = isPlainObject;\n","var copyObject = require('./_copyObject'),\n    keysIn = require('./keysIn');\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 */\nfunction toPlainObject(value) {\n  return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var assignValue = require('./_assignValue'),\n    baseAssignValue = require('./_baseAssignValue');\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 */\nfunction 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\nmodule.exports = copyObject;\n","var baseAssignValue = require('./_baseAssignValue'),\n    eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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 */\nfunction 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\nmodule.exports = assignValue;\n","var isObject = require('./isObject'),\n    isPrototype = require('./_isPrototype'),\n    nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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 */\nfunction 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\nmodule.exports = baseKeysIn;\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 */\nfunction 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\nmodule.exports = nativeKeysIn;\n","var baseRest = require('./_baseRest'),\n    isIterateeCall = require('./_isIterateeCall');\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 */\nfunction 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\nmodule.exports = createAssigner;\n","var identity = require('./identity'),\n    overRest = require('./_overRest'),\n    setToString = require('./_setToString');\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 */\nfunction baseRest(func, start) {\n  return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\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 */\nfunction 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\nmodule.exports = overRest;\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 */\nfunction 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\nmodule.exports = apply;\n","var baseSetToString = require('./_baseSetToString'),\n    shortOut = require('./_shortOut');\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 */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","var constant = require('./constant'),\n    defineProperty = require('./_defineProperty'),\n    identity = require('./identity');\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 */\nvar 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\nmodule.exports = baseSetToString;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\n\nmodule.exports = constant;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n    HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\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 */\nfunction 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\nmodule.exports = shortOut;\n","var eq = require('./eq'),\n    isArrayLike = require('./isArrayLike'),\n    isIndex = require('./_isIndex'),\n    isObject = require('./isObject');\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 */\nfunction 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\nmodule.exports = isIterateeCall;\n"],"sourceRoot":""}