-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcomponent---src-templates-note-js-88cd17624ff5a094c9a9.js.map
1 lines (1 loc) · 870 KB
/
component---src-templates-note-js-88cd17624ff5a094c9a9.js.map
1
{"version":3,"sources":["webpack:///../node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack:///../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack:///../node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack:///../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","webpack:///../node_modules/react-fast-compare/index.js","webpack:///../node_modules/react-stacked-pages-hook/lib/Link.js","webpack:///../node_modules/process/browser.js","webpack:///../node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack:///../node_modules/core-js/internals/a-possible-prototype.js","webpack:///../node_modules/gatsby-plugin-mdx/mdx-renderer.js","webpack:///../node_modules/react-stacked-pages-hook/lib/index.js","webpack:///../node_modules/react-is/cjs/react-is.production.min.js","webpack:///../node_modules/core-js/modules/es.typed-array.sort.js","webpack:///../node_modules/shallowequal/index.js","webpack:///../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack:///../node_modules/react-helmet/es/Helmet.js","webpack:///../node_modules/core-js/internals/array-buffer-native.js","webpack:///../node_modules/querystring-es3/decode.js","webpack:///../node_modules/react-stacked-pages-hook/lib/hooks.js","webpack:///../node_modules/@babel/runtime/helpers/iterableToArray.js","webpack:///../node_modules/webpack/buildin/module.js","webpack:///../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack:///../node_modules/querystring-es3/encode.js","webpack:///../node_modules/moment/moment.js","webpack:///../node_modules/gatsby-plugin-mdx/context.js","webpack:///../node_modules/react-stacked-pages-hook/lib/contexts.js","webpack:///../node_modules/querystring-es3/index.js","webpack:///../node_modules/styled-components/dist/styled-components.browser.esm.js","webpack:///../node_modules/lodash.isequal/index.js","webpack:///../node_modules/react-side-effect/lib/index.js","webpack:///../node_modules/core-js/internals/object-get-prototype-of.js","webpack:///../node_modules/core-js/internals/array-buffer-view-core.js","webpack:///../node_modules/core-js/internals/correct-prototype-getter.js","webpack:///../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack:///../node_modules/core-js/internals/classof.js","webpack:///../node_modules/core-js/internals/object-set-prototype-of.js","webpack:///../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack:///../node_modules/gatsby-plugin-mdx/index.js","webpack:///../node_modules/core-js/internals/to-string-tag-support.js","webpack:///../node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack:///../node_modules/@babel/runtime/helpers/slicedToArray.js","webpack:///../node_modules/@babel/runtime/helpers/construct.js","webpack:///../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack:///../node_modules/@styled-system/should-forward-prop/node_modules/@emotion/memoize/dist/emotion-memoize.browser.esm.js","webpack:///../node_modules/@styled-system/core/dist/index.esm.js","webpack:///../node_modules/@styled-system/layout/dist/index.esm.js","webpack:///../node_modules/@styled-system/color/dist/index.esm.js","webpack:///../node_modules/@styled-system/typography/dist/index.esm.js","webpack:///../node_modules/@styled-system/flexbox/dist/index.esm.js","webpack:///../node_modules/@styled-system/grid/dist/index.esm.js","webpack:///../node_modules/@styled-system/border/dist/index.esm.js","webpack:///../node_modules/@styled-system/background/dist/index.esm.js","webpack:///../node_modules/@styled-system/position/dist/index.esm.js","webpack:///../node_modules/@styled-system/space/dist/index.esm.js","webpack:///../node_modules/@styled-system/shadow/dist/index.esm.js","webpack:///../node_modules/@styled-system/css/dist/index.esm.js","webpack:///../node_modules/@styled-system/variant/dist/index.esm.js","webpack:///../node_modules/@styled-system/should-forward-prop/dist/index.esm.js","webpack:///../node_modules/styled-system/dist/index.esm.js","webpack:///../node_modules/@theme-ui/components/dist/index.esm.js","webpack:///./src/utils/useWindowWidth.js","webpack:///./src/components/PageHeader.js","webpack:///./src/components/CustomLinkToStacked.js","webpack:///../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack:///../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack:///../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack:///../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack:///../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack:///../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack:///../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack:///../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack:///../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack:///../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack:///../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack:///../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack:///../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack:///../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack:///../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack:///../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack:///../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack:///../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack:///../node_modules/@popperjs/core/lib/enums.js","webpack:///../node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack:///../node_modules/@popperjs/core/lib/createPopper.js","webpack:///../node_modules/@popperjs/core/lib/utils/debounce.js","webpack:///../node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack:///../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack:///../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack:///../node_modules/@popperjs/core/lib/utils/getVariation.js","webpack:///../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack:///../node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack:///../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack:///../node_modules/@popperjs/core/lib/utils/math.js","webpack:///../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack:///../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack:///../node_modules/@popperjs/core/lib/modifiers/offset.js","webpack:///../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack:///../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack:///../node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack:///../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack:///../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack:///../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack:///../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack:///../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack:///../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack:///../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack:///../node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack:///../node_modules/@popperjs/core/lib/utils/within.js","webpack:///../node_modules/@popperjs/core/lib/modifiers/hide.js","webpack:///../node_modules/@popperjs/core/lib/popper.js","webpack:///../node_modules/@popperjs/core/lib/modifiers/flip.js","webpack:///../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack:///../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack:///../node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack:///../node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack:///../node_modules/tippy.js/dist/tippy.esm.js","webpack:///../node_modules/@tippyjs/react/dist/tippy-react.esm.js","webpack:///./src/components/Tippy.js","webpack:///./src/components/MdxComponents.js","webpack:///./src/components/ReferredBlock.js","webpack:///./src/components/Footer.js","webpack:///./src/components/Popover.js","webpack:///./src/components/BrainNote.js","webpack:///./src/components/Seo.js","webpack:///./src/components/BrainNoteContainer.js","webpack:///./src/templates/note.js","webpack:///../node_modules/react-is/index.js","webpack:///../node_modules/lodash.throttle/index.js"],"names":["module","exports","arr","Array","isArray","__esModule","len","length","i","arr2","TypeError","Reflect","construct","sham","Proxy","Boolean","prototype","valueOf","call","e","hasElementType","Element","hasMap","Map","hasSet","Set","hasArrayBuffer","ArrayBuffer","isView","a","b","equal","constructor","keys","it","size","entries","next","done","has","value","get","RegExp","source","flags","Object","toString","hasOwnProperty","$$typeof","error","message","match","console","warn","_slicedToArray","__createBinding","this","create","o","m","k","k2","undefined","defineProperty","enumerable","__setModuleDefault","v","__importStar","mod","result","__rest","s","t","p","indexOf","getOwnPropertySymbols","propertyIsEnumerable","LinkToStacked","react_1","gatsby_1","hooks_1","default","forwardRef","_a","ref","to","onClick","onMouseLeave","onMouseEnter","restProps","_hooks_1$useStackedPa","useStackedPage","_hooks_1$useStackedPa2","navigateToStackedPage","highlightStackedPage","onClickHandler","useCallback","ev","preventDefault","metaKey","ctrlKey","window","open","withPrefix","onMouseEnterHandler","onMouseLeaveHandler","createElement","Link","assign","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","Error","defaultClearTimeout","runTimeout","fun","setTimeout","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","concat","drainQueue","timeout","run","marker","runClearTimeout","Item","array","noop","nextTick","args","arguments","push","apply","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","name","binding","cwd","chdir","dir","umask","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","isObject","String","React","require","useMDXComponents","mdx","useMDXScope","scope","components","children","props","mdxComponents","mdxScope","End","useMemo","fullScope","values","map","key","Function","__exportStar","Symbol","for","c","d","f","g","h","l","n","q","r","w","x","y","z","u","type","A","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","ForwardRef","Fragment","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","ArrayBufferViewCore","global","fails","aFunction","toLength","internalSort","FF","IE_OR_EDGE","V8","WEBKIT","aTypedArray","exportTypedArrayMethod","Uint16Array","nativeSort","sort","ACCEPT_INCORRECT_ARGUMENTS","STABLE_SORT","index","expected","comparefn","arrayLength","items","getSortCompare","objA","objB","compare","compareContext","ret","keysA","keysB","bHasOwnProperty","bind","idx","valueA","valueB","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","TYPE_STATICS","getStatics","component","render","getOwnPropertyNames","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","descriptor","clock","Component","_class","_temp","ATTRIBUTE_NAMES","TAG_NAMES","BASE","BODY","HEAD","HTML","LINK","META","NOSCRIPT","SCRIPT","STYLE","TITLE","TAG_PROPERTIES","REACT_TAG_MAP","accesskey","charset","class","contenteditable","contextmenu","itemprop","tabindex","HELMET_PROPS","HTML_TAG_MAP","reduce","obj","SELF_CLOSING_TAGS","_typeof","iterator","classCallCheck","instance","Constructor","createClass","defineProperties","target","configurable","writable","protoProps","staticProps","_extends","objectWithoutProperties","possibleConstructorReturn","self","ReferenceError","encodeSpecialCharacters","str","encode","replace","getTitleFromPropsList","propsList","innermostTitle","getInnermostProperty","innermostTemplate","join","innermostDefaultTitle","getOnChangeClientState","getAttributesFromPropsList","tagType","filter","tagAttrs","current","getBaseTagFromPropsList","primaryAttributes","reverse","innermostBaseTag","tag","lowerCaseAttributeKey","toLowerCase","getTagsFromPropsList","tagName","approvedSeenTags","approvedTags","instanceTags","instanceSeenTags","primaryAttributeKey","attributeKey","forEach","tagUnion","property","rafPolyfill","Date","now","callback","currentTime","cafPolyfill","id","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","msg","_helmetCallback","commitTagChanges","newState","cb","baseTag","bodyAttributes","htmlAttributes","linkTags","metaTags","noscriptTags","onChangeClientState","scriptTags","styleTags","titleAttributes","updateAttributes","updateTitle","tagUpdates","updateTags","addedTags","removedTags","_tagUpdates$tagType","newTags","oldTags","flattenArray","possibleArray","attributes","document","elementTag","getElementsByTagName","helmetAttributeString","getAttribute","helmetAttributes","split","attributesToRemove","attributeKeys","attribute","setAttribute","indexToSave","splice","_i","removeAttribute","tags","headElement","head","querySelector","tagNodes","querySelectorAll","slice","indexToDelete","newElement","innerHTML","styleSheet","cssText","appendChild","createTextNode","some","existingTag","isEqualNode","parentNode","removeChild","generateElementAttributesAsString","attr","convertElementAttributestoReactProps","initProps","getMethodsForTag","toComponent","_initProps","attributeString","flattenedTitle","generateTitleAsString","_mappedTag","mappedTag","mappedAttribute","content","dangerouslySetInnerHTML","__html","generateTagsAsReactComponent","attributeHtml","string","tagContent","isSelfClosing","generateTagsAsString","mapStateOnServer","_ref","_ref$title","base","link","meta","noscript","script","style","HelmetSideEffects","defer","HelmetExport","_React$Component","HelmetWrapper","subClass","superClass","setPrototypeOf","__proto__","inherits","shouldComponentUpdate","nextProps","mapNestedChildrenToProps","child","nestedChildren","flattenArrayTypeChildren","_babelHelpers$extends","arrayTypeChildren","newChildProps","mapObjectTypeChildren","_ref2","_babelHelpers$extends2","_babelHelpers$extends3","newProps","mapArrayTypeChildrenToProps","newFlattenedProps","arrayChildName","_babelHelpers$extends4","warnOnInvalidChildren","mapChildrenToProps","_this2","Children","_child$props","initAttributes","convertReactPropstoHtmlAttributes","_props","set","canUseDOM","object","oneOfType","arrayOf","node","defaultTitle","bool","func","titleTemplate","peek","rewind","mappedState","renderStatic","DataView","prop","qs","sep","eq","options","regexp","maxKeys","kstr","vstr","substr","decodeURIComponent","xs","_defineProperty","__importDefault","useStackedPages","useStackedPagesProvider","querystring_1","lodash_throttle_1","lodash_isequal_1","contexts_1","getRoot","firstPage","processPageQuery","data","slug","location","_ref$pageWidth","pageWidth","_ref$obstructedPageWi","obstructedPageWidth","previousFirstPage","useRef","_useScroll","containerRef","_react_1$useState","useState","_react_1$useState2","scroll","setScroll","_react_1$useState3","_react_1$useState4","width","setWidth","scrollObserver","scrollLeft","getBoundingClientRect","throttledScrollObserver","addEventListener","removeEventListener","useScroll","_useScroll2","containerWidth","setRef","_react_1$useState5","_react_1$useState6","stackedPages","setStackedPages","_react_1$useState7","obstructed","highlighted","overlay","active","_react_1$useState8","stackedPageStates","setStackedPageStates","stackedPagesSlugs","res","parse","search","useEffect","pages","___loader","Promise","all","loadPage","then","json","scrollTo","top","left","behavior","acc","prev","Math","max","existingPage","findIndex","navigate","pathname","stringify","_react_1$useContext","useContext","StackedPagesContext","StackedPagesIndexContext","_react_1$useContext2","hookedNavigateToStackedPage","currentPage","iter","from","webpackPolyfill","deprecate","paths","_s","_e","_arr","_n","_d","err","stringifyPrimitive","isFinite","objectKeys","ks","encodeURIComponent","hookCallback","hooks","input","hasOwnProp","isObjectEmpty","isUndefined","isNumber","isDate","fn","extend","createUTC","format","locale","strict","createLocalOrUTC","utc","getParsingFlags","_pf","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","isValid","_isValid","parsedParts","isNowValid","isNaN","getTime","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","NaN","momentProperties","updateInProgress","copyConfig","val","_isAMomentObject","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","suppressDeprecationWarnings","firstTime","deprecationHandler","arg","stack","deprecations","deprecateSimple","isFunction","mergeConfigs","parentConfig","childConfig","Locale","zeroFill","number","targetLength","forceSign","absNumber","abs","zerosToFill","pow","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","localeData","formatMoment","expandFormat","mom","output","makeFormatFunction","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","test","aliases","addUnitAlias","unit","shorthand","lowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","isLeapYear","year","absFloor","ceil","floor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","month","date","daysInMonth","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","regexEscape","matched","p1","p2","p3","p4","tokens","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","modMonth","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","setMonth","dayOfMonth","min","getSetMonth","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","daysInYear","parseTwoDigitYear","parseInt","getSetYear","createDate","M","ms","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","day","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","hours","lowercase","minutes","matchMeridiem","_meridiemParse","seconds","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","globalLocale","getSetHour","baseConfig","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","LT","L","LL","LLL","LLLL","dayOfMonthOrdinalParse","relativeTime","future","past","ss","mm","hh","dd","ww","MM","yy","meridiemParse","locales","localeFamilies","commonPrefix","arr1","minl","normalizeLocale","loadLocale","oldLocale","_abbr","getSetGlobalLocale","getLocale","defineLocale","abbr","_config","parentLocale","names","j","chooseLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","exec","configFromStringAndFormat","untruncateYear","yearStr","configFromRFC2822","parsedArray","monthStr","dayStr","hourStr","minuteStr","secondStr","weekdayStr","parsedInput","getDay","checkWeekday","obsOffset","militaryOffset","numOffset","hm","calculateOffset","setUTCMinutes","getUTCMinutes","defaults","configFromArray","currentDate","expectedWeekday","yearToUse","nowValue","_useUTC","getUTCMonth","getUTCDate","getMonth","getDate","currentDateArray","weekYear","temp","weekdayOverflow","curWeek","GG","W","E","createLocal","_week","gg","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","hour","isPm","meridiemHour","meridiemFixWrap","erasConvertYear","prepareConfig","preparse","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","score","configFromStringAndArray","createFromInputFallback","configFromString","dayOrDate","minute","second","millisecond","configFromObject","configFromInput","isUTC","add","prototypeMin","other","prototypeMax","pickBy","moments","ordering","Duration","duration","years","quarters","quarter","weeks","isoWeek","days","milliseconds","unitHasDecimal","parseFloat","isDurationValid","_milliseconds","_days","_months","_data","_bubble","isDuration","absRound","round","offset","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","parts","matches","cloneWithOffset","model","diff","clone","setTime","local","getDateOffset","getTimezoneOffset","isUtc","aspNetRegex","isoRegex","createDuration","diffRes","parseIso","isBefore","positiveMomentsDifference","inp","isAfter","createAdder","direction","period","tmp","addSubtract","isAdding","invalid","subtract","isString","isMomentInput","arrayTest","dataTypeTest","item","isNumberOrStringArray","objectTest","propertyTest","properties","isMomentInputObject","isCalendarSpec","monthDiff","wholeMonthDiff","anchor","newLocaleData","defaultFormat","defaultFormatUtc","lang","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","abbrPieces","namePieces","narrowPieces","eras","narrow","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getter","getSetWeekYearHelper","weeksTarget","setWeekAll","dayOfYearData","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","eraYearOrdinalParse","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetMillisecond","getSetSecond","parseMs","proto","preParsePostFormat","time","formats","sod","startOf","calendarFormat","asFloat","that","zoneDelta","endOf","startOfDate","isoWeekday","inputString","postformat","withoutSuffix","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","getPrioritizedUnits","toArray","toObject","toDate","toISOString","keepOffset","inspect","prefix","suffix","zone","isLocal","toJSON","unix","creationData","eraName","since","until","eraNarrow","eraAbbr","eraYear","isoWeeks","weekInfo","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","parseWeekday","parseIsoWeekday","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","isDSTShifted","_isDSTShifted","array1","array2","dontConvert","lengthDiff","diffs","compareArrays","proto$1","get$1","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","_calendar","_longDateFormat","formatUpper","toUpperCase","tok","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","_eras","isFormat","_monthsShort","_monthsParseExact","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","_fullWeekdaysParse","charAt","isLower","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","substituteTimeAgo","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","monthsFromDays","argWithSuffix","argThresholds","withSuffix","th","posNegDuration","relativeTime$1","toIsoString","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","limit","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","DATE","TIME","TIME_SECONDS","TIME_MS","WEEK","MONTH","factory","GatsbyMDXScopeContext","createContext","contextScope","MDXScopeProvider","__mdxScope","Provider","PageIndexProvider","StackedPagesProvider","decode","S","freeze","_","N","styledComponentId","REACT_APP_SC_ATTR","SC_ATTR","I","P","SC_DISABLE_SPEEDY","REACT_APP_SC_DISABLE_SPEEDY","T","groupSizes","Uint32Array","indexOfGroup","insertRules","insertRule","clearGroup","deleteRule","getGroup","getRule","V","B","G","F","registerName","Y","trim","getTag","__webpack_nonce__","H","childNodes","nodeType","hasAttribute","nextSibling","insertBefore","$","element","sheet","styleSheets","ownerNode","cssRules","nodes","textContent","U","rules","J","X","isServer","useCSSOMInjection","Z","gs","server","registerId","reconstructWithOptions","allocateGSInstance","hasNameForId","clearNames","clear","clearRules","clearTag","K","Q","fromCharCode","ee","te","charCodeAt","ne","re","oe","se","staticRulesId","isStatic","componentId","baseHash","baseStyle","generateAndInjectStyles","hash","Ne","ie","ae","ce","plugins","use","lastIndexOf","ue","de","Consumer","he","pe","fe","me","ye","stylisPlugins","disableCSSOMInjection","disableVendorPrefixes","ve","inject","getName","ge","Se","we","Ee","be","isReactComponent","isCss","Ae","Ce","Re","theme","De","je","Te","ke","xe","Ve","Be","Me","ze","Le","Ye","qe","attrs","parentComponentId","shouldForwardProp","C","componentStyle","O","foldedComponentIds","$as","className","withComponent","_foldedDefaultProps","He","withConfig","createStyles","removeStyles","renderStyles","_emitSheetCSS","getStyleTags","sealed","getStyleElement","nonce","seal","collectStyles","interleaveWithNodeStream","argsTag","mapTag","objectTag","setTag","reIsHostCtor","reIsUint","typedArrayTags","freeGlobal","freeSelf","root","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","nodeIsTypedArray","isTypedArray","arraySome","predicate","mapToArray","setToArray","uid","transform","arrayProto","funcProto","objectProto","coreJsData","funcToString","maskSrcKey","IE_PROTO","nativeObjectToString","reIsNative","Buffer","Uint8Array","symToStringTag","toStringTag","nativeGetSymbols","nativeIsBuffer","isBuffer","nativeKeys","getNative","WeakMap","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","Hash","entry","ListCache","MapCache","SetCache","__data__","Stack","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","iteratee","baseTimes","isIndex","assocIndexOf","baseGetTag","isOwn","unmasked","getRawTag","objectToString","baseIsArguments","isObjectLike","baseIsEqual","bitmask","customizer","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","byteLength","byteOffset","buffer","convert","isPartial","stacked","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","getAllKeys","objLength","othLength","skipCtor","objValue","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsNative","isMasked","baseKeys","Ctor","arrLength","seen","arrValue","othIndex","keysFunc","symbolsFunc","arrayPush","baseGetAllKeys","getSymbols","getMapData","getValue","pop","pairs","LARGE_ARRAY_SIZE","resIndex","arrayFilter","symbol","resolve","ctorString","isLength","baseUnary","ex","React__default","reducePropsToState","handleStateChangeOnClient","WrappedComponent","state","mountedInstances","emitChange","SideEffect","_PureComponent","recordedState","_proto","UNSAFE_componentWillMount","componentDidUpdate","componentWillUnmount","PureComponent","getDisplayName","sharedKey","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","NAME","Prototype","NATIVE_ARRAY_BUFFER","DESCRIPTORS","classof","createNonEnumerableProperty","redefine","wellKnownSymbol","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","isPrototypeOf","TO_STRING_TAG","TYPED_ARRAY_TAG","TYPED_ARRAY_CONSTRUCTOR","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQIRED","TypedArrayConstructorsList","Int16Array","Int32Array","Float32Array","Float64Array","BigIntArrayConstructorsList","BigInt64Array","BigUint64Array","klass","aTypedArrayConstructor","KEY","forced","ARRAY","TypedArrayConstructor","exportTypedArrayStaticMethod","arrayLikeToArray","minLen","TO_STRING_TAG_SUPPORT","classofRaw","CORRECT_ARGUMENTS","tryGet","anObject","aPossiblePrototype","CORRECT_SETTER","MDXRenderer","arrayWithHoles","iterableToArrayLimit","nonIterableRest","isNativeReflectConstruct","_construct","Parent","Class","_objectWithoutPropertiesLoose","excluded","sourceKeys","cache","_assign","breakpoints","createMediaQuery","scale","def","undef","createParser","styles","shouldSort","isCacheDisabled","disableStyledSystemCache","sx","raw","media","localeCompare","numeric","sensitivity","propNames","_createParser","mediaQueries","_assign2","breakpoint","_assign3","createStyleFunction","_ref$transform","defaultScale","system","conf","_len","parsers","_key","parser","layout","height","minWidth","minHeight","maxWidth","maxHeight","overflowX","overflowY","display","verticalAlign","color","backgroundColor","opacity","bg","typography","fontFamily","fontSize","fontWeight","lineHeight","letterSpacing","textAlign","fontStyle","flexbox","alignItems","alignContent","justifyItems","justifyContent","flexWrap","flexDirection","flex","flexGrow","flexShrink","flexBasis","justifySelf","alignSelf","order","space","grid","gridGap","gridColumnGap","gridRowGap","gridColumn","gridRow","gridAutoFlow","gridAutoColumns","gridAutoRows","gridTemplateColumns","gridTemplateRows","gridTemplateAreas","gridArea","border","borderWidth","borderStyle","borderColor","borderRadius","borderTop","borderTopLeftRadius","borderTopRightRadius","borderRight","borderBottom","borderBottomLeftRadius","borderBottomRightRadius","borderLeft","borderX","borderY","borderBottomWidth","borderBottomColor","borderBottomStyle","borderLeftWidth","borderLeftColor","borderLeftStyle","borderRightWidth","borderRightColor","borderRightStyle","background","backgroundImage","backgroundSize","backgroundPosition","backgroundRepeat","bgImage","bgSize","bgPosition","bgRepeat","position","zIndex","right","bottom","isNegative","absolute","configs","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","mt","mr","mb","ml","mx","my","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","pt","pr","pb","pl","px","py","shadow","boxShadow","textShadow","defaultBreakpoints","defaultTheme","fontSizes","multiples","scales","gap","columnGap","rowGap","borderTopWidth","borderTopColor","borderTopStyle","outlineColor","fill","stroke","positiveOrNegative","transforms","curr","_extends2","css","responsive","scaleName","dirs","_ref$prop","_ref$variants","variants","buttonStyle","textStyle","colorStyle","Box","boxSizing","__css","variant","__themeKey","Flex","ref$1","columns","exclude","widthToColumns","countToColumns","appearance","textDecoration","Heading","Image","Label","Input","objectWithoutProperties$1","xmlns","viewBox","getProps","MRE","omitMargin","pointerEvents","objectWithoutProperties$2","thumb","objectWithoutProperties$3","cursor","outline","Control","label","objectWithoutProperties$4","htmlFor","strokeWidth","objectWithoutProperties$5","PI","role","cx","cy","strokeDasharray","strokeDashoffset","spin","objectWithoutProperties$6","transformOrigin","animationName","animationTimingFunction","animationDuration","animationIterationCount","objectWithoutProperties$7","whiteSpace","IconButton","objectWithoutProperties$8","objectWithoutProperties$9","ratio","src","frameBorder","allowFullScreen","allow","objectWithoutProperties$a","AspectRatio","objectWithoutProperties$b","objectWithoutProperties$c","objectFit","getWindowWidth","innerWidth","handleResize","siteMetadata","StyledLink","styled","isMac","navigator","platform","getWindow","ownerDocument","defaultView","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","includeScale","rect","scaleX","scaleY","offsetHeight","offsetWidth","getWindowScroll","win","pageXOffset","scrollTop","pageYOffset","getNodeName","nodeName","getDocumentElement","documentElement","getWindowScrollBarX","getComputedStyle","isScrollParent","_getComputedStyle","getCompositeRect","elementOrVirtualElement","offsetParent","isFixed","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","offsets","clientLeft","clientTop","getLayoutRect","clientRect","offsetLeft","offsetTop","getParentNode","assignedSlot","host","listScrollParents","list","_element$ownerDocumen","scrollParent","getScrollParent","body","isBody","visualViewport","updatedList","isTableElement","getTrueOffsetParent","getOffsetParent","isFirefox","userAgent","currentNode","perspective","contain","willChange","getContainingBlock","basePlacements","variationPlacements","placement","modifierPhases","modifiers","visited","modifier","requires","requiresIfExists","dep","depModifier","DEFAULT_OPTIONS","strategy","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","reference","popper","pending","orderedModifiers","modifiersData","elements","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","cleanupModifierEffects","scrollParents","contextElement","phase","orderModifiers","merged","existing","mergeByName","enabled","_ref3","_ref3$options","effect","cleanupFn","update","forceUpdate","_state$elements","rects","reset","_state$orderedModifie","_state$orderedModifie2","_options","destroy","onFirstUpdate","passive","_options$scroll","_options$resize","resize","getBasePlacement","getVariation","getMainAxisFromPlacement","computeOffsets","basePlacement","variation","commonX","commonY","mainAxis","unsetSides","mapToStyles","_Object$assign2","popperRect","gpuAcceleration","adaptive","roundOffsets","dpr","devicePixelRatio","roundOffsetsByDPR","_ref3$x","_ref3$y","hasX","hasY","sideX","sideY","heightProp","widthProp","_Object$assign","commonStyles","initialStyles","arrow","getOppositePlacement","start","end","getOppositeVariationPlacement","contains","parent","rootNode","getRootNode","isSameNode","rectToClientRect","getClientRectFromMixedType","clippingParent","html","clientWidth","clientHeight","getViewportRect","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","mergePaddingObject","paddingObject","expandToHashMap","hashMap","detectOverflow","_options$placement","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","referenceClientRect","popperOffsets","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","axis","within","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","eventListeners","_ref4","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","placements","_options$allowedAutoP","allowedPlacements","overflows","computeAutoPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","every","check","_loop","fittingPlacement","find","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","mainSide","altSide","additive","maxLen","arrowElement","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","arrowOffsetParent","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_mainSide","_altSide","_min","_max","_preventedOffset","_state$modifiersData$","minProp","maxProp","endDiff","startDiff","clientSize","centerToReference","center","axisProp","centerOffset","_options$element","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","TOUCH_OPTIONS","capture","getValueAtIndexOrReturn","defaultValue","invokeWithArgsOrReturn","normalizeToArray","pushIfUnique","arrayFrom","div","isMouseEvent","isReferenceElement","_tippy","getArrayOfElements","isNodeList","setTransitionDuration","els","el","transitionDuration","setVisibilityState","getOwnerDocument","elementOrElements","updateTransitionEndListener","box","action","listener","method","event","currentInput","isTouch","lastMouseMoveTime","onDocumentTouchStart","performance","onDocumentMouseMove","onWindowBlur","activeElement","blur","isVisible","ua","pluginProps","animateFill","followCursor","inlinePositioning","sticky","appendTo","aria","expanded","delay","getReferenceClientRect","hideOnClick","ignoreAttributes","interactive","interactiveBorder","interactiveDebounce","moveTransition","onAfterUpdate","onBeforeUpdate","onCreate","onDestroy","onHidden","onHide","onMount","onShow","onShown","onTrigger","onUntrigger","onClickOutside","popperOptions","showOnCreate","touch","trigger","triggerTarget","allowHTML","animation","inertia","defaultKeys","getExtendedPassedProps","passedProps","plugin","evaluateProps","valueAsString","JSON","getDataAttributeProps","createArrowElement","getChildren","firstElementChild","boxChildren","classList","backdrop","onUpdate","prevProps","_getChildren","$$tippy","idCounter","mouseMoveListeners","createTippy","showTimeout","hideTimeout","scheduleHideAnimationFrame","lastTriggerEvent","currentTransitionEndListener","currentTarget","isVisibleFromClick","didHideDueToDocumentMouseDown","didTouchMove","ignoreOnFirstUpdate","debouncedOnMouseMove","onMouseMove","popperInstance","isEnabled","isMounted","isShown","clearDelayTimeouts","setProps","partialProps","invokeHook","removeListeners","addListeners","cleanupInteractiveMouseListeners","handleAriaExpandedAttribute","handleStyles","createPopperInstance","getNestedPopperTree","nestedPopper","setContent","show","isAlreadyVisible","isDisabled","isTouchAndTouchDisabled","getCurrentTarget","getIsDefaultRenderFn","visibility","addDocumentPress","transition","_getDefaultTemplateCh2","getDefaultTemplateChildren","_instance$popperInsta2","_getDefaultTemplateCh3","_box","_content","handleAriaContentAttribute","onTransitionEnd","onTransitionedIn","mount","hide","isAlreadyHidden","removeDocumentPress","_getDefaultTemplateCh4","onTransitionedOut","unmount","hideWithInteractivity","getDocument","enable","disable","destroyPopperInstance","_props$render","pluginsHooks","hasAriaExpanded","scheduleShow","getNormalizedTouchSettings","getIsCustomTouchBehavior","_instance$props$rende","getDelay","isShow","hook","shouldInvokePropsHook","_instance$props","pluginHooks","currentValue","nextValue","onDocumentPress","onTouchMove","onTouchStart","doc","eventType","handler","onBlurOrFocusOut","_lastTriggerEvent","shouldScheduleClickHide","isEventListenerStopped","wasFocused","scheduleHide","isCursorOverReferenceOrPopper","popperTreeData","clientX","clientY","popperState","topDistance","bottomDistance","leftDistance","rightDistance","exceedsTop","exceedsBottom","exceedsLeft","exceedsRight","isCursorOutsideInteractiveBorder","_instance$popperInsta","relatedTarget","_instance$props2","computedReference","_getNormalizedTouchSe","touchValue","touchDelay","targets","optionalProps","instances","setDefaultProps","preserveRef","ssrSafeCreateDiv","uniqueByShape","outputItem","deepEqual","deepPreserveProps","instanceProps","componentProps","_instanceProps$popper","_componentProps$poppe","useIsomorphicLayoutEffect","useMutableBox","initialValue","updateClassName","classNames","classNamePlugin","isDefaultRenderFn","TippyGenerator","tippy","visible","singleton","_ref$disabled","disabled","_ref$ignoreAttributes","restOfNativeProps","__source","__self","isControlledMode","isSingletonMode","_useState","mounted","setMounted","_useState2","setAttrs","_useState3","singletonContent","setSingletonContent","mutableBox","container","renders","computedProps","deps","cleanup","_instance$props$poppe","_state$modifiersData","hideData","referenceHidden","escaped","dataAttrs","toDataAttributes","Tippy","href","popups","noPopups","references","useWindowWidth","RefLink","childMdx","excerpt","Footer","ReferredBlock","h3","BrainNote","note","outboundReferenceNotes","ln","Popover","noteContent","noteInfo","frontmatter","image","h1","alt","moment","inboundReferenceNotes","Seo","description","site","useStaticQuery","noteTitle","siteTitle","siteAuthor","author","siteUrl","siteKeywords","keywords","twitterHandle","twitter","GAID","gaid","metaUrl","Helmet","rel","sizes","async","StackedPageWrapper","rest","NoteWrapper","BrainNotesContainer","indexToShow","brainNote","scrollContainer","activeSlug","page","PageHeader","BrainNoteContainer","pageContext","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","nativeMax","nativeMin","debounce","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","thisArg","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","remainingWait","debounced","isInvoking","toNumber","cancel","flush","isSymbol","isBinary"],"mappings":"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","file":"component---src-templates-note-js-88cd17624ff5a094c9a9.js","sourcesContent":["function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nmodule.exports = _isNativeReflectConstruct;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView; // Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.1\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n var length, i, keys;\n\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n\n for (i = length; i-- !== 0;) {\n if (!equal(a[i], b[i])) return false;\n }\n\n return true;\n } // START: Modifications:\n // 1. Extra `has<Type> &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n\n\n var it;\n\n if (hasMap && a instanceof Map && b instanceof Map) {\n if (a.size !== b.size) return false;\n it = a.entries();\n\n while (!(i = it.next()).done) {\n if (!b.has(i.value[0])) return false;\n }\n\n it = a.entries();\n\n while (!(i = it.next()).done) {\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n }\n\n return true;\n }\n\n if (hasSet && a instanceof Set && b instanceof Set) {\n if (a.size !== b.size) return false;\n it = a.entries();\n\n while (!(i = it.next()).done) {\n if (!b.has(i.value[0])) return false;\n }\n\n return true;\n } // END: Modifications\n\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n\n for (i = length; i-- !== 0;) {\n if (a[i] !== b[i]) return false;\n }\n\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;) {\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n } // END: fast-deep-equal\n // START: react-fast-compare\n // custom handling for DOM elements\n\n\n if (hasElementType && a instanceof Element) return false; // custom handling for React/Preact\n\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n continue;\n } // all other properties should be traversed as usual\n\n\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n } // END: react-fast-compare\n // START: fast-deep-equal\n\n\n return true;\n }\n\n return a !== a && b !== b;\n} // end fast-deep-equal\n\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if ((error.message || '').match(/stack|recursion/i)) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n } // some other error. we should definitely know about these\n\n\n throw error;\n }\n};","\"use strict\";\n\nvar _slicedToArray = require(\"/Users/AdamLiu/Code/golang-workspace/ubuntu/src/github.com/adamliuio/blogga/adam-notes-site/node_modules/@babel/runtime/helpers/slicedToArray\");\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function get() {\n return m[k];\n }\n });\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nvar __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\n});\n\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) {\n if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n }\n\n __setModuleDefault(result, mod);\n\n return result;\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.LinkToStacked = void 0;\n\nvar react_1 = __importStar(require(\"react\"));\n\nvar gatsby_1 = require(\"gatsby\");\n\nvar hooks_1 = require(\"./hooks\");\n\nexports.LinkToStacked = react_1.default.forwardRef(function (_a, ref) {\n var to = _a.to,\n onClick = _a.onClick,\n onMouseLeave = _a.onMouseLeave,\n onMouseEnter = _a.onMouseEnter,\n restProps = __rest(_a, [\"to\", \"onClick\", \"onMouseLeave\", \"onMouseEnter\"]);\n\n var _hooks_1$useStackedPa = hooks_1.useStackedPage(),\n _hooks_1$useStackedPa2 = _slicedToArray(_hooks_1$useStackedPa, 5),\n navigateToStackedPage = _hooks_1$useStackedPa2[3],\n highlightStackedPage = _hooks_1$useStackedPa2[4];\n\n var onClickHandler = react_1.useCallback(function (ev) {\n ev.preventDefault();\n\n if (onClick) {\n onClick(ev);\n }\n\n if (ev.metaKey || ev.ctrlKey) {\n window.open(gatsby_1.withPrefix(to), \"_blank\");\n } else {\n navigateToStackedPage(to);\n }\n }, [navigateToStackedPage, to, onClick]);\n var onMouseEnterHandler = react_1.useCallback(function (ev) {\n highlightStackedPage(to, true);\n\n if (onMouseEnter) {\n onMouseEnter(ev);\n }\n }, [to, onMouseEnter, highlightStackedPage]);\n var onMouseLeaveHandler = react_1.useCallback(function (ev) {\n highlightStackedPage(to, false);\n\n if (onMouseLeave) {\n onMouseLeave(ev);\n }\n }, [to, onMouseLeave, highlightStackedPage]);\n return react_1.default.createElement(gatsby_1.Link, Object.assign({}, restProps, {\n to: to\n /*\n // @ts-ignore */\n ,\n ref: ref,\n onClick: onClickHandler,\n onMouseEnter: onMouseEnterHandler,\n onMouseLeave: onMouseLeaveHandler\n }));\n});","// shim for using process in browser\nvar process = module.exports = {}; // cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\n\nfunction defaultClearTimeout() {\n throw new Error('clearTimeout has not been defined');\n}\n\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n})();\n\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n } // if setTimeout wasn't available but was latter defined\n\n\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n}\n\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n } // if clearTimeout wasn't available but was latter defined\n\n\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n}\n\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n\n draining = false;\n\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n\n while (len) {\n currentQueue = queue;\n queue = [];\n\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n\n queueIndex = -1;\n len = queue.length;\n }\n\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n\n queue.push(new Item(fun, args));\n\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n}; // v8 likes predictible objects\n\n\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\n\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\n\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\n\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) {\n return [];\n};\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () {\n return '/';\n};\n\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\n\nprocess.umask = function () {\n return 0;\n};","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","const React = require(`react`)\nconst { useMDXComponents, mdx } = require(`@mdx-js/react`)\nconst { useMDXScope } = require(`./context`)\n\nmodule.exports = function MDXRenderer({\n scope,\n components,\n children,\n ...props\n}) {\n const mdxComponents = useMDXComponents(components)\n const mdxScope = useMDXScope(scope)\n\n // Memoize the compiled component\n const End = React.useMemo(() => {\n if (!children) {\n return null\n }\n\n const fullScope = {\n // React is here just in case the user doesn't pass them in\n // in a manual usage of the renderer\n React,\n mdx,\n ...mdxScope,\n }\n\n const keys = Object.keys(fullScope)\n const values = keys.map(key => fullScope[key])\n const fn = new Function(`_fn`, ...keys, `${children}`)\n\n return fn({}, ...values)\n }, [children, scope])\n\n return React.createElement(End, { components: mdxComponents, ...props })\n}\n","\"use strict\";\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function get() {\n return m[k];\n }\n });\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nvar __exportStar = this && this.__exportStar || function (m, exports) {\n for (var p in m) {\n if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n }\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n__exportStar(require(\"./contexts\"), exports);\n\n__exportStar(require(\"./hooks\"), exports);\n\n__exportStar(require(\"./Link\"), exports);","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';\n\nvar b = \"function\" === typeof Symbol && Symbol.for,\n c = b ? Symbol.for(\"react.element\") : 60103,\n d = b ? Symbol.for(\"react.portal\") : 60106,\n e = b ? Symbol.for(\"react.fragment\") : 60107,\n f = b ? Symbol.for(\"react.strict_mode\") : 60108,\n g = b ? Symbol.for(\"react.profiler\") : 60114,\n h = b ? Symbol.for(\"react.provider\") : 60109,\n k = b ? Symbol.for(\"react.context\") : 60110,\n l = b ? Symbol.for(\"react.async_mode\") : 60111,\n m = b ? Symbol.for(\"react.concurrent_mode\") : 60111,\n n = b ? Symbol.for(\"react.forward_ref\") : 60112,\n p = b ? Symbol.for(\"react.suspense\") : 60113,\n q = b ? Symbol.for(\"react.suspense_list\") : 60120,\n r = b ? Symbol.for(\"react.memo\") : 60115,\n t = b ? Symbol.for(\"react.lazy\") : 60116,\n v = b ? Symbol.for(\"react.block\") : 60121,\n w = b ? Symbol.for(\"react.fundamental\") : 60117,\n x = b ? Symbol.for(\"react.responder\") : 60118,\n y = b ? Symbol.for(\"react.scope\") : 60119;\n\nfunction z(a) {\n if (\"object\" === typeof a && null !== a) {\n var u = a.$$typeof;\n\n switch (u) {\n case c:\n switch (a = a.type, a) {\n case l:\n case m:\n case e:\n case g:\n case f:\n case p:\n return a;\n\n default:\n switch (a = a && a.$$typeof, a) {\n case k:\n case n:\n case t:\n case r:\n case h:\n return a;\n\n default:\n return u;\n }\n\n }\n\n case d:\n return u;\n }\n }\n}\n\nfunction A(a) {\n return z(a) === m;\n}\n\nexports.AsyncMode = l;\nexports.ConcurrentMode = m;\nexports.ContextConsumer = k;\nexports.ContextProvider = h;\nexports.Element = c;\nexports.ForwardRef = n;\nexports.Fragment = e;\nexports.Lazy = t;\nexports.Memo = r;\nexports.Portal = d;\nexports.Profiler = g;\nexports.StrictMode = f;\nexports.Suspense = p;\n\nexports.isAsyncMode = function (a) {\n return A(a) || z(a) === l;\n};\n\nexports.isConcurrentMode = A;\n\nexports.isContextConsumer = function (a) {\n return z(a) === k;\n};\n\nexports.isContextProvider = function (a) {\n return z(a) === h;\n};\n\nexports.isElement = function (a) {\n return \"object\" === typeof a && null !== a && a.$$typeof === c;\n};\n\nexports.isForwardRef = function (a) {\n return z(a) === n;\n};\n\nexports.isFragment = function (a) {\n return z(a) === e;\n};\n\nexports.isLazy = function (a) {\n return z(a) === t;\n};\n\nexports.isMemo = function (a) {\n return z(a) === r;\n};\n\nexports.isPortal = function (a) {\n return z(a) === d;\n};\n\nexports.isProfiler = function (a) {\n return z(a) === g;\n};\n\nexports.isStrictMode = function (a) {\n return z(a) === f;\n};\n\nexports.isSuspense = function (a) {\n return z(a) === p;\n};\n\nexports.isValidElementType = function (a) {\n return \"string\" === typeof a || \"function\" === typeof a || a === e || a === m || a === g || a === f || a === p || a === q || \"object\" === typeof a && null !== a && (a.$$typeof === t || a.$$typeof === r || a.$$typeof === h || a.$$typeof === k || a.$$typeof === n || a.$$typeof === w || a.$$typeof === x || a.$$typeof === y || a.$$typeof === v);\n};\n\nexports.typeOf = z;","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar aFunction = require('../internals/a-function');\nvar toLength = require('../internals/to-length');\nvar internalSort = require('../internals/array-sort');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar Uint16Array = global.Uint16Array;\nvar nativeSort = Uint16Array && Uint16Array.prototype.sort;\n\n// WebKit\nvar ACCEPT_INCORRECT_ARGUMENTS = !!nativeSort && !fails(function () {\n var array = new Uint16Array(2);\n array.sort(null);\n array.sort({});\n});\n\nvar STABLE_SORT = !!nativeSort && !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 74;\n if (FF) return FF < 67;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 602;\n\n var array = new Uint16Array(516);\n var expected = Array(516);\n var index, mod;\n\n for (index = 0; index < 516; index++) {\n mod = index % 4;\n array[index] = 515 - index;\n expected[index] = index - 2 * mod + 3;\n }\n\n array.sort(function (a, b) {\n return (a / 4 | 0) - (b / 4 | 0);\n });\n\n for (index = 0; index < 516; index++) {\n if (array[index] !== expected[index]) return true;\n }\n});\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n // eslint-disable-next-line no-self-compare -- NaN check\n if (y !== y) return -1;\n // eslint-disable-next-line no-self-compare -- NaN check\n if (x !== x) return 1;\n if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1;\n return x > y;\n };\n};\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort\nexportTypedArrayMethod('sort', function sort(comparefn) {\n var array = this;\n if (comparefn !== undefined) aFunction(comparefn);\n if (STABLE_SORT) return nativeSort.call(array, comparefn);\n\n aTypedArray(array);\n var arrayLength = toLength(array.length);\n var items = Array(arrayLength);\n var index;\n\n for (index = 0; index < arrayLength; index++) {\n items[index] = array[index];\n }\n\n items = internalSort(array, getSortCompare(comparefn));\n\n for (index = 0; index < arrayLength; index++) {\n array[index] = items[index];\n }\n\n return array;\n}, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS);\n","//\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB); // Test for A's keys different from B.\n\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || ret === void 0 && valueA !== valueB) {\n return false;\n }\n }\n\n return true;\n};","'use strict';\n\nvar reactIs = require('react-is');\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\n\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;","import \"core-js/modules/es.array.reduce.js\";\nimport PropTypes from 'prop-types';\nimport withSideEffect from 'react-side-effect';\nimport isEqual from 'react-fast-compare';\nimport React from 'react';\nimport objectAssign from 'object-assign';\nvar ATTRIBUTE_NAMES = {\n BODY: \"bodyAttributes\",\n HTML: \"htmlAttributes\",\n TITLE: \"titleAttributes\"\n};\nvar TAG_NAMES = {\n BASE: \"base\",\n BODY: \"body\",\n HEAD: \"head\",\n HTML: \"html\",\n LINK: \"link\",\n META: \"meta\",\n NOSCRIPT: \"noscript\",\n SCRIPT: \"script\",\n STYLE: \"style\",\n TITLE: \"title\"\n};\nvar VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {\n return TAG_NAMES[name];\n});\nvar TAG_PROPERTIES = {\n CHARSET: \"charset\",\n CSS_TEXT: \"cssText\",\n HREF: \"href\",\n HTTPEQUIV: \"http-equiv\",\n INNER_HTML: \"innerHTML\",\n ITEM_PROP: \"itemprop\",\n NAME: \"name\",\n PROPERTY: \"property\",\n REL: \"rel\",\n SRC: \"src\",\n TARGET: \"target\"\n};\nvar REACT_TAG_MAP = {\n accesskey: \"accessKey\",\n charset: \"charSet\",\n class: \"className\",\n contenteditable: \"contentEditable\",\n contextmenu: \"contextMenu\",\n \"http-equiv\": \"httpEquiv\",\n itemprop: \"itemProp\",\n tabindex: \"tabIndex\"\n};\nvar HELMET_PROPS = {\n DEFAULT_TITLE: \"defaultTitle\",\n DEFER: \"defer\",\n ENCODE_SPECIAL_CHARACTERS: \"encodeSpecialCharacters\",\n ON_CHANGE_CLIENT_STATE: \"onChangeClientState\",\n TITLE_TEMPLATE: \"titleTemplate\"\n};\nvar HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key]] = key;\n return obj;\n}, {});\nvar SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\nvar HELMET_ATTRIBUTE = \"data-react-helmet\";\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar classCallCheck = function classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar inherits = function inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar objectWithoutProperties = function objectWithoutProperties(obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nvar possibleConstructorReturn = function possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (encode === false) {\n return String(str);\n }\n\n return String(str).replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n};\n\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n var innermostTitle = getInnermostProperty(propsList, TAG_NAMES.TITLE);\n var innermostTemplate = getInnermostProperty(propsList, HELMET_PROPS.TITLE_TEMPLATE);\n\n if (innermostTemplate && innermostTitle) {\n // use function arg to avoid need to escape $ characters\n return innermostTemplate.replace(/%s/g, function () {\n return Array.isArray(innermostTitle) ? innermostTitle.join(\"\") : innermostTitle;\n });\n }\n\n var innermostDefaultTitle = getInnermostProperty(propsList, HELMET_PROPS.DEFAULT_TITLE);\n return innermostTitle || innermostDefaultTitle || undefined;\n};\n\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n return getInnermostProperty(propsList, HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};\n};\n\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n return propsList.filter(function (props) {\n return typeof props[tagType] !== \"undefined\";\n }).map(function (props) {\n return props[tagType];\n }).reduce(function (tagAttrs, current) {\n return _extends({}, tagAttrs, current);\n }, {});\n};\n\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n return propsList.filter(function (props) {\n return typeof props[TAG_NAMES.BASE] !== \"undefined\";\n }).map(function (props) {\n return props[TAG_NAMES.BASE];\n }).reverse().reduce(function (innermostBaseTag, tag) {\n if (!innermostBaseTag.length) {\n var keys = Object.keys(tag);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n\n return innermostBaseTag;\n }, []);\n};\n\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n // Calculate list of tags, giving priority innermost component (end of the propslist)\n var approvedSeenTags = {};\n return propsList.filter(function (props) {\n if (Array.isArray(props[tagName])) {\n return true;\n }\n\n if (typeof props[tagName] !== \"undefined\") {\n warn(\"Helmet: \" + tagName + \" should be of type \\\"Array\\\". Instead found type \\\"\" + _typeof(props[tagName]) + \"\\\"\");\n }\n\n return false;\n }).map(function (props) {\n return props[tagName];\n }).reverse().reduce(function (approvedTags, instanceTags) {\n var instanceSeenTags = {};\n instanceTags.filter(function (tag) {\n var primaryAttributeKey = void 0;\n var keys = Object.keys(tag);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase(); // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n primaryAttributeKey = lowerCaseAttributeKey;\n } // Special case for innerHTML which doesn't work lowercased\n\n\n if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === TAG_PROPERTIES.INNER_HTML || attributeKey === TAG_PROPERTIES.CSS_TEXT || attributeKey === TAG_PROPERTIES.ITEM_PROP)) {\n primaryAttributeKey = attributeKey;\n }\n }\n\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n\n var value = tag[primaryAttributeKey].toLowerCase();\n\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n\n return false;\n }).reverse().forEach(function (tag) {\n return approvedTags.push(tag);\n }); // Update seen tags with tags from this instance\n\n var keys = Object.keys(instanceSeenTags);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var tagUnion = objectAssign({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n approvedSeenTags[attributeKey] = tagUnion;\n }\n\n return approvedTags;\n }, []).reverse();\n};\n\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n for (var i = propsList.length - 1; i >= 0; i--) {\n var props = propsList[i];\n\n if (props.hasOwnProperty(property)) {\n return props[property];\n }\n }\n\n return null;\n};\n\nvar reducePropsToState = function reducePropsToState(propsList) {\n return {\n baseTag: getBaseTagFromPropsList([TAG_PROPERTIES.HREF, TAG_PROPERTIES.TARGET], propsList),\n bodyAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY, propsList),\n defer: getInnermostProperty(propsList, HELMET_PROPS.DEFER),\n encode: getInnermostProperty(propsList, HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n htmlAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML, propsList),\n linkTags: getTagsFromPropsList(TAG_NAMES.LINK, [TAG_PROPERTIES.REL, TAG_PROPERTIES.HREF], propsList),\n metaTags: getTagsFromPropsList(TAG_NAMES.META, [TAG_PROPERTIES.NAME, TAG_PROPERTIES.CHARSET, TAG_PROPERTIES.HTTPEQUIV, TAG_PROPERTIES.PROPERTY, TAG_PROPERTIES.ITEM_PROP], propsList),\n noscriptTags: getTagsFromPropsList(TAG_NAMES.NOSCRIPT, [TAG_PROPERTIES.INNER_HTML], propsList),\n onChangeClientState: getOnChangeClientState(propsList),\n scriptTags: getTagsFromPropsList(TAG_NAMES.SCRIPT, [TAG_PROPERTIES.SRC, TAG_PROPERTIES.INNER_HTML], propsList),\n styleTags: getTagsFromPropsList(TAG_NAMES.STYLE, [TAG_PROPERTIES.CSS_TEXT], propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE, propsList)\n };\n};\n\nvar rafPolyfill = function () {\n var clock = Date.now();\n return function (callback) {\n var currentTime = Date.now();\n\n if (currentTime - clock > 16) {\n clock = currentTime;\n callback(currentTime);\n } else {\n setTimeout(function () {\n rafPolyfill(callback);\n }, 0);\n }\n };\n}();\n\nvar cafPolyfill = function cafPolyfill(id) {\n return clearTimeout(id);\n};\n\nvar requestAnimationFrame = typeof window !== \"undefined\" ? window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : global.requestAnimationFrame || rafPolyfill;\nvar cancelAnimationFrame = typeof window !== \"undefined\" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : global.cancelAnimationFrame || cafPolyfill;\n\nvar warn = function warn(msg) {\n return console && typeof console.warn === \"function\" && console.warn(msg);\n};\n\nvar _helmetCallback = null;\n\nvar handleClientStateChange = function handleClientStateChange(newState) {\n if (_helmetCallback) {\n cancelAnimationFrame(_helmetCallback);\n }\n\n if (newState.defer) {\n _helmetCallback = requestAnimationFrame(function () {\n commitTagChanges(newState, function () {\n _helmetCallback = null;\n });\n });\n } else {\n commitTagChanges(newState);\n _helmetCallback = null;\n }\n};\n\nvar commitTagChanges = function commitTagChanges(newState, cb) {\n var baseTag = newState.baseTag,\n bodyAttributes = newState.bodyAttributes,\n htmlAttributes = newState.htmlAttributes,\n linkTags = newState.linkTags,\n metaTags = newState.metaTags,\n noscriptTags = newState.noscriptTags,\n onChangeClientState = newState.onChangeClientState,\n scriptTags = newState.scriptTags,\n styleTags = newState.styleTags,\n title = newState.title,\n titleAttributes = newState.titleAttributes;\n updateAttributes(TAG_NAMES.BODY, bodyAttributes);\n updateAttributes(TAG_NAMES.HTML, htmlAttributes);\n updateTitle(title, titleAttributes);\n var tagUpdates = {\n baseTag: updateTags(TAG_NAMES.BASE, baseTag),\n linkTags: updateTags(TAG_NAMES.LINK, linkTags),\n metaTags: updateTags(TAG_NAMES.META, metaTags),\n noscriptTags: updateTags(TAG_NAMES.NOSCRIPT, noscriptTags),\n scriptTags: updateTags(TAG_NAMES.SCRIPT, scriptTags),\n styleTags: updateTags(TAG_NAMES.STYLE, styleTags)\n };\n var addedTags = {};\n var removedTags = {};\n Object.keys(tagUpdates).forEach(function (tagType) {\n var _tagUpdates$tagType = tagUpdates[tagType],\n newTags = _tagUpdates$tagType.newTags,\n oldTags = _tagUpdates$tagType.oldTags;\n\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n cb && cb();\n onChangeClientState(newState, addedTags, removedTags);\n};\n\nvar flattenArray = function flattenArray(possibleArray) {\n return Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\n};\n\nvar updateTitle = function updateTitle(title, attributes) {\n if (typeof title !== \"undefined\" && document.title !== title) {\n document.title = flattenArray(title);\n }\n\n updateAttributes(TAG_NAMES.TITLE, attributes);\n};\n\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n var elementTag = document.getElementsByTagName(tagName)[0];\n\n if (!elementTag) {\n return;\n }\n\n var helmetAttributeString = elementTag.getAttribute(HELMET_ATTRIBUTE);\n var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n var attributesToRemove = [].concat(helmetAttributes);\n var attributeKeys = Object.keys(attributes);\n\n for (var i = 0; i < attributeKeys.length; i++) {\n var attribute = attributeKeys[i];\n var value = attributes[attribute] || \"\";\n\n if (elementTag.getAttribute(attribute) !== value) {\n elementTag.setAttribute(attribute, value);\n }\n\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n\n var indexToSave = attributesToRemove.indexOf(attribute);\n\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n\n for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n elementTag.removeAttribute(attributesToRemove[_i]);\n }\n\n if (helmetAttributes.length === attributesToRemove.length) {\n elementTag.removeAttribute(HELMET_ATTRIBUTE);\n } else if (elementTag.getAttribute(HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n elementTag.setAttribute(HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n }\n};\n\nvar updateTags = function updateTags(type, tags) {\n var headElement = document.head || document.querySelector(TAG_NAMES.HEAD);\n var tagNodes = headElement.querySelectorAll(type + \"[\" + HELMET_ATTRIBUTE + \"]\");\n var oldTags = Array.prototype.slice.call(tagNodes);\n var newTags = [];\n var indexToDelete = void 0;\n\n if (tags && tags.length) {\n tags.forEach(function (tag) {\n var newElement = document.createElement(type);\n\n for (var attribute in tag) {\n if (tag.hasOwnProperty(attribute)) {\n if (attribute === TAG_PROPERTIES.INNER_HTML) {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === TAG_PROPERTIES.CSS_TEXT) {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n\n newElement.setAttribute(HELMET_ATTRIBUTE, \"true\"); // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n\n if (oldTags.some(function (existingTag, index) {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n\n oldTags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n newTags.forEach(function (tag) {\n return headElement.appendChild(tag);\n });\n return {\n oldTags: oldTags,\n newTags: newTags\n };\n};\n\nvar generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {\n return Object.keys(attributes).reduce(function (str, key) {\n var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n return str ? str + \" \" + attr : attr;\n }, \"\");\n};\n\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {\n var attributeString = generateElementAttributesAsString(attributes);\n var flattenedTitle = flattenArray(title);\n return attributeString ? \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"</\" + type + \">\" : \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"</\" + type + \">\";\n};\n\nvar generateTagsAsString = function generateTagsAsString(type, tags, encode) {\n return tags.reduce(function (str, tag) {\n var attributeHtml = Object.keys(tag).filter(function (attribute) {\n return !(attribute === TAG_PROPERTIES.INNER_HTML || attribute === TAG_PROPERTIES.CSS_TEXT);\n }).reduce(function (string, attribute) {\n var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute], encode) + \"\\\"\";\n return string ? string + \" \" + attr : attr;\n }, \"\");\n var tagContent = tag.innerHTML || tag.cssText || \"\";\n var isSelfClosing = SELF_CLOSING_TAGS.indexOf(type) === -1;\n return str + \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"</\" + type + \">\");\n }, \"\");\n};\n\nvar convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {\n var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Object.keys(attributes).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key] || key] = attributes[key];\n return obj;\n }, initProps);\n};\n\nvar convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {\n var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Object.keys(props).reduce(function (obj, key) {\n obj[HTML_TAG_MAP[key] || key] = props[key];\n return obj;\n }, initAttributes);\n};\n\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n var _initProps; // assigning into an array to define toString function on it\n\n\n var initProps = (_initProps = {\n key: title\n }, _initProps[HELMET_ATTRIBUTE] = true, _initProps);\n var props = convertElementAttributestoReactProps(attributes, initProps);\n return [React.createElement(TAG_NAMES.TITLE, props, title)];\n};\n\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n return tags.map(function (tag, i) {\n var _mappedTag;\n\n var mappedTag = (_mappedTag = {\n key: i\n }, _mappedTag[HELMET_ATTRIBUTE] = true, _mappedTag);\n Object.keys(tag).forEach(function (attribute) {\n var mappedAttribute = REACT_TAG_MAP[attribute] || attribute;\n\n if (mappedAttribute === TAG_PROPERTIES.INNER_HTML || mappedAttribute === TAG_PROPERTIES.CSS_TEXT) {\n var content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = {\n __html: content\n };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n return React.createElement(type, mappedTag);\n });\n};\n\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n switch (type) {\n case TAG_NAMES.TITLE:\n return {\n toComponent: function toComponent() {\n return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);\n },\n toString: function toString() {\n return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);\n }\n };\n\n case ATTRIBUTE_NAMES.BODY:\n case ATTRIBUTE_NAMES.HTML:\n return {\n toComponent: function toComponent() {\n return convertElementAttributestoReactProps(tags);\n },\n toString: function toString() {\n return generateElementAttributesAsString(tags);\n }\n };\n\n default:\n return {\n toComponent: function toComponent() {\n return generateTagsAsReactComponent(type, tags);\n },\n toString: function toString() {\n return generateTagsAsString(type, tags, encode);\n }\n };\n }\n};\n\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n var baseTag = _ref.baseTag,\n bodyAttributes = _ref.bodyAttributes,\n encode = _ref.encode,\n htmlAttributes = _ref.htmlAttributes,\n linkTags = _ref.linkTags,\n metaTags = _ref.metaTags,\n noscriptTags = _ref.noscriptTags,\n scriptTags = _ref.scriptTags,\n styleTags = _ref.styleTags,\n _ref$title = _ref.title,\n title = _ref$title === undefined ? \"\" : _ref$title,\n titleAttributes = _ref.titleAttributes;\n return {\n base: getMethodsForTag(TAG_NAMES.BASE, baseTag, encode),\n bodyAttributes: getMethodsForTag(ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n htmlAttributes: getMethodsForTag(ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n link: getMethodsForTag(TAG_NAMES.LINK, linkTags, encode),\n meta: getMethodsForTag(TAG_NAMES.META, metaTags, encode),\n noscript: getMethodsForTag(TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n script: getMethodsForTag(TAG_NAMES.SCRIPT, scriptTags, encode),\n style: getMethodsForTag(TAG_NAMES.STYLE, styleTags, encode),\n title: getMethodsForTag(TAG_NAMES.TITLE, {\n title: title,\n titleAttributes: titleAttributes\n }, encode)\n };\n};\n\nvar Helmet = function Helmet(Component) {\n var _class, _temp;\n\n return _temp = _class = function (_React$Component) {\n inherits(HelmetWrapper, _React$Component);\n\n function HelmetWrapper() {\n classCallCheck(this, HelmetWrapper);\n return possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !isEqual(this.props, nextProps);\n };\n\n HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n if (!nestedChildren) {\n return null;\n }\n\n switch (child.type) {\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.NOSCRIPT:\n return {\n innerHTML: nestedChildren\n };\n\n case TAG_NAMES.STYLE:\n return {\n cssText: nestedChildren\n };\n }\n\n throw new Error(\"<\" + child.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n };\n\n HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n var _babelHelpers$extends;\n\n var child = _ref.child,\n arrayTypeChildren = _ref.arrayTypeChildren,\n newChildProps = _ref.newChildProps,\n nestedChildren = _ref.nestedChildren;\n return _extends({}, arrayTypeChildren, (_babelHelpers$extends = {}, _babelHelpers$extends[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _babelHelpers$extends));\n };\n\n HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n var _babelHelpers$extends2, _babelHelpers$extends3;\n\n var child = _ref2.child,\n newProps = _ref2.newProps,\n newChildProps = _ref2.newChildProps,\n nestedChildren = _ref2.nestedChildren;\n\n switch (child.type) {\n case TAG_NAMES.TITLE:\n return _extends({}, newProps, (_babelHelpers$extends2 = {}, _babelHelpers$extends2[child.type] = nestedChildren, _babelHelpers$extends2.titleAttributes = _extends({}, newChildProps), _babelHelpers$extends2));\n\n case TAG_NAMES.BODY:\n return _extends({}, newProps, {\n bodyAttributes: _extends({}, newChildProps)\n });\n\n case TAG_NAMES.HTML:\n return _extends({}, newProps, {\n htmlAttributes: _extends({}, newChildProps)\n });\n }\n\n return _extends({}, newProps, (_babelHelpers$extends3 = {}, _babelHelpers$extends3[child.type] = _extends({}, newChildProps), _babelHelpers$extends3));\n };\n\n HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n var newFlattenedProps = _extends({}, newProps);\n\n Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n var _babelHelpers$extends4;\n\n newFlattenedProps = _extends({}, newFlattenedProps, (_babelHelpers$extends4 = {}, _babelHelpers$extends4[arrayChildName] = arrayTypeChildren[arrayChildName], _babelHelpers$extends4));\n });\n return newFlattenedProps;\n };\n\n HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!VALID_TAG_NAMES.some(function (name) {\n return child.type === name;\n })) {\n if (typeof child.type === \"function\") {\n return warn(\"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.\");\n }\n\n return warn(\"Only elements types \" + VALID_TAG_NAMES.join(\", \") + \" are allowed. Helmet does not support rendering <\" + child.type + \"> elements. Refer to our API for more information.\");\n }\n\n if (nestedChildren && typeof nestedChildren !== \"string\" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {\n return typeof nestedChild !== \"string\";\n }))) {\n throw new Error(\"Helmet expects a string as a child of <\" + child.type + \">. Did you forget to wrap your children in braces? ( <\" + child.type + \">{``}</\" + child.type + \"> ) Refer to our API for more information.\");\n }\n }\n\n return true;\n };\n\n HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n var _this2 = this;\n\n var arrayTypeChildren = {};\n React.Children.forEach(children, function (child) {\n if (!child || !child.props) {\n return;\n }\n\n var _child$props = child.props,\n nestedChildren = _child$props.children,\n childProps = objectWithoutProperties(_child$props, [\"children\"]);\n var newChildProps = convertReactPropstoHtmlAttributes(childProps);\n\n _this2.warnOnInvalidChildren(child, nestedChildren);\n\n switch (child.type) {\n case TAG_NAMES.LINK:\n case TAG_NAMES.META:\n case TAG_NAMES.NOSCRIPT:\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.STYLE:\n arrayTypeChildren = _this2.flattenArrayTypeChildren({\n child: child,\n arrayTypeChildren: arrayTypeChildren,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n\n default:\n newProps = _this2.mapObjectTypeChildren({\n child: child,\n newProps: newProps,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n }\n });\n newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n return newProps;\n };\n\n HelmetWrapper.prototype.render = function render() {\n var _props = this.props,\n children = _props.children,\n props = objectWithoutProperties(_props, [\"children\"]);\n\n var newProps = _extends({}, props);\n\n if (children) {\n newProps = this.mapChildrenToProps(children, newProps);\n }\n\n return React.createElement(Component, newProps);\n };\n\n createClass(HelmetWrapper, null, [{\n key: \"canUseDOM\",\n // Component.peek comes from react-side-effect:\n // For testing, you may use a static peek() method available on the returned component.\n // It lets you get the current state without resetting the mounted instance stack.\n // Don’t use it for anything other than testing.\n\n /**\n * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n * @param {Object} bodyAttributes: {\"className\": \"root\"}\n * @param {String} defaultTitle: \"Default Title\"\n * @param {Boolean} defer: true\n * @param {Boolean} encodeSpecialCharacters: true\n * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n * @param {Array} noscript: [{\"innerHTML\": \"<img src='http://mysite.com/js/test.js'\"}]\n * @param {Function} onChangeClientState: \"(newState) => console.log(newState)\"\n * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n * @param {String} title: \"Title\"\n * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n * @param {String} titleTemplate: \"MySite.com - %s\"\n */\n set: function set$$1(canUseDOM) {\n Component.canUseDOM = canUseDOM;\n }\n }]);\n return HelmetWrapper;\n }(React.Component), _class.propTypes = {\n base: PropTypes.object,\n bodyAttributes: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n defaultTitle: PropTypes.string,\n defer: PropTypes.bool,\n encodeSpecialCharacters: PropTypes.bool,\n htmlAttributes: PropTypes.object,\n link: PropTypes.arrayOf(PropTypes.object),\n meta: PropTypes.arrayOf(PropTypes.object),\n noscript: PropTypes.arrayOf(PropTypes.object),\n onChangeClientState: PropTypes.func,\n script: PropTypes.arrayOf(PropTypes.object),\n style: PropTypes.arrayOf(PropTypes.object),\n title: PropTypes.string,\n titleAttributes: PropTypes.object,\n titleTemplate: PropTypes.string\n }, _class.defaultProps = {\n defer: true,\n encodeSpecialCharacters: true\n }, _class.peek = Component.peek, _class.rewind = function () {\n var mappedState = Component.rewind();\n\n if (!mappedState) {\n // provide fallback if mappedState is undefined\n mappedState = mapStateOnServer({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: true,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: \"\",\n titleAttributes: {}\n });\n }\n\n return mappedState;\n }, _temp;\n};\n\nvar NullComponent = function NullComponent() {\n return null;\n};\n\nvar HelmetSideEffects = withSideEffect(reducePropsToState, handleClientStateChange, mapStateOnServer)(NullComponent);\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\nexport default HelmetExport;\nexport { HelmetExport as Helmet };","// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer !== 'undefined' && typeof DataView !== 'undefined';\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict'; // If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function (qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n var maxKeys = 1000;\n\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length; // maxKeys <= 0 means that we should not limit keys count\n\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr,\n vstr,\n k,\n v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};","\"use strict\";\n\nvar _defineProperty = require(\"/Users/AdamLiu/Code/golang-workspace/ubuntu/src/github.com/adamliuio/blogga/adam-notes-site/node_modules/@babel/runtime/helpers/defineProperty\");\n\nvar _slicedToArray = require(\"/Users/AdamLiu/Code/golang-workspace/ubuntu/src/github.com/adamliuio/blogga/adam-notes-site/node_modules/@babel/runtime/helpers/slicedToArray\");\n\nrequire(\"core-js/modules/es.array.reduce.js\");\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.useStackedPage = exports.useStackedPages = exports.useStackedPagesProvider = void 0;\n\nvar react_1 = require(\"react\");\n\nvar gatsby_1 = require(\"gatsby\");\n\nvar querystring_1 = __importDefault(require(\"querystring\"));\n\nvar lodash_throttle_1 = __importDefault(require(\"lodash.throttle\"));\n\nvar lodash_isequal_1 = __importDefault(require(\"lodash.isequal\"));\n\nvar contexts_1 = require(\"./contexts\");\n\nvar throttleTime = 16;\nvar obstructedOffset = 120;\n\nfunction useScroll() {\n var containerRef = react_1.useRef(null);\n\n var _react_1$useState = react_1.useState(0),\n _react_1$useState2 = _slicedToArray(_react_1$useState, 2),\n scroll = _react_1$useState2[0],\n setScroll = _react_1$useState2[1];\n\n var _react_1$useState3 = react_1.useState(0),\n _react_1$useState4 = _slicedToArray(_react_1$useState3, 2),\n width = _react_1$useState4[0],\n setWidth = _react_1$useState4[1];\n\n var scrollObserver = react_1.useCallback(function () {\n if (!containerRef.current) {\n return;\n }\n\n setScroll(containerRef.current.scrollLeft);\n setWidth(containerRef.current.getBoundingClientRect().width);\n }, [setScroll, setWidth, containerRef]);\n var throttledScrollObserver = lodash_throttle_1.default(scrollObserver, throttleTime);\n var setRef = react_1.useCallback(function (node) {\n if (node) {\n // When the ref is first set (after mounting)\n node.addEventListener(\"scroll\", throttledScrollObserver);\n containerRef.current = node;\n window.addEventListener(\"resize\", throttledScrollObserver);\n throttledScrollObserver(); // initialization\n } else if (containerRef.current) {\n // When unmounting\n containerRef.current.removeEventListener(\"scroll\", throttledScrollObserver);\n window.removeEventListener(\"resize\", throttledScrollObserver);\n }\n }, []);\n return [scroll, width, setRef, containerRef];\n}\n\nfunction getRoot(firstPage, processPageQuery) {\n return firstPage ? [processPageQuery ? {\n data: processPageQuery(firstPage.data, firstPage.slug),\n slug: firstPage.slug\n } : firstPage] : [];\n}\n\nfunction useStackedPagesProvider(_ref) {\n var location = _ref.location,\n processPageQuery = _ref.processPageQuery,\n firstPage = _ref.firstPage,\n _ref$pageWidth = _ref.pageWidth,\n pageWidth = _ref$pageWidth === void 0 ? 625 : _ref$pageWidth,\n _ref$obstructedPageWi = _ref.obstructedPageWidth,\n obstructedPageWidth = _ref$obstructedPageWi === void 0 ? 40 : _ref$obstructedPageWi;\n var previousFirstPage = react_1.useRef(firstPage);\n\n var _useScroll = useScroll(),\n _useScroll2 = _slicedToArray(_useScroll, 4),\n scroll = _useScroll2[0],\n containerWidth = _useScroll2[1],\n setRef = _useScroll2[2],\n containerRef = _useScroll2[3];\n\n var _react_1$useState5 = react_1.useState(getRoot(firstPage, processPageQuery)),\n _react_1$useState6 = _slicedToArray(_react_1$useState5, 2),\n stackedPages = _react_1$useState6[0],\n setStackedPages = _react_1$useState6[1];\n\n var _react_1$useState7 = react_1.useState(firstPage ? _defineProperty({}, firstPage.slug, {\n obstructed: false,\n highlighted: false,\n overlay: scroll > pageWidth - obstructedOffset,\n active: true\n }) : {}),\n _react_1$useState8 = _slicedToArray(_react_1$useState7, 2),\n stackedPageStates = _react_1$useState8[0],\n setStackedPageStates = _react_1$useState8[1];\n\n var stackedPagesSlugs = react_1.useMemo(function () {\n var res = querystring_1.default.parse(location.search.replace(/^\\?/, \"\")).stackedPages || [];\n\n if (typeof res === \"string\") {\n return [res];\n }\n\n return res;\n }, [location]);\n react_1.useEffect(function () {\n if (lodash_isequal_1.default(firstPage, previousFirstPage.current)) {\n return;\n }\n\n setStackedPages(function (pages) {\n return getRoot(firstPage, processPageQuery).concat(previousFirstPage.current ? pages.slice(1) : pages);\n });\n previousFirstPage.current = firstPage;\n }, [firstPage, processPageQuery, setStackedPages]);\n react_1.useEffect(function () {\n if (!window.___loader) {\n throw new Error(\"`react-stacked-pages-hook` can only be used with Gatsby\");\n }\n\n Promise.all( // hook into the internals of Gatsby to dynamically fetch the notes\n stackedPagesSlugs.map(function (slug) {\n return window.___loader.loadPage(slug);\n })).then(function (data) {\n return setStackedPages(getRoot(firstPage, processPageQuery).concat( // filter out 404s\n data.map(function (x, i) {\n return {\n slug: stackedPagesSlugs[i],\n data: processPageQuery ? processPageQuery(x.json.data, stackedPagesSlugs[i]) : x\n };\n }).filter(function (x) {\n return x.data;\n })));\n });\n }, [stackedPagesSlugs]);\n react_1.useEffect(function () {\n if (containerRef.current) {\n containerRef.current.scrollTo({\n top: 0,\n left: pageWidth * (stackedPages.length + 1),\n behavior: \"smooth\"\n });\n }\n }, [stackedPages, containerRef]); // on scroll or on new page\n\n react_1.useEffect(function () {\n var acc = {};\n\n if (!containerRef.current) {\n setStackedPageStates(stackedPages.reduce(function (prev, x, i, a) {\n prev[x.slug] = {\n overlay: true,\n obstructed: false,\n highlighted: false,\n active: i === a.length - 1\n };\n return prev;\n }, acc));\n return;\n }\n\n setStackedPageStates(stackedPages.reduce(function (prev, x, i, a) {\n prev[x.slug] = {\n highlighted: false,\n overlay: scroll > Math.max(pageWidth * (i - 1) - (obstructedPageWidth * i - 2), 0) || scroll < Math.max(0, pageWidth * (i - 2)),\n obstructed: scroll > Math.max(pageWidth * (i + 1) - obstructedOffset - obstructedPageWidth * (i - 1), 0) || scroll + containerWidth < pageWidth * i + obstructedOffset,\n active: i === a.length - 1\n };\n return prev;\n }, acc));\n }, [stackedPages, containerRef, scroll, setStackedPageStates]);\n var navigateToStackedPage = react_1.useCallback(function (to) {\n var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var existingPage = stackedPages.findIndex(function (x) {\n return x.slug === to;\n });\n\n if (existingPage !== -1 && containerRef && containerRef.current) {\n setStackedPageStates(function (stackedPageStates) {\n if (!stackedPageStates[to]) {\n return stackedPageStates;\n }\n\n return Object.keys(stackedPageStates).reduce(function (prev, slug) {\n prev[slug] = Object.assign(Object.assign({}, stackedPageStates[slug]), {\n highlighted: false,\n active: slug === to\n });\n return prev;\n }, {});\n });\n containerRef.current.scrollTo({\n top: 0,\n left: pageWidth * existingPage - (obstructedPageWidth * existingPage - 1),\n behavior: \"smooth\"\n });\n return;\n }\n\n var search = querystring_1.default.parse(window.location.search.replace(/^\\?/, \"\"));\n search.stackedPages = stackedPages.slice(1, index + 1).map(function (x) {\n return x.slug;\n }).concat(to);\n gatsby_1.navigate(\"\".concat(window.location.pathname.replace(gatsby_1.withPrefix(\"/\"), \"/\"), \"?\").concat(querystring_1.default.stringify(search)).replace(/^\\/\\//, \"/\"));\n }, [stackedPages, setStackedPageStates]);\n var highlightStackedPage = react_1.useCallback(function (slug, highlighted) {\n setStackedPageStates(function (stackedPageStates) {\n if (!stackedPageStates[slug]) {\n return stackedPageStates;\n }\n\n return Object.assign(Object.assign({}, stackedPageStates), _defineProperty({}, slug, Object.assign(Object.assign({}, stackedPageStates[slug]), {\n highlighted: typeof highlighted !== \"undefined\" ? highlighted : !stackedPageStates[slug].highlighted\n })));\n });\n }, [setStackedPageStates]);\n var contextValue = react_1.useMemo(function () {\n return {\n stackedPages: stackedPages,\n navigateToStackedPage: navigateToStackedPage,\n highlightStackedPage: highlightStackedPage,\n stackedPageStates: stackedPageStates\n };\n }, [stackedPages, navigateToStackedPage, highlightStackedPage, stackedPageStates]);\n return [contextValue, setRef];\n}\n\nexports.useStackedPagesProvider = useStackedPagesProvider;\n\nfunction useStackedPages() {\n var _react_1$useContext = react_1.useContext(contexts_1.StackedPagesContext),\n stackedPages = _react_1$useContext.stackedPages,\n stackedPageStates = _react_1$useContext.stackedPageStates,\n navigateToStackedPage = _react_1$useContext.navigateToStackedPage,\n highlightStackedPage = _react_1$useContext.highlightStackedPage;\n\n var index = react_1.useContext(contexts_1.StackedPagesIndexContext);\n var hookedNavigateToStackedPage = react_1.useCallback(function (to) {\n return navigateToStackedPage(to, index);\n }, [navigateToStackedPage, index]);\n return [stackedPages, stackedPageStates, hookedNavigateToStackedPage, highlightStackedPage];\n}\n\nexports.useStackedPages = useStackedPages;\n\nfunction useStackedPage() {\n var _react_1$useContext2 = react_1.useContext(contexts_1.StackedPagesContext),\n stackedPages = _react_1$useContext2.stackedPages,\n stackedPageStates = _react_1$useContext2.stackedPageStates,\n navigateToStackedPage = _react_1$useContext2.navigateToStackedPage,\n highlightStackedPage = _react_1$useContext2.highlightStackedPage;\n\n var index = react_1.useContext(contexts_1.StackedPagesIndexContext);\n var hookedNavigateToStackedPage = react_1.useCallback(function (to) {\n return navigateToStackedPage(to, index);\n }, [navigateToStackedPage, index]);\n var currentPage = stackedPages[index];\n return [currentPage, currentPage ? stackedPageStates[currentPage.slug] : {}, index, hookedNavigateToStackedPage, highlightStackedPage];\n}\n\nexports.useStackedPage = useStackedPage;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","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","function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nvar stringifyPrimitive = function stringifyPrimitive(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function (obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return map(objectKeys(obj), function (k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n\n if (isArray(obj[k])) {\n return map(obj[k], function (v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq + encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map(xs, f) {\n if (xs.map) return xs.map(f);\n var res = [];\n\n for (var i = 0; i < xs.length; i++) {\n res.push(f(xs[i], i));\n }\n\n return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n var res = [];\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n }\n\n return res;\n};","require(\"core-js/modules/es.array.sort.js\");\n\n//! moment.js\n//! version : 2.29.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.moment = factory();\n})(this, function () {\n 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n } // This is done to register the method called with moment()\n // without creating circular dependencies.\n\n\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n }\n\n function isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n }\n\n function map(arr, fn) {\n var res = [],\n i;\n\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n\n return m._pf;\n }\n\n var some;\n\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function some(fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid = !isNaN(m._d.getTime()) && flags.overflow < 0 && !flags.empty && !flags.invalidEra && !flags.invalidMonth && !flags.invalidWeekday && !flags.weekdayMismatch && !flags.nullInput && !flags.invalidFormat && !flags.userInvalidated && (!flags.meridiem || flags.meridiem && parsedParts);\n\n if (m._strict) {\n isNowValid = isNowValid && flags.charsLeftOver === 0 && flags.unusedTokens.length === 0 && flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n } // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n\n\n var momentProperties = hooks.momentProperties = [],\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n } // Moment prototype object\n\n\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n\n if (!this.isValid()) {\n this._d = new Date(NaN);\n } // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n\n\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return obj instanceof Moment || obj != null && obj._isAMomentObject != null;\n }\n\n function warn(msg) {\n if (hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n\n if (firstTime) {\n var args = [],\n arg,\n i,\n key;\n\n for (i = 0; i < arguments.length; i++) {\n arg = '';\n\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n\n args.push(arg);\n }\n\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + new Error().stack);\n firstTime = false;\n }\n\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return typeof Function !== 'undefined' && input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n\n function set(config) {\n var prop, i;\n\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n\n this._config = config; // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n\n this._dayOfMonthOrdinalParseLenient = new RegExp((this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + '|' + /\\d{1,2}/.source);\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) && !hasOwnProp(childConfig, prop) && isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function keys(obj) {\n var i,\n res = [];\n\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? forceSign ? '+' : '' : '-') + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {}; // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n\n if (typeof callback === 'string') {\n func = function func() {\n return this[callback]();\n };\n }\n\n if (token) {\n formatTokenFunctions[token] = func;\n }\n\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n\n for (i = 0; i < length; i++) {\n output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n }\n\n return output;\n };\n } // format date using native date object\n\n\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A'\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper.match(formattingTokens).map(function (tok) {\n if (tok === 'MMMM' || tok === 'MM' || tok === 'DD' || tok === 'dddd') {\n return tok.slice(1);\n }\n\n return tok;\n }).join('');\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output) ? output(number, withoutSuffix, string, isFuture) : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({\n unit: u,\n priority: priorities[u]\n });\n }\n }\n\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid() ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {\n value = toInt(value);\n\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n } // MOMENTS\n\n\n function stringGet(units) {\n units = normalizeUnits(units);\n\n if (isFunction(this[units])) {\n return this[units]();\n }\n\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i;\n\n for (i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n\n return this;\n }\n\n var match1 = /\\d/,\n // 0 - 9\n match2 = /\\d\\d/,\n // 00 - 99\n match3 = /\\d{3}/,\n // 000 - 999\n match4 = /\\d{4}/,\n // 0000 - 9999\n match6 = /[+-]?\\d{6}/,\n // -999999 - 999999\n match1to2 = /\\d\\d?/,\n // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/,\n // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/,\n // 99999 - 999999\n match1to3 = /\\d{1,3}/,\n // 0 - 999\n match1to4 = /\\d{1,4}/,\n // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/,\n // -999999 - 999999\n matchUnsigned = /\\d+/,\n // 0 - inf\n matchSigned = /[+-]?\\d+/,\n // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi,\n // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi,\n // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/,\n // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n } // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n\n\n function unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback;\n\n if (typeof token === 'string') {\n token = [token];\n }\n\n if (isNumber(callback)) {\n func = function func(input, array) {\n array[callback] = toInt(input);\n };\n }\n\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return (n % x + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function indexOf(o) {\n // I know\n var i;\n\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1 ? isLeapYear(year) ? 29 : 28 : 31 - modMonth % 7 % 2;\n } // FORMATTING\n\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n }); // ALIASES\n\n addUnitAlias('month', 'M'); // PRIORITY\n\n addUnitPriority('month', 8); // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict); // if we didn't find a month name, mark the date as invalid.\n\n\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n }); // LOCALES\n\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months) ? this._months : this._months['standalone'];\n }\n\n return isArray(this._months) ? this._months[m.month()] : this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort) ? this._monthsShort : this._monthsShort['standalone'];\n }\n\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] : this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n\n if (ii !== -1) {\n return ii;\n }\n\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n\n if (ii !== -1) {\n return ii;\n }\n\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n } // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n\n\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n } // test the regex\n\n\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n } // MOMENTS\n\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value); // TODO: Another silent failure?\n\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n\n return this._monthsShortStrictRegex && isStrict ? this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n\n return this._monthsStrictRegex && isStrict ? this._monthsStrictRegex : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n } // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n\n\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n } // FORMATTING\n\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); // ALIASES\n\n addUnitAlias('year', 'y'); // PRIORITIES\n\n addUnitPriority('year', 1); // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n }); // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n } // HOOKS\n\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n }; // MOMENTS\n\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date; // the date constructor remaps years 0-99 to 1900-1999\n\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args; // the Date.UTC function remaps years 0-99 to 1900-1999\n\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments); // preserve leap years using a full 400 year cycle, then reset\n\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n } // start-of-first-week - start-of-year\n\n\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n return -fwdlw + fwd - 1;\n } // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n\n\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n } // FORMATTING\n\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W'); // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5); // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }); // HELPERS\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n } // MOMENTS\n\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n } // FORMATTING\n\n\n addFormatToken('d', 0, 'do', 'day');\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday'); // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E'); // PRIORITY\n\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11); // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict); // if we didn't get a weekday name, mark the date as invalid\n\n\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n }); // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n\n return isNaN(input) ? null : input;\n } // LOCALES\n\n\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays) ? this._weekdays : this._weekdays[m && m !== true && this._weekdays.isFormat.test(format) ? 'format' : 'standalone'];\n return m === true ? shiftWeekdays(weekdays, this._week.dow) : m ? weekdays[m.day()] : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true ? shiftWeekdays(this._weekdaysShort, this._week.dow) : m ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true ? shiftWeekdays(this._weekdaysMin, this._week.dow) : m ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n\n if (ii !== -1) {\n return ii;\n }\n\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n\n if (ii !== -1) {\n return ii;\n }\n\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n\n if (ii !== -1) {\n return ii;\n }\n\n ii = indexOf.call(this._weekdaysParse, llc);\n\n if (ii !== -1) {\n return ii;\n }\n\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n\n if (ii !== -1) {\n return ii;\n }\n\n ii = indexOf.call(this._weekdaysParse, llc);\n\n if (ii !== -1) {\n return ii;\n }\n\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$', 'i');\n }\n\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n } // test the regex\n\n\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n } // MOMENTS\n\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n } // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n\n return this._weekdaysStrictRegex && isStrict ? this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n\n return this._weekdaysShortStrictRegex && isStrict ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n\n return this._weekdaysMinStrictRegex && isStrict ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n } // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n\n\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n } // FORMATTING\n\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n addFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2);\n });\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n addFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2);\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n }\n\n meridiem('a', true);\n meridiem('A', false); // ALIASES\n\n addUnitAlias('hour', 'h'); // PRIORITY\n\n addUnitPriority('hour', 13); // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n }); // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n week: defaultLocaleWeek,\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n meridiemParse: defaultLocaleMeridiemParse\n }; // internal storage for locale config files\n\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n } // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n\n\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n\n if (locale) {\n return locale;\n }\n\n if (next && next.length >= j && commonPrefix(split, next) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n\n j--;\n }\n\n i++;\n }\n\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire; // TODO: Find a better way to register and load all the locales in Node\n\n if (locales[name] === undefined && typeof module !== 'undefined' && module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n\n return locales[name];\n } // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n\n\n function getSetGlobalLocale(key, values) {\n var data;\n\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn('Locale ' + key + ' not found. Did you forget to load it?');\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n\n if (locales[name] != null) {\n deprecateSimple('defineLocaleOverride', 'use moment.updateLocale(localeName, config) to change ' + 'an existing locale. moment.defineLocale(localeName, ' + 'config) should only be used for creating a new locale ' + 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config\n });\n return null;\n }\n }\n }\n\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n } // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n\n\n getSetGlobalLocale(name);\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n\n config = mergeConfigs(parentConfig, config);\n\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n } // backwards compat for now: also set the locale\n\n\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n\n return locales[name];\n } // returns locale data\n\n\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n\n if (locale) {\n return locale;\n }\n\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow = a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : a[HOUR] < 0 || a[HOUR] > 24 || a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0) ? HOUR : a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : -1;\n\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n } // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n\n\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/], ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/], ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/], ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false], ['YYYY-DDD', /\\d{4}-\\d{3}/], ['YYYY-MM', /\\d{4}-\\d\\d/, false], ['YYYYYYMMDD', /[+-]\\d{10}/], ['YYYYMMDD', /\\d{8}/], ['GGGG[W]WWE', /\\d{4}W\\d{3}/], ['GGGG[W]WW', /\\d{4}W\\d{2}/, false], ['YYYYDDD', /\\d{7}/], ['YYYYMM', /\\d{6}/, false], ['YYYY', /\\d{4}/, false]],\n // iso time formats and regexes\n isoTimes = [['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/], ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/], ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/], ['HH:mm', /\\d\\d:\\d\\d/], ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/], ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/], ['HHmmss', /\\d\\d\\d\\d\\d\\d/], ['HHmm', /\\d\\d\\d\\d/], ['HH', /\\d\\d/]],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60\n }; // date from iso format\n\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n var result = [untruncateYear(yearStr), defaultLocaleMonthsShort.indexOf(monthStr), parseInt(dayStr, 10), parseInt(hourStr, 10), parseInt(minuteStr, 10)];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s.replace(/\\([^)]*\\)|[\\n\\t]/g, ' ').replace(/(\\s\\s+)/g, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n } // date and time from ref 2822 format\n\n\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n\n if (match) {\n parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n config._d = createUTCDate.apply(null, config._a);\n\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n } // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n\n\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate('value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.', function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }); // Pick the first defined of two or three arguments.\n\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n\n if (b != null) {\n return b;\n }\n\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n } // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n\n\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config); //compute day of the year from weeks and weekdays\n\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n } //if the day of the year is set, figure out what it is\n\n\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n } // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n\n\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n } // Zero out whatever was not defaulted, including time\n\n\n for (; i < 7; i++) {\n config._a[i] = input[i] = config._a[i] == null ? i === 2 ? 1 : 0 : config._a[i];\n } // Check for 24:00:00.000\n\n\n if (config._a[HOUR] === 24 && config._a[MINUTE] === 0 && config._a[SECOND] === 0 && config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay(); // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n } // check for mismatching day of week\n\n\n if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n w = config._w;\n\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4; // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n curWeek = weekOfYear(createLocal(), dow, doy);\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); // Default to current week.\n\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n } // constant that refers to the ISO standard\n\n\n hooks.ISO_8601 = function () {}; // constant that refers to the RFC 2822 form\n\n\n hooks.RFC_2822 = function () {}; // date from string and format string\n\n\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n\n config._a = [];\n getParsingFlags(config).empty = true; // This array is used to make a Date, either with `new Date` or `Date.UTC`\n\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era;\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n } // don't parse if it's not a known token\n\n\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n } // add remaining unparsed input length to the string\n\n\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n } // clear _12h flag if hour is <= 12\n\n\n if (config._a[HOUR] <= 12 && getParsingFlags(config).bigHour === true && config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem; // handle meridiem\n\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); // handle era\n\n era = getParsingFlags(config).era;\n\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n\n if (isPm && hour < 12) {\n hour += 12;\n }\n\n if (!isPm && hour === 12) {\n hour = 0;\n }\n\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n } // date from string and array of format strings\n\n\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n } // if there is any input that was not parsed add a penalty for that format\n\n\n currentScore += getParsingFlags(tempConfig).charsLeftOver; //or tokens\n\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (scoreToBeat == null || currentScore < scoreToBeat || validFormatFound) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map([i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || format === undefined && input === '') {\n return createInvalid({\n nullInput: true\n });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (isObject(input) && isObjectEmpty(input) || isArray(input) && input.length === 0) {\n input = undefined;\n } // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n\n\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate('moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', function () {\n var other = createLocal.apply(null, arguments);\n\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }),\n prototypeMax = deprecate('moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', function () {\n var other = createLocal.apply(null, arguments);\n\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }); // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n\n function pickBy(fn, moments) {\n var res, i;\n\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n\n if (!moments.length) {\n return createLocal();\n }\n\n res = moments[0];\n\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n\n return res;\n } // TODO: Use [].sort instead?\n\n\n function min() {\n var args = [].slice.call(arguments, 0);\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n return pickBy('isAfter', args);\n }\n\n var now = function now() {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i;\n\n for (key in m) {\n if (hasOwnProp(m, key) && !(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n return false;\n }\n }\n\n for (i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n this._isValid = isDurationValid(normalizedInput); // representation for dateAddRemove\n\n this._milliseconds = +milliseconds + seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n\n this._days = +days + weeks * 7; // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n\n this._months = +months + quarters * 3 + years * 12;\n this._data = {};\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n } // compare two arrays, return the number of differences\n\n\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (dontConvert && array1[i] !== array2[i] || !dontConvert && toInt(array1[i]) !== toInt(array2[i])) {\n diffs++;\n }\n }\n\n return diffs + lengthDiff;\n } // FORMATTING\n\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~offset % 60, 2);\n });\n }\n\n offset('Z', ':');\n offset('ZZ', ''); // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n }); // HELPERS\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n } // Return a moment from input, that is local/utc/zone equivalent to model.\n\n\n function cloneWithOffset(input, model) {\n var res, diff;\n\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf(); // Use low-level api, because this fn is low-level api.\n\n res._d.setTime(res._d.valueOf() + diff);\n\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n } // HOOKS\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n\n\n hooks.updateOffset = function () {}; // MOMENTS\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n\n\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n\n this._offset = input;\n this._isUTC = true;\n\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n\n input = input ? createLocal(input).utcOffset() : 0;\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset();\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n } // ASP.NET json date format regex\n\n\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if (match = aspNetRegex.exec(input)) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n\n };\n } else if (match = isoRegex.exec(input)) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign)\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.')); // apply sign while we're at it\n\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n res.months = other.month() - base.month() + (other.year() - base.year()) * 12;\n\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n\n if (!(base.isValid() && other.isValid())) {\n return {\n milliseconds: 0,\n months: 0\n };\n }\n\n other = cloneWithOffset(other, base);\n\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n } // TODO: remove 'name' arg after deprecation is removed\n\n\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp; //invert the arguments, but complain about it\n\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n } // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n\n\n function isMomentInput(input) {\n return isMoment(input) || isDate(input) || isString(input) || isNumber(input) || isNumberOrStringArray(input) || isMomentInputObject(input) || input === null || input === undefined;\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = ['years', 'year', 'y', 'months', 'month', 'M', 'days', 'day', 'd', 'dates', 'date', 'D', 'hours', 'hour', 'h', 'minutes', 'minute', 'm', 'seconds', 'second', 's', 'milliseconds', 'millisecond', 'ms'],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n\n if (arrayTest) {\n dataTypeTest = input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = ['sameDay', 'nextDay', 'lastDay', 'nextWeek', 'lastWeek', 'sameElse'],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' : diff < -1 ? 'lastWeek' : diff < 0 ? 'lastDay' : diff < 1 ? 'sameDay' : diff < 2 ? 'nextDay' : diff < 7 ? 'nextWeek' : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n } // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n\n\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n\n units = normalizeUnits(units) || 'millisecond';\n\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n\n units = normalizeUnits(units) || 'millisecond';\n\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) && (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n\n units = normalizeUnits(units) || 'millisecond';\n\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n\n case 'month':\n output = monthDiff(this, that);\n break;\n\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n\n case 'second':\n output = (this - that) / 1e3;\n break;\n // 1000\n\n case 'minute':\n output = (this - that) / 6e4;\n break;\n // 1000 * 60\n\n case 'hour':\n output = (this - that) / 36e5;\n break;\n // 1000 * 60 * 60\n\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break;\n // 1000 * 60 * 60 * 24, negate dst\n\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break;\n // 1000 * 60 * 60 * 24 * 7, negate dst\n\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n } // difference in months\n\n\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); // linear across the month\n\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); // linear across the month\n\n adjust = (b - anchor) / (anchor2 - anchor);\n } //check for negative zero, return zero if negative zero\n\n\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));\n }\n }\n\n return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n\n\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) {\n return createDuration({\n to: this,\n from: time\n }).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) {\n return createDuration({\n from: this,\n to: time\n }).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n } // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n\n\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n\n return this;\n }\n }\n\n var lang = deprecate('moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n });\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR; // actual modulo - handles negative numbers (for dates before 1970):\n\n function mod$1(dividend, divisor) {\n return (dividend % divisor + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3, 1);\n break;\n\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday());\n break;\n\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1));\n break;\n\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR);\n break;\n\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3 + 3, 1) - 1;\n break;\n\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday() + 7) - 1;\n break;\n\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1;\n break;\n\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n\n case 'hour':\n time = this._d.valueOf();\n time += MS_PER_HOUR - mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR) - 1;\n break;\n\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds()\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n });\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1; // truncate time\n\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until || eras[i].until <= val && val <= eras[i].since) {\n return (this.year() - hooks(eras[i].since).year()) * dir + eras[i].offset;\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp('^(' + narrowPieces.join('|') + ')', 'i');\n } // FORMATTING\n\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear'); // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG'); // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1); // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n });\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n }); // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(this, input, this.week(), this.weekday(), this.localeData()._week.dow, this.localeData()._week.doy);\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(this, input, this.isoWeek(), this.isoWeekday(), 1, 4);\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n } // FORMATTING\n\n\n addFormatToken('Q', 0, 'Qo', 'quarter'); // ALIASES\n\n addUnitAlias('quarter', 'Q'); // PRIORITY\n\n addUnitPriority('quarter', 7); // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n }); // MOMENTS\n\n function getSetQuarter(input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n } // FORMATTING\n\n\n addFormatToken('D', ['DD', 2], 'Do', 'date'); // ALIASES\n\n addUnitAlias('date', 'D'); // PRIORITY\n\n addUnitPriority('date', 9); // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict ? locale._dayOfMonthOrdinalParse || locale._ordinalParse : locale._dayOfMonthOrdinalParseLenient;\n });\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n }); // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true); // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD'); // PRIORITY\n\n addUnitPriority('dayOfYear', 4); // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n }); // HELPERS\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n } // FORMATTING\n\n\n addFormatToken('m', ['mm', 2], 0, 'minute'); // ALIASES\n\n addUnitAlias('minute', 'm'); // PRIORITY\n\n addUnitPriority('minute', 14); // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE); // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false); // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second'); // ALIASES\n\n addUnitAlias('second', 's'); // PRIORITY\n\n addUnitPriority('second', 15); // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND); // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false); // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n }); // ALIASES\n\n addUnitAlias('millisecond', 'ms'); // PRIORITY\n\n addUnitPriority('millisecond', 16); // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n var token, getSetMillisecond;\n\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false); // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName'); // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n\n return out;\n } // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n\n\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [{\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD'\n }, {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC'\n }],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function ordinal(number) {\n var b = number % 10,\n output = toInt(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n }\n }); // Side effect imports\n\n hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n return duration._bubble();\n } // supports only 2.0-style add(1, 's') or add(duration)\n\n\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n } // supports only 2.0-style subtract(1, 's') or subtract(duration)\n\n\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays; // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n\n if (!(milliseconds >= 0 && days >= 0 && months >= 0 || milliseconds <= 0 && days <= 0 && months <= 0)) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n } // The following code bubbles up values, see the tests for\n // examples of what that means.\n\n\n data.milliseconds = milliseconds % 1000;\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n days += absFloor(hours / 24); // convert days to months\n\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays)); // 12 months -> 1 year\n\n years = absFloor(months / 12);\n months %= 12;\n data.days = days;\n data.months = months;\n data.years = years;\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return days * 4800 / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n\n var days,\n months,\n milliseconds = this._milliseconds;\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n\n switch (units) {\n case 'month':\n return months;\n\n case 'quarter':\n return months / 3;\n\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n\n case 'day':\n return days + milliseconds / 864e5;\n\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n } // TODO: Use this.as('ms')?\n\n\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n\n return this._milliseconds + this._days * 864e5 + this._months % 12 * 2592e6 + toInt(this._months / 12) * 31536e6;\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44,\n // a few seconds to seconds\n s: 45,\n // seconds to minute\n m: 45,\n // minutes to hour\n h: 22,\n // hours to day\n d: 26,\n // days to month/week\n w: null,\n // weeks to month\n M: 11 // months to year\n\n }; // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a = seconds <= thresholds.ss && ['s', seconds] || seconds < thresholds.s && ['ss', seconds] || minutes <= 1 && ['m'] || minutes < thresholds.m && ['mm', minutes] || hours <= 1 && ['h'] || hours < thresholds.h && ['hh', hours] || days <= 1 && ['d'] || days < thresholds.d && ['dd', days];\n\n if (thresholds.w != null) {\n a = a || weeks <= 1 && ['w'] || weeks < thresholds.w && ['ww', weeks];\n }\n\n a = a || months <= 1 && ['M'] || months < thresholds.M && ['MM', months] || years <= 1 && ['y'] || ['yy', years];\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n } // This function allows you to set the rounding function for relative time strings\n\n\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n\n return false;\n } // This function allows you to set a threshold for relative time strings\n\n\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n\n if (limit === undefined) {\n return thresholds[threshold];\n }\n\n thresholds[threshold] = limit;\n\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n } // 3600 seconds -> 60 minutes -> 1 hour\n\n\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60; // 12 months -> 1 year\n\n years = absFloor(months / 12);\n months %= 12; // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n return totalSign + 'P' + (years ? ymSign + years + 'Y' : '') + (months ? ymSign + months + 'M' : '') + (days ? daysSign + days + 'D' : '') + (hours || minutes || seconds ? 'T' : '') + (hours ? hmsSign + hours + 'H' : '') + (minutes ? hmsSign + minutes + 'M' : '') + (seconds ? hmsSign + s + 'S' : '');\n }\n\n var proto$2 = Duration.prototype;\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\n proto$2.lang = lang; // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf'); // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n }); //! moment.js\n\n hooks.version = '2.29.1';\n setHookCallback(createLocal);\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto; // currently HTML5 input type only supports 24-hour formats\n\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm',\n // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss',\n // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS',\n // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD',\n // <input type=\"date\" />\n TIME: 'HH:mm',\n // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss',\n // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS',\n // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW',\n // <input type=\"week\" />\n MONTH: 'YYYY-MM' // <input type=\"month\" />\n\n };\n return hooks;\n});","import React, { createContext, useContext } from \"react\"\n\nconst GatsbyMDXScopeContext = createContext({})\n\nexport const useMDXScope = scope => {\n const contextScope = useContext(GatsbyMDXScopeContext)\n return scope || contextScope\n}\n\nexport const MDXScopeProvider = ({ __mdxScope, children }) =>\n React.createElement(\n GatsbyMDXScopeContext.Provider,\n { value: __mdxScope },\n children\n )\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PageIndexProvider = exports.StackedPagesProvider = exports.StackedPagesIndexContext = exports.StackedPagesContext = void 0;\n\nvar react_1 = require(\"react\");\n\nexports.StackedPagesContext = react_1.createContext({\n stackedPages: [],\n stackedPageStates: {},\n navigateToStackedPage: function navigateToStackedPage() {},\n highlightStackedPage: function highlightStackedPage() {}\n});\nexports.StackedPagesIndexContext = react_1.createContext(0);\nexports.StackedPagesProvider = exports.StackedPagesContext.Provider;\nexports.PageIndexProvider = exports.StackedPagesIndexContext.Provider;","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');","import \"core-js/modules/es.typed-array.sort.js\";\nimport \"core-js/modules/es.array.reduce.js\";\nimport { typeOf as e, isElement as t, isValidElementType as n } from \"react-is\";\nimport r, { useState as o, useContext as s, useMemo as i, useEffect as a, useRef as c, createElement as u, useDebugValue as l, useLayoutEffect as d } from \"react\";\nimport h from \"shallowequal\";\nimport p from \"@emotion/stylis\";\nimport f from \"@emotion/unitless\";\nimport m from \"@emotion/is-prop-valid\";\nimport y from \"hoist-non-react-statics\";\n\nfunction v() {\n return (v = Object.assign || function (e) {\n for (var t = 1; t < arguments.length; t++) {\n var n = arguments[t];\n\n for (var r in n) {\n Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]);\n }\n }\n\n return e;\n }).apply(this, arguments);\n}\n\nvar g = function g(e, t) {\n for (var n = [e[0]], r = 0, o = t.length; r < o; r += 1) {\n n.push(t[r], e[r + 1]);\n }\n\n return n;\n},\n S = function S(t) {\n return null !== t && \"object\" == typeof t && \"[object Object]\" === (t.toString ? t.toString() : Object.prototype.toString.call(t)) && !e(t);\n},\n w = Object.freeze([]),\n E = Object.freeze({});\n\nfunction b(e) {\n return \"function\" == typeof e;\n}\n\nfunction _(e) {\n return \"production\" !== process.env.NODE_ENV && \"string\" == typeof e && e || e.displayName || e.name || \"Component\";\n}\n\nfunction N(e) {\n return e && \"string\" == typeof e.styledComponentId;\n}\n\nvar A = \"undefined\" != typeof process && (process.env.REACT_APP_SC_ATTR || process.env.SC_ATTR) || \"data-styled\",\n C = \"5.3.1\",\n I = \"undefined\" != typeof window && \"HTMLElement\" in window,\n P = Boolean(\"boolean\" == typeof SC_DISABLE_SPEEDY ? SC_DISABLE_SPEEDY : \"undefined\" != typeof process && void 0 !== process.env.REACT_APP_SC_DISABLE_SPEEDY && \"\" !== process.env.REACT_APP_SC_DISABLE_SPEEDY ? \"false\" !== process.env.REACT_APP_SC_DISABLE_SPEEDY && process.env.REACT_APP_SC_DISABLE_SPEEDY : \"undefined\" != typeof process && void 0 !== process.env.SC_DISABLE_SPEEDY && \"\" !== process.env.SC_DISABLE_SPEEDY ? \"false\" !== process.env.SC_DISABLE_SPEEDY && process.env.SC_DISABLE_SPEEDY : \"production\" !== process.env.NODE_ENV),\n O = {},\n R = \"production\" !== process.env.NODE_ENV ? {\n 1: \"Cannot create styled-component for component: %s.\\n\\n\",\n 2: \"Can't collect styles once you've consumed a `ServerStyleSheet`'s styles! `ServerStyleSheet` is a one off instance for each server-side render cycle.\\n\\n- Are you trying to reuse it across renders?\\n- Are you accidentally calling collectStyles twice?\\n\\n\",\n 3: \"Streaming SSR is only supported in a Node.js environment; Please do not try to call this method in the browser.\\n\\n\",\n 4: \"The `StyleSheetManager` expects a valid target or sheet prop!\\n\\n- Does this error occur on the client and is your target falsy?\\n- Does this error occur on the server and is the sheet falsy?\\n\\n\",\n 5: \"The clone method cannot be used on the client!\\n\\n- Are you running in a client-like environment on the server?\\n- Are you trying to run SSR on the client?\\n\\n\",\n 6: \"Trying to insert a new style tag, but the given Node is unmounted!\\n\\n- Are you using a custom target that isn't mounted?\\n- Does your document not have a valid head element?\\n- Have you accidentally removed a style tag manually?\\n\\n\",\n 7: 'ThemeProvider: Please return an object from your \"theme\" prop function, e.g.\\n\\n```js\\ntheme={() => ({})}\\n```\\n\\n',\n 8: 'ThemeProvider: Please make your \"theme\" prop an object.\\n\\n',\n 9: \"Missing document `<head>`\\n\\n\",\n 10: \"Cannot find a StyleSheet instance. Usually this happens if there are multiple copies of styled-components loaded at once. Check out this issue for how to troubleshoot and fix the common cases where this situation can happen: https://github.com/styled-components/styled-components/issues/1941#issuecomment-417862021\\n\\n\",\n 11: \"_This error was replaced with a dev-time warning, it will be deleted for v4 final._ [createGlobalStyle] received children which will not be rendered. Please use the component without passing children elements.\\n\\n\",\n 12: \"It seems you are interpolating a keyframe declaration (%s) into an untagged string. This was supported in styled-components v3, but is not longer supported in v4 as keyframes are now injected on-demand. Please wrap your string in the css\\\\`\\\\` helper which ensures the styles are injected correctly. See https://www.styled-components.com/docs/api#css\\n\\n\",\n 13: \"%s is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.\\n\\n\",\n 14: 'ThemeProvider: \"theme\" prop is required.\\n\\n',\n 15: \"A stylis plugin has been supplied that is not named. We need a name for each plugin to be able to prevent styling collisions between different stylis configurations within the same app. Before you pass your plugin to `<StyleSheetManager stylisPlugins={[]}>`, please make sure each plugin is uniquely-named, e.g.\\n\\n```js\\nObject.defineProperty(importedPlugin, 'name', { value: 'some-unique-name' });\\n```\\n\\n\",\n 16: \"Reached the limit of how many styled components may be created at group %s.\\nYou may only create up to 1,073,741,824 components. If you're creating components dynamically,\\nas for instance in your render method then you may be running into this limitation.\\n\\n\",\n 17: \"CSSStyleSheet could not be found on HTMLStyleElement.\\nHas styled-components' style tag been unmounted or altered by another script?\\n\"\n} : {};\n\nfunction D() {\n for (var e = arguments.length <= 0 ? void 0 : arguments[0], t = [], n = 1, r = arguments.length; n < r; n += 1) {\n t.push(n < 0 || arguments.length <= n ? void 0 : arguments[n]);\n }\n\n return t.forEach(function (t) {\n e = e.replace(/%[a-z]/, t);\n }), e;\n}\n\nfunction j(e) {\n for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++) {\n n[r - 1] = arguments[r];\n }\n\n throw \"production\" === process.env.NODE_ENV ? new Error(\"An error occurred. See https://git.io/JUIaE#\" + e + \" for more information.\" + (n.length > 0 ? \" Args: \" + n.join(\", \") : \"\")) : new Error(D.apply(void 0, [R[e]].concat(n)).trim());\n}\n\nvar T = function () {\n function e(e) {\n this.groupSizes = new Uint32Array(512), this.length = 512, this.tag = e;\n }\n\n var t = e.prototype;\n return t.indexOfGroup = function (e) {\n for (var t = 0, n = 0; n < e; n++) {\n t += this.groupSizes[n];\n }\n\n return t;\n }, t.insertRules = function (e, t) {\n if (e >= this.groupSizes.length) {\n for (var n = this.groupSizes, r = n.length, o = r; e >= o;) {\n (o <<= 1) < 0 && j(16, \"\" + e);\n }\n\n this.groupSizes = new Uint32Array(o), this.groupSizes.set(n), this.length = o;\n\n for (var s = r; s < o; s++) {\n this.groupSizes[s] = 0;\n }\n }\n\n for (var i = this.indexOfGroup(e + 1), a = 0, c = t.length; a < c; a++) {\n this.tag.insertRule(i, t[a]) && (this.groupSizes[e]++, i++);\n }\n }, t.clearGroup = function (e) {\n if (e < this.length) {\n var t = this.groupSizes[e],\n n = this.indexOfGroup(e),\n r = n + t;\n this.groupSizes[e] = 0;\n\n for (var o = n; o < r; o++) {\n this.tag.deleteRule(n);\n }\n }\n }, t.getGroup = function (e) {\n var t = \"\";\n if (e >= this.length || 0 === this.groupSizes[e]) return t;\n\n for (var n = this.groupSizes[e], r = this.indexOfGroup(e), o = r + n, s = r; s < o; s++) {\n t += this.tag.getRule(s) + \"/*!sc*/\\n\";\n }\n\n return t;\n }, e;\n}(),\n k = new Map(),\n x = new Map(),\n V = 1,\n B = function B(e) {\n if (k.has(e)) return k.get(e);\n\n for (; x.has(V);) {\n V++;\n }\n\n var t = V++;\n return \"production\" !== process.env.NODE_ENV && ((0 | t) < 0 || t > 1 << 30) && j(16, \"\" + t), k.set(e, t), x.set(t, e), t;\n},\n M = function M(e) {\n return x.get(e);\n},\n z = function z(e, t) {\n t >= V && (V = t + 1), k.set(e, t), x.set(t, e);\n},\n L = \"style[\" + A + '][data-styled-version=\"5.3.1\"]',\n G = new RegExp(\"^\" + A + '\\\\.g(\\\\d+)\\\\[id=\"([\\\\w\\\\d-]+)\"\\\\].*?\"([^\"]*)'),\n F = function F(e, t, n) {\n for (var r, o = n.split(\",\"), s = 0, i = o.length; s < i; s++) {\n (r = o[s]) && e.registerName(t, r);\n }\n},\n Y = function Y(e, t) {\n for (var n = (t.innerHTML || \"\").split(\"/*!sc*/\\n\"), r = [], o = 0, s = n.length; o < s; o++) {\n var i = n[o].trim();\n\n if (i) {\n var a = i.match(G);\n\n if (a) {\n var c = 0 | parseInt(a[1], 10),\n u = a[2];\n 0 !== c && (z(u, c), F(e, u, a[3]), e.getTag().insertRules(c, r)), r.length = 0;\n } else r.push(i);\n }\n }\n},\n q = function q() {\n return \"undefined\" != typeof window && void 0 !== window.__webpack_nonce__ ? window.__webpack_nonce__ : null;\n},\n H = function H(e) {\n var t = document.head,\n n = e || t,\n r = document.createElement(\"style\"),\n o = function (e) {\n for (var t = e.childNodes, n = t.length; n >= 0; n--) {\n var r = t[n];\n if (r && 1 === r.nodeType && r.hasAttribute(A)) return r;\n }\n }(n),\n s = void 0 !== o ? o.nextSibling : null;\n\n r.setAttribute(A, \"active\"), r.setAttribute(\"data-styled-version\", \"5.3.1\");\n var i = q();\n return i && r.setAttribute(\"nonce\", i), n.insertBefore(r, s), r;\n},\n $ = function () {\n function e(e) {\n var t = this.element = H(e);\n t.appendChild(document.createTextNode(\"\")), this.sheet = function (e) {\n if (e.sheet) return e.sheet;\n\n for (var t = document.styleSheets, n = 0, r = t.length; n < r; n++) {\n var o = t[n];\n if (o.ownerNode === e) return o;\n }\n\n j(17);\n }(t), this.length = 0;\n }\n\n var t = e.prototype;\n return t.insertRule = function (e, t) {\n try {\n return this.sheet.insertRule(t, e), this.length++, !0;\n } catch (e) {\n return !1;\n }\n }, t.deleteRule = function (e) {\n this.sheet.deleteRule(e), this.length--;\n }, t.getRule = function (e) {\n var t = this.sheet.cssRules[e];\n return void 0 !== t && \"string\" == typeof t.cssText ? t.cssText : \"\";\n }, e;\n}(),\n W = function () {\n function e(e) {\n var t = this.element = H(e);\n this.nodes = t.childNodes, this.length = 0;\n }\n\n var t = e.prototype;\n return t.insertRule = function (e, t) {\n if (e <= this.length && e >= 0) {\n var n = document.createTextNode(t),\n r = this.nodes[e];\n return this.element.insertBefore(n, r || null), this.length++, !0;\n }\n\n return !1;\n }, t.deleteRule = function (e) {\n this.element.removeChild(this.nodes[e]), this.length--;\n }, t.getRule = function (e) {\n return e < this.length ? this.nodes[e].textContent : \"\";\n }, e;\n}(),\n U = function () {\n function e(e) {\n this.rules = [], this.length = 0;\n }\n\n var t = e.prototype;\n return t.insertRule = function (e, t) {\n return e <= this.length && (this.rules.splice(e, 0, t), this.length++, !0);\n }, t.deleteRule = function (e) {\n this.rules.splice(e, 1), this.length--;\n }, t.getRule = function (e) {\n return e < this.length ? this.rules[e] : \"\";\n }, e;\n}(),\n J = I,\n X = {\n isServer: !I,\n useCSSOMInjection: !P\n},\n Z = function () {\n function e(e, t, n) {\n void 0 === e && (e = E), void 0 === t && (t = {}), this.options = v({}, X, {}, e), this.gs = t, this.names = new Map(n), this.server = !!e.isServer, !this.server && I && J && (J = !1, function (e) {\n for (var t = document.querySelectorAll(L), n = 0, r = t.length; n < r; n++) {\n var o = t[n];\n o && \"active\" !== o.getAttribute(A) && (Y(e, o), o.parentNode && o.parentNode.removeChild(o));\n }\n }(this));\n }\n\n e.registerId = function (e) {\n return B(e);\n };\n\n var t = e.prototype;\n return t.reconstructWithOptions = function (t, n) {\n return void 0 === n && (n = !0), new e(v({}, this.options, {}, t), this.gs, n && this.names || void 0);\n }, t.allocateGSInstance = function (e) {\n return this.gs[e] = (this.gs[e] || 0) + 1;\n }, t.getTag = function () {\n return this.tag || (this.tag = (n = (t = this.options).isServer, r = t.useCSSOMInjection, o = t.target, e = n ? new U(o) : r ? new $(o) : new W(o), new T(e)));\n var e, t, n, r, o;\n }, t.hasNameForId = function (e, t) {\n return this.names.has(e) && this.names.get(e).has(t);\n }, t.registerName = function (e, t) {\n if (B(e), this.names.has(e)) this.names.get(e).add(t);else {\n var n = new Set();\n n.add(t), this.names.set(e, n);\n }\n }, t.insertRules = function (e, t, n) {\n this.registerName(e, t), this.getTag().insertRules(B(e), n);\n }, t.clearNames = function (e) {\n this.names.has(e) && this.names.get(e).clear();\n }, t.clearRules = function (e) {\n this.getTag().clearGroup(B(e)), this.clearNames(e);\n }, t.clearTag = function () {\n this.tag = void 0;\n }, t.toString = function () {\n return function (e) {\n for (var t = e.getTag(), n = t.length, r = \"\", o = 0; o < n; o++) {\n var s = M(o);\n\n if (void 0 !== s) {\n var i = e.names.get(s),\n a = t.getGroup(o);\n\n if (i && a && i.size) {\n var c = A + \".g\" + o + '[id=\"' + s + '\"]',\n u = \"\";\n void 0 !== i && i.forEach(function (e) {\n e.length > 0 && (u += e + \",\");\n }), r += \"\" + a + c + '{content:\"' + u + '\"}/*!sc*/\\n';\n }\n }\n }\n\n return r;\n }(this);\n }, e;\n}(),\n K = /(a)(d)/gi,\n Q = function Q(e) {\n return String.fromCharCode(e + (e > 25 ? 39 : 97));\n};\n\nfunction ee(e) {\n var t,\n n = \"\";\n\n for (t = Math.abs(e); t > 52; t = t / 52 | 0) {\n n = Q(t % 52) + n;\n }\n\n return (Q(t % 52) + n).replace(K, \"$1-$2\");\n}\n\nvar te = function te(e, t) {\n for (var n = t.length; n;) {\n e = 33 * e ^ t.charCodeAt(--n);\n }\n\n return e;\n},\n ne = function ne(e) {\n return te(5381, e);\n};\n\nfunction re(e) {\n for (var t = 0; t < e.length; t += 1) {\n var n = e[t];\n if (b(n) && !N(n)) return !1;\n }\n\n return !0;\n}\n\nvar oe = ne(\"5.3.1\"),\n se = function () {\n function e(e, t, n) {\n this.rules = e, this.staticRulesId = \"\", this.isStatic = \"production\" === process.env.NODE_ENV && (void 0 === n || n.isStatic) && re(e), this.componentId = t, this.baseHash = te(oe, t), this.baseStyle = n, Z.registerId(t);\n }\n\n return e.prototype.generateAndInjectStyles = function (e, t, n) {\n var r = this.componentId,\n o = [];\n if (this.baseStyle && o.push(this.baseStyle.generateAndInjectStyles(e, t, n)), this.isStatic && !n.hash) {\n if (this.staticRulesId && t.hasNameForId(r, this.staticRulesId)) o.push(this.staticRulesId);else {\n var s = Ne(this.rules, e, t, n).join(\"\"),\n i = ee(te(this.baseHash, s) >>> 0);\n\n if (!t.hasNameForId(r, i)) {\n var a = n(s, \".\" + i, void 0, r);\n t.insertRules(r, i, a);\n }\n\n o.push(i), this.staticRulesId = i;\n }\n } else {\n for (var c = this.rules.length, u = te(this.baseHash, n.hash), l = \"\", d = 0; d < c; d++) {\n var h = this.rules[d];\n if (\"string\" == typeof h) l += h, \"production\" !== process.env.NODE_ENV && (u = te(u, h + d));else if (h) {\n var p = Ne(h, e, t, n),\n f = Array.isArray(p) ? p.join(\"\") : p;\n u = te(u, f + d), l += f;\n }\n }\n\n if (l) {\n var m = ee(u >>> 0);\n\n if (!t.hasNameForId(r, m)) {\n var y = n(l, \".\" + m, void 0, r);\n t.insertRules(r, m, y);\n }\n\n o.push(m);\n }\n }\n return o.join(\" \");\n }, e;\n}(),\n ie = /^\\s*\\/\\/.*$/gm,\n ae = [\":\", \"[\", \".\", \"#\"];\n\nfunction ce(e) {\n var t,\n n,\n r,\n o,\n s = void 0 === e ? E : e,\n i = s.options,\n a = void 0 === i ? E : i,\n c = s.plugins,\n u = void 0 === c ? w : c,\n l = new p(a),\n d = [],\n h = function (e) {\n function t(t) {\n if (t) try {\n e(t + \"}\");\n } catch (e) {}\n }\n\n return function (n, r, o, s, i, a, c, u, l, d) {\n switch (n) {\n case 1:\n if (0 === l && 64 === r.charCodeAt(0)) return e(r + \";\"), \"\";\n break;\n\n case 2:\n if (0 === u) return r + \"/*|*/\";\n break;\n\n case 3:\n switch (u) {\n case 102:\n case 112:\n return e(o[0] + r), \"\";\n\n default:\n return r + (0 === d ? \"/*|*/\" : \"\");\n }\n\n case -2:\n r.split(\"/*|*/}\").forEach(t);\n }\n };\n }(function (e) {\n d.push(e);\n }),\n f = function f(e, r, s) {\n return 0 === r && -1 !== ae.indexOf(s[n.length]) || s.match(o) ? e : \".\" + t;\n };\n\n function m(e, s, i, a) {\n void 0 === a && (a = \"&\");\n var c = e.replace(ie, \"\"),\n u = s && i ? i + \" \" + s + \" { \" + c + \" }\" : c;\n return t = a, n = s, r = new RegExp(\"\\\\\" + n + \"\\\\b\", \"g\"), o = new RegExp(\"(\\\\\" + n + \"\\\\b){2,}\"), l(i || !s ? \"\" : s, u);\n }\n\n return l.use([].concat(u, [function (e, t, o) {\n 2 === e && o.length && o[0].lastIndexOf(n) > 0 && (o[0] = o[0].replace(r, f));\n }, h, function (e) {\n if (-2 === e) {\n var t = d;\n return d = [], t;\n }\n }])), m.hash = u.length ? u.reduce(function (e, t) {\n return t.name || j(15), te(e, t.name);\n }, 5381).toString() : \"\", m;\n}\n\nvar ue = r.createContext(),\n le = ue.Consumer,\n de = r.createContext(),\n he = (de.Consumer, new Z()),\n pe = ce();\n\nfunction fe() {\n return s(ue) || he;\n}\n\nfunction me() {\n return s(de) || pe;\n}\n\nfunction ye(e) {\n var t = o(e.stylisPlugins),\n n = t[0],\n s = t[1],\n c = fe(),\n u = i(function () {\n var t = c;\n return e.sheet ? t = e.sheet : e.target && (t = t.reconstructWithOptions({\n target: e.target\n }, !1)), e.disableCSSOMInjection && (t = t.reconstructWithOptions({\n useCSSOMInjection: !1\n })), t;\n }, [e.disableCSSOMInjection, e.sheet, e.target]),\n l = i(function () {\n return ce({\n options: {\n prefix: !e.disableVendorPrefixes\n },\n plugins: n\n });\n }, [e.disableVendorPrefixes, n]);\n return a(function () {\n h(n, e.stylisPlugins) || s(e.stylisPlugins);\n }, [e.stylisPlugins]), r.createElement(ue.Provider, {\n value: u\n }, r.createElement(de.Provider, {\n value: l\n }, \"production\" !== process.env.NODE_ENV ? r.Children.only(e.children) : e.children));\n}\n\nvar ve = function () {\n function e(e, t) {\n var n = this;\n this.inject = function (e, t) {\n void 0 === t && (t = pe);\n var r = n.name + t.hash;\n e.hasNameForId(n.id, r) || e.insertRules(n.id, r, t(n.rules, r, \"@keyframes\"));\n }, this.toString = function () {\n return j(12, String(n.name));\n }, this.name = e, this.id = \"sc-keyframes-\" + e, this.rules = t;\n }\n\n return e.prototype.getName = function (e) {\n return void 0 === e && (e = pe), this.name + e.hash;\n }, e;\n}(),\n ge = /([A-Z])/,\n Se = /([A-Z])/g,\n we = /^ms-/,\n Ee = function Ee(e) {\n return \"-\" + e.toLowerCase();\n};\n\nfunction be(e) {\n return ge.test(e) ? e.replace(Se, Ee).replace(we, \"-ms-\") : e;\n}\n\nvar _e = function _e(e) {\n return null == e || !1 === e || \"\" === e;\n};\n\nfunction Ne(e, n, r, o) {\n if (Array.isArray(e)) {\n for (var s, i = [], a = 0, c = e.length; a < c; a += 1) {\n \"\" !== (s = Ne(e[a], n, r, o)) && (Array.isArray(s) ? i.push.apply(i, s) : i.push(s));\n }\n\n return i;\n }\n\n if (_e(e)) return \"\";\n if (N(e)) return \".\" + e.styledComponentId;\n\n if (b(e)) {\n if (\"function\" != typeof (l = e) || l.prototype && l.prototype.isReactComponent || !n) return e;\n var u = e(n);\n return \"production\" !== process.env.NODE_ENV && t(u) && console.warn(_(e) + \" is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.\"), Ne(u, n, r, o);\n }\n\n var l;\n return e instanceof ve ? r ? (e.inject(r, o), e.getName(o)) : e : S(e) ? function e(t, n) {\n var r,\n o,\n s = [];\n\n for (var i in t) {\n t.hasOwnProperty(i) && !_e(t[i]) && (Array.isArray(t[i]) && t[i].isCss || b(t[i]) ? s.push(be(i) + \":\", t[i], \";\") : S(t[i]) ? s.push.apply(s, e(t[i], i)) : s.push(be(i) + \": \" + (r = i, null == (o = t[i]) || \"boolean\" == typeof o || \"\" === o ? \"\" : \"number\" != typeof o || 0 === o || r in f ? String(o).trim() : o + \"px\") + \";\"));\n }\n\n return n ? [n + \" {\"].concat(s, [\"}\"]) : s;\n }(e) : e.toString();\n}\n\nvar Ae = function Ae(e) {\n return Array.isArray(e) && (e.isCss = !0), e;\n};\n\nfunction Ce(e) {\n for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++) {\n n[r - 1] = arguments[r];\n }\n\n return b(e) || S(e) ? Ae(Ne(g(w, [e].concat(n)))) : 0 === n.length && 1 === e.length && \"string\" == typeof e[0] ? e : Ae(Ne(g(e, n)));\n}\n\nvar Ie = /invalid hook call/i,\n Pe = new Set(),\n Oe = function Oe(e, t) {\n if (\"production\" !== process.env.NODE_ENV) {\n var n = \"The component \" + e + (t ? ' with the id of \"' + t + '\"' : \"\") + \" has been created dynamically.\\nYou may see this warning because you've called styled inside another component.\\nTo resolve this only create new StyledComponents outside of any render method and function component.\",\n r = console.error;\n\n try {\n var o = !0;\n console.error = function (e) {\n if (Ie.test(e)) o = !1, Pe.delete(n);else {\n for (var t = arguments.length, s = new Array(t > 1 ? t - 1 : 0), i = 1; i < t; i++) {\n s[i - 1] = arguments[i];\n }\n\n r.apply(void 0, [e].concat(s));\n }\n }, c(), o && !Pe.has(n) && (console.warn(n), Pe.add(n));\n } catch (e) {\n Ie.test(e.message) && Pe.delete(n);\n } finally {\n console.error = r;\n }\n }\n},\n Re = function Re(e, t, n) {\n return void 0 === n && (n = E), e.theme !== n.theme && e.theme || t || n.theme;\n},\n De = /[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~-]+/g,\n je = /(^-|-$)/g;\n\nfunction Te(e) {\n return e.replace(De, \"-\").replace(je, \"\");\n}\n\nvar ke = function ke(e) {\n return ee(ne(e) >>> 0);\n};\n\nfunction xe(e) {\n return \"string\" == typeof e && (\"production\" === process.env.NODE_ENV || e.charAt(0) === e.charAt(0).toLowerCase());\n}\n\nvar Ve = function Ve(e) {\n return \"function\" == typeof e || \"object\" == typeof e && null !== e && !Array.isArray(e);\n},\n Be = function Be(e) {\n return \"__proto__\" !== e && \"constructor\" !== e && \"prototype\" !== e;\n};\n\nfunction Me(e, t, n) {\n var r = e[n];\n Ve(t) && Ve(r) ? ze(r, t) : e[n] = t;\n}\n\nfunction ze(e) {\n for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++) {\n n[r - 1] = arguments[r];\n }\n\n for (var o = 0, s = n; o < s.length; o++) {\n var i = s[o];\n if (Ve(i)) for (var a in i) {\n Be(a) && Me(e, i[a], a);\n }\n }\n\n return e;\n}\n\nvar Le = r.createContext(),\n Ge = Le.Consumer;\n\nfunction Fe(e) {\n var t = s(Le),\n n = i(function () {\n return function (e, t) {\n if (!e) return j(14);\n\n if (b(e)) {\n var n = e(t);\n return \"production\" === process.env.NODE_ENV || null !== n && !Array.isArray(n) && \"object\" == typeof n ? n : j(7);\n }\n\n return Array.isArray(e) || \"object\" != typeof e ? j(8) : t ? v({}, t, {}, e) : e;\n }(e.theme, t);\n }, [e.theme, t]);\n return e.children ? r.createElement(Le.Provider, {\n value: n\n }, e.children) : null;\n}\n\nvar Ye = {};\n\nfunction qe(e, t, n) {\n var o = N(e),\n i = !xe(e),\n a = t.attrs,\n c = void 0 === a ? w : a,\n d = t.componentId,\n h = void 0 === d ? function (e, t) {\n var n = \"string\" != typeof e ? \"sc\" : Te(e);\n Ye[n] = (Ye[n] || 0) + 1;\n var r = n + \"-\" + ke(\"5.3.1\" + n + Ye[n]);\n return t ? t + \"-\" + r : r;\n }(t.displayName, t.parentComponentId) : d,\n p = t.displayName,\n f = void 0 === p ? function (e) {\n return xe(e) ? \"styled.\" + e : \"Styled(\" + _(e) + \")\";\n }(e) : p,\n g = t.displayName && t.componentId ? Te(t.displayName) + \"-\" + t.componentId : t.componentId || h,\n S = o && e.attrs ? Array.prototype.concat(e.attrs, c).filter(Boolean) : c,\n A = t.shouldForwardProp;\n o && e.shouldForwardProp && (A = t.shouldForwardProp ? function (n, r, o) {\n return e.shouldForwardProp(n, r, o) && t.shouldForwardProp(n, r, o);\n } : e.shouldForwardProp);\n\n var C,\n I = new se(n, g, o ? e.componentStyle : void 0),\n P = I.isStatic && 0 === c.length,\n O = function O(e, t) {\n return function (e, t, n, r) {\n var o = e.attrs,\n i = e.componentStyle,\n a = e.defaultProps,\n c = e.foldedComponentIds,\n d = e.shouldForwardProp,\n h = e.styledComponentId,\n p = e.target;\n \"production\" !== process.env.NODE_ENV && l(h);\n\n var f = function (e, t, n) {\n void 0 === e && (e = E);\n var r = v({}, t, {\n theme: e\n }),\n o = {};\n return n.forEach(function (e) {\n var t,\n n,\n s,\n i = e;\n\n for (t in b(i) && (i = i(r)), i) {\n r[t] = o[t] = \"className\" === t ? (n = o[t], s = i[t], n && s ? n + \" \" + s : n || s) : i[t];\n }\n }), [r, o];\n }(Re(t, s(Le), a) || E, t, o),\n y = f[0],\n g = f[1],\n S = function (e, t, n, r) {\n var o = fe(),\n s = me(),\n i = t ? e.generateAndInjectStyles(E, o, s) : e.generateAndInjectStyles(n, o, s);\n return \"production\" !== process.env.NODE_ENV && l(i), \"production\" !== process.env.NODE_ENV && !t && r && r(i), i;\n }(i, r, y, \"production\" !== process.env.NODE_ENV ? e.warnTooManyClasses : void 0),\n w = n,\n _ = g.$as || t.$as || g.as || t.as || p,\n N = xe(_),\n A = g !== t ? v({}, t, {}, g) : t,\n C = {};\n\n for (var I in A) {\n \"$\" !== I[0] && \"as\" !== I && (\"forwardedAs\" === I ? C.as = A[I] : (d ? d(I, m, _) : !N || m(I)) && (C[I] = A[I]));\n }\n\n return t.style && g.style !== t.style && (C.style = v({}, t.style, {}, g.style)), C.className = Array.prototype.concat(c, h, S !== h ? S : null, t.className, g.className).filter(Boolean).join(\" \"), C.ref = w, u(_, C);\n }(C, e, t, P);\n };\n\n return O.displayName = f, (C = r.forwardRef(O)).attrs = S, C.componentStyle = I, C.displayName = f, C.shouldForwardProp = A, C.foldedComponentIds = o ? Array.prototype.concat(e.foldedComponentIds, e.styledComponentId) : w, C.styledComponentId = g, C.target = o ? e.target : e, C.withComponent = function (e) {\n var r = t.componentId,\n o = function (e, t) {\n if (null == e) return {};\n var n,\n r,\n o = {},\n s = Object.keys(e);\n\n for (r = 0; r < s.length; r++) {\n n = s[r], t.indexOf(n) >= 0 || (o[n] = e[n]);\n }\n\n return o;\n }(t, [\"componentId\"]),\n s = r && r + \"-\" + (xe(e) ? e : Te(_(e)));\n\n return qe(e, v({}, o, {\n attrs: S,\n componentId: s\n }), n);\n }, Object.defineProperty(C, \"defaultProps\", {\n get: function get() {\n return this._foldedDefaultProps;\n },\n set: function set(t) {\n this._foldedDefaultProps = o ? ze({}, e.defaultProps, t) : t;\n }\n }), \"production\" !== process.env.NODE_ENV && (Oe(f, g), C.warnTooManyClasses = function (e, t) {\n var n = {},\n r = !1;\n return function (o) {\n if (!r && (n[o] = !0, Object.keys(n).length >= 200)) {\n var s = t ? ' with the id of \"' + t + '\"' : \"\";\n console.warn(\"Over 200 classes were generated for component \" + e + s + \".\\nConsider using the attrs method, together with a style object for frequently changed styles.\\nExample:\\n const Component = styled.div.attrs(props => ({\\n style: {\\n background: props.background,\\n },\\n }))`width: 100%;`\\n\\n <Component />\"), r = !0, n = {};\n }\n };\n }(f, g)), C.toString = function () {\n return \".\" + C.styledComponentId;\n }, i && y(C, e, {\n attrs: !0,\n componentStyle: !0,\n displayName: !0,\n foldedComponentIds: !0,\n shouldForwardProp: !0,\n styledComponentId: !0,\n target: !0,\n withComponent: !0\n }), C;\n}\n\nvar He = function He(e) {\n return function e(t, r, o) {\n if (void 0 === o && (o = E), !n(r)) return j(1, String(r));\n\n var s = function s() {\n return t(r, o, Ce.apply(void 0, arguments));\n };\n\n return s.withConfig = function (n) {\n return e(t, r, v({}, o, {}, n));\n }, s.attrs = function (n) {\n return e(t, r, v({}, o, {\n attrs: Array.prototype.concat(o.attrs, n).filter(Boolean)\n }));\n }, s;\n }(qe, e);\n};\n\n[\"a\", \"abbr\", \"address\", \"area\", \"article\", \"aside\", \"audio\", \"b\", \"base\", \"bdi\", \"bdo\", \"big\", \"blockquote\", \"body\", \"br\", \"button\", \"canvas\", \"caption\", \"cite\", \"code\", \"col\", \"colgroup\", \"data\", \"datalist\", \"dd\", \"del\", \"details\", \"dfn\", \"dialog\", \"div\", \"dl\", \"dt\", \"em\", \"embed\", \"fieldset\", \"figcaption\", \"figure\", \"footer\", \"form\", \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"head\", \"header\", \"hgroup\", \"hr\", \"html\", \"i\", \"iframe\", \"img\", \"input\", \"ins\", \"kbd\", \"keygen\", \"label\", \"legend\", \"li\", \"link\", \"main\", \"map\", \"mark\", \"marquee\", \"menu\", \"menuitem\", \"meta\", \"meter\", \"nav\", \"noscript\", \"object\", \"ol\", \"optgroup\", \"option\", \"output\", \"p\", \"param\", \"picture\", \"pre\", \"progress\", \"q\", \"rp\", \"rt\", \"ruby\", \"s\", \"samp\", \"script\", \"section\", \"select\", \"small\", \"source\", \"span\", \"strong\", \"style\", \"sub\", \"summary\", \"sup\", \"table\", \"tbody\", \"td\", \"textarea\", \"tfoot\", \"th\", \"thead\", \"time\", \"title\", \"tr\", \"track\", \"u\", \"ul\", \"var\", \"video\", \"wbr\", \"circle\", \"clipPath\", \"defs\", \"ellipse\", \"foreignObject\", \"g\", \"image\", \"line\", \"linearGradient\", \"marker\", \"mask\", \"path\", \"pattern\", \"polygon\", \"polyline\", \"radialGradient\", \"rect\", \"stop\", \"svg\", \"text\", \"textPath\", \"tspan\"].forEach(function (e) {\n He[e] = He(e);\n});\n\nvar $e = function () {\n function e(e, t) {\n this.rules = e, this.componentId = t, this.isStatic = re(e), Z.registerId(this.componentId + 1);\n }\n\n var t = e.prototype;\n return t.createStyles = function (e, t, n, r) {\n var o = r(Ne(this.rules, t, n, r).join(\"\"), \"\"),\n s = this.componentId + e;\n n.insertRules(s, s, o);\n }, t.removeStyles = function (e, t) {\n t.clearRules(this.componentId + e);\n }, t.renderStyles = function (e, t, n, r) {\n e > 2 && Z.registerId(this.componentId + e), this.removeStyles(e, n), this.createStyles(e, t, n, r);\n }, e;\n}();\n\nfunction We(e) {\n for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), o = 1; o < t; o++) {\n n[o - 1] = arguments[o];\n }\n\n var i = Ce.apply(void 0, [e].concat(n)),\n a = \"sc-global-\" + ke(JSON.stringify(i)),\n u = new $e(i, a);\n\n function l(e) {\n var t = fe(),\n n = me(),\n o = s(Le),\n l = c(t.allocateGSInstance(a)).current;\n return \"production\" !== process.env.NODE_ENV && r.Children.count(e.children) && console.warn(\"The global style component \" + a + \" was given child JSX. createGlobalStyle does not render children.\"), \"production\" !== process.env.NODE_ENV && i.some(function (e) {\n return \"string\" == typeof e && -1 !== e.indexOf(\"@import\");\n }) && console.warn(\"Please do not use @import CSS syntax in createGlobalStyle at this time, as the CSSOM APIs we use in production do not handle it well. Instead, we recommend using a library such as react-helmet to inject a typical <link> meta tag to the stylesheet, or simply embedding it manually in your index.html <head> section for a simpler app.\"), t.server && h(l, e, t, o, n), d(function () {\n if (!t.server) return h(l, e, t, o, n), function () {\n return u.removeStyles(l, t);\n };\n }, [l, e, t, o, n]), null;\n }\n\n function h(e, t, n, r, o) {\n if (u.isStatic) u.renderStyles(e, O, n, o);else {\n var s = v({}, t, {\n theme: Re(t, r, l.defaultProps)\n });\n u.renderStyles(e, s, n, o);\n }\n }\n\n return \"production\" !== process.env.NODE_ENV && Oe(a), r.memo(l);\n}\n\nfunction Ue(e) {\n \"production\" !== process.env.NODE_ENV && \"undefined\" != typeof navigator && \"ReactNative\" === navigator.product && console.warn(\"`keyframes` cannot be used on ReactNative, only on the web. To do animation in ReactNative please use Animated.\");\n\n for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++) {\n n[r - 1] = arguments[r];\n }\n\n var o = Ce.apply(void 0, [e].concat(n)).join(\"\"),\n s = ke(o);\n return new ve(s, o);\n}\n\nvar Je = function () {\n function e() {\n var e = this;\n this._emitSheetCSS = function () {\n var t = e.instance.toString();\n if (!t) return \"\";\n var n = q();\n return \"<style \" + [n && 'nonce=\"' + n + '\"', A + '=\"true\"', 'data-styled-version=\"5.3.1\"'].filter(Boolean).join(\" \") + \">\" + t + \"</style>\";\n }, this.getStyleTags = function () {\n return e.sealed ? j(2) : e._emitSheetCSS();\n }, this.getStyleElement = function () {\n var t;\n if (e.sealed) return j(2);\n var n = ((t = {})[A] = \"\", t[\"data-styled-version\"] = \"5.3.1\", t.dangerouslySetInnerHTML = {\n __html: e.instance.toString()\n }, t),\n o = q();\n return o && (n.nonce = o), [r.createElement(\"style\", v({}, n, {\n key: \"sc-0-0\"\n }))];\n }, this.seal = function () {\n e.sealed = !0;\n }, this.instance = new Z({\n isServer: !0\n }), this.sealed = !1;\n }\n\n var t = e.prototype;\n return t.collectStyles = function (e) {\n return this.sealed ? j(2) : r.createElement(ye, {\n sheet: this.instance\n }, e);\n }, t.interleaveWithNodeStream = function (e) {\n return j(3);\n }, e;\n}(),\n Xe = function Xe(e) {\n var t = r.forwardRef(function (t, n) {\n var o = s(Le),\n i = e.defaultProps,\n a = Re(t, o, i);\n return \"production\" !== process.env.NODE_ENV && void 0 === a && console.warn('[withTheme] You are not using a ThemeProvider nor passing a theme prop or a theme in defaultProps in component class \"' + _(e) + '\"'), r.createElement(e, v({}, t, {\n theme: a,\n ref: n\n }));\n });\n return y(t, e), t.displayName = \"WithTheme(\" + _(e) + \")\", t;\n},\n Ze = function Ze() {\n return s(Le);\n},\n Ke = {\n StyleSheet: Z,\n masterSheet: he\n};\n\n\"production\" !== process.env.NODE_ENV && \"undefined\" != typeof navigator && \"ReactNative\" === navigator.product && console.warn(\"It looks like you've imported 'styled-components' on React Native.\\nPerhaps you're looking to import 'styled-components/native'?\\nRead more about this at https://www.styled-components.com/docs/basics#react-native\"), \"production\" !== process.env.NODE_ENV && \"test\" !== process.env.NODE_ENV && \"undefined\" != typeof window && (window[\"__styled-components-init__\"] = window[\"__styled-components-init__\"] || 0, 1 === window[\"__styled-components-init__\"] && console.warn(\"It looks like there are several instances of 'styled-components' initialized in this application. This may cause dynamic styles to not render properly, errors during the rehydration process, a missing theme prop, and makes your application bigger without good reason.\\n\\nSee https://s-c.sh/2BAXzed for more info.\"), window[\"__styled-components-init__\"] += 1);\nexport default He;\nexport { Je as ServerStyleSheet, le as StyleSheetConsumer, ue as StyleSheetContext, ye as StyleSheetManager, Ge as ThemeConsumer, Le as ThemeContext, Fe as ThemeProvider, Ke as __PRIVATE__, We as createGlobalStyle, Ce as css, N as isStyledComponent, Ue as keyframes, Ze as useTheme, C as version, Xe as withTheme };","/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors <https://js.foundation/>\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 size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n/** Used to stand-in for `undefined` hash values. */\n\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n/** Used to compose bitmasks for value comparisons. */\n\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n/** Used as references for various `Number` constants. */\n\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/** `Object#toString` result references. */\n\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\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 match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n/** Used to detect host constructors (Safari). */\n\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n/** Used to detect unsigned integer values. */\n\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n/** Used to identify `toStringTag` values of typed arrays. */\n\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n/** Detect free variable `global` from Node.js. */\n\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n/** Detect free variable `self`. */\n\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n/** Used as a reference to the global object. */\n\nvar root = freeGlobal || freeSelf || Function('return this')();\n/** Detect free variable `exports`. */\n\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n/** Detect free variable `module`. */\n\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n/** Detect the popular CommonJS extension `module.exports`. */\n\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n/** Detect free variable `process` from Node.js. */\n\nvar freeProcess = moduleExports && freeGlobal.process;\n/** Used to access faster Node.js helpers. */\n\nvar nodeUtil = function () {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}();\n/* Node.js helper references. */\n\n\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n\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\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n\n return result;\n}\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n\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\n return array;\n}\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n\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\n return false;\n}\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n\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\n return result;\n}\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n\n\nfunction baseUnary(func) {\n return function (value) {\n return func(value);\n };\n}\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n\n\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n\n\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n map.forEach(function (value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n\n\nfunction overArg(func, transform) {\n return function (arg) {\n return func(transform(arg));\n };\n}\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n\n\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n set.forEach(function (value) {\n result[++index] = value;\n });\n return result;\n}\n/** Used for built-in method references. */\n\n\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n/** Used to detect overreaching core-js shims. */\n\nvar coreJsData = root['__core-js_shared__'];\n/** Used to resolve the decompiled source of functions. */\n\nvar funcToString = funcProto.toString;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/** Used to detect methods masquerading as native. */\n\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\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\n\nvar nativeObjectToString = objectProto.toString;\n/** Used to detect if a method is native. */\n\nvar reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&').replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n/** Built-in value references. */\n\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n/* Built-in method references for those with the same name as other `lodash` methods. */\n\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n/* Built-in method references that are verified to be native. */\n\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n/** Used to detect maps, sets, and weakmaps. */\n\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n/** Used to convert symbols to primitives and strings. */\n\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n\n\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\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/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\nfunction hashGet(key) {\n var data = this.__data__;\n\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n\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} // Add methods to `Hash`.\n\n\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n\n\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\n\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n\n var lastIndex = data.length - 1;\n\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n\n --this.size;\n return true;\n}\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n return index < 0 ? undefined : data[index][1];\n}\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n\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\n return this;\n} // Add methods to `ListCache`.\n\n\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n\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/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\n\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n\n\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n} // Add methods to `MapCache`.\n\n\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n this.__data__ = new MapCache();\n\n while (++index < length) {\n this.add(values[index]);\n }\n}\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n\n\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n\n return this;\n}\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n\n\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n} // Add methods to `SetCache`.\n\n\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n\n\nfunction stackClear() {\n this.__data__ = new ListCache();\n this.size = 0;\n}\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\n\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n this.size = data.size;\n return result;\n}\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n\n\nfunction stackSet(key, value) {\n var data = this.__data__;\n\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n\n if (!Map || pairs.length < LARGE_ARRAY_SIZE - 1) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n\n data = this.__data__ = new MapCache(pairs);\n }\n\n data.set(key, value);\n this.size = data.size;\n return this;\n} // Add methods to `Stack`.\n\n\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n\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)) && !(skipIndexes && ( // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' || isBuff && (key == 'offset' || key == 'parent') || isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset') || // Skip index properties.\n isIndex(key, length)))) {\n result.push(key);\n }\n }\n\n return result;\n}\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n\n\nfunction assocIndexOf(array, key) {\n var length = array.length;\n\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n\n return -1;\n}\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n\n\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n\n\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n\n return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);\n}\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n\n\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n\n\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n\n if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) {\n return value !== value && other !== other;\n }\n\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n\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 objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\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\n objIsArr = true;\n objIsObj = false;\n }\n\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack());\n return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\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 stack || (stack = new Stack());\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n\n if (!isSameTag) {\n return false;\n }\n\n stack || (stack = new Stack());\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n\n\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n\n\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n\n\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n\n var result = [];\n\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n\n return result;\n}\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n\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 } // Assume cyclic values are equal.\n\n\n var stacked = stack.get(array);\n\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n\n var index = -1,\n result = true,\n seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache() : undefined;\n stack.set(array, other);\n stack.set(other, array); // Ignore non-index properties.\n\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);\n }\n\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n\n result = false;\n break;\n } // Recursively compare arrays (susceptible to call stack limits).\n\n\n if (seen) {\n if (!arraySome(other, function (othValue, othIndex) {\n if (!cacheHas(seen, othIndex) && (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n result = false;\n break;\n }\n }\n\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n\n\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\n return false;\n }\n\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\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 } // Assume cyclic values are equal.\n\n\n var stacked = stack.get(object);\n\n if (stacked) {\n return stacked == other;\n }\n\n bitmask |= COMPARE_UNORDERED_FLAG; // Recursively compare objects (susceptible to call stack limits).\n\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 }\n\n return false;\n}\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n\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\n var index = objLength;\n\n while (index--) {\n var key = objProps[index];\n\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n } // Assume cyclic values are equal.\n\n\n var stacked = stack.get(object);\n\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n var skipCtor = isPartial;\n\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 ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);\n } // Recursively compare objects (susceptible to call stack limits).\n\n\n if (!(compared === undefined ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {\n result = false;\n break;\n }\n\n skipCtor || (skipCtor = key == 'constructor');\n }\n\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor; // Non `Object` object instances with different constructors are not equal.\n\n if (objCtor != othCtor && 'constructor' in object && 'constructor' in other && !(typeof objCtor == 'function' && objCtor instanceof objCtor && typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n\n\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n\n\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map;\n}\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n\n\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : 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 */\n\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\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n\n return result;\n}\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n\n\nvar getSymbols = !nativeGetSymbols ? stubArray : function (object) {\n if (object == null) {\n return [];\n }\n\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function (symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n\nvar getTag = baseGetTag; // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n\nif (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map && getTag(new Map()) != mapTag || Promise && getTag(Promise.resolve()) != promiseTag || Set && getTag(new Set()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) {\n getTag = function getTag(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:\n return dataViewTag;\n\n case mapCtorString:\n return mapTag;\n\n case promiseCtorString:\n return promiseTag;\n\n case setCtorString:\n return setTag;\n\n case weakMapCtorString:\n return weakMapTag;\n }\n }\n\n return result;\n };\n}\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n\n\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length && (typeof value == 'number' || reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;\n}\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n\n\nfunction isKeyable(value) {\n var type = typeof value;\n return type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean' ? value !== '__proto__' : value === null;\n}\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n\n\nfunction isMasked(func) {\n return !!maskSrcKey && maskSrcKey in func;\n}\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n\n\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = typeof Ctor == 'function' && Ctor.prototype || objectProto;\n return value === proto;\n}\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n\n\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n\n\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n\n try {\n return func + '';\n } catch (e) {}\n }\n\n return '';\n}\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n\n\nfunction eq(value, other) {\n return value === other || value !== value && other !== other;\n}\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n\n\nvar isArguments = baseIsArguments(function () {\n return arguments;\n}()) ? baseIsArguments : function (value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n};\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n\nvar isArray = Array.isArray;\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n\n\nvar isBuffer = nativeIsBuffer || stubFalse;\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n\n\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\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\n\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n\n\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n\n\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n\n\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n\n\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\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 */\n\n\nfunction stubArray() {\n return [];\n}\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 */\n\n\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;","'use strict';\n\nfunction _interopDefault(ex) {\n return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex;\n}\n\nvar React = require('react');\n\nvar React__default = _interopDefault(React);\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 _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n if (typeof reducePropsToState !== 'function') {\n throw new Error('Expected reducePropsToState to be a function.');\n }\n\n if (typeof handleStateChangeOnClient !== 'function') {\n throw new Error('Expected handleStateChangeOnClient to be a function.');\n }\n\n if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n }\n\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n\n return function wrap(WrappedComponent) {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\n }\n\n var mountedInstances = [];\n var state;\n\n function emitChange() {\n state = reducePropsToState(mountedInstances.map(function (instance) {\n return instance.props;\n }));\n\n if (SideEffect.canUseDOM) {\n handleStateChangeOnClient(state);\n } else if (mapStateOnServer) {\n state = mapStateOnServer(state);\n }\n }\n\n var SideEffect = /*#__PURE__*/function (_PureComponent) {\n _inheritsLoose(SideEffect, _PureComponent);\n\n function SideEffect() {\n return _PureComponent.apply(this, arguments) || this;\n } // Try to use displayName of wrapped component\n // Expose canUseDOM so tests can monkeypatch it\n\n\n SideEffect.peek = function peek() {\n return state;\n };\n\n SideEffect.rewind = function rewind() {\n if (SideEffect.canUseDOM) {\n throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n }\n\n var recordedState = state;\n state = undefined;\n mountedInstances = [];\n return recordedState;\n };\n\n var _proto = SideEffect.prototype;\n\n _proto.UNSAFE_componentWillMount = function UNSAFE_componentWillMount() {\n mountedInstances.push(this);\n emitChange();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n emitChange();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var index = mountedInstances.indexOf(this);\n mountedInstances.splice(index, 1);\n emitChange();\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/React__default.createElement(WrappedComponent, this.props);\n };\n\n return SideEffect;\n }(React.PureComponent);\n\n _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n _defineProperty(SideEffect, \"canUseDOM\", canUseDOM);\n\n return SideEffect;\n };\n}\n\nmodule.exports = withSideEffect;","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\n\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar isPrototypeOf = ObjectPrototype.isPrototypeOf;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = uid('TYPED_ARRAY_CONSTRUCTOR');\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n BigInt64Array: 8,\n BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return klass === 'DataView'\n || has(TypedArrayConstructorsList, klass)\n || has(BigIntArrayConstructorsList, klass);\n};\n\nvar isTypedArray = function (it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return has(TypedArrayConstructorsList, klass)\n || has(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (setPrototypeOf && !isPrototypeOf.call(TypedArray, C)) {\n throw TypeError('Target is not a typed array constructor');\n } return C;\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) try {\n delete TypedArrayConstructor.prototype[KEY];\n } catch (error) { /* empty */ }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n redefine(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);\n }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor, KEY)) try {\n delete TypedArrayConstructor[KEY];\n } catch (error) { /* empty */ }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n redefine(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) createNonEnumerableProperty(Prototype, TYPED_ARRAY_CONSTRUCTOR, Constructor);\n else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) createNonEnumerableProperty(Prototype, TYPED_ARRAY_CONSTRUCTOR, Constructor);\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || typeof TypedArray != 'function' || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow -- safe\n TypedArray = function TypedArray() {\n throw TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !has(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQIRED = true;\n defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n } });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_CONSTRUCTOR: TYPED_ARRAY_CONSTRUCTOR,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","/* eslint-disable no-proto -- safe */\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","/**\n * Welcome to gatsby-plugin-mdx!\n *\n * Start reading in gatsby-node.js\n */\n\nconst MDXRenderer = require(`./mdx-renderer`)\n\nmodule.exports = {\n MDXRenderer: MDXRenderer,\n}\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\n\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n module.exports = _construct = Reflect.construct;\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _construct.apply(null, arguments);\n}\n\nmodule.exports = _construct;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;","import \"core-js/modules/es.array.sort.js\";\nimport assign from 'object-assign';\nexport var merge = function merge(a, b) {\n var result = assign({}, a, b);\n\n for (var key in a) {\n var _assign;\n\n if (!a[key] || typeof b[key] !== 'object') continue;\n assign(result, (_assign = {}, _assign[key] = assign(a[key], b[key]), _assign));\n }\n\n return result;\n}; // sort object-value responsive styles\n\nvar sort = function sort(obj) {\n var next = {};\n Object.keys(obj).sort(function (a, b) {\n return a.localeCompare(b, undefined, {\n numeric: true,\n sensitivity: 'base'\n });\n }).forEach(function (key) {\n next[key] = obj[key];\n });\n return next;\n};\n\nvar defaults = {\n breakpoints: [40, 52, 64].map(function (n) {\n return n + 'em';\n })\n};\n\nvar createMediaQuery = function createMediaQuery(n) {\n return \"@media screen and (min-width: \" + n + \")\";\n};\n\nvar getValue = function getValue(n, scale) {\n return get(scale, n, n);\n};\n\nexport var get = function get(obj, key, def, p, undef) {\n key = key && key.split ? key.split('.') : [key];\n\n for (p = 0; p < key.length; p++) {\n obj = obj ? obj[key[p]] : undef;\n }\n\n return obj === undef ? def : obj;\n};\nexport var createParser = function createParser(config) {\n var cache = {};\n\n var parse = function parse(props) {\n var styles = {};\n var shouldSort = false;\n var isCacheDisabled = props.theme && props.theme.disableStyledSystemCache;\n\n for (var key in props) {\n if (!config[key]) continue;\n var sx = config[key];\n var raw = props[key];\n var scale = get(props.theme, sx.scale, sx.defaults);\n\n if (typeof raw === 'object') {\n cache.breakpoints = !isCacheDisabled && cache.breakpoints || get(props.theme, 'breakpoints', defaults.breakpoints);\n\n if (Array.isArray(raw)) {\n cache.media = !isCacheDisabled && cache.media || [null].concat(cache.breakpoints.map(createMediaQuery));\n styles = merge(styles, parseResponsiveStyle(cache.media, sx, scale, raw, props));\n continue;\n }\n\n if (raw !== null) {\n styles = merge(styles, parseResponsiveObject(cache.breakpoints, sx, scale, raw, props));\n shouldSort = true;\n }\n\n continue;\n }\n\n assign(styles, sx(raw, scale, props));\n } // sort object-based responsive styles\n\n\n if (shouldSort) {\n styles = sort(styles);\n }\n\n return styles;\n };\n\n parse.config = config;\n parse.propNames = Object.keys(config);\n parse.cache = cache;\n var keys = Object.keys(config).filter(function (k) {\n return k !== 'config';\n });\n\n if (keys.length > 1) {\n keys.forEach(function (key) {\n var _createParser;\n\n parse[key] = createParser((_createParser = {}, _createParser[key] = config[key], _createParser));\n });\n }\n\n return parse;\n};\n\nvar parseResponsiveStyle = function parseResponsiveStyle(mediaQueries, sx, scale, raw, _props) {\n var styles = {};\n raw.slice(0, mediaQueries.length).forEach(function (value, i) {\n var media = mediaQueries[i];\n var style = sx(value, scale, _props);\n\n if (!media) {\n assign(styles, style);\n } else {\n var _assign2;\n\n assign(styles, (_assign2 = {}, _assign2[media] = assign({}, styles[media], style), _assign2));\n }\n });\n return styles;\n};\n\nvar parseResponsiveObject = function parseResponsiveObject(breakpoints, sx, scale, raw, _props) {\n var styles = {};\n\n for (var key in raw) {\n var breakpoint = breakpoints[key];\n var value = raw[key];\n var style = sx(value, scale, _props);\n\n if (!breakpoint) {\n assign(styles, style);\n } else {\n var _assign3;\n\n var media = createMediaQuery(breakpoint);\n assign(styles, (_assign3 = {}, _assign3[media] = assign({}, styles[media], style), _assign3));\n }\n }\n\n return styles;\n};\n\nexport var createStyleFunction = function createStyleFunction(_ref) {\n var properties = _ref.properties,\n property = _ref.property,\n scale = _ref.scale,\n _ref$transform = _ref.transform,\n transform = _ref$transform === void 0 ? getValue : _ref$transform,\n defaultScale = _ref.defaultScale;\n properties = properties || [property];\n\n var sx = function sx(value, scale, _props) {\n var result = {};\n var n = transform(value, scale, _props);\n if (n === null) return;\n properties.forEach(function (prop) {\n result[prop] = n;\n });\n return result;\n };\n\n sx.scale = scale;\n sx.defaults = defaultScale;\n return sx;\n}; // new v5 API\n\nexport var system = function system(args) {\n if (args === void 0) {\n args = {};\n }\n\n var config = {};\n Object.keys(args).forEach(function (key) {\n var conf = args[key];\n\n if (conf === true) {\n // shortcut definition\n config[key] = createStyleFunction({\n property: key,\n scale: key\n });\n return;\n }\n\n if (typeof conf === 'function') {\n config[key] = conf;\n return;\n }\n\n config[key] = createStyleFunction(conf);\n });\n var parser = createParser(config);\n return parser;\n};\nexport var compose = function compose() {\n var config = {};\n\n for (var _len = arguments.length, parsers = new Array(_len), _key = 0; _key < _len; _key++) {\n parsers[_key] = arguments[_key];\n }\n\n parsers.forEach(function (parser) {\n if (!parser || !parser.config) return;\n assign(config, parser.config);\n });\n var parser = createParser(config);\n return parser;\n};","import { system, get } from '@styled-system/core';\n\nvar isNumber = function isNumber(n) {\n return typeof n === 'number' && !isNaN(n);\n};\n\nvar getWidth = function getWidth(n, scale) {\n return get(scale, n, !isNumber(n) || n > 1 ? n : n * 100 + '%');\n};\n\nvar config = {\n width: {\n property: 'width',\n scale: 'sizes',\n transform: getWidth\n },\n height: {\n property: 'height',\n scale: 'sizes'\n },\n minWidth: {\n property: 'minWidth',\n scale: 'sizes'\n },\n minHeight: {\n property: 'minHeight',\n scale: 'sizes'\n },\n maxWidth: {\n property: 'maxWidth',\n scale: 'sizes'\n },\n maxHeight: {\n property: 'maxHeight',\n scale: 'sizes'\n },\n size: {\n properties: ['width', 'height'],\n scale: 'sizes'\n },\n overflow: true,\n overflowX: true,\n overflowY: true,\n display: true,\n verticalAlign: true\n};\nexport var layout = system(config);\nexport default layout;","import { system } from '@styled-system/core';\nvar config = {\n color: {\n property: 'color',\n scale: 'colors'\n },\n backgroundColor: {\n property: 'backgroundColor',\n scale: 'colors'\n },\n opacity: true\n};\nconfig.bg = config.backgroundColor;\nexport var color = system(config);\nexport default color;","import { system } from '@styled-system/core';\nvar defaults = {\n fontSizes: [12, 14, 16, 20, 24, 32, 48, 64, 72]\n};\nvar config = {\n fontFamily: {\n property: 'fontFamily',\n scale: 'fonts'\n },\n fontSize: {\n property: 'fontSize',\n scale: 'fontSizes',\n defaultScale: defaults.fontSizes\n },\n fontWeight: {\n property: 'fontWeight',\n scale: 'fontWeights'\n },\n lineHeight: {\n property: 'lineHeight',\n scale: 'lineHeights'\n },\n letterSpacing: {\n property: 'letterSpacing',\n scale: 'letterSpacings'\n },\n textAlign: true,\n fontStyle: true\n};\nexport var typography = system(config);\nexport default typography;","import { system } from '@styled-system/core';\nvar config = {\n alignItems: true,\n alignContent: true,\n justifyItems: true,\n justifyContent: true,\n flexWrap: true,\n flexDirection: true,\n // item\n flex: true,\n flexGrow: true,\n flexShrink: true,\n flexBasis: true,\n justifySelf: true,\n alignSelf: true,\n order: true\n};\nexport var flexbox = system(config);\nexport default flexbox;","import { system } from '@styled-system/core';\nvar defaults = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512]\n};\nvar config = {\n gridGap: {\n property: 'gridGap',\n scale: 'space',\n defaultScale: defaults.space\n },\n gridColumnGap: {\n property: 'gridColumnGap',\n scale: 'space',\n defaultScale: defaults.space\n },\n gridRowGap: {\n property: 'gridRowGap',\n scale: 'space',\n defaultScale: defaults.space\n },\n gridColumn: true,\n gridRow: true,\n gridAutoFlow: true,\n gridAutoColumns: true,\n gridAutoRows: true,\n gridTemplateColumns: true,\n gridTemplateRows: true,\n gridTemplateAreas: true,\n gridArea: true\n};\nexport var grid = system(config);\nexport default grid;","import { system } from '@styled-system/core';\nvar config = {\n border: {\n property: 'border',\n scale: 'borders'\n },\n borderWidth: {\n property: 'borderWidth',\n scale: 'borderWidths'\n },\n borderStyle: {\n property: 'borderStyle',\n scale: 'borderStyles'\n },\n borderColor: {\n property: 'borderColor',\n scale: 'colors'\n },\n borderRadius: {\n property: 'borderRadius',\n scale: 'radii'\n },\n borderTop: {\n property: 'borderTop',\n scale: 'borders'\n },\n borderTopLeftRadius: {\n property: 'borderTopLeftRadius',\n scale: 'radii'\n },\n borderTopRightRadius: {\n property: 'borderTopRightRadius',\n scale: 'radii'\n },\n borderRight: {\n property: 'borderRight',\n scale: 'borders'\n },\n borderBottom: {\n property: 'borderBottom',\n scale: 'borders'\n },\n borderBottomLeftRadius: {\n property: 'borderBottomLeftRadius',\n scale: 'radii'\n },\n borderBottomRightRadius: {\n property: 'borderBottomRightRadius',\n scale: 'radii'\n },\n borderLeft: {\n property: 'borderLeft',\n scale: 'borders'\n },\n borderX: {\n properties: ['borderLeft', 'borderRight'],\n scale: 'borders'\n },\n borderY: {\n properties: ['borderTop', 'borderBottom'],\n scale: 'borders'\n }\n};\nconfig.borderTopWidth = {\n property: 'borderTopWidth',\n scale: 'borderWidths'\n};\nconfig.borderTopColor = {\n property: 'borderTopColor',\n scale: 'colors'\n};\nconfig.borderTopStyle = {\n property: 'borderTopStyle',\n scale: 'borderStyles'\n};\nconfig.borderTopLeftRadius = {\n property: 'borderTopLeftRadius',\n scale: 'radii'\n};\nconfig.borderTopRightRadius = {\n property: 'borderTopRightRadius',\n scale: 'radii'\n};\nconfig.borderBottomWidth = {\n property: 'borderBottomWidth',\n scale: 'borderWidths'\n};\nconfig.borderBottomColor = {\n property: 'borderBottomColor',\n scale: 'colors'\n};\nconfig.borderBottomStyle = {\n property: 'borderBottomStyle',\n scale: 'borderStyles'\n};\nconfig.borderBottomLeftRadius = {\n property: 'borderBottomLeftRadius',\n scale: 'radii'\n};\nconfig.borderBottomRightRadius = {\n property: 'borderBottomRightRadius',\n scale: 'radii'\n};\nconfig.borderLeftWidth = {\n property: 'borderLeftWidth',\n scale: 'borderWidths'\n};\nconfig.borderLeftColor = {\n property: 'borderLeftColor',\n scale: 'colors'\n};\nconfig.borderLeftStyle = {\n property: 'borderLeftStyle',\n scale: 'borderStyles'\n};\nconfig.borderRightWidth = {\n property: 'borderRightWidth',\n scale: 'borderWidths'\n};\nconfig.borderRightColor = {\n property: 'borderRightColor',\n scale: 'colors'\n};\nconfig.borderRightStyle = {\n property: 'borderRightStyle',\n scale: 'borderStyles'\n};\nexport var border = system(config);\nexport default border;","import { system } from '@styled-system/core';\nvar config = {\n background: true,\n backgroundImage: true,\n backgroundSize: true,\n backgroundPosition: true,\n backgroundRepeat: true\n};\nconfig.bgImage = config.backgroundImage;\nconfig.bgSize = config.backgroundSize;\nconfig.bgPosition = config.backgroundPosition;\nconfig.bgRepeat = config.backgroundRepeat;\nexport var background = system(config);\nexport default background;","import { system } from '@styled-system/core';\nvar defaults = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512]\n};\nvar config = {\n position: true,\n zIndex: {\n property: 'zIndex',\n scale: 'zIndices'\n },\n top: {\n property: 'top',\n scale: 'space',\n defaultScale: defaults.space\n },\n right: {\n property: 'right',\n scale: 'space',\n defaultScale: defaults.space\n },\n bottom: {\n property: 'bottom',\n scale: 'space',\n defaultScale: defaults.space\n },\n left: {\n property: 'left',\n scale: 'space',\n defaultScale: defaults.space\n }\n};\nexport var position = system(config);\nexport default position;","import { get, system, compose } from '@styled-system/core';\nvar defaults = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512]\n};\n\nvar isNumber = function isNumber(n) {\n return typeof n === 'number' && !isNaN(n);\n};\n\nvar getMargin = function getMargin(n, scale) {\n if (!isNumber(n)) {\n return get(scale, n, n);\n }\n\n var isNegative = n < 0;\n var absolute = Math.abs(n);\n var value = get(scale, absolute, absolute);\n\n if (!isNumber(value)) {\n return isNegative ? '-' + value : value;\n }\n\n return value * (isNegative ? -1 : 1);\n};\n\nvar configs = {};\nconfigs.margin = {\n margin: {\n property: 'margin',\n scale: 'space',\n transform: getMargin,\n defaultScale: defaults.space\n },\n marginTop: {\n property: 'marginTop',\n scale: 'space',\n transform: getMargin,\n defaultScale: defaults.space\n },\n marginRight: {\n property: 'marginRight',\n scale: 'space',\n transform: getMargin,\n defaultScale: defaults.space\n },\n marginBottom: {\n property: 'marginBottom',\n scale: 'space',\n transform: getMargin,\n defaultScale: defaults.space\n },\n marginLeft: {\n property: 'marginLeft',\n scale: 'space',\n transform: getMargin,\n defaultScale: defaults.space\n },\n marginX: {\n properties: ['marginLeft', 'marginRight'],\n scale: 'space',\n transform: getMargin,\n defaultScale: defaults.space\n },\n marginY: {\n properties: ['marginTop', 'marginBottom'],\n scale: 'space',\n transform: getMargin,\n defaultScale: defaults.space\n }\n};\nconfigs.margin.m = configs.margin.margin;\nconfigs.margin.mt = configs.margin.marginTop;\nconfigs.margin.mr = configs.margin.marginRight;\nconfigs.margin.mb = configs.margin.marginBottom;\nconfigs.margin.ml = configs.margin.marginLeft;\nconfigs.margin.mx = configs.margin.marginX;\nconfigs.margin.my = configs.margin.marginY;\nconfigs.padding = {\n padding: {\n property: 'padding',\n scale: 'space',\n defaultScale: defaults.space\n },\n paddingTop: {\n property: 'paddingTop',\n scale: 'space',\n defaultScale: defaults.space\n },\n paddingRight: {\n property: 'paddingRight',\n scale: 'space',\n defaultScale: defaults.space\n },\n paddingBottom: {\n property: 'paddingBottom',\n scale: 'space',\n defaultScale: defaults.space\n },\n paddingLeft: {\n property: 'paddingLeft',\n scale: 'space',\n defaultScale: defaults.space\n },\n paddingX: {\n properties: ['paddingLeft', 'paddingRight'],\n scale: 'space',\n defaultScale: defaults.space\n },\n paddingY: {\n properties: ['paddingTop', 'paddingBottom'],\n scale: 'space',\n defaultScale: defaults.space\n }\n};\nconfigs.padding.p = configs.padding.padding;\nconfigs.padding.pt = configs.padding.paddingTop;\nconfigs.padding.pr = configs.padding.paddingRight;\nconfigs.padding.pb = configs.padding.paddingBottom;\nconfigs.padding.pl = configs.padding.paddingLeft;\nconfigs.padding.px = configs.padding.paddingX;\nconfigs.padding.py = configs.padding.paddingY;\nexport var margin = system(configs.margin);\nexport var padding = system(configs.padding);\nexport var space = compose(margin, padding);\nexport default space;","import { system } from '@styled-system/core';\nexport var shadow = system({\n boxShadow: {\n property: 'boxShadow',\n scale: 'shadows'\n },\n textShadow: {\n property: 'textShadow',\n scale: 'shadows'\n }\n});\nexport default shadow;","import \"core-js/modules/es.array.reduce.js\";\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n} // based on https://github.com/developit/dlv\n\n\nexport var get = function get(obj, key, def, p, undef) {\n key = key && key.split ? key.split('.') : [key];\n\n for (p = 0; p < key.length; p++) {\n obj = obj ? obj[key[p]] : undef;\n }\n\n return obj === undef ? def : obj;\n};\nvar defaultBreakpoints = [40, 52, 64].map(function (n) {\n return n + 'em';\n});\nvar defaultTheme = {\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n fontSizes: [12, 14, 16, 20, 24, 32, 48, 64, 72]\n};\nvar aliases = {\n bg: 'backgroundColor',\n m: 'margin',\n mt: 'marginTop',\n mr: 'marginRight',\n mb: 'marginBottom',\n ml: 'marginLeft',\n mx: 'marginX',\n my: 'marginY',\n p: 'padding',\n pt: 'paddingTop',\n pr: 'paddingRight',\n pb: 'paddingBottom',\n pl: 'paddingLeft',\n px: 'paddingX',\n py: 'paddingY'\n};\nvar multiples = {\n marginX: ['marginLeft', 'marginRight'],\n marginY: ['marginTop', 'marginBottom'],\n paddingX: ['paddingLeft', 'paddingRight'],\n paddingY: ['paddingTop', 'paddingBottom'],\n size: ['width', 'height']\n};\nvar scales = {\n color: 'colors',\n backgroundColor: 'colors',\n borderColor: 'colors',\n margin: 'space',\n marginTop: 'space',\n marginRight: 'space',\n marginBottom: 'space',\n marginLeft: 'space',\n marginX: 'space',\n marginY: 'space',\n padding: 'space',\n paddingTop: 'space',\n paddingRight: 'space',\n paddingBottom: 'space',\n paddingLeft: 'space',\n paddingX: 'space',\n paddingY: 'space',\n top: 'space',\n right: 'space',\n bottom: 'space',\n left: 'space',\n gridGap: 'space',\n gridColumnGap: 'space',\n gridRowGap: 'space',\n gap: 'space',\n columnGap: 'space',\n rowGap: 'space',\n fontFamily: 'fonts',\n fontSize: 'fontSizes',\n fontWeight: 'fontWeights',\n lineHeight: 'lineHeights',\n letterSpacing: 'letterSpacings',\n border: 'borders',\n borderTop: 'borders',\n borderRight: 'borders',\n borderBottom: 'borders',\n borderLeft: 'borders',\n borderWidth: 'borderWidths',\n borderStyle: 'borderStyles',\n borderRadius: 'radii',\n borderTopRightRadius: 'radii',\n borderTopLeftRadius: 'radii',\n borderBottomRightRadius: 'radii',\n borderBottomLeftRadius: 'radii',\n borderTopWidth: 'borderWidths',\n borderTopColor: 'colors',\n borderTopStyle: 'borderStyles',\n borderBottomWidth: 'borderWidths',\n borderBottomColor: 'colors',\n borderBottomStyle: 'borderStyles',\n borderLeftWidth: 'borderWidths',\n borderLeftColor: 'colors',\n borderLeftStyle: 'borderStyles',\n borderRightWidth: 'borderWidths',\n borderRightColor: 'colors',\n borderRightStyle: 'borderStyles',\n outlineColor: 'colors',\n boxShadow: 'shadows',\n textShadow: 'shadows',\n zIndex: 'zIndices',\n width: 'sizes',\n minWidth: 'sizes',\n maxWidth: 'sizes',\n height: 'sizes',\n minHeight: 'sizes',\n maxHeight: 'sizes',\n flexBasis: 'sizes',\n size: 'sizes',\n // svg\n fill: 'colors',\n stroke: 'colors'\n};\n\nvar positiveOrNegative = function positiveOrNegative(scale, value) {\n if (typeof value !== 'number' || value >= 0) {\n return get(scale, value, value);\n }\n\n var absolute = Math.abs(value);\n var n = get(scale, absolute, absolute);\n if (typeof n === 'string') return '-' + n;\n return n * -1;\n};\n\nvar transforms = ['margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'top', 'bottom', 'left', 'right'].reduce(function (acc, curr) {\n var _extends2;\n\n return _extends({}, acc, (_extends2 = {}, _extends2[curr] = positiveOrNegative, _extends2));\n}, {});\nexport var responsive = function responsive(styles) {\n return function (theme) {\n var next = {};\n var breakpoints = get(theme, 'breakpoints', defaultBreakpoints);\n var mediaQueries = [null].concat(breakpoints.map(function (n) {\n return \"@media screen and (min-width: \" + n + \")\";\n }));\n\n for (var key in styles) {\n var value = typeof styles[key] === 'function' ? styles[key](theme) : styles[key];\n if (value == null) continue;\n\n if (!Array.isArray(value)) {\n next[key] = value;\n continue;\n }\n\n for (var i = 0; i < value.slice(0, mediaQueries.length).length; i++) {\n var media = mediaQueries[i];\n\n if (!media) {\n next[key] = value[i];\n continue;\n }\n\n next[media] = next[media] || {};\n if (value[i] == null) continue;\n next[media][key] = value[i];\n }\n }\n\n return next;\n };\n};\nexport var css = function css(args) {\n return function (props) {\n if (props === void 0) {\n props = {};\n }\n\n var theme = _extends({}, defaultTheme, {}, props.theme || props);\n\n var result = {};\n var obj = typeof args === 'function' ? args(theme) : args;\n var styles = responsive(obj)(theme);\n\n for (var key in styles) {\n var x = styles[key];\n var val = typeof x === 'function' ? x(theme) : x;\n\n if (key === 'variant') {\n var variant = css(get(theme, val))(theme);\n result = _extends({}, result, {}, variant);\n continue;\n }\n\n if (val && typeof val === 'object') {\n result[key] = css(val)(theme);\n continue;\n }\n\n var prop = get(aliases, key, key);\n var scaleName = get(scales, prop);\n var scale = get(theme, scaleName, get(theme, prop, {}));\n var transform = get(transforms, prop, get);\n var value = transform(scale, val, val);\n\n if (multiples[prop]) {\n var dirs = multiples[prop];\n\n for (var i = 0; i < dirs.length; i++) {\n result[dirs[i]] = value;\n }\n } else {\n result[prop] = value;\n }\n }\n\n return result;\n };\n};\nexport default css;","import { get, createParser } from '@styled-system/core';\nimport css from '@styled-system/css';\nexport var variant = function variant(_ref) {\n var _config;\n\n var scale = _ref.scale,\n _ref$prop = _ref.prop,\n prop = _ref$prop === void 0 ? 'variant' : _ref$prop,\n _ref$variants = _ref.variants,\n variants = _ref$variants === void 0 ? {} : _ref$variants,\n key = _ref.key;\n var sx;\n\n if (Object.keys(variants).length) {\n sx = function sx(value, scale, props) {\n return css(get(scale, value, null))(props.theme);\n };\n } else {\n sx = function sx(value, scale) {\n return get(scale, value, null);\n };\n }\n\n sx.scale = scale || key;\n sx.defaults = variants;\n var config = (_config = {}, _config[prop] = sx, _config);\n var parser = createParser(config);\n return parser;\n};\nexport default variant;\nexport var buttonStyle = variant({\n key: 'buttons'\n});\nexport var textStyle = variant({\n key: 'textStyles',\n prop: 'textStyle'\n});\nexport var colorStyle = variant({\n key: 'colorStyles',\n prop: 'colors'\n});","import memoize from '@emotion/memoize';\nimport isPropValid from '@emotion/is-prop-valid';\nimport { compose, space, typography, color, layout, flexbox, border, background, position, grid, shadow, buttonStyle, textStyle, colorStyle } from 'styled-system';\nvar all = compose(space, typography, color, layout, flexbox, border, background, position, grid, shadow, buttonStyle, textStyle, colorStyle);\nexport var props = all.propNames;\nexport var createShouldForwardProp = function createShouldForwardProp(props) {\n var regex = new RegExp(\"^(\" + props.join('|') + \")$\");\n return memoize(function (prop) {\n return isPropValid(prop) && !regex.test(prop);\n });\n};\nexport default createShouldForwardProp(props);","import { createStyleFunction, createParser } from '@styled-system/core'; // v4 api shims\n\nimport layout from '@styled-system/layout';\nimport color from '@styled-system/color';\nimport typography from '@styled-system/typography';\nimport flexbox from '@styled-system/flexbox';\nimport grid from '@styled-system/grid';\nimport border from '@styled-system/border';\nimport background from '@styled-system/background';\nimport position from '@styled-system/position';\nexport { get, createParser, createStyleFunction, compose, system } from '@styled-system/core';\nexport { margin, padding, space } from '@styled-system/space';\nexport { color } from '@styled-system/color';\nexport { layout } from '@styled-system/layout';\nexport { typography } from '@styled-system/typography';\nexport { flexbox } from '@styled-system/flexbox';\nexport { border } from '@styled-system/border';\nexport { background } from '@styled-system/background';\nexport { position } from '@styled-system/position';\nexport { grid } from '@styled-system/grid';\nexport { shadow } from '@styled-system/shadow';\nexport { default as boxShadow, default as textShadow } from '@styled-system/shadow';\nexport { variant, buttonStyle, textStyle, colorStyle } from '@styled-system/variant';\nvar width = layout.width,\n height = layout.height,\n minWidth = layout.minWidth,\n minHeight = layout.minHeight,\n maxWidth = layout.maxWidth,\n maxHeight = layout.maxHeight,\n size = layout.size,\n verticalAlign = layout.verticalAlign,\n display = layout.display,\n overflow = layout.overflow,\n overflowX = layout.overflowX,\n overflowY = layout.overflowY;\nvar opacity = color.opacity;\nvar fontSize = typography.fontSize,\n fontFamily = typography.fontFamily,\n fontWeight = typography.fontWeight,\n lineHeight = typography.lineHeight,\n textAlign = typography.textAlign,\n fontStyle = typography.fontStyle,\n letterSpacing = typography.letterSpacing;\nvar alignItems = flexbox.alignItems,\n alignContent = flexbox.alignContent,\n justifyItems = flexbox.justifyItems,\n justifyContent = flexbox.justifyContent,\n flexWrap = flexbox.flexWrap,\n flexDirection = flexbox.flexDirection,\n flex = flexbox.flex,\n flexGrow = flexbox.flexGrow,\n flexShrink = flexbox.flexShrink,\n flexBasis = flexbox.flexBasis,\n justifySelf = flexbox.justifySelf,\n alignSelf = flexbox.alignSelf,\n order = flexbox.order;\nvar gridGap = grid.gridGap,\n gridColumnGap = grid.gridColumnGap,\n gridRowGap = grid.gridRowGap,\n gridColumn = grid.gridColumn,\n gridRow = grid.gridRow,\n gridAutoFlow = grid.gridAutoFlow,\n gridAutoColumns = grid.gridAutoColumns,\n gridAutoRows = grid.gridAutoRows,\n gridTemplateColumns = grid.gridTemplateColumns,\n gridTemplateRows = grid.gridTemplateRows,\n gridTemplateAreas = grid.gridTemplateAreas,\n gridArea = grid.gridArea;\nvar borderWidth = border.borderWidth,\n borderStyle = border.borderStyle,\n borderColor = border.borderColor,\n borderTop = border.borderTop,\n borderRight = border.borderRight,\n borderBottom = border.borderBottom,\n borderLeft = border.borderLeft,\n borderRadius = border.borderRadius;\nvar backgroundImage = background.backgroundImage,\n backgroundSize = background.backgroundSize,\n backgroundPosition = background.backgroundPosition,\n backgroundRepeat = background.backgroundRepeat;\nvar zIndex = position.zIndex,\n top = position.top,\n right = position.right,\n bottom = position.bottom,\n left = position.left;\nexport { default as borders } from '@styled-system/border';\nexport { width, height, minWidth, minHeight, maxWidth, maxHeight, size, verticalAlign, display, overflow, overflowX, overflowY // color\n, opacity // typography\n, fontSize, fontFamily, fontWeight, lineHeight, textAlign, fontStyle, letterSpacing // flexbox\n, alignItems, alignContent, justifyItems, justifyContent, flexWrap, flexDirection, flex, flexGrow, flexShrink, flexBasis, justifySelf, alignSelf, order // grid\n, gridGap, gridColumnGap, gridRowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea // border\n, borderWidth, borderStyle, borderColor, borderTop, borderRight, borderBottom, borderLeft, borderRadius // background\n, backgroundImage, backgroundSize, backgroundPosition, backgroundRepeat // position\n, zIndex, top, right, bottom, left }; // v4 style API shim\n\nexport var style = function style(_ref) {\n var prop = _ref.prop,\n cssProperty = _ref.cssProperty,\n alias = _ref.alias,\n key = _ref.key,\n transformValue = _ref.transformValue,\n scale = _ref.scale,\n properties = _ref.properties;\n var config = {};\n config[prop] = createStyleFunction({\n properties: properties,\n property: cssProperty || prop,\n scale: key,\n defaultScale: scale,\n transform: transformValue\n });\n if (alias) config[alias] = config[prop];\n var parse = createParser(config);\n return parse;\n};","import { css, get } from '@theme-ui/css';\nimport { createShouldForwardProp } from '@styled-system/should-forward-prop';\nimport space from '@styled-system/space';\nimport color from '@styled-system/color';\nimport styled from '@emotion/styled';\nimport { keyframes } from '@emotion/core';\nimport React from 'react';\nvar shouldForwardProp = createShouldForwardProp(space.propNames.concat(color.propNames));\n\nvar sx = function sx(props) {\n return css(props.sx)(props.theme);\n};\n\nvar base = function base(props) {\n return css(props.__css)(props.theme);\n};\n\nvar variant = function variant(ref) {\n var theme = ref.theme;\n var variant = ref.variant;\n var __themeKey = ref.__themeKey;\n if (__themeKey === void 0) __themeKey = 'variants';\n return css(get(theme, __themeKey + '.' + variant, get(theme, variant)));\n};\n\nvar Box = styled('div', {\n shouldForwardProp: shouldForwardProp\n})({\n boxSizing: 'border-box',\n margin: 0,\n minWidth: 0\n}, base, variant, space, color, sx, function (props) {\n return props.css;\n});\nvar Flex = styled(Box)({\n display: 'flex'\n});\n\nfunction objectWithoutProperties(obj, exclude) {\n var target = {};\n\n for (var k in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, k) && exclude.indexOf(k) === -1) target[k] = obj[k];\n }\n\n return target;\n}\n\nvar px = function px(n) {\n return typeof n === 'number' ? n + 'px' : n;\n};\n\nvar widthToColumns = function widthToColumns(width) {\n return Array.isArray(width) ? width.map(widthToColumns) : !!width && \"repeat(auto-fit, minmax(\" + px(width) + \", 1fr))\";\n};\n\nvar countToColumns = function countToColumns(n) {\n return Array.isArray(n) ? n.map(countToColumns) : !!n && (typeof n === 'number' ? \"repeat(\" + n + \", 1fr)\" : n);\n};\n\nvar Grid = React.forwardRef(function (ref$1, ref) {\n var width = ref$1.width;\n var columns = ref$1.columns;\n var gap = ref$1.gap;\n if (gap === void 0) gap = 3;\n var rest = objectWithoutProperties(ref$1, [\"width\", \"columns\", \"gap\"]);\n var props = rest;\n var gridTemplateColumns = !!width ? widthToColumns(width) : countToColumns(columns);\n return React.createElement(Box, Object.assign({}, {\n ref: ref\n }, props, {\n __themeKey: \"grids\",\n __css: {\n display: 'grid',\n gridGap: gap,\n gridTemplateColumns: gridTemplateColumns\n }\n }));\n});\nvar Button = React.forwardRef(function (props, ref) {\n return React.createElement(Box, Object.assign({}, {\n ref: ref,\n as: \"button\",\n variant: \"primary\"\n }, props, {\n __themeKey: \"buttons\",\n __css: {\n appearance: 'none',\n display: 'inline-block',\n textAlign: 'center',\n lineHeight: 'inherit',\n textDecoration: 'none',\n fontSize: 'inherit',\n px: 3,\n py: 2,\n color: 'white',\n bg: 'primary',\n border: 0,\n borderRadius: 4\n }\n }));\n});\nvar Link = React.forwardRef(function (props, ref) {\n return React.createElement(Box, Object.assign({}, {\n ref: ref,\n as: \"a\",\n variant: \"styles.a\"\n }, props, {\n __themeKey: \"links\"\n }));\n});\nvar Text = React.forwardRef(function (props, ref) {\n return React.createElement(Box, Object.assign({}, {\n ref: ref,\n variant: \"default\"\n }, props, {\n __themeKey: \"text\"\n }));\n});\nvar Heading = React.forwardRef(function (props, ref) {\n return React.createElement(Box, Object.assign({}, {\n ref: ref,\n as: \"h2\",\n variant: \"heading\"\n }, props, {\n __themeKey: \"text\",\n __css: {\n fontFamily: 'heading',\n fontWeight: 'heading',\n lineHeight: 'heading'\n }\n }));\n});\nvar Image = React.forwardRef(function (props, ref) {\n return React.createElement(Box, Object.assign({}, {\n ref: ref,\n as: \"img\"\n }, props, {\n __themeKey: \"images\",\n __css: Object.assign({}, {\n maxWidth: '100%',\n height: 'auto'\n }, props.__css)\n }));\n});\nvar Card = React.forwardRef(function (props, ref) {\n return React.createElement(Box, Object.assign({}, {\n ref: ref,\n variant: \"primary\"\n }, props, {\n __themeKey: \"cards\"\n }));\n});\nvar Label = React.forwardRef(function (props, ref) {\n return React.createElement(Box, Object.assign({}, {\n ref: ref,\n as: \"label\",\n variant: \"label\"\n }, props, {\n __themeKey: \"forms\",\n __css: {\n width: '100%',\n display: 'flex'\n }\n }));\n});\nvar Input = React.forwardRef(function (props, ref) {\n return React.createElement(Box, Object.assign({}, {\n ref: ref,\n as: \"input\",\n variant: \"input\"\n }, props, {\n __themeKey: \"forms\",\n __css: {\n display: 'block',\n width: '100%',\n p: 2,\n appearance: 'none',\n fontSize: 'inherit',\n lineHeight: 'inherit',\n border: '1px solid',\n borderRadius: 4,\n color: 'inherit',\n bg: 'transparent'\n }\n }));\n});\n\nfunction objectWithoutProperties$1(obj, exclude) {\n var target = {};\n\n for (var k in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, k) && exclude.indexOf(k) === -1) target[k] = obj[k];\n }\n\n return target;\n}\n\nvar SVG = function SVG(ref) {\n var size = ref.size;\n if (size === void 0) size = 24;\n var rest = objectWithoutProperties$1(ref, [\"size\"]);\n var props = rest;\n return React.createElement(Box, Object.assign({}, {\n as: \"svg\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size + '',\n height: size + '',\n viewBox: \"0 0 24 24\",\n fill: \"currentcolor\"\n }, props));\n};\n\nvar getProps = function getProps(test) {\n return function (props) {\n var next = {};\n\n for (var key in props) {\n if (test(key || '')) {\n next[key] = props[key];\n }\n }\n\n return next;\n };\n};\n\nvar MRE = /^m[trblxy]?$/;\nvar getMargin = getProps(function (k) {\n return MRE.test(k);\n});\nvar omitMargin = getProps(function (k) {\n return !MRE.test(k);\n});\n\nvar DownArrow = function DownArrow(props) {\n return React.createElement(SVG, props, React.createElement('path', {\n d: \"M7 10l5 5 5-5z\"\n }));\n};\n\nvar Select = React.forwardRef(function (props, ref) {\n return React.createElement(Box, Object.assign({}, getMargin(props), {\n sx: {\n display: 'flex'\n }\n }), React.createElement(Box, Object.assign({}, {\n ref: ref,\n as: \"select\",\n variant: \"select\"\n }, omitMargin(props), {\n __themeKey: \"forms\",\n __css: {\n display: 'block',\n width: '100%',\n p: 2,\n appearance: 'none',\n fontSize: 'inherit',\n lineHeight: 'inherit',\n border: '1px solid',\n borderRadius: 4,\n color: 'inherit',\n bg: 'transparent'\n }\n })), React.createElement(DownArrow, {\n sx: {\n ml: -28,\n alignSelf: 'center',\n pointerEvents: 'none'\n }\n }));\n});\nvar Textarea = React.forwardRef(function (props, ref) {\n return React.createElement(Box, Object.assign({}, {\n ref: ref,\n as: \"textarea\",\n variant: \"textarea\"\n }, props, {\n __themeKey: \"forms\",\n __css: {\n display: 'block',\n width: '100%',\n p: 2,\n appearance: 'none',\n fontSize: 'inherit',\n lineHeight: 'inherit',\n border: '1px solid',\n borderRadius: 4,\n color: 'inherit',\n bg: 'transparent'\n }\n }));\n});\n\nfunction objectWithoutProperties$2(obj, exclude) {\n var target = {};\n\n for (var k in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, k) && exclude.indexOf(k) === -1) target[k] = obj[k];\n }\n\n return target;\n}\n\nvar RadioChecked = function RadioChecked(props) {\n return React.createElement(SVG, props, React.createElement('path', {\n d: \"M12 7c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zm0-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n }));\n};\n\nvar RadioUnchecked = function RadioUnchecked(props) {\n return React.createElement(SVG, props, React.createElement('path', {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n }));\n};\n\nvar RadioIcon = function RadioIcon(props) {\n return React.createElement(React.Fragment, null, React.createElement(RadioChecked, Object.assign({}, props, {\n __css: {\n display: 'none',\n 'input:checked ~ &': {\n display: 'block'\n }\n }\n })), React.createElement(RadioUnchecked, Object.assign({}, props, {\n __css: {\n display: 'block',\n 'input:checked ~ &': {\n display: 'none'\n }\n }\n })));\n};\n\nvar Radio = React.forwardRef(function (ref$1, ref) {\n var className = ref$1.className;\n var sx = ref$1.sx;\n var variant = ref$1.variant;\n if (variant === void 0) variant = 'radio';\n var rest = objectWithoutProperties$2(ref$1, [\"className\", \"sx\", \"variant\"]);\n var props = rest;\n return React.createElement(Box, null, React.createElement(Box, Object.assign({}, {\n ref: ref,\n as: \"input\",\n type: \"radio\"\n }, props, {\n sx: {\n position: 'absolute',\n opacity: 0,\n zIndex: -1,\n width: 1,\n height: 1,\n overflow: 'hidden'\n }\n })), React.createElement(Box, {\n as: RadioIcon,\n 'aria-hidden': \"true\",\n __themeKey: \"forms\",\n variant: variant,\n className: className,\n sx: sx,\n __css: {\n // todo: system props??\n mr: 2,\n borderRadius: 9999,\n color: 'gray',\n 'input:checked ~ &': {\n color: 'primary'\n },\n 'input:focus ~ &': {\n bg: 'highlight'\n }\n }\n }));\n});\n\nfunction objectWithoutProperties$3(obj, exclude) {\n var target = {};\n\n for (var k in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, k) && exclude.indexOf(k) === -1) target[k] = obj[k];\n }\n\n return target;\n}\n\nvar CheckboxChecked = function CheckboxChecked(props) {\n return React.createElement(SVG, props, React.createElement('path', {\n d: \"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"\n }));\n};\n\nvar CheckboxUnchecked = function CheckboxUnchecked(props) {\n return React.createElement(SVG, props, React.createElement('path', {\n d: \"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"\n }));\n};\n\nvar CheckboxIcon = function CheckboxIcon(props) {\n return React.createElement(React.Fragment, null, React.createElement(CheckboxChecked, Object.assign({}, props, {\n __css: {\n display: 'none',\n 'input:checked ~ &': {\n display: 'block'\n }\n }\n })), React.createElement(CheckboxUnchecked, Object.assign({}, props, {\n __css: {\n display: 'block',\n 'input:checked ~ &': {\n display: 'none'\n }\n }\n })));\n};\n\nvar Checkbox = React.forwardRef(function (ref$1, ref) {\n var className = ref$1.className;\n var sx = ref$1.sx;\n var variant = ref$1.variant;\n if (variant === void 0) variant = 'checkbox';\n var rest = objectWithoutProperties$3(ref$1, [\"className\", \"sx\", \"variant\"]);\n var props = rest;\n return React.createElement(Box, null, React.createElement(Box, Object.assign({}, {\n ref: ref,\n as: \"input\",\n type: \"checkbox\"\n }, props, {\n sx: {\n position: 'absolute',\n opacity: 0,\n zIndex: -1,\n width: 1,\n height: 1,\n overflow: 'hidden'\n }\n })), React.createElement(Box, {\n as: CheckboxIcon,\n 'aria-hidden': \"true\",\n __themeKey: \"forms\",\n variant: variant,\n className: className,\n sx: sx,\n __css: {\n mr: 2,\n borderRadius: 4,\n color: 'gray',\n 'input:checked ~ &': {\n color: 'primary'\n },\n 'input:focus ~ &': {\n color: 'primary',\n bg: 'highlight'\n }\n }\n }));\n});\nvar thumb = {\n appearance: 'none',\n width: 16,\n height: 16,\n bg: 'currentcolor',\n border: 0,\n borderRadius: 9999,\n variant: 'forms.slider.thumb'\n};\nvar Slider = React.forwardRef(function (props, ref) {\n return React.createElement(Box, Object.assign({}, {\n ref: ref,\n as: \"input\",\n type: \"range\",\n variant: \"slider\"\n }, props, {\n __themeKey: \"forms\",\n __css: {\n display: 'block',\n width: '100%',\n height: 4,\n my: 2,\n cursor: 'pointer',\n appearance: 'none',\n borderRadius: 9999,\n color: 'inherit',\n bg: 'gray',\n ':focus': {\n outline: 'none',\n color: 'primary'\n },\n '&::-webkit-slider-thumb': thumb,\n '&::-moz-range-thumb': thumb,\n '&::-ms-thumb': thumb\n }\n }));\n});\n\nfunction objectWithoutProperties$4(obj, exclude) {\n var target = {};\n\n for (var k in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, k) && exclude.indexOf(k) === -1) target[k] = obj[k];\n }\n\n return target;\n}\n\nvar Field = React.forwardRef(function (ref$1, ref) {\n var Control = ref$1.as;\n if (Control === void 0) Control = Input;\n var label = ref$1.label;\n var name = ref$1.name;\n var rest = objectWithoutProperties$4(ref$1, [\"as\", \"label\", \"name\"]);\n var props = rest;\n return React.createElement(Box, getMargin(props), React.createElement(Label, {\n htmlFor: name\n }, label), React.createElement(Control, Object.assign({}, {\n ref: ref,\n id: name,\n name: name\n }, omitMargin(props))));\n});\nvar Progress = React.forwardRef(function (props, ref) {\n return React.createElement(Box, Object.assign({}, {\n ref: ref,\n as: \"progress\",\n variant: \"styles.progress\"\n }, props, {\n __css: {\n display: 'block',\n width: '100%',\n height: '4px',\n margin: 0,\n padding: 0,\n overflow: 'hidden',\n appearance: 'none',\n color: 'primary',\n bg: 'gray',\n borderRadius: 9999,\n border: 'none',\n '&::-webkit-progress-bar': {\n bg: 'transparent'\n },\n '&::-webkit-progress-value': {\n bg: 'currentcolor'\n },\n '&::-moz-progress-bar': {\n bg: 'currentcolor'\n }\n }\n }));\n});\n\nfunction objectWithoutProperties$5(obj, exclude) {\n var target = {};\n\n for (var k in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, k) && exclude.indexOf(k) === -1) target[k] = obj[k];\n }\n\n return target;\n}\n\nvar Donut = React.forwardRef(function (ref$1, ref) {\n var size = ref$1.size;\n if (size === void 0) size = 128;\n var strokeWidth = ref$1.strokeWidth;\n if (strokeWidth === void 0) strokeWidth = 2;\n var value = ref$1.value;\n if (value === void 0) value = 0;\n var min = ref$1.min;\n if (min === void 0) min = 0;\n var max = ref$1.max;\n if (max === void 0) max = 1;\n var title = ref$1.title;\n var rest = objectWithoutProperties$5(ref$1, [\"size\", \"strokeWidth\", \"value\", \"min\", \"max\", \"title\"]);\n var props = rest;\n var r = 16 - strokeWidth;\n var C = 2 * r * Math.PI;\n var offset = C - (value - min) / (max - min) * C;\n return React.createElement(Box, Object.assign({}, {\n ref: ref,\n as: \"svg\",\n viewBox: \"0 0 32 32\",\n width: size,\n height: size,\n strokeWidth: strokeWidth,\n fill: \"none\",\n stroke: \"currentcolor\",\n role: \"img\",\n 'aria-valuenow': value,\n 'aria-valuemin': min,\n 'aria-valuemax': max\n }, props, {\n __css: {\n color: 'primary'\n }\n }), title && React.createElement('title', null, title), React.createElement('circle', {\n cx: 16,\n cy: 16,\n r: r,\n opacity: 1 / 8\n }), React.createElement('circle', {\n cx: 16,\n cy: 16,\n r: r,\n strokeDasharray: C,\n strokeDashoffset: offset,\n transform: \"rotate(-90 16 16)\"\n }));\n});\n\nfunction objectWithoutProperties$6(obj, exclude) {\n var target = {};\n\n for (var k in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, k) && exclude.indexOf(k) === -1) target[k] = obj[k];\n }\n\n return target;\n}\n\nvar spin = keyframes({\n from: {\n transform: 'rotate(0deg)'\n },\n to: {\n transform: 'rotate(360deg)'\n }\n});\nvar Spinner = React.forwardRef(function (ref$1, ref) {\n var size = ref$1.size;\n if (size === void 0) size = 48;\n var strokeWidth = ref$1.strokeWidth;\n if (strokeWidth === void 0) strokeWidth = 4;\n var title = ref$1.title;\n if (title === void 0) title = 'Loading...';\n var duration = ref$1.duration;\n if (duration === void 0) duration = 500;\n var rest = objectWithoutProperties$6(ref$1, [\"size\", \"strokeWidth\", \"max\", \"title\", \"duration\"]);\n var props = rest;\n var r = 16 - strokeWidth;\n var C = 2 * r * Math.PI;\n var offset = C - 1 / 4 * C;\n return React.createElement(Box, Object.assign({}, {\n ref: ref,\n as: \"svg\",\n viewBox: \"0 0 32 32\",\n width: size,\n height: size,\n strokeWidth: strokeWidth,\n fill: \"none\",\n stroke: \"currentcolor\",\n role: \"img\"\n }, props, {\n __css: {\n color: 'primary',\n overflow: 'visible'\n }\n }), React.createElement('title', null, title), React.createElement('circle', {\n cx: 16,\n cy: 16,\n r: r,\n opacity: 1 / 8\n }), React.createElement(Box, {\n as: \"circle\",\n cx: 16,\n cy: 16,\n r: r,\n strokeDasharray: C,\n strokeDashoffset: offset,\n __css: {\n transformOrigin: '50% 50%',\n animationName: spin.toString(),\n animationTimingFunction: 'linear',\n animationDuration: duration + 'ms',\n animationIterationCount: 'infinite'\n }\n }));\n});\n\nfunction objectWithoutProperties$7(obj, exclude) {\n var target = {};\n\n for (var k in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, k) && exclude.indexOf(k) === -1) target[k] = obj[k];\n }\n\n return target;\n}\n\nvar Avatar = React.forwardRef(function (ref$1, ref) {\n var size = ref$1.size;\n if (size === void 0) size = 48;\n var rest = objectWithoutProperties$7(ref$1, [\"size\"]);\n var props = rest;\n return React.createElement(Image, Object.assign({}, {\n ref: ref,\n width: size,\n height: size,\n variant: \"avatar\"\n }, props, {\n __css: {\n borderRadius: 9999\n }\n }));\n});\nvar Badge = React.forwardRef(function (props, ref) {\n return React.createElement(Box, Object.assign({}, {\n ref: ref,\n variant: \"primary\"\n }, props, {\n __themeKey: \"badges\",\n __css: {\n display: 'inline-block',\n verticalAlign: 'baseline',\n fontSize: 0,\n fontWeight: 'bold',\n whiteSpace: 'nowrap',\n px: 1,\n borderRadius: 2,\n color: 'white',\n bg: 'primary'\n }\n }));\n});\n\nfunction objectWithoutProperties$8(obj, exclude) {\n var target = {};\n\n for (var k in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, k) && exclude.indexOf(k) === -1) target[k] = obj[k];\n }\n\n return target;\n}\n\nvar IconButton = React.forwardRef(function (ref$1, ref) {\n var size = ref$1.size;\n if (size === void 0) size = 32;\n var rest = objectWithoutProperties$8(ref$1, [\"size\"]);\n var props = rest;\n return React.createElement(Box, Object.assign({}, {\n ref: ref,\n as: \"button\",\n variant: \"icon\"\n }, props, {\n __themeKey: \"buttons\",\n __css: {\n appearance: 'none',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: 1,\n width: size,\n height: size,\n color: 'inherit',\n bg: 'transparent',\n border: 'none',\n borderRadius: 4\n }\n }));\n});\n\nfunction objectWithoutProperties$9(obj, exclude) {\n var target = {};\n\n for (var k in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, k) && exclude.indexOf(k) === -1) target[k] = obj[k];\n }\n\n return target;\n}\n\nvar x = React.createElement('svg', {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"24\",\n height: \"24\",\n fill: \"currentcolor\",\n viewBox: \"0 0 24 24\"\n}, React.createElement('path', {\n d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}));\nvar Close = React.forwardRef(function (ref$1, ref) {\n var rest = objectWithoutProperties$9(ref$1, [\"size\"]);\n var props = rest;\n return React.createElement(IconButton, Object.assign({}, {\n ref: ref,\n title: \"Close\",\n 'aria-label': \"Close\",\n variant: \"close\"\n }, props, {\n children: x\n }));\n});\nvar Alert = React.forwardRef(function (props, ref) {\n return React.createElement(Box, Object.assign({}, {\n ref: ref,\n variant: \"primary\"\n }, props, {\n __themeKey: \"alerts\",\n __css: {\n display: 'flex',\n alignItems: 'center',\n px: 3,\n py: 2,\n fontWeight: 'bold',\n color: 'white',\n bg: 'primary',\n borderRadius: 4\n }\n }));\n});\nvar Divider = React.forwardRef(function (props, ref) {\n return React.createElement(Box, Object.assign({}, {\n ref: ref,\n as: \"hr\",\n variant: \"styles.hr\"\n }, props, {\n __css: {\n color: 'gray',\n m: 0,\n my: 2,\n border: 0,\n borderBottom: '1px solid'\n }\n }));\n});\n\nfunction objectWithoutProperties$a(obj, exclude) {\n var target = {};\n\n for (var k in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, k) && exclude.indexOf(k) === -1) target[k] = obj[k];\n }\n\n return target;\n}\n\nvar Embed = React.forwardRef(function (ref$1, ref) {\n var ratio = ref$1.ratio;\n if (ratio === void 0) ratio = 16 / 9;\n var src = ref$1.src;\n var frameBorder = ref$1.frameBorder;\n if (frameBorder === void 0) frameBorder = 0;\n var allowFullScreen = ref$1.allowFullScreen;\n if (allowFullScreen === void 0) allowFullScreen = true;\n var width = ref$1.width;\n if (width === void 0) width = 560;\n var height = ref$1.height;\n if (height === void 0) height = 315;\n var allow = ref$1.allow;\n var rest = objectWithoutProperties$a(ref$1, [\"ratio\", \"src\", \"frameBorder\", \"allowFullScreen\", \"width\", \"height\", \"allow\"]);\n var props = rest;\n return React.createElement(Box, Object.assign({}, props, {\n __css: {\n width: '100%',\n height: 0,\n paddingBottom: 100 / ratio + '%',\n position: 'relative',\n overflow: 'hidden'\n }\n }), React.createElement(Box, {\n ref: ref,\n as: \"iframe\",\n src: src,\n width: width,\n height: height,\n frameBorder: frameBorder,\n allowFullScreen: allowFullScreen,\n allow: allow,\n __css: {\n position: 'absolute',\n width: '100%',\n height: '100%',\n top: 0,\n bottom: 0,\n left: 0,\n border: 0\n }\n }));\n});\n\nfunction objectWithoutProperties$b(obj, exclude) {\n var target = {};\n\n for (var k in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, k) && exclude.indexOf(k) === -1) target[k] = obj[k];\n }\n\n return target;\n}\n\nvar AspectRatio = React.forwardRef(function (ref$1, ref) {\n var ratio = ref$1.ratio;\n if (ratio === void 0) ratio = 4 / 3;\n var children = ref$1.children;\n var rest = objectWithoutProperties$b(ref$1, [\"ratio\", \"children\"]);\n var props = rest;\n return React.createElement(Box, {\n ref: ref,\n sx: {\n position: 'relative',\n overflow: 'hidden'\n }\n }, React.createElement(Box, {\n sx: {\n width: '100%',\n height: 0,\n paddingBottom: 100 / ratio + '%'\n }\n }), React.createElement(Box, Object.assign({}, props, {\n __css: {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n }), children));\n});\n\nfunction objectWithoutProperties$c(obj, exclude) {\n var target = {};\n\n for (var k in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, k) && exclude.indexOf(k) === -1) target[k] = obj[k];\n }\n\n return target;\n}\n\nvar AspectImage = React.forwardRef(function (ref$1, ref) {\n var ratio = ref$1.ratio;\n var rest = objectWithoutProperties$c(ref$1, [\"ratio\"]);\n var props = rest;\n return React.createElement(AspectRatio, {\n ratio: ratio\n }, React.createElement(Image, Object.assign({}, {\n ref: ref\n }, props, {\n __css: {\n objectFit: 'cover'\n }\n })));\n});\nvar Container = React.forwardRef(function (props, ref) {\n return React.createElement(Box, Object.assign({}, {\n ref: ref,\n variant: \"container\"\n }, props, {\n __themeKey: \"layout\",\n __css: {\n width: '100%',\n maxWidth: 'container',\n mx: 'auto'\n }\n }));\n});\nvar NavLink = React.forwardRef(function (props, ref) {\n return React.createElement(Link, Object.assign({}, {\n ref: ref,\n variant: \"nav\"\n }, props, {\n __css: {\n color: 'inherit',\n textDecoration: 'none',\n fontWeight: 'bold',\n display: 'inline-block',\n '&:hover, &:focus, &.active': {\n color: 'primary'\n }\n }\n }));\n});\nvar Message = React.forwardRef(function (props, ref) {\n return React.createElement(Box, Object.assign({}, {\n ref: ref\n }, props, {\n __themeKey: \"messages\",\n __css: {\n padding: 3,\n paddingLeft: function paddingLeft(t) {\n return t.space[3] - t.space[1];\n },\n borderLeftWidth: function borderLeftWidth(t) {\n return t.space[1];\n },\n borderLeftStyle: 'solid',\n borderLeftColor: 'primary',\n borderRadius: 4,\n bg: 'highlight'\n }\n }));\n});\n\nvar MenuIcon = function MenuIcon(ref) {\n var size = ref.size;\n if (size === void 0) size = 24;\n return React.createElement(Box, {\n as: \"svg\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n fill: \"currentcolor\",\n viewBox: \"0 0 24 24\",\n sx: {\n display: 'block',\n margin: 0\n }\n }, React.createElement('path', {\n d: \"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z\"\n }));\n};\n\nvar MenuButton = React.forwardRef(function (props, ref) {\n return React.createElement(IconButton, Object.assign({}, {\n ref: ref,\n title: \"Menu\",\n 'aria-label': \"Toggle Menu\",\n variant: \"menu\"\n }, props), React.createElement(MenuIcon, null));\n});\nexport { Box, Flex, Grid, Button, Link, Text, Heading, Image, Card, Label, Input, Select, Textarea, Radio, Checkbox, Slider, Field, Progress, Donut, Spinner, Avatar, Badge, Close, Alert, Divider, Embed, AspectRatio, AspectImage, Container, NavLink, Message, IconButton, MenuButton };","import React from \"react\";\n\nconst getWindowWidth = () => typeof window === \"undefined\" ? undefined : window.innerWidth;\n\nexport default () => {\n\tconst [width, setWidth] = React.useState(getWindowWidth);\n\n\tReact.useEffect(() => {\n\t\tconst handleResize = () => setWidth(getWindowWidth());\n\t\twindow.addEventListener(\"resize\", handleResize);\n\t\treturn () => window.removeEventListener(\"resize\", handleResize);\n\t}, []);\n\n\treturn [width];\n};\n","/** @jsx jsx */\n// import React from 'react';\nimport { Link } from \"gatsby\";\nimport { Box, jsx } from \"theme-ui\";\n\nexport default ({ siteMetadata }) => (\n\t<Box py={2} px={3} sx={{ borderBottom: \"1px solid\", borderColor: \"gray\" }}>\n\t\t<Link to=\"/\" sx={{ fontWeight: \"bold\", color: \"text\", textDecoration: \"none\" }}>\n\t\t\t{siteMetadata.title}\n\t\t</Link>\n\t</Box>\n);\n","import React, { useCallback } from \"react\";\nimport { Link } from \"gatsby\";\nimport { useStackedPage } from \"react-stacked-pages-hook\";\nimport styled from \"styled-components\";\n\nconst StyledLink = styled(Link)`color: firebrick;`;\n\nexport const LinkToStacked = React.forwardRef(\n\t({ to, onClick, onMouseLeave, onMouseEnter, ...restProps }, ref) => {\n\t\tconst [, , , navigateToStackedPage, highlightStackedPage] = useStackedPage();\n\t\tconst onClickHandler = useCallback(\n\t\t\t(ev) => {\n\t\t\t\tev.preventDefault();\n\t\t\t\tif (onClick) onClick(ev);\n\n\t\t\t\tconst isMac = window.navigator.platform.toUpperCase().indexOf(\"MAC\") >= 0;\n\n\t\t\t\t/* Override command + click on MacOS and Ctrl + click on other OS */\n\t\t\t\tif ((isMac && ev.metaKey) || (!isMac && ev.ctrlKey)) window.open(to, \"_blank\");\n\t\t\t\telse navigateToStackedPage(to);\n\t\t\t},\n\t\t\t[navigateToStackedPage, to, onClick]\n\t\t);\n\n\t\tconst onMouseEnterHandler = useCallback(\n\t\t\t(ev) => {\n\t\t\t\thighlightStackedPage(to, true);\n\t\t\t\tif (onMouseEnter) {\n\t\t\t\t\tonMouseEnter(ev);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[to, onMouseEnter, highlightStackedPage]\n\t\t);\n\n\t\tconst onMouseLeaveHandler = useCallback(\n\t\t\t(ev) => {\n\t\t\t\thighlightStackedPage(to, false);\n\t\t\t\tif (onMouseLeave) {\n\t\t\t\t\tonMouseLeave(ev);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[to, onMouseLeave, highlightStackedPage]\n\t\t);\n\n\t\treturn (\n\t\t\t<StyledLink\n\t\t\t\t{...restProps}\n\t\t\t\tto={to}\n\t\t\t\tref={ref}\n\t\t\t\tonClick={onClickHandler}\n\t\t\t\tonMouseEnter={onMouseEnterHandler}\n\t\t\t\tonMouseLeave={onMouseLeaveHandler}\n\t\t\t/>\n\t\t);\n\t}\n);\n","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import { isHTMLElement } from \"./instanceOf.js\";\nvar round = Math.round;\nexport default function getBoundingClientRect(element, includeScale) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n var rect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (isHTMLElement(element) && includeScale) {\n var offsetHeight = element.offsetHeight;\n var offsetWidth = element.offsetWidth; // Do not attempt to divide by 0, otherwise we get `Infinity` as scale\n // Fallback to 1 in case both values are `0`\n\n if (offsetWidth > 0) {\n scaleX = rect.width / offsetWidth || 1;\n }\n\n if (offsetHeight > 0) {\n scaleY = rect.height / offsetHeight || 1;\n }\n }\n\n return {\n width: round(rect.width / scaleX),\n height: round(rect.height / scaleY),\n top: round(rect.top / scaleY),\n right: round(rect.right / scaleX),\n bottom: round(rect.bottom / scaleY),\n left: round(rect.left / scaleX),\n x: round(rect.left / scaleX),\n y: round(rect.top / scaleY)\n };\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = rect.width / element.offsetWidth || 1;\n var scaleY = rect.height / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1;\n var isIE = navigator.userAgent.indexOf('Trident') !== -1;\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","import \"core-js/modules/es.array.reduce.js\";\nexport var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import \"core-js/modules/es.array.reduce.js\";\nimport { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","import \"core-js/modules/es.array.reduce.js\";\nexport default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name; // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","import { top, left, right, bottom } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(round(x * dpr) / dpr) || 0,\n y: round(round(y * dpr) / dpr) || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets;\n\n var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === 'function' ? roundOffsets(offsets) : offsets,\n _ref3$x = _ref3.x,\n x = _ref3$x === void 0 ? 0 : _ref3$x,\n _ref3$y = _ref3.y,\n y = _ref3$y === void 0 ? 0 : _ref3$y;\n\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top) {\n sideY = bottom; // $FlowFixMe[prop-missing]\n\n y -= offsetParent[heightProp] - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left) {\n sideX = right; // $FlowFixMe[prop-missing]\n\n x -= offsetParent[widthProp] - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref4) {\n var state = _ref4.state,\n options = _ref4.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import \"core-js/modules/es.array.reduce.js\";\nimport getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import \"core-js/modules/es.array.reduce.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\";\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import \"core-js/modules/es.array.reduce.js\";\nimport { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element) {\n var rect = getBoundingClientRect(element);\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nexport default function getViewportRect(element) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper\n // can be obscured underneath it.\n // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even\n // if it isn't open, so if this isn't available, the popper will be detected\n // to overflow the bottom of the screen too early.\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)\n // In Chrome, it returns a value very close to 0 (+/-) but contains rounding\n // errors due to floating point numbers, so we need to check precision.\n // Safari returns a number <= 0, usually < -1 when pinch-zoomed\n // Feature detection fails in mobile emulation mode in Chrome.\n // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <\n // 0.001\n // Fallback here: \"Not Safari\" userAgent\n\n if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","import \"core-js/modules/es.array.reduce.js\";\nexport default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport default function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import \"core-js/modules/es.array.reduce.js\";\nimport getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import \"core-js/modules/es.array.reduce.js\";\nimport \"core-js/modules/es.array.sort.js\";\nimport getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport within from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { max as mathMax, min as mathMin } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis || checkAltAxis) {\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = popperOffsets[mainAxis] + overflow[mainSide];\n var max = popperOffsets[mainAxis] - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0;\n var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue;\n\n if (checkMainAxis) {\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var _preventedOffset = within(tether ? mathMin(_min, tetherMin) : _min, _offset, tether ? mathMax(_max, tetherMax) : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport within from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import \"core-js/modules/es.array.reduce.js\";\n\n/**!\n* tippy.js v6.3.1\n* (c) 2017-2021 atomiks\n* MIT License\n*/\nimport { createPopper, applyStyles } from '@popperjs/core';\nvar ROUND_ARROW = '<svg width=\"16\" height=\"6\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z\"></svg>';\nvar BOX_CLASS = \"tippy-box\";\nvar CONTENT_CLASS = \"tippy-content\";\nvar BACKDROP_CLASS = \"tippy-backdrop\";\nvar ARROW_CLASS = \"tippy-arrow\";\nvar SVG_ARROW_CLASS = \"tippy-svg-arrow\";\nvar TOUCH_OPTIONS = {\n passive: true,\n capture: true\n};\n\nfunction hasOwnProperty(obj, key) {\n return {}.hasOwnProperty.call(obj, key);\n}\n\nfunction getValueAtIndexOrReturn(value, index, defaultValue) {\n if (Array.isArray(value)) {\n var v = value[index];\n return v == null ? Array.isArray(defaultValue) ? defaultValue[index] : defaultValue : v;\n }\n\n return value;\n}\n\nfunction isType(value, type) {\n var str = {}.toString.call(value);\n return str.indexOf('[object') === 0 && str.indexOf(type + \"]\") > -1;\n}\n\nfunction invokeWithArgsOrReturn(value, args) {\n return typeof value === 'function' ? value.apply(void 0, args) : value;\n}\n\nfunction debounce(fn, ms) {\n // Avoid wrapping in `setTimeout` if ms is 0 anyway\n if (ms === 0) {\n return fn;\n }\n\n var timeout;\n return function (arg) {\n clearTimeout(timeout);\n timeout = setTimeout(function () {\n fn(arg);\n }, ms);\n };\n}\n\nfunction removeProperties(obj, keys) {\n var clone = Object.assign({}, obj);\n keys.forEach(function (key) {\n delete clone[key];\n });\n return clone;\n}\n\nfunction splitBySpaces(value) {\n return value.split(/\\s+/).filter(Boolean);\n}\n\nfunction normalizeToArray(value) {\n return [].concat(value);\n}\n\nfunction pushIfUnique(arr, value) {\n if (arr.indexOf(value) === -1) {\n arr.push(value);\n }\n}\n\nfunction unique(arr) {\n return arr.filter(function (item, index) {\n return arr.indexOf(item) === index;\n });\n}\n\nfunction getBasePlacement(placement) {\n return placement.split('-')[0];\n}\n\nfunction arrayFrom(value) {\n return [].slice.call(value);\n}\n\nfunction removeUndefinedProps(obj) {\n return Object.keys(obj).reduce(function (acc, key) {\n if (obj[key] !== undefined) {\n acc[key] = obj[key];\n }\n\n return acc;\n }, {});\n}\n\nfunction div() {\n return document.createElement('div');\n}\n\nfunction isElement(value) {\n return ['Element', 'Fragment'].some(function (type) {\n return isType(value, type);\n });\n}\n\nfunction isNodeList(value) {\n return isType(value, 'NodeList');\n}\n\nfunction isMouseEvent(value) {\n return isType(value, 'MouseEvent');\n}\n\nfunction isReferenceElement(value) {\n return !!(value && value._tippy && value._tippy.reference === value);\n}\n\nfunction getArrayOfElements(value) {\n if (isElement(value)) {\n return [value];\n }\n\n if (isNodeList(value)) {\n return arrayFrom(value);\n }\n\n if (Array.isArray(value)) {\n return value;\n }\n\n return arrayFrom(document.querySelectorAll(value));\n}\n\nfunction setTransitionDuration(els, value) {\n els.forEach(function (el) {\n if (el) {\n el.style.transitionDuration = value + \"ms\";\n }\n });\n}\n\nfunction setVisibilityState(els, state) {\n els.forEach(function (el) {\n if (el) {\n el.setAttribute('data-state', state);\n }\n });\n}\n\nfunction getOwnerDocument(elementOrElements) {\n var _element$ownerDocumen;\n\n var _normalizeToArray = normalizeToArray(elementOrElements),\n element = _normalizeToArray[0]; // Elements created via a <template> have an ownerDocument with no reference to the body\n\n\n return (element == null ? void 0 : (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body) ? element.ownerDocument : document;\n}\n\nfunction isCursorOutsideInteractiveBorder(popperTreeData, event) {\n var clientX = event.clientX,\n clientY = event.clientY;\n return popperTreeData.every(function (_ref) {\n var popperRect = _ref.popperRect,\n popperState = _ref.popperState,\n props = _ref.props;\n var interactiveBorder = props.interactiveBorder;\n var basePlacement = getBasePlacement(popperState.placement);\n var offsetData = popperState.modifiersData.offset;\n\n if (!offsetData) {\n return true;\n }\n\n var topDistance = basePlacement === 'bottom' ? offsetData.top.y : 0;\n var bottomDistance = basePlacement === 'top' ? offsetData.bottom.y : 0;\n var leftDistance = basePlacement === 'right' ? offsetData.left.x : 0;\n var rightDistance = basePlacement === 'left' ? offsetData.right.x : 0;\n var exceedsTop = popperRect.top - clientY + topDistance > interactiveBorder;\n var exceedsBottom = clientY - popperRect.bottom - bottomDistance > interactiveBorder;\n var exceedsLeft = popperRect.left - clientX + leftDistance > interactiveBorder;\n var exceedsRight = clientX - popperRect.right - rightDistance > interactiveBorder;\n return exceedsTop || exceedsBottom || exceedsLeft || exceedsRight;\n });\n}\n\nfunction updateTransitionEndListener(box, action, listener) {\n var method = action + \"EventListener\"; // some browsers apparently support `transition` (unprefixed) but only fire\n // `webkitTransitionEnd`...\n\n ['transitionend', 'webkitTransitionEnd'].forEach(function (event) {\n box[method](event, listener);\n });\n}\n\nvar currentInput = {\n isTouch: false\n};\nvar lastMouseMoveTime = 0;\n/**\n * When a `touchstart` event is fired, it's assumed the user is using touch\n * input. We'll bind a `mousemove` event listener to listen for mouse input in\n * the future. This way, the `isTouch` property is fully dynamic and will handle\n * hybrid devices that use a mix of touch + mouse input.\n */\n\nfunction onDocumentTouchStart() {\n if (currentInput.isTouch) {\n return;\n }\n\n currentInput.isTouch = true;\n\n if (window.performance) {\n document.addEventListener('mousemove', onDocumentMouseMove);\n }\n}\n/**\n * When two `mousemove` event are fired consecutively within 20ms, it's assumed\n * the user is using mouse input again. `mousemove` can fire on touch devices as\n * well, but very rarely that quickly.\n */\n\n\nfunction onDocumentMouseMove() {\n var now = performance.now();\n\n if (now - lastMouseMoveTime < 20) {\n currentInput.isTouch = false;\n document.removeEventListener('mousemove', onDocumentMouseMove);\n }\n\n lastMouseMoveTime = now;\n}\n/**\n * When an element is in focus and has a tippy, leaving the tab/window and\n * returning causes it to show again. For mouse users this is unexpected, but\n * for keyboard use it makes sense.\n * TODO: find a better technique to solve this problem\n */\n\n\nfunction onWindowBlur() {\n var activeElement = document.activeElement;\n\n if (isReferenceElement(activeElement)) {\n var instance = activeElement._tippy;\n\n if (activeElement.blur && !instance.state.isVisible) {\n activeElement.blur();\n }\n }\n}\n\nfunction bindGlobalEventListeners() {\n document.addEventListener('touchstart', onDocumentTouchStart, TOUCH_OPTIONS);\n window.addEventListener('blur', onWindowBlur);\n}\n\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\nvar ua = isBrowser ? navigator.userAgent : '';\nvar isIE = /MSIE |Trident\\//.test(ua);\n\nfunction createMemoryLeakWarning(method) {\n var txt = method === 'destroy' ? 'n already-' : ' ';\n return [method + \"() was called on a\" + txt + \"destroyed instance. This is a no-op but\", 'indicates a potential memory leak.'].join(' ');\n}\n\nfunction clean(value) {\n var spacesAndTabs = /[ \\t]{2,}/g;\n var lineStartWithSpaces = /^[ \\t]*/gm;\n return value.replace(spacesAndTabs, ' ').replace(lineStartWithSpaces, '').trim();\n}\n\nfunction getDevMessage(message) {\n return clean(\"\\n %ctippy.js\\n\\n %c\" + clean(message) + \"\\n\\n %c\\uD83D\\uDC77\\u200D This is a development-only message. It will be removed in production.\\n \");\n}\n\nfunction getFormattedMessage(message) {\n return [getDevMessage(message), // title\n 'color: #00C584; font-size: 1.3em; font-weight: bold;', // message\n 'line-height: 1.5', // footer\n 'color: #a6a095;'];\n} // Assume warnings and errors never have the same message\n\n\nvar visitedMessages;\n\nif (process.env.NODE_ENV !== \"production\") {\n resetVisitedMessages();\n}\n\nfunction resetVisitedMessages() {\n visitedMessages = new Set();\n}\n\nfunction warnWhen(condition, message) {\n if (condition && !visitedMessages.has(message)) {\n var _console;\n\n visitedMessages.add(message);\n\n (_console = console).warn.apply(_console, getFormattedMessage(message));\n }\n}\n\nfunction errorWhen(condition, message) {\n if (condition && !visitedMessages.has(message)) {\n var _console2;\n\n visitedMessages.add(message);\n\n (_console2 = console).error.apply(_console2, getFormattedMessage(message));\n }\n}\n\nfunction validateTargets(targets) {\n var didPassFalsyValue = !targets;\n var didPassPlainObject = Object.prototype.toString.call(targets) === '[object Object]' && !targets.addEventListener;\n errorWhen(didPassFalsyValue, ['tippy() was passed', '`' + String(targets) + '`', 'as its targets (first) argument. Valid types are: String, Element,', 'Element[], or NodeList.'].join(' '));\n errorWhen(didPassPlainObject, ['tippy() was passed a plain object which is not supported as an argument', 'for virtual positioning. Use props.getReferenceClientRect instead.'].join(' '));\n}\n\nvar pluginProps = {\n animateFill: false,\n followCursor: false,\n inlinePositioning: false,\n sticky: false\n};\nvar renderProps = {\n allowHTML: false,\n animation: 'fade',\n arrow: true,\n content: '',\n inertia: false,\n maxWidth: 350,\n role: 'tooltip',\n theme: '',\n zIndex: 9999\n};\nvar defaultProps = Object.assign({\n appendTo: function appendTo() {\n return document.body;\n },\n aria: {\n content: 'auto',\n expanded: 'auto'\n },\n delay: 0,\n duration: [300, 250],\n getReferenceClientRect: null,\n hideOnClick: true,\n ignoreAttributes: false,\n interactive: false,\n interactiveBorder: 2,\n interactiveDebounce: 0,\n moveTransition: '',\n offset: [0, 10],\n onAfterUpdate: function onAfterUpdate() {},\n onBeforeUpdate: function onBeforeUpdate() {},\n onCreate: function onCreate() {},\n onDestroy: function onDestroy() {},\n onHidden: function onHidden() {},\n onHide: function onHide() {},\n onMount: function onMount() {},\n onShow: function onShow() {},\n onShown: function onShown() {},\n onTrigger: function onTrigger() {},\n onUntrigger: function onUntrigger() {},\n onClickOutside: function onClickOutside() {},\n placement: 'top',\n plugins: [],\n popperOptions: {},\n render: null,\n showOnCreate: false,\n touch: true,\n trigger: 'mouseenter focus',\n triggerTarget: null\n}, pluginProps, {}, renderProps);\nvar defaultKeys = Object.keys(defaultProps);\n\nvar setDefaultProps = function setDefaultProps(partialProps) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n validateProps(partialProps, []);\n }\n\n var keys = Object.keys(partialProps);\n keys.forEach(function (key) {\n defaultProps[key] = partialProps[key];\n });\n};\n\nfunction getExtendedPassedProps(passedProps) {\n var plugins = passedProps.plugins || [];\n var pluginProps = plugins.reduce(function (acc, plugin) {\n var name = plugin.name,\n defaultValue = plugin.defaultValue;\n\n if (name) {\n acc[name] = passedProps[name] !== undefined ? passedProps[name] : defaultValue;\n }\n\n return acc;\n }, {});\n return Object.assign({}, passedProps, {}, pluginProps);\n}\n\nfunction getDataAttributeProps(reference, plugins) {\n var propKeys = plugins ? Object.keys(getExtendedPassedProps(Object.assign({}, defaultProps, {\n plugins: plugins\n }))) : defaultKeys;\n var props = propKeys.reduce(function (acc, key) {\n var valueAsString = (reference.getAttribute(\"data-tippy-\" + key) || '').trim();\n\n if (!valueAsString) {\n return acc;\n }\n\n if (key === 'content') {\n acc[key] = valueAsString;\n } else {\n try {\n acc[key] = JSON.parse(valueAsString);\n } catch (e) {\n acc[key] = valueAsString;\n }\n }\n\n return acc;\n }, {});\n return props;\n}\n\nfunction evaluateProps(reference, props) {\n var out = Object.assign({}, props, {\n content: invokeWithArgsOrReturn(props.content, [reference])\n }, props.ignoreAttributes ? {} : getDataAttributeProps(reference, props.plugins));\n out.aria = Object.assign({}, defaultProps.aria, {}, out.aria);\n out.aria = {\n expanded: out.aria.expanded === 'auto' ? props.interactive : out.aria.expanded,\n content: out.aria.content === 'auto' ? props.interactive ? null : 'describedby' : out.aria.content\n };\n return out;\n}\n\nfunction validateProps(partialProps, plugins) {\n if (partialProps === void 0) {\n partialProps = {};\n }\n\n if (plugins === void 0) {\n plugins = [];\n }\n\n var keys = Object.keys(partialProps);\n keys.forEach(function (prop) {\n var nonPluginProps = removeProperties(defaultProps, Object.keys(pluginProps));\n var didPassUnknownProp = !hasOwnProperty(nonPluginProps, prop); // Check if the prop exists in `plugins`\n\n if (didPassUnknownProp) {\n didPassUnknownProp = plugins.filter(function (plugin) {\n return plugin.name === prop;\n }).length === 0;\n }\n\n warnWhen(didPassUnknownProp, [\"`\" + prop + \"`\", \"is not a valid prop. You may have spelled it incorrectly, or if it's\", 'a plugin, forgot to pass it in an array as props.plugins.', '\\n\\n', 'All props: https://atomiks.github.io/tippyjs/v6/all-props/\\n', 'Plugins: https://atomiks.github.io/tippyjs/v6/plugins/'].join(' '));\n });\n}\n\nvar innerHTML = function innerHTML() {\n return 'innerHTML';\n};\n\nfunction dangerouslySetInnerHTML(element, html) {\n element[innerHTML()] = html;\n}\n\nfunction createArrowElement(value) {\n var arrow = div();\n\n if (value === true) {\n arrow.className = ARROW_CLASS;\n } else {\n arrow.className = SVG_ARROW_CLASS;\n\n if (isElement(value)) {\n arrow.appendChild(value);\n } else {\n dangerouslySetInnerHTML(arrow, value);\n }\n }\n\n return arrow;\n}\n\nfunction setContent(content, props) {\n if (isElement(props.content)) {\n dangerouslySetInnerHTML(content, '');\n content.appendChild(props.content);\n } else if (typeof props.content !== 'function') {\n if (props.allowHTML) {\n dangerouslySetInnerHTML(content, props.content);\n } else {\n content.textContent = props.content;\n }\n }\n}\n\nfunction getChildren(popper) {\n var box = popper.firstElementChild;\n var boxChildren = arrayFrom(box.children);\n return {\n box: box,\n content: boxChildren.find(function (node) {\n return node.classList.contains(CONTENT_CLASS);\n }),\n arrow: boxChildren.find(function (node) {\n return node.classList.contains(ARROW_CLASS) || node.classList.contains(SVG_ARROW_CLASS);\n }),\n backdrop: boxChildren.find(function (node) {\n return node.classList.contains(BACKDROP_CLASS);\n })\n };\n}\n\nfunction render(instance) {\n var popper = div();\n var box = div();\n box.className = BOX_CLASS;\n box.setAttribute('data-state', 'hidden');\n box.setAttribute('tabindex', '-1');\n var content = div();\n content.className = CONTENT_CLASS;\n content.setAttribute('data-state', 'hidden');\n setContent(content, instance.props);\n popper.appendChild(box);\n box.appendChild(content);\n onUpdate(instance.props, instance.props);\n\n function onUpdate(prevProps, nextProps) {\n var _getChildren = getChildren(popper),\n box = _getChildren.box,\n content = _getChildren.content,\n arrow = _getChildren.arrow;\n\n if (nextProps.theme) {\n box.setAttribute('data-theme', nextProps.theme);\n } else {\n box.removeAttribute('data-theme');\n }\n\n if (typeof nextProps.animation === 'string') {\n box.setAttribute('data-animation', nextProps.animation);\n } else {\n box.removeAttribute('data-animation');\n }\n\n if (nextProps.inertia) {\n box.setAttribute('data-inertia', '');\n } else {\n box.removeAttribute('data-inertia');\n }\n\n box.style.maxWidth = typeof nextProps.maxWidth === 'number' ? nextProps.maxWidth + \"px\" : nextProps.maxWidth;\n\n if (nextProps.role) {\n box.setAttribute('role', nextProps.role);\n } else {\n box.removeAttribute('role');\n }\n\n if (prevProps.content !== nextProps.content || prevProps.allowHTML !== nextProps.allowHTML) {\n setContent(content, instance.props);\n }\n\n if (nextProps.arrow) {\n if (!arrow) {\n box.appendChild(createArrowElement(nextProps.arrow));\n } else if (prevProps.arrow !== nextProps.arrow) {\n box.removeChild(arrow);\n box.appendChild(createArrowElement(nextProps.arrow));\n }\n } else if (arrow) {\n box.removeChild(arrow);\n }\n }\n\n return {\n popper: popper,\n onUpdate: onUpdate\n };\n} // Runtime check to identify if the render function is the default one; this\n// way we can apply default CSS transitions logic and it can be tree-shaken away\n\n\nrender.$$tippy = true;\nvar idCounter = 1;\nvar mouseMoveListeners = []; // Used by `hideAll()`\n\nvar mountedInstances = [];\n\nfunction createTippy(reference, passedProps) {\n var props = evaluateProps(reference, Object.assign({}, defaultProps, {}, getExtendedPassedProps(removeUndefinedProps(passedProps)))); // ===========================================================================\n // 🔒 Private members\n // ===========================================================================\n\n var showTimeout;\n var hideTimeout;\n var scheduleHideAnimationFrame;\n var isVisibleFromClick = false;\n var didHideDueToDocumentMouseDown = false;\n var didTouchMove = false;\n var ignoreOnFirstUpdate = false;\n var lastTriggerEvent;\n var currentTransitionEndListener;\n var onFirstUpdate;\n var listeners = [];\n var debouncedOnMouseMove = debounce(onMouseMove, props.interactiveDebounce);\n var currentTarget; // ===========================================================================\n // 🔑 Public members\n // ===========================================================================\n\n var id = idCounter++;\n var popperInstance = null;\n var plugins = unique(props.plugins);\n var state = {\n // Is the instance currently enabled?\n isEnabled: true,\n // Is the tippy currently showing and not transitioning out?\n isVisible: false,\n // Has the instance been destroyed?\n isDestroyed: false,\n // Is the tippy currently mounted to the DOM?\n isMounted: false,\n // Has the tippy finished transitioning in?\n isShown: false\n };\n var instance = {\n // properties\n id: id,\n reference: reference,\n popper: div(),\n popperInstance: popperInstance,\n props: props,\n state: state,\n plugins: plugins,\n // methods\n clearDelayTimeouts: clearDelayTimeouts,\n setProps: setProps,\n setContent: setContent,\n show: show,\n hide: hide,\n hideWithInteractivity: hideWithInteractivity,\n enable: enable,\n disable: disable,\n unmount: unmount,\n destroy: destroy\n }; // TODO: Investigate why this early return causes a TDZ error in the tests —\n // it doesn't seem to happen in the browser\n\n /* istanbul ignore if */\n\n if (!props.render) {\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(true, 'render() function has not been supplied.');\n }\n\n return instance;\n } // ===========================================================================\n // Initial mutations\n // ===========================================================================\n\n\n var _props$render = props.render(instance),\n popper = _props$render.popper,\n onUpdate = _props$render.onUpdate;\n\n popper.setAttribute('data-tippy-root', '');\n popper.id = \"tippy-\" + instance.id;\n instance.popper = popper;\n reference._tippy = instance;\n popper._tippy = instance;\n var pluginsHooks = plugins.map(function (plugin) {\n return plugin.fn(instance);\n });\n var hasAriaExpanded = reference.hasAttribute('aria-expanded');\n addListeners();\n handleAriaExpandedAttribute();\n handleStyles();\n invokeHook('onCreate', [instance]);\n\n if (props.showOnCreate) {\n scheduleShow();\n } // Prevent a tippy with a delay from hiding if the cursor left then returned\n // before it started hiding\n\n\n popper.addEventListener('mouseenter', function () {\n if (instance.props.interactive && instance.state.isVisible) {\n instance.clearDelayTimeouts();\n }\n });\n popper.addEventListener('mouseleave', function (event) {\n if (instance.props.interactive && instance.props.trigger.indexOf('mouseenter') >= 0) {\n getDocument().addEventListener('mousemove', debouncedOnMouseMove);\n debouncedOnMouseMove(event);\n }\n });\n return instance; // ===========================================================================\n // 🔒 Private methods\n // ===========================================================================\n\n function getNormalizedTouchSettings() {\n var touch = instance.props.touch;\n return Array.isArray(touch) ? touch : [touch, 0];\n }\n\n function getIsCustomTouchBehavior() {\n return getNormalizedTouchSettings()[0] === 'hold';\n }\n\n function getIsDefaultRenderFn() {\n var _instance$props$rende; // @ts-ignore\n\n\n return !!((_instance$props$rende = instance.props.render) == null ? void 0 : _instance$props$rende.$$tippy);\n }\n\n function getCurrentTarget() {\n return currentTarget || reference;\n }\n\n function getDocument() {\n var parent = getCurrentTarget().parentNode;\n return parent ? getOwnerDocument(parent) : document;\n }\n\n function getDefaultTemplateChildren() {\n return getChildren(popper);\n }\n\n function getDelay(isShow) {\n // For touch or keyboard input, force `0` delay for UX reasons\n // Also if the instance is mounted but not visible (transitioning out),\n // ignore delay\n if (instance.state.isMounted && !instance.state.isVisible || currentInput.isTouch || lastTriggerEvent && lastTriggerEvent.type === 'focus') {\n return 0;\n }\n\n return getValueAtIndexOrReturn(instance.props.delay, isShow ? 0 : 1, defaultProps.delay);\n }\n\n function handleStyles() {\n popper.style.pointerEvents = instance.props.interactive && instance.state.isVisible ? '' : 'none';\n popper.style.zIndex = \"\" + instance.props.zIndex;\n }\n\n function invokeHook(hook, args, shouldInvokePropsHook) {\n if (shouldInvokePropsHook === void 0) {\n shouldInvokePropsHook = true;\n }\n\n pluginsHooks.forEach(function (pluginHooks) {\n if (pluginHooks[hook]) {\n pluginHooks[hook].apply(void 0, args);\n }\n });\n\n if (shouldInvokePropsHook) {\n var _instance$props;\n\n (_instance$props = instance.props)[hook].apply(_instance$props, args);\n }\n }\n\n function handleAriaContentAttribute() {\n var aria = instance.props.aria;\n\n if (!aria.content) {\n return;\n }\n\n var attr = \"aria-\" + aria.content;\n var id = popper.id;\n var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n nodes.forEach(function (node) {\n var currentValue = node.getAttribute(attr);\n\n if (instance.state.isVisible) {\n node.setAttribute(attr, currentValue ? currentValue + \" \" + id : id);\n } else {\n var nextValue = currentValue && currentValue.replace(id, '').trim();\n\n if (nextValue) {\n node.setAttribute(attr, nextValue);\n } else {\n node.removeAttribute(attr);\n }\n }\n });\n }\n\n function handleAriaExpandedAttribute() {\n if (hasAriaExpanded || !instance.props.aria.expanded) {\n return;\n }\n\n var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n nodes.forEach(function (node) {\n if (instance.props.interactive) {\n node.setAttribute('aria-expanded', instance.state.isVisible && node === getCurrentTarget() ? 'true' : 'false');\n } else {\n node.removeAttribute('aria-expanded');\n }\n });\n }\n\n function cleanupInteractiveMouseListeners() {\n getDocument().removeEventListener('mousemove', debouncedOnMouseMove);\n mouseMoveListeners = mouseMoveListeners.filter(function (listener) {\n return listener !== debouncedOnMouseMove;\n });\n }\n\n function onDocumentPress(event) {\n // Moved finger to scroll instead of an intentional tap outside\n if (currentInput.isTouch) {\n if (didTouchMove || event.type === 'mousedown') {\n return;\n }\n } // Clicked on interactive popper\n\n\n if (instance.props.interactive && popper.contains(event.target)) {\n return;\n } // Clicked on the event listeners target\n\n\n if (getCurrentTarget().contains(event.target)) {\n if (currentInput.isTouch) {\n return;\n }\n\n if (instance.state.isVisible && instance.props.trigger.indexOf('click') >= 0) {\n return;\n }\n } else {\n invokeHook('onClickOutside', [instance, event]);\n }\n\n if (instance.props.hideOnClick === true) {\n instance.clearDelayTimeouts();\n instance.hide(); // `mousedown` event is fired right before `focus` if pressing the\n // currentTarget. This lets a tippy with `focus` trigger know that it\n // should not show\n\n didHideDueToDocumentMouseDown = true;\n setTimeout(function () {\n didHideDueToDocumentMouseDown = false;\n }); // The listener gets added in `scheduleShow()`, but this may be hiding it\n // before it shows, and hide()'s early bail-out behavior can prevent it\n // from being cleaned up\n\n if (!instance.state.isMounted) {\n removeDocumentPress();\n }\n }\n }\n\n function onTouchMove() {\n didTouchMove = true;\n }\n\n function onTouchStart() {\n didTouchMove = false;\n }\n\n function addDocumentPress() {\n var doc = getDocument();\n doc.addEventListener('mousedown', onDocumentPress, true);\n doc.addEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);\n doc.addEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);\n doc.addEventListener('touchmove', onTouchMove, TOUCH_OPTIONS);\n }\n\n function removeDocumentPress() {\n var doc = getDocument();\n doc.removeEventListener('mousedown', onDocumentPress, true);\n doc.removeEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);\n doc.removeEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);\n doc.removeEventListener('touchmove', onTouchMove, TOUCH_OPTIONS);\n }\n\n function onTransitionedOut(duration, callback) {\n onTransitionEnd(duration, function () {\n if (!instance.state.isVisible && popper.parentNode && popper.parentNode.contains(popper)) {\n callback();\n }\n });\n }\n\n function onTransitionedIn(duration, callback) {\n onTransitionEnd(duration, callback);\n }\n\n function onTransitionEnd(duration, callback) {\n var box = getDefaultTemplateChildren().box;\n\n function listener(event) {\n if (event.target === box) {\n updateTransitionEndListener(box, 'remove', listener);\n callback();\n }\n } // Make callback synchronous if duration is 0\n // `transitionend` won't fire otherwise\n\n\n if (duration === 0) {\n return callback();\n }\n\n updateTransitionEndListener(box, 'remove', currentTransitionEndListener);\n updateTransitionEndListener(box, 'add', listener);\n currentTransitionEndListener = listener;\n }\n\n function on(eventType, handler, options) {\n if (options === void 0) {\n options = false;\n }\n\n var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n nodes.forEach(function (node) {\n node.addEventListener(eventType, handler, options);\n listeners.push({\n node: node,\n eventType: eventType,\n handler: handler,\n options: options\n });\n });\n }\n\n function addListeners() {\n if (getIsCustomTouchBehavior()) {\n on('touchstart', onTrigger, {\n passive: true\n });\n on('touchend', onMouseLeave, {\n passive: true\n });\n }\n\n splitBySpaces(instance.props.trigger).forEach(function (eventType) {\n if (eventType === 'manual') {\n return;\n }\n\n on(eventType, onTrigger);\n\n switch (eventType) {\n case 'mouseenter':\n on('mouseleave', onMouseLeave);\n break;\n\n case 'focus':\n on(isIE ? 'focusout' : 'blur', onBlurOrFocusOut);\n break;\n\n case 'focusin':\n on('focusout', onBlurOrFocusOut);\n break;\n }\n });\n }\n\n function removeListeners() {\n listeners.forEach(function (_ref) {\n var node = _ref.node,\n eventType = _ref.eventType,\n handler = _ref.handler,\n options = _ref.options;\n node.removeEventListener(eventType, handler, options);\n });\n listeners = [];\n }\n\n function onTrigger(event) {\n var _lastTriggerEvent;\n\n var shouldScheduleClickHide = false;\n\n if (!instance.state.isEnabled || isEventListenerStopped(event) || didHideDueToDocumentMouseDown) {\n return;\n }\n\n var wasFocused = ((_lastTriggerEvent = lastTriggerEvent) == null ? void 0 : _lastTriggerEvent.type) === 'focus';\n lastTriggerEvent = event;\n currentTarget = event.currentTarget;\n handleAriaExpandedAttribute();\n\n if (!instance.state.isVisible && isMouseEvent(event)) {\n // If scrolling, `mouseenter` events can be fired if the cursor lands\n // over a new target, but `mousemove` events don't get fired. This\n // causes interactive tooltips to get stuck open until the cursor is\n // moved\n mouseMoveListeners.forEach(function (listener) {\n return listener(event);\n });\n } // Toggle show/hide when clicking click-triggered tooltips\n\n\n if (event.type === 'click' && (instance.props.trigger.indexOf('mouseenter') < 0 || isVisibleFromClick) && instance.props.hideOnClick !== false && instance.state.isVisible) {\n shouldScheduleClickHide = true;\n } else {\n scheduleShow(event);\n }\n\n if (event.type === 'click') {\n isVisibleFromClick = !shouldScheduleClickHide;\n }\n\n if (shouldScheduleClickHide && !wasFocused) {\n scheduleHide(event);\n }\n }\n\n function onMouseMove(event) {\n var target = event.target;\n var isCursorOverReferenceOrPopper = getCurrentTarget().contains(target) || popper.contains(target);\n\n if (event.type === 'mousemove' && isCursorOverReferenceOrPopper) {\n return;\n }\n\n var popperTreeData = getNestedPopperTree().concat(popper).map(function (popper) {\n var _instance$popperInsta;\n\n var instance = popper._tippy;\n var state = (_instance$popperInsta = instance.popperInstance) == null ? void 0 : _instance$popperInsta.state;\n\n if (state) {\n return {\n popperRect: popper.getBoundingClientRect(),\n popperState: state,\n props: props\n };\n }\n\n return null;\n }).filter(Boolean);\n\n if (isCursorOutsideInteractiveBorder(popperTreeData, event)) {\n cleanupInteractiveMouseListeners();\n scheduleHide(event);\n }\n }\n\n function onMouseLeave(event) {\n var shouldBail = isEventListenerStopped(event) || instance.props.trigger.indexOf('click') >= 0 && isVisibleFromClick;\n\n if (shouldBail) {\n return;\n }\n\n if (instance.props.interactive) {\n instance.hideWithInteractivity(event);\n return;\n }\n\n scheduleHide(event);\n }\n\n function onBlurOrFocusOut(event) {\n if (instance.props.trigger.indexOf('focusin') < 0 && event.target !== getCurrentTarget()) {\n return;\n } // If focus was moved to within the popper\n\n\n if (instance.props.interactive && event.relatedTarget && popper.contains(event.relatedTarget)) {\n return;\n }\n\n scheduleHide(event);\n }\n\n function isEventListenerStopped(event) {\n return currentInput.isTouch ? getIsCustomTouchBehavior() !== event.type.indexOf('touch') >= 0 : false;\n }\n\n function createPopperInstance() {\n destroyPopperInstance();\n var _instance$props2 = instance.props,\n popperOptions = _instance$props2.popperOptions,\n placement = _instance$props2.placement,\n offset = _instance$props2.offset,\n getReferenceClientRect = _instance$props2.getReferenceClientRect,\n moveTransition = _instance$props2.moveTransition;\n var arrow = getIsDefaultRenderFn() ? getChildren(popper).arrow : null;\n var computedReference = getReferenceClientRect ? {\n getBoundingClientRect: getReferenceClientRect,\n contextElement: getReferenceClientRect.contextElement || getCurrentTarget()\n } : reference;\n var tippyModifier = {\n name: '$$tippy',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['computeStyles'],\n fn: function fn(_ref2) {\n var state = _ref2.state;\n\n if (getIsDefaultRenderFn()) {\n var _getDefaultTemplateCh = getDefaultTemplateChildren(),\n box = _getDefaultTemplateCh.box;\n\n ['placement', 'reference-hidden', 'escaped'].forEach(function (attr) {\n if (attr === 'placement') {\n box.setAttribute('data-placement', state.placement);\n } else {\n if (state.attributes.popper[\"data-popper-\" + attr]) {\n box.setAttribute(\"data-\" + attr, '');\n } else {\n box.removeAttribute(\"data-\" + attr);\n }\n }\n });\n state.attributes.popper = {};\n }\n }\n };\n var modifiers = [{\n name: 'offset',\n options: {\n offset: offset\n }\n }, {\n name: 'preventOverflow',\n options: {\n padding: {\n top: 2,\n bottom: 2,\n left: 5,\n right: 5\n }\n }\n }, {\n name: 'flip',\n options: {\n padding: 5\n }\n }, {\n name: 'computeStyles',\n options: {\n adaptive: !moveTransition\n }\n }, tippyModifier];\n\n if (getIsDefaultRenderFn() && arrow) {\n modifiers.push({\n name: 'arrow',\n options: {\n element: arrow,\n padding: 3\n }\n });\n }\n\n modifiers.push.apply(modifiers, (popperOptions == null ? void 0 : popperOptions.modifiers) || []);\n instance.popperInstance = createPopper(computedReference, popper, Object.assign({}, popperOptions, {\n placement: placement,\n onFirstUpdate: onFirstUpdate,\n modifiers: modifiers\n }));\n }\n\n function destroyPopperInstance() {\n if (instance.popperInstance) {\n instance.popperInstance.destroy();\n instance.popperInstance = null;\n }\n }\n\n function mount() {\n var appendTo = instance.props.appendTo;\n var parentNode; // By default, we'll append the popper to the triggerTargets's parentNode so\n // it's directly after the reference element so the elements inside the\n // tippy can be tabbed to\n // If there are clipping issues, the user can specify a different appendTo\n // and ensure focus management is handled correctly manually\n\n var node = getCurrentTarget();\n\n if (instance.props.interactive && appendTo === defaultProps.appendTo || appendTo === 'parent') {\n parentNode = node.parentNode;\n } else {\n parentNode = invokeWithArgsOrReturn(appendTo, [node]);\n } // The popper element needs to exist on the DOM before its position can be\n // updated as Popper needs to read its dimensions\n\n\n if (!parentNode.contains(popper)) {\n parentNode.appendChild(popper);\n }\n\n createPopperInstance();\n /* istanbul ignore else */\n\n if (process.env.NODE_ENV !== \"production\") {\n // Accessibility check\n warnWhen(instance.props.interactive && appendTo === defaultProps.appendTo && node.nextElementSibling !== popper, ['Interactive tippy element may not be accessible via keyboard', 'navigation because it is not directly after the reference element', 'in the DOM source order.', '\\n\\n', 'Using a wrapper <div> or <span> tag around the reference element', 'solves this by creating a new parentNode context.', '\\n\\n', 'Specifying `appendTo: document.body` silences this warning, but it', 'assumes you are using a focus management solution to handle', 'keyboard navigation.', '\\n\\n', 'See: https://atomiks.github.io/tippyjs/v6/accessibility/#interactivity'].join(' '));\n }\n }\n\n function getNestedPopperTree() {\n return arrayFrom(popper.querySelectorAll('[data-tippy-root]'));\n }\n\n function scheduleShow(event) {\n instance.clearDelayTimeouts();\n\n if (event) {\n invokeHook('onTrigger', [instance, event]);\n }\n\n addDocumentPress();\n var delay = getDelay(true);\n\n var _getNormalizedTouchSe = getNormalizedTouchSettings(),\n touchValue = _getNormalizedTouchSe[0],\n touchDelay = _getNormalizedTouchSe[1];\n\n if (currentInput.isTouch && touchValue === 'hold' && touchDelay) {\n delay = touchDelay;\n }\n\n if (delay) {\n showTimeout = setTimeout(function () {\n instance.show();\n }, delay);\n } else {\n instance.show();\n }\n }\n\n function scheduleHide(event) {\n instance.clearDelayTimeouts();\n invokeHook('onUntrigger', [instance, event]);\n\n if (!instance.state.isVisible) {\n removeDocumentPress();\n return;\n } // For interactive tippies, scheduleHide is added to a document.body handler\n // from onMouseLeave so must intercept scheduled hides from mousemove/leave\n // events when trigger contains mouseenter and click, and the tip is\n // currently shown as a result of a click.\n\n\n if (instance.props.trigger.indexOf('mouseenter') >= 0 && instance.props.trigger.indexOf('click') >= 0 && ['mouseleave', 'mousemove'].indexOf(event.type) >= 0 && isVisibleFromClick) {\n return;\n }\n\n var delay = getDelay(false);\n\n if (delay) {\n hideTimeout = setTimeout(function () {\n if (instance.state.isVisible) {\n instance.hide();\n }\n }, delay);\n } else {\n // Fixes a `transitionend` problem when it fires 1 frame too\n // late sometimes, we don't want hide() to be called.\n scheduleHideAnimationFrame = requestAnimationFrame(function () {\n instance.hide();\n });\n }\n } // ===========================================================================\n // 🔑 Public methods\n // ===========================================================================\n\n\n function enable() {\n instance.state.isEnabled = true;\n }\n\n function disable() {\n // Disabling the instance should also hide it\n // https://github.com/atomiks/tippy.js-react/issues/106\n instance.hide();\n instance.state.isEnabled = false;\n }\n\n function clearDelayTimeouts() {\n clearTimeout(showTimeout);\n clearTimeout(hideTimeout);\n cancelAnimationFrame(scheduleHideAnimationFrame);\n }\n\n function setProps(partialProps) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('setProps'));\n }\n\n if (instance.state.isDestroyed) {\n return;\n }\n\n invokeHook('onBeforeUpdate', [instance, partialProps]);\n removeListeners();\n var prevProps = instance.props;\n var nextProps = evaluateProps(reference, Object.assign({}, instance.props, {}, partialProps, {\n ignoreAttributes: true\n }));\n instance.props = nextProps;\n addListeners();\n\n if (prevProps.interactiveDebounce !== nextProps.interactiveDebounce) {\n cleanupInteractiveMouseListeners();\n debouncedOnMouseMove = debounce(onMouseMove, nextProps.interactiveDebounce);\n } // Ensure stale aria-expanded attributes are removed\n\n\n if (prevProps.triggerTarget && !nextProps.triggerTarget) {\n normalizeToArray(prevProps.triggerTarget).forEach(function (node) {\n node.removeAttribute('aria-expanded');\n });\n } else if (nextProps.triggerTarget) {\n reference.removeAttribute('aria-expanded');\n }\n\n handleAriaExpandedAttribute();\n handleStyles();\n\n if (onUpdate) {\n onUpdate(prevProps, nextProps);\n }\n\n if (instance.popperInstance) {\n createPopperInstance(); // Fixes an issue with nested tippies if they are all getting re-rendered,\n // and the nested ones get re-rendered first.\n // https://github.com/atomiks/tippyjs-react/issues/177\n // TODO: find a cleaner / more efficient solution(!)\n\n getNestedPopperTree().forEach(function (nestedPopper) {\n // React (and other UI libs likely) requires a rAF wrapper as it flushes\n // its work in one\n requestAnimationFrame(nestedPopper._tippy.popperInstance.forceUpdate);\n });\n }\n\n invokeHook('onAfterUpdate', [instance, partialProps]);\n }\n\n function setContent(content) {\n instance.setProps({\n content: content\n });\n }\n\n function show() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('show'));\n } // Early bail-out\n\n\n var isAlreadyVisible = instance.state.isVisible;\n var isDestroyed = instance.state.isDestroyed;\n var isDisabled = !instance.state.isEnabled;\n var isTouchAndTouchDisabled = currentInput.isTouch && !instance.props.touch;\n var duration = getValueAtIndexOrReturn(instance.props.duration, 0, defaultProps.duration);\n\n if (isAlreadyVisible || isDestroyed || isDisabled || isTouchAndTouchDisabled) {\n return;\n } // Normalize `disabled` behavior across browsers.\n // Firefox allows events on disabled elements, but Chrome doesn't.\n // Using a wrapper element (i.e. <span>) is recommended.\n\n\n if (getCurrentTarget().hasAttribute('disabled')) {\n return;\n }\n\n invokeHook('onShow', [instance], false);\n\n if (instance.props.onShow(instance) === false) {\n return;\n }\n\n instance.state.isVisible = true;\n\n if (getIsDefaultRenderFn()) {\n popper.style.visibility = 'visible';\n }\n\n handleStyles();\n addDocumentPress();\n\n if (!instance.state.isMounted) {\n popper.style.transition = 'none';\n } // If flipping to the opposite side after hiding at least once, the\n // animation will use the wrong placement without resetting the duration\n\n\n if (getIsDefaultRenderFn()) {\n var _getDefaultTemplateCh2 = getDefaultTemplateChildren(),\n box = _getDefaultTemplateCh2.box,\n content = _getDefaultTemplateCh2.content;\n\n setTransitionDuration([box, content], 0);\n }\n\n onFirstUpdate = function onFirstUpdate() {\n var _instance$popperInsta2;\n\n if (!instance.state.isVisible || ignoreOnFirstUpdate) {\n return;\n }\n\n ignoreOnFirstUpdate = true; // reflow\n\n void popper.offsetHeight;\n popper.style.transition = instance.props.moveTransition;\n\n if (getIsDefaultRenderFn() && instance.props.animation) {\n var _getDefaultTemplateCh3 = getDefaultTemplateChildren(),\n _box = _getDefaultTemplateCh3.box,\n _content = _getDefaultTemplateCh3.content;\n\n setTransitionDuration([_box, _content], duration);\n setVisibilityState([_box, _content], 'visible');\n }\n\n handleAriaContentAttribute();\n handleAriaExpandedAttribute();\n pushIfUnique(mountedInstances, instance); // certain modifiers (e.g. `maxSize`) require a second update after the\n // popper has been positioned for the first time\n\n (_instance$popperInsta2 = instance.popperInstance) == null ? void 0 : _instance$popperInsta2.forceUpdate();\n instance.state.isMounted = true;\n invokeHook('onMount', [instance]);\n\n if (instance.props.animation && getIsDefaultRenderFn()) {\n onTransitionedIn(duration, function () {\n instance.state.isShown = true;\n invokeHook('onShown', [instance]);\n });\n }\n };\n\n mount();\n }\n\n function hide() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hide'));\n } // Early bail-out\n\n\n var isAlreadyHidden = !instance.state.isVisible;\n var isDestroyed = instance.state.isDestroyed;\n var isDisabled = !instance.state.isEnabled;\n var duration = getValueAtIndexOrReturn(instance.props.duration, 1, defaultProps.duration);\n\n if (isAlreadyHidden || isDestroyed || isDisabled) {\n return;\n }\n\n invokeHook('onHide', [instance], false);\n\n if (instance.props.onHide(instance) === false) {\n return;\n }\n\n instance.state.isVisible = false;\n instance.state.isShown = false;\n ignoreOnFirstUpdate = false;\n isVisibleFromClick = false;\n\n if (getIsDefaultRenderFn()) {\n popper.style.visibility = 'hidden';\n }\n\n cleanupInteractiveMouseListeners();\n removeDocumentPress();\n handleStyles();\n\n if (getIsDefaultRenderFn()) {\n var _getDefaultTemplateCh4 = getDefaultTemplateChildren(),\n box = _getDefaultTemplateCh4.box,\n content = _getDefaultTemplateCh4.content;\n\n if (instance.props.animation) {\n setTransitionDuration([box, content], duration);\n setVisibilityState([box, content], 'hidden');\n }\n }\n\n handleAriaContentAttribute();\n handleAriaExpandedAttribute();\n\n if (instance.props.animation) {\n if (getIsDefaultRenderFn()) {\n onTransitionedOut(duration, instance.unmount);\n }\n } else {\n instance.unmount();\n }\n }\n\n function hideWithInteractivity(event) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hideWithInteractivity'));\n }\n\n getDocument().addEventListener('mousemove', debouncedOnMouseMove);\n pushIfUnique(mouseMoveListeners, debouncedOnMouseMove);\n debouncedOnMouseMove(event);\n }\n\n function unmount() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('unmount'));\n }\n\n if (instance.state.isVisible) {\n instance.hide();\n }\n\n if (!instance.state.isMounted) {\n return;\n }\n\n destroyPopperInstance(); // If a popper is not interactive, it will be appended outside the popper\n // tree by default. This seems mainly for interactive tippies, but we should\n // find a workaround if possible\n\n getNestedPopperTree().forEach(function (nestedPopper) {\n nestedPopper._tippy.unmount();\n });\n\n if (popper.parentNode) {\n popper.parentNode.removeChild(popper);\n }\n\n mountedInstances = mountedInstances.filter(function (i) {\n return i !== instance;\n });\n instance.state.isMounted = false;\n invokeHook('onHidden', [instance]);\n }\n\n function destroy() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('destroy'));\n }\n\n if (instance.state.isDestroyed) {\n return;\n }\n\n instance.clearDelayTimeouts();\n instance.unmount();\n removeListeners();\n delete reference._tippy;\n instance.state.isDestroyed = true;\n invokeHook('onDestroy', [instance]);\n }\n}\n\nfunction tippy(targets, optionalProps) {\n if (optionalProps === void 0) {\n optionalProps = {};\n }\n\n var plugins = defaultProps.plugins.concat(optionalProps.plugins || []);\n /* istanbul ignore else */\n\n if (process.env.NODE_ENV !== \"production\") {\n validateTargets(targets);\n validateProps(optionalProps, plugins);\n }\n\n bindGlobalEventListeners();\n var passedProps = Object.assign({}, optionalProps, {\n plugins: plugins\n });\n var elements = getArrayOfElements(targets);\n /* istanbul ignore else */\n\n if (process.env.NODE_ENV !== \"production\") {\n var isSingleContentElement = isElement(passedProps.content);\n var isMoreThanOneReferenceElement = elements.length > 1;\n warnWhen(isSingleContentElement && isMoreThanOneReferenceElement, ['tippy() was passed an Element as the `content` prop, but more than', 'one tippy instance was created by this invocation. This means the', 'content element will only be appended to the last tippy instance.', '\\n\\n', 'Instead, pass the .innerHTML of the element, or use a function that', 'returns a cloned version of the element instead.', '\\n\\n', '1) content: element.innerHTML\\n', '2) content: () => element.cloneNode(true)'].join(' '));\n }\n\n var instances = elements.reduce(function (acc, reference) {\n var instance = reference && createTippy(reference, passedProps);\n\n if (instance) {\n acc.push(instance);\n }\n\n return acc;\n }, []);\n return isElement(targets) ? instances[0] : instances;\n}\n\ntippy.defaultProps = defaultProps;\ntippy.setDefaultProps = setDefaultProps;\ntippy.currentInput = currentInput;\n\nvar hideAll = function hideAll(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n excludedReferenceOrInstance = _ref.exclude,\n duration = _ref.duration;\n\n mountedInstances.forEach(function (instance) {\n var isExcluded = false;\n\n if (excludedReferenceOrInstance) {\n isExcluded = isReferenceElement(excludedReferenceOrInstance) ? instance.reference === excludedReferenceOrInstance : instance.popper === excludedReferenceOrInstance.popper;\n }\n\n if (!isExcluded) {\n var originalDuration = instance.props.duration;\n instance.setProps({\n duration: duration\n });\n instance.hide();\n\n if (!instance.state.isDestroyed) {\n instance.setProps({\n duration: originalDuration\n });\n }\n }\n });\n}; // every time the popper is destroyed (i.e. a new target), removing the styles\n// and causing transitions to break for singletons when the console is open, but\n// most notably for non-transform styles being used, `gpuAcceleration: false`.\n\n\nvar applyStylesModifier = Object.assign({}, applyStyles, {\n effect: function effect(_ref) {\n var state = _ref.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n } // intentionally return no cleanup function\n // return () => { ... }\n\n }\n});\n\nvar createSingleton = function createSingleton(tippyInstances, optionalProps) {\n var _optionalProps$popper;\n\n if (optionalProps === void 0) {\n optionalProps = {};\n }\n /* istanbul ignore else */\n\n\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(!Array.isArray(tippyInstances), ['The first argument passed to createSingleton() must be an array of', 'tippy instances. The passed value was', String(tippyInstances)].join(' '));\n }\n\n var individualInstances = tippyInstances;\n var references = [];\n var currentTarget;\n var overrides = optionalProps.overrides;\n var interceptSetPropsCleanups = [];\n var shownOnCreate = false;\n\n function setReferences() {\n references = individualInstances.map(function (instance) {\n return instance.reference;\n });\n }\n\n function enableInstances(isEnabled) {\n individualInstances.forEach(function (instance) {\n if (isEnabled) {\n instance.enable();\n } else {\n instance.disable();\n }\n });\n }\n\n function interceptSetProps(singleton) {\n return individualInstances.map(function (instance) {\n var originalSetProps = instance.setProps;\n\n instance.setProps = function (props) {\n originalSetProps(props);\n\n if (instance.reference === currentTarget) {\n singleton.setProps(props);\n }\n };\n\n return function () {\n instance.setProps = originalSetProps;\n };\n });\n } // have to pass singleton, as it maybe undefined on first call\n\n\n function prepareInstance(singleton, target) {\n var index = references.indexOf(target); // bail-out\n\n if (target === currentTarget) {\n return;\n }\n\n currentTarget = target;\n var overrideProps = (overrides || []).concat('content').reduce(function (acc, prop) {\n acc[prop] = individualInstances[index].props[prop];\n return acc;\n }, {});\n singleton.setProps(Object.assign({}, overrideProps, {\n getReferenceClientRect: typeof overrideProps.getReferenceClientRect === 'function' ? overrideProps.getReferenceClientRect : function () {\n return target.getBoundingClientRect();\n }\n }));\n }\n\n enableInstances(false);\n setReferences();\n var plugin = {\n fn: function fn() {\n return {\n onDestroy: function onDestroy() {\n enableInstances(true);\n },\n onHidden: function onHidden() {\n currentTarget = null;\n },\n onClickOutside: function onClickOutside(instance) {\n if (instance.props.showOnCreate && !shownOnCreate) {\n shownOnCreate = true;\n currentTarget = null;\n }\n },\n onShow: function onShow(instance) {\n if (instance.props.showOnCreate && !shownOnCreate) {\n shownOnCreate = true;\n prepareInstance(instance, references[0]);\n }\n },\n onTrigger: function onTrigger(instance, event) {\n prepareInstance(instance, event.currentTarget);\n }\n };\n }\n };\n var singleton = tippy(div(), Object.assign({}, removeProperties(optionalProps, ['overrides']), {\n plugins: [plugin].concat(optionalProps.plugins || []),\n triggerTarget: references,\n popperOptions: Object.assign({}, optionalProps.popperOptions, {\n modifiers: [].concat(((_optionalProps$popper = optionalProps.popperOptions) == null ? void 0 : _optionalProps$popper.modifiers) || [], [applyStylesModifier])\n })\n }));\n var originalShow = singleton.show;\n\n singleton.show = function (target) {\n originalShow(); // first time, showOnCreate or programmatic call with no params\n // default to showing first instance\n\n if (!currentTarget && target == null) {\n return prepareInstance(singleton, references[0]);\n } // triggered from event (do nothing as prepareInstance already called by onTrigger)\n // programmatic call with no params when already visible (do nothing again)\n\n\n if (currentTarget && target == null) {\n return;\n } // target is index of instance\n\n\n if (typeof target === 'number') {\n return references[target] && prepareInstance(singleton, references[target]);\n } // target is a child tippy instance\n\n\n if (individualInstances.includes(target)) {\n var ref = target.reference;\n return prepareInstance(singleton, ref);\n } // target is a ReferenceElement\n\n\n if (references.includes(target)) {\n return prepareInstance(singleton, target);\n }\n };\n\n singleton.showNext = function () {\n var first = references[0];\n\n if (!currentTarget) {\n return singleton.show(0);\n }\n\n var index = references.indexOf(currentTarget);\n singleton.show(references[index + 1] || first);\n };\n\n singleton.showPrevious = function () {\n var last = references[references.length - 1];\n\n if (!currentTarget) {\n return singleton.show(last);\n }\n\n var index = references.indexOf(currentTarget);\n var target = references[index - 1] || last;\n singleton.show(target);\n };\n\n var originalSetProps = singleton.setProps;\n\n singleton.setProps = function (props) {\n overrides = props.overrides || overrides;\n originalSetProps(props);\n };\n\n singleton.setInstances = function (nextInstances) {\n enableInstances(true);\n interceptSetPropsCleanups.forEach(function (fn) {\n return fn();\n });\n individualInstances = nextInstances;\n enableInstances(false);\n setReferences();\n interceptSetProps(singleton);\n singleton.setProps({\n triggerTarget: references\n });\n };\n\n interceptSetPropsCleanups = interceptSetProps(singleton);\n return singleton;\n};\n\nvar BUBBLING_EVENTS_MAP = {\n mouseover: 'mouseenter',\n focusin: 'focus',\n click: 'click'\n};\n/**\n * Creates a delegate instance that controls the creation of tippy instances\n * for child elements (`target` CSS selector).\n */\n\nfunction delegate(targets, props) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(!(props && props.target), ['You must specity a `target` prop indicating a CSS selector string matching', 'the target elements that should receive a tippy.'].join(' '));\n }\n\n var listeners = [];\n var childTippyInstances = [];\n var disabled = false;\n var target = props.target;\n var nativeProps = removeProperties(props, ['target']);\n var parentProps = Object.assign({}, nativeProps, {\n trigger: 'manual',\n touch: false\n });\n var childProps = Object.assign({}, nativeProps, {\n showOnCreate: true\n });\n var returnValue = tippy(targets, parentProps);\n var normalizedReturnValue = normalizeToArray(returnValue);\n\n function onTrigger(event) {\n if (!event.target || disabled) {\n return;\n }\n\n var targetNode = event.target.closest(target);\n\n if (!targetNode) {\n return;\n } // Get relevant trigger with fallbacks:\n // 1. Check `data-tippy-trigger` attribute on target node\n // 2. Fallback to `trigger` passed to `delegate()`\n // 3. Fallback to `defaultProps.trigger`\n\n\n var trigger = targetNode.getAttribute('data-tippy-trigger') || props.trigger || defaultProps.trigger; // @ts-ignore\n\n if (targetNode._tippy) {\n return;\n }\n\n if (event.type === 'touchstart' && typeof childProps.touch === 'boolean') {\n return;\n }\n\n if (event.type !== 'touchstart' && trigger.indexOf(BUBBLING_EVENTS_MAP[event.type]) < 0) {\n return;\n }\n\n var instance = tippy(targetNode, childProps);\n\n if (instance) {\n childTippyInstances = childTippyInstances.concat(instance);\n }\n }\n\n function on(node, eventType, handler, options) {\n if (options === void 0) {\n options = false;\n }\n\n node.addEventListener(eventType, handler, options);\n listeners.push({\n node: node,\n eventType: eventType,\n handler: handler,\n options: options\n });\n }\n\n function addEventListeners(instance) {\n var reference = instance.reference;\n on(reference, 'touchstart', onTrigger, TOUCH_OPTIONS);\n on(reference, 'mouseover', onTrigger);\n on(reference, 'focusin', onTrigger);\n on(reference, 'click', onTrigger);\n }\n\n function removeEventListeners() {\n listeners.forEach(function (_ref) {\n var node = _ref.node,\n eventType = _ref.eventType,\n handler = _ref.handler,\n options = _ref.options;\n node.removeEventListener(eventType, handler, options);\n });\n listeners = [];\n }\n\n function applyMutations(instance) {\n var originalDestroy = instance.destroy;\n var originalEnable = instance.enable;\n var originalDisable = instance.disable;\n\n instance.destroy = function (shouldDestroyChildInstances) {\n if (shouldDestroyChildInstances === void 0) {\n shouldDestroyChildInstances = true;\n }\n\n if (shouldDestroyChildInstances) {\n childTippyInstances.forEach(function (instance) {\n instance.destroy();\n });\n }\n\n childTippyInstances = [];\n removeEventListeners();\n originalDestroy();\n };\n\n instance.enable = function () {\n originalEnable();\n childTippyInstances.forEach(function (instance) {\n return instance.enable();\n });\n disabled = false;\n };\n\n instance.disable = function () {\n originalDisable();\n childTippyInstances.forEach(function (instance) {\n return instance.disable();\n });\n disabled = true;\n };\n\n addEventListeners(instance);\n }\n\n normalizedReturnValue.forEach(applyMutations);\n return returnValue;\n}\n\nvar animateFill = {\n name: 'animateFill',\n defaultValue: false,\n fn: function fn(instance) {\n var _instance$props$rende; // @ts-ignore\n\n\n if (!((_instance$props$rende = instance.props.render) == null ? void 0 : _instance$props$rende.$$tippy)) {\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(instance.props.animateFill, 'The `animateFill` plugin requires the default render function.');\n }\n\n return {};\n }\n\n var _getChildren = getChildren(instance.popper),\n box = _getChildren.box,\n content = _getChildren.content;\n\n var backdrop = instance.props.animateFill ? createBackdropElement() : null;\n return {\n onCreate: function onCreate() {\n if (backdrop) {\n box.insertBefore(backdrop, box.firstElementChild);\n box.setAttribute('data-animatefill', '');\n box.style.overflow = 'hidden';\n instance.setProps({\n arrow: false,\n animation: 'shift-away'\n });\n }\n },\n onMount: function onMount() {\n if (backdrop) {\n var transitionDuration = box.style.transitionDuration;\n var duration = Number(transitionDuration.replace('ms', '')); // The content should fade in after the backdrop has mostly filled the\n // tooltip element. `clip-path` is the other alternative but is not\n // well-supported and is buggy on some devices.\n\n content.style.transitionDelay = Math.round(duration / 10) + \"ms\";\n backdrop.style.transitionDuration = transitionDuration;\n setVisibilityState([backdrop], 'visible');\n }\n },\n onShow: function onShow() {\n if (backdrop) {\n backdrop.style.transitionDuration = '0ms';\n }\n },\n onHide: function onHide() {\n if (backdrop) {\n setVisibilityState([backdrop], 'hidden');\n }\n }\n };\n }\n};\n\nfunction createBackdropElement() {\n var backdrop = div();\n backdrop.className = BACKDROP_CLASS;\n setVisibilityState([backdrop], 'hidden');\n return backdrop;\n}\n\nvar mouseCoords = {\n clientX: 0,\n clientY: 0\n};\nvar activeInstances = [];\n\nfunction storeMouseCoords(_ref) {\n var clientX = _ref.clientX,\n clientY = _ref.clientY;\n mouseCoords = {\n clientX: clientX,\n clientY: clientY\n };\n}\n\nfunction addMouseCoordsListener(doc) {\n doc.addEventListener('mousemove', storeMouseCoords);\n}\n\nfunction removeMouseCoordsListener(doc) {\n doc.removeEventListener('mousemove', storeMouseCoords);\n}\n\nvar followCursor = {\n name: 'followCursor',\n defaultValue: false,\n fn: function fn(instance) {\n var reference = instance.reference;\n var doc = getOwnerDocument(instance.props.triggerTarget || reference);\n var isInternalUpdate = false;\n var wasFocusEvent = false;\n var isUnmounted = true;\n var prevProps = instance.props;\n\n function getIsInitialBehavior() {\n return instance.props.followCursor === 'initial' && instance.state.isVisible;\n }\n\n function addListener() {\n doc.addEventListener('mousemove', onMouseMove);\n }\n\n function removeListener() {\n doc.removeEventListener('mousemove', onMouseMove);\n }\n\n function unsetGetReferenceClientRect() {\n isInternalUpdate = true;\n instance.setProps({\n getReferenceClientRect: null\n });\n isInternalUpdate = false;\n }\n\n function onMouseMove(event) {\n // If the instance is interactive, avoid updating the position unless it's\n // over the reference element\n var isCursorOverReference = event.target ? reference.contains(event.target) : true;\n var followCursor = instance.props.followCursor;\n var clientX = event.clientX,\n clientY = event.clientY;\n var rect = reference.getBoundingClientRect();\n var relativeX = clientX - rect.left;\n var relativeY = clientY - rect.top;\n\n if (isCursorOverReference || !instance.props.interactive) {\n instance.setProps({\n getReferenceClientRect: function getReferenceClientRect() {\n var rect = reference.getBoundingClientRect();\n var x = clientX;\n var y = clientY;\n\n if (followCursor === 'initial') {\n x = rect.left + relativeX;\n y = rect.top + relativeY;\n }\n\n var top = followCursor === 'horizontal' ? rect.top : y;\n var right = followCursor === 'vertical' ? rect.right : x;\n var bottom = followCursor === 'horizontal' ? rect.bottom : y;\n var left = followCursor === 'vertical' ? rect.left : x;\n return {\n width: right - left,\n height: bottom - top,\n top: top,\n right: right,\n bottom: bottom,\n left: left\n };\n }\n });\n }\n }\n\n function create() {\n if (instance.props.followCursor) {\n activeInstances.push({\n instance: instance,\n doc: doc\n });\n addMouseCoordsListener(doc);\n }\n }\n\n function destroy() {\n activeInstances = activeInstances.filter(function (data) {\n return data.instance !== instance;\n });\n\n if (activeInstances.filter(function (data) {\n return data.doc === doc;\n }).length === 0) {\n removeMouseCoordsListener(doc);\n }\n }\n\n return {\n onCreate: create,\n onDestroy: destroy,\n onBeforeUpdate: function onBeforeUpdate() {\n prevProps = instance.props;\n },\n onAfterUpdate: function onAfterUpdate(_, _ref2) {\n var followCursor = _ref2.followCursor;\n\n if (isInternalUpdate) {\n return;\n }\n\n if (followCursor !== undefined && prevProps.followCursor !== followCursor) {\n destroy();\n\n if (followCursor) {\n create();\n\n if (instance.state.isMounted && !wasFocusEvent && !getIsInitialBehavior()) {\n addListener();\n }\n } else {\n removeListener();\n unsetGetReferenceClientRect();\n }\n }\n },\n onMount: function onMount() {\n if (instance.props.followCursor && !wasFocusEvent) {\n if (isUnmounted) {\n onMouseMove(mouseCoords);\n isUnmounted = false;\n }\n\n if (!getIsInitialBehavior()) {\n addListener();\n }\n }\n },\n onTrigger: function onTrigger(_, event) {\n if (isMouseEvent(event)) {\n mouseCoords = {\n clientX: event.clientX,\n clientY: event.clientY\n };\n }\n\n wasFocusEvent = event.type === 'focus';\n },\n onHidden: function onHidden() {\n if (instance.props.followCursor) {\n unsetGetReferenceClientRect();\n removeListener();\n isUnmounted = true;\n }\n }\n };\n }\n};\n\nfunction getProps(props, modifier) {\n var _props$popperOptions;\n\n return {\n popperOptions: Object.assign({}, props.popperOptions, {\n modifiers: [].concat((((_props$popperOptions = props.popperOptions) == null ? void 0 : _props$popperOptions.modifiers) || []).filter(function (_ref) {\n var name = _ref.name;\n return name !== modifier.name;\n }), [modifier])\n })\n };\n}\n\nvar inlinePositioning = {\n name: 'inlinePositioning',\n defaultValue: false,\n fn: function fn(instance) {\n var reference = instance.reference;\n\n function isEnabled() {\n return !!instance.props.inlinePositioning;\n }\n\n var placement;\n var cursorRectIndex = -1;\n var isInternalUpdate = false;\n var modifier = {\n name: 'tippyInlinePositioning',\n enabled: true,\n phase: 'afterWrite',\n fn: function fn(_ref2) {\n var state = _ref2.state;\n\n if (isEnabled()) {\n if (placement !== state.placement) {\n instance.setProps({\n getReferenceClientRect: function getReferenceClientRect() {\n return _getReferenceClientRect(state.placement);\n }\n });\n }\n\n placement = state.placement;\n }\n }\n };\n\n function _getReferenceClientRect(placement) {\n return getInlineBoundingClientRect(getBasePlacement(placement), reference.getBoundingClientRect(), arrayFrom(reference.getClientRects()), cursorRectIndex);\n }\n\n function setInternalProps(partialProps) {\n isInternalUpdate = true;\n instance.setProps(partialProps);\n isInternalUpdate = false;\n }\n\n function addModifier() {\n if (!isInternalUpdate) {\n setInternalProps(getProps(instance.props, modifier));\n }\n }\n\n return {\n onCreate: addModifier,\n onAfterUpdate: addModifier,\n onTrigger: function onTrigger(_, event) {\n if (isMouseEvent(event)) {\n var rects = arrayFrom(instance.reference.getClientRects());\n var cursorRect = rects.find(function (rect) {\n return rect.left - 2 <= event.clientX && rect.right + 2 >= event.clientX && rect.top - 2 <= event.clientY && rect.bottom + 2 >= event.clientY;\n });\n cursorRectIndex = rects.indexOf(cursorRect);\n }\n },\n onUntrigger: function onUntrigger() {\n cursorRectIndex = -1;\n }\n };\n }\n};\n\nfunction getInlineBoundingClientRect(currentBasePlacement, boundingRect, clientRects, cursorRectIndex) {\n // Not an inline element, or placement is not yet known\n if (clientRects.length < 2 || currentBasePlacement === null) {\n return boundingRect;\n } // There are two rects and they are disjoined\n\n\n if (clientRects.length === 2 && cursorRectIndex >= 0 && clientRects[0].left > clientRects[1].right) {\n return clientRects[cursorRectIndex] || boundingRect;\n }\n\n switch (currentBasePlacement) {\n case 'top':\n case 'bottom':\n {\n var firstRect = clientRects[0];\n var lastRect = clientRects[clientRects.length - 1];\n var isTop = currentBasePlacement === 'top';\n var top = firstRect.top;\n var bottom = lastRect.bottom;\n var left = isTop ? firstRect.left : lastRect.left;\n var right = isTop ? firstRect.right : lastRect.right;\n var width = right - left;\n var height = bottom - top;\n return {\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n width: width,\n height: height\n };\n }\n\n case 'left':\n case 'right':\n {\n var minLeft = Math.min.apply(Math, clientRects.map(function (rects) {\n return rects.left;\n }));\n var maxRight = Math.max.apply(Math, clientRects.map(function (rects) {\n return rects.right;\n }));\n var measureRects = clientRects.filter(function (rect) {\n return currentBasePlacement === 'left' ? rect.left === minLeft : rect.right === maxRight;\n });\n var _top = measureRects[0].top;\n var _bottom = measureRects[measureRects.length - 1].bottom;\n var _left = minLeft;\n var _right = maxRight;\n\n var _width = _right - _left;\n\n var _height = _bottom - _top;\n\n return {\n top: _top,\n bottom: _bottom,\n left: _left,\n right: _right,\n width: _width,\n height: _height\n };\n }\n\n default:\n {\n return boundingRect;\n }\n }\n}\n\nvar sticky = {\n name: 'sticky',\n defaultValue: false,\n fn: function fn(instance) {\n var reference = instance.reference,\n popper = instance.popper;\n\n function getReference() {\n return instance.popperInstance ? instance.popperInstance.state.elements.reference : reference;\n }\n\n function shouldCheck(value) {\n return instance.props.sticky === true || instance.props.sticky === value;\n }\n\n var prevRefRect = null;\n var prevPopRect = null;\n\n function updatePosition() {\n var currentRefRect = shouldCheck('reference') ? getReference().getBoundingClientRect() : null;\n var currentPopRect = shouldCheck('popper') ? popper.getBoundingClientRect() : null;\n\n if (currentRefRect && areRectsDifferent(prevRefRect, currentRefRect) || currentPopRect && areRectsDifferent(prevPopRect, currentPopRect)) {\n if (instance.popperInstance) {\n instance.popperInstance.update();\n }\n }\n\n prevRefRect = currentRefRect;\n prevPopRect = currentPopRect;\n\n if (instance.state.isMounted) {\n requestAnimationFrame(updatePosition);\n }\n }\n\n return {\n onMount: function onMount() {\n if (instance.props.sticky) {\n updatePosition();\n }\n }\n };\n }\n};\n\nfunction areRectsDifferent(rectA, rectB) {\n if (rectA && rectB) {\n return rectA.top !== rectB.top || rectA.right !== rectB.right || rectA.bottom !== rectB.bottom || rectA.left !== rectB.left;\n }\n\n return true;\n}\n\ntippy.setDefaultProps({\n render: render\n});\nexport default tippy;\nexport { animateFill, createSingleton, delegate, followCursor, hideAll, inlinePositioning, ROUND_ARROW as roundArrow, sticky };","import tippy, { createSingleton } from 'tippy.js';\nexport { default as tippy } from 'tippy.js';\nimport React, { useLayoutEffect, useEffect, useRef, useState, cloneElement, useMemo, forwardRef as forwardRef$1 } from 'react';\nimport { createPortal } from 'react-dom';\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nfunction preserveRef(ref, node) {\n if (ref) {\n if (typeof ref === 'function') {\n ref(node);\n }\n\n if ({}.hasOwnProperty.call(ref, 'current')) {\n ref.current = node;\n }\n }\n}\n\nfunction ssrSafeCreateDiv() {\n return isBrowser && document.createElement('div');\n}\n\nfunction toDataAttributes(attrs) {\n var dataAttrs = {\n 'data-placement': attrs.placement\n };\n\n if (attrs.referenceHidden) {\n dataAttrs['data-reference-hidden'] = '';\n }\n\n if (attrs.escaped) {\n dataAttrs['data-escaped'] = '';\n }\n\n return dataAttrs;\n}\n\nfunction deepEqual(x, y) {\n if (x === y) {\n return true;\n } else if (typeof x === 'object' && x != null && typeof y === 'object' && y != null) {\n if (Object.keys(x).length !== Object.keys(y).length) {\n return false;\n }\n\n for (var prop in x) {\n if (y.hasOwnProperty(prop)) {\n if (!deepEqual(x[prop], y[prop])) {\n return false;\n }\n } else {\n return false;\n }\n }\n\n return true;\n } else {\n return false;\n }\n}\n\nfunction uniqueByShape(arr) {\n var output = [];\n arr.forEach(function (item) {\n if (!output.find(function (outputItem) {\n return deepEqual(item, outputItem);\n })) {\n output.push(item);\n }\n });\n return output;\n}\n\nfunction deepPreserveProps(instanceProps, componentProps) {\n var _instanceProps$popper, _componentProps$poppe;\n\n return Object.assign({}, componentProps, {\n popperOptions: Object.assign({}, instanceProps.popperOptions, componentProps.popperOptions, {\n modifiers: uniqueByShape([].concat(((_instanceProps$popper = instanceProps.popperOptions) == null ? void 0 : _instanceProps$popper.modifiers) || [], ((_componentProps$poppe = componentProps.popperOptions) == null ? void 0 : _componentProps$poppe.modifiers) || []))\n })\n });\n}\n\nvar useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\n\nfunction useMutableBox(initialValue) {\n // Using refs instead of state as it's recommended to not store imperative\n // values in state due to memory problems in React(?)\n var ref = useRef();\n\n if (!ref.current) {\n ref.current = typeof initialValue === 'function' ? initialValue() : initialValue;\n }\n\n return ref.current;\n}\n\nfunction updateClassName(box, action, classNames) {\n classNames.split(/\\s+/).forEach(function (name) {\n if (name) {\n box.classList[action](name);\n }\n });\n}\n\nvar classNamePlugin = {\n name: 'className',\n defaultValue: '',\n fn: function fn(instance) {\n var box = instance.popper.firstElementChild;\n\n var isDefaultRenderFn = function isDefaultRenderFn() {\n var _instance$props$rende;\n\n return !!((_instance$props$rende = instance.props.render) == null ? void 0 : _instance$props$rende.$$tippy);\n };\n\n function add() {\n if (instance.props.className && !isDefaultRenderFn()) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['@tippyjs/react: Cannot use `className` prop in conjunction with', '`render` prop. Place the className on the element you are', 'rendering.'].join(' '));\n }\n\n return;\n }\n\n updateClassName(box, 'add', instance.props.className);\n }\n\n function remove() {\n if (isDefaultRenderFn()) {\n updateClassName(box, 'remove', instance.props.className);\n }\n }\n\n return {\n onCreate: add,\n onBeforeUpdate: remove,\n onAfterUpdate: add\n };\n }\n};\n\nfunction TippyGenerator(tippy) {\n function Tippy(_ref) {\n var children = _ref.children,\n content = _ref.content,\n visible = _ref.visible,\n singleton = _ref.singleton,\n render = _ref.render,\n reference = _ref.reference,\n _ref$disabled = _ref.disabled,\n disabled = _ref$disabled === void 0 ? false : _ref$disabled,\n _ref$ignoreAttributes = _ref.ignoreAttributes,\n ignoreAttributes = _ref$ignoreAttributes === void 0 ? true : _ref$ignoreAttributes,\n __source = _ref.__source,\n __self = _ref.__self,\n restOfNativeProps = _objectWithoutPropertiesLoose(_ref, [\"children\", \"content\", \"visible\", \"singleton\", \"render\", \"reference\", \"disabled\", \"ignoreAttributes\", \"__source\", \"__self\"]);\n\n var isControlledMode = visible !== undefined;\n var isSingletonMode = singleton !== undefined;\n\n var _useState = useState(false),\n mounted = _useState[0],\n setMounted = _useState[1];\n\n var _useState2 = useState({}),\n attrs = _useState2[0],\n setAttrs = _useState2[1];\n\n var _useState3 = useState(),\n singletonContent = _useState3[0],\n setSingletonContent = _useState3[1];\n\n var mutableBox = useMutableBox(function () {\n return {\n container: ssrSafeCreateDiv(),\n renders: 1\n };\n });\n var props = Object.assign({\n ignoreAttributes: ignoreAttributes\n }, restOfNativeProps, {\n content: mutableBox.container\n });\n\n if (isControlledMode) {\n if (process.env.NODE_ENV !== 'production') {\n ['trigger', 'hideOnClick', 'showOnCreate'].forEach(function (nativeStateProp) {\n if (props[nativeStateProp] !== undefined) {\n console.warn([\"@tippyjs/react: Cannot specify `\" + nativeStateProp + \"` prop in\", \"controlled mode (`visible` prop)\"].join(' '));\n }\n });\n }\n\n props.trigger = 'manual';\n props.hideOnClick = false;\n }\n\n if (isSingletonMode) {\n disabled = true;\n }\n\n var computedProps = props;\n var plugins = props.plugins || [];\n\n if (render) {\n computedProps = Object.assign({}, props, {\n plugins: isSingletonMode ? [].concat(plugins, [{\n fn: function fn() {\n return {\n onTrigger: function onTrigger(_, event) {\n var _singleton$data$child = singleton.data.children.find(function (_ref2) {\n var instance = _ref2.instance;\n return instance.reference === event.currentTarget;\n }),\n content = _singleton$data$child.content;\n\n setSingletonContent(content);\n }\n };\n }\n }]) : plugins,\n render: function render() {\n return {\n popper: mutableBox.container\n };\n }\n });\n }\n\n var deps = [reference].concat(children ? [children.type] : []); // CREATE\n\n useIsomorphicLayoutEffect(function () {\n var element = reference;\n\n if (reference && reference.hasOwnProperty('current')) {\n element = reference.current;\n }\n\n var instance = tippy(element || mutableBox.ref || ssrSafeCreateDiv(), Object.assign({}, computedProps, {\n plugins: [classNamePlugin].concat(props.plugins || [])\n }));\n mutableBox.instance = instance;\n\n if (disabled) {\n instance.disable();\n }\n\n if (visible) {\n instance.show();\n }\n\n if (isSingletonMode) {\n singleton.hook({\n instance: instance,\n content: content,\n props: computedProps\n });\n }\n\n setMounted(true);\n return function () {\n instance.destroy();\n singleton == null ? void 0 : singleton.cleanup(instance);\n };\n }, deps); // UPDATE\n\n useIsomorphicLayoutEffect(function () {\n var _instance$popperInsta; // Prevent this effect from running on 1st render\n\n\n if (mutableBox.renders === 1) {\n mutableBox.renders++;\n return;\n }\n\n var instance = mutableBox.instance;\n instance.setProps(deepPreserveProps(instance.props, computedProps)); // Fixes #264\n\n (_instance$popperInsta = instance.popperInstance) == null ? void 0 : _instance$popperInsta.forceUpdate();\n\n if (disabled) {\n instance.disable();\n } else {\n instance.enable();\n }\n\n if (isControlledMode) {\n if (visible) {\n instance.show();\n } else {\n instance.hide();\n }\n }\n\n if (isSingletonMode) {\n singleton.hook({\n instance: instance,\n content: content,\n props: computedProps\n });\n }\n });\n useIsomorphicLayoutEffect(function () {\n var _instance$props$poppe;\n\n if (!render) {\n return;\n }\n\n var instance = mutableBox.instance;\n instance.setProps({\n popperOptions: Object.assign({}, instance.props.popperOptions, {\n modifiers: [].concat((((_instance$props$poppe = instance.props.popperOptions) == null ? void 0 : _instance$props$poppe.modifiers) || []).filter(function (_ref3) {\n var name = _ref3.name;\n return name !== '$$tippyReact';\n }), [{\n name: '$$tippyReact',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['computeStyles'],\n fn: function fn(_ref4) {\n var _state$modifiersData;\n\n var state = _ref4.state;\n var hideData = (_state$modifiersData = state.modifiersData) == null ? void 0 : _state$modifiersData.hide; // WARNING: this is a high-risk path that can cause an infinite\n // loop. This expression _must_ evaluate to false when required\n\n if (attrs.placement !== state.placement || attrs.referenceHidden !== (hideData == null ? void 0 : hideData.isReferenceHidden) || attrs.escaped !== (hideData == null ? void 0 : hideData.hasPopperEscaped)) {\n setAttrs({\n placement: state.placement,\n referenceHidden: hideData == null ? void 0 : hideData.isReferenceHidden,\n escaped: hideData == null ? void 0 : hideData.hasPopperEscaped\n });\n }\n\n state.attributes.popper = {};\n }\n }])\n })\n });\n }, [attrs.placement, attrs.referenceHidden, attrs.escaped].concat(deps));\n return /*#__PURE__*/React.createElement(React.Fragment, null, children ? /*#__PURE__*/cloneElement(children, {\n ref: function ref(node) {\n mutableBox.ref = node;\n preserveRef(children.ref, node);\n }\n }) : null, mounted && /*#__PURE__*/createPortal(render ? render(toDataAttributes(attrs), singletonContent, mutableBox.instance) : content, mutableBox.container));\n }\n\n return Tippy;\n}\n\nfunction useSingletonGenerator(createSingleton) {\n return function useSingleton(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$disabled = _ref.disabled,\n disabled = _ref$disabled === void 0 ? false : _ref$disabled,\n _ref$overrides = _ref.overrides,\n overrides = _ref$overrides === void 0 ? [] : _ref$overrides;\n\n var _useState = useState(false),\n mounted = _useState[0],\n setMounted = _useState[1];\n\n var mutableBox = useMutableBox({\n children: [],\n renders: 1\n });\n useIsomorphicLayoutEffect(function () {\n if (!mounted) {\n setMounted(true);\n return;\n }\n\n var children = mutableBox.children,\n sourceData = mutableBox.sourceData;\n\n if (!sourceData) {\n if (process.env.NODE_ENV !== 'production') {\n console.error(['@tippyjs/react: The `source` variable from `useSingleton()` has', 'not been passed to a <Tippy /> component.'].join(' '));\n }\n\n return;\n }\n\n var instance = createSingleton(children.map(function (child) {\n return child.instance;\n }), Object.assign({}, sourceData.props, {\n popperOptions: sourceData.instance.props.popperOptions,\n overrides: overrides,\n plugins: [classNamePlugin].concat(sourceData.props.plugins || [])\n }));\n mutableBox.instance = instance;\n\n if (disabled) {\n instance.disable();\n }\n\n return function () {\n instance.destroy();\n mutableBox.children = children.filter(function (_ref2) {\n var instance = _ref2.instance;\n return !instance.state.isDestroyed;\n });\n };\n }, [mounted]);\n useIsomorphicLayoutEffect(function () {\n if (!mounted) {\n return;\n }\n\n if (mutableBox.renders === 1) {\n mutableBox.renders++;\n return;\n }\n\n var children = mutableBox.children,\n instance = mutableBox.instance,\n sourceData = mutableBox.sourceData;\n\n if (!(instance && sourceData)) {\n return;\n }\n\n var _sourceData$props = sourceData.props,\n content = _sourceData$props.content,\n props = _objectWithoutPropertiesLoose(_sourceData$props, [\"content\"]);\n\n instance.setProps(deepPreserveProps(instance.props, Object.assign({}, props, {\n overrides: overrides\n })));\n instance.setInstances(children.map(function (child) {\n return child.instance;\n }));\n\n if (disabled) {\n instance.disable();\n } else {\n instance.enable();\n }\n });\n return useMemo(function () {\n var source = {\n data: mutableBox,\n hook: function hook(data) {\n mutableBox.sourceData = data;\n },\n cleanup: function cleanup() {\n mutableBox.sourceData = null;\n }\n };\n var target = {\n hook: function hook(data) {\n if (!mutableBox.children.find(function (_ref3) {\n var instance = _ref3.instance;\n return data.instance === instance;\n })) {\n mutableBox.children.push(data);\n\n if (mutableBox.instance && !mutableBox.instance.state.isDestroyed) {\n mutableBox.instance.setInstances(mutableBox.children.map(function (child) {\n return child.instance;\n }));\n }\n }\n },\n cleanup: function cleanup(instance) {\n mutableBox.children = mutableBox.children.filter(function (data) {\n return data.instance !== instance;\n });\n\n if (mutableBox.instance && !mutableBox.instance.state.isDestroyed) {\n mutableBox.instance.setInstances(mutableBox.children.map(function (child) {\n return child.instance;\n }));\n }\n }\n };\n return [source, target];\n }, []);\n };\n}\n\nvar forwardRef = function forwardRef(Tippy, defaultProps) {\n return /*#__PURE__*/forwardRef$1(function TippyWrapper(_ref, _ref2) {\n var children = _ref.children,\n props = _objectWithoutPropertiesLoose(_ref, [\"children\"]);\n\n return (\n /*#__PURE__*/\n // If I spread them separately here, Babel adds the _extends ponyfill for\n // some reason\n React.createElement(Tippy, Object.assign({}, defaultProps, props), children ? /*#__PURE__*/cloneElement(children, {\n ref: function ref(node) {\n preserveRef(_ref2, node);\n preserveRef(children.ref, node);\n }\n }) : null)\n );\n });\n};\n\nvar useSingleton = /*#__PURE__*/useSingletonGenerator(createSingleton);\nvar index = /*#__PURE__*/forwardRef( /*#__PURE__*/TippyGenerator(tippy));\nexport default index;\nexport { useSingleton };","import React from \"react\";\nimport Tippy from \"@tippyjs/react\";\nimport \"tippy.js/animations/shift-away.css\";\n\nexport default (props) => <Tippy placement=\"right\" animation=\"slide-away\" {...props} />;\n","/** @jsx jsx */\n// import React from 'react';\nimport { LinkToStacked } from \"./CustomLinkToStacked\";\nimport { Link } from \"gatsby\";\nimport { jsx } from \"theme-ui\";\n\nimport Tippy from \"./Tippy\";\n\nconst AnchorTag = ({ href, popups = {}, noPopups = false, ...restProps }) => {\n\tif (!href) href = restProps.to;\n\tif (!href.match(/^http/))\n\t\treturn noPopups ? (\n\t\t\t<Link {...restProps} to={href} sx={{ variant: \"links.internal\" }} />\n\t\t) : (\n\t\t\t<Tippy\n\t\t\t\tcontent={popups[href.replace(/^\\//, \"\")]}\n\t\t\t\tplacement=\"right\"\n\t\t\t\tanimation=\"shift-away\"\n\t\t\t>\n\t\t\t\t<span>\n\t\t\t\t\t<span style={{ color: \"darkgray\" }}>[[</span>\n\t\t\t\t\t<LinkToStacked {...restProps} to={href} sx={{ variant: \"links.internal\" }} />\n\t\t\t\t\t<span style={{ color: \"darkgray\" }}>]]</span>\n\t\t\t\t</span>\n\t\t\t</Tippy>\n\t\t);\n\t/* eslint-disable */\n\treturn <a {...restProps} href={href} target=\"_blank\" />;\n\t/* eslint-enable */\n};\n\nexport default {\n\ta: AnchorTag,\n};\n","/** @jsx jsx */\n/* eslint-disable */\nimport React from 'react';\n/* eslint-enable */\nimport { LinkToStacked } from \"./CustomLinkToStacked\";\nimport { Link } from \"gatsby\";\nimport { Styled, jsx, Heading } from \"theme-ui\";\n\nimport useWindowWidth from \"../utils/useWindowWidth\";\n\nexport default ({ references }) => {\n\tconst [width] = useWindowWidth();\n\n\tif (references.length > 0) {\n\t\tconst RefLink = width < 768 ? Link : LinkToStacked;\n\n\t\treturn (\n\t\t\t<div>\n\t\t\t\t<Heading as=\"h4\" color=\"text-light\">Referred in</Heading>\n\t\t\t\t<div sx={{ mb: 2 }}>\n\t\t\t\t\t{references.map((reference) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<RefLink\n\t\t\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\t\t\ttextDecoration: \"none\",\n\t\t\t\t\t\t\t\t\tcolor: \"text-light\",\n\t\t\t\t\t\t\t\t\t\":hover\": {\n\t\t\t\t\t\t\t\t\t\tcolor: \"text\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tto={`/${reference.slug}`}\n\t\t\t\t\t\t\t\tkey={reference.slug}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<div sx={{ py: 2 }}>\n\t\t\t\t\t\t\t\t\t<Styled.p sx={{ fontSize: 2, m: 0, color: \"text-light\", fontWeight: \"bold\", }}>\n\t\t\t\t\t\t\t\t\t\t{reference.title}\n\t\t\t\t\t\t\t\t\t</Styled.p>\n\t\t\t\t\t\t\t\t\t<Styled.p sx={{ fontSize: 1, m: 0, color: \"text-light\" }}>\n\t\t\t\t\t\t\t\t\t\t{reference.childMdx.excerpt}\n\t\t\t\t\t\t\t\t\t</Styled.p>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</RefLink>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t\t<hr sx={{ mx: \"auto\", width: \"10%\" }} />\n\t\t\t</div>\n\t\t);\n\t}\n\treturn null;\n};\n","/** @jsx jsx */\n// import React from 'react';\nimport { jsx, Box } from \"theme-ui\";\n\nimport ReferredBlock from \"./ReferredBlock\";\n\nconst Footer = ({ references }) => {\n\treturn (\n\t\t<Box p={3} sx={{ borderRadius: 2 }} mb={2} bg=\"accent\" color=\"text-light\">\n\t\t\t<ReferredBlock references={references} />\n\t\t\t<Box>\n\t\t\t\t<p sx={{ m: 0, fontSize: 1 }}>Do not go gentle into that good night,</p>\n\t\t\t\t<p sx={{ m: 0, fontSize: 1 }}>Old age should burn and rave at close of day;</p>\n\t\t\t\t<p sx={{ m: 0, fontSize: 1 }}>Rage, rage against the dying of the light.</p>\n\t\t\t</Box>\n\t\t</Box>\n\t);\n};\n\nexport default Footer;\n","/** @jsx jsx */\n// import React from 'react';\nimport { Box, Styled, jsx } from \"theme-ui\";\n\nexport default ({ reference }) => {\n\treturn (\n\t\t<Box\n\t\t\tbg=\"background\"\n\t\t\tp={3}\n\t\t\tsx={{ borderRadius: 2, boxShadow: \"0 0 8px rgba(0, 0, 0, 0.125)\" }}\n\t\t>\n\t\t\t<Styled.h3 sx={{ my: 3, }} >{reference.title}</Styled.h3>\n\t\t\t<Styled.p>{reference.childMdx.excerpt}</Styled.p>\n\t\t</Box>\n\t);\n};\n","/** @jsx jsx */\n// import React from \"react\";\nimport { MDXRenderer } from \"gatsby-plugin-mdx\";\nimport { Styled, ThemeProvider, Image, jsx } from \"theme-ui\";\nimport theme from \"../gatsby-plugin-theme-ui\";\nimport moment from 'moment';\n\nimport useWindowWidth from \"../utils/useWindowWidth\";\nimport components from \"./MdxComponents\";\nimport Footer from \"./Footer\";\nimport Popover from \"./Popover\";\n\nconst BrainNote = ({ note }) => {\n\tconst [width] = useWindowWidth();\n\n\tconst popups = {};\n\tif (note.outboundReferenceNotes) {\n\t\tnote.outboundReferenceNotes\n\t\t\t.filter((reference) => !!reference.childMdx.excerpt)\n\t\t\t.forEach((ln, i) => popups[ln.slug] = <Popover reference={ln} />);\n\t}\n\n\tconst AnchorTagWithPopups = (props) => (\n\t\t<components.a {...props} popups={popups} noPopups={width < 768} />\n\t);\n\n\tlet noteContent;\n\tconst noteInfo = note.childMdx.frontmatter;\n\n\tif (noteInfo.image) {\n\t\tnoteContent = <div sx={{ flex: \"1\" }}>\n\t\t\t<Styled.h1 sx={{ my: 3 }}>{note.title}</Styled.h1>\n\t\t\t<Image src={noteInfo.image} alt={noteInfo.title} />\n\t\t\t<MDXRenderer>{note.childMdx.body}</MDXRenderer>\n\t\t</div>\n\t} else {\n\t\tnoteContent = <div sx={{ flex: \"1\" }}>\n\t\t\t<Styled.h1 sx={{ my: 3 }}>{note.title}</Styled.h1>\n\t\t\t<MDXRenderer>{note.childMdx.body}</MDXRenderer>\n\t\t</div>\n\t}\n\n\tlet date;\n\tif (typeof noteInfo.date === \"string\") {\n\t\tdate = <i><b><p>{moment(noteInfo.date).format(\"MMMM Do, YYYY\")}</p></b></i>\n\t}\n\n\treturn (\n\t\t<ThemeProvider theme={theme} components={{ ...components, a: AnchorTagWithPopups }}>\n\t\t\t{noteContent}\n\t\t\t{date}\n\t\t\t<Footer references={note.inboundReferenceNotes} />\n\t\t</ThemeProvider>\n\t);\n};\n\nexport default BrainNote;\n","/**\n * SEO component that queries for data with\n * Gatsby's useStaticQuery React hook\n *\n * See: https://www.gatsbyjs.com/docs/use-static-query/\n */\n\nimport * as React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Helmet } from \"react-helmet\";\nimport { useStaticQuery, graphql } from \"gatsby\";\n\nconst Seo = ({ title, description, lang, meta, note, pages }) => {\n\t// the note graphql is in: gatsby-theme-andy/src/templates/note.js\n\tconst { site } = useStaticQuery(\n\t\tgraphql`\n\t\t\tquery {\n\t\t\t\tsite {\n\t\t\t\t\tsiteMetadata {\n\t\t\t\t\t\ttitle\n\t\t\t\t\t\tdescription\n\t\t\t\t\t\tauthor\n\t\t\t\t\t\tsiteUrl\n\t\t\t\t\t\timage\n\t\t\t\t\t\ttwitter\n\t\t\t\t\t\tkeywords\n\t\t\t\t\t\tgaid\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t`\n\t);\n\n\tconst noteTitle = pages[pages.length-1].data.title;\n\tconst slug = pages[pages.length-1].data.slug;\n\tconst siteTitle = site.siteMetadata?.title;\n\tconst siteAuthor = site.siteMetadata?.author;\n\tconst siteUrl = site.siteMetadata?.siteUrl;\n\tconst siteKeywords = site.siteMetadata?.keywords;\n\tconst twitterHandle = site.siteMetadata?.twitter;\n\tconst GAID = site.siteMetadata?.gaid;\n\tconst noteInfo = note.childMdx.frontmatter;\n\n\tlet metaUrl = `${siteUrl}/${slug}`;\n\tif (slug === \"hi\") {\n\t\tmetaUrl = siteUrl;\n\t}\n\n\tconst image = (noteInfo.image === undefined || noteInfo.image === null) ? site.siteMetadata?.image : noteInfo.image;\n\tdescription = (noteInfo.description === undefined || noteInfo.description === null) ? site.siteMetadata?.description : noteInfo.description;\n\ttitle = `${noteTitle} | ${siteTitle}`;\n\tmeta = [{ name: `keywords`, content: siteKeywords, }];\n\n\treturn (\n\t\t<Helmet\n\t\t\thtmlAttributes={{ lang, }}\n\t\t\ttitle={noteTitle}\n\t\t\ttitleTemplate={noteTitle ? `%s | ${siteTitle}` : null}\n\t\t\tmeta={[\n\t\t\t\t{ name: `description`, content: description, },\n\t\t\t\t{ property: `og:title`, content: title, },\n\t\t\t\t{ property: `og:locale`, content: \"en_US\", },\n\t\t\t\t{ property: `og:site_name`, content: siteTitle, },\n\t\t\t\t{ property: `og:image`, content: image, },\n\t\t\t\t{ property: `og:type`, content: `article`, },\n\t\t\t\t{ property: `og:description`, content: description, },\n\t\t\t\t{ property: `og:url`, content: metaUrl, },\n\t\t\t\t{ property: `article:published_time`, content: noteInfo.date, },\n\t\t\t\t{ property: `article:author`, content: siteAuthor, },\n\t\t\t\t{ property: `article:section`, content: \"Journal\", },\n\t\t\t\t{ property: `article:tag`, content: [\"Journal\", \"Essay\"], },\n\t\t\t\t{ name: `twitter:card`, content: `summary`, },\n\t\t\t\t{ name: `twitter:title`, content: title, },\n\t\t\t\t{ name: `twitter:description`, content: description, },\n\t\t\t\t{ name: `twitter:image`, content: image, },\n\t\t\t\t{ name: `twitter:url`, content: metaUrl, },\n\t\t\t\t{ name: `twitter:site`, content: twitterHandle, },\n\t\t\t\t{ name: `twitter:creator`, content: twitterHandle, },\n\t\t\t].concat(meta)}\n\t\t>\n\t\t\t<link rel=\"icon\" type=\"image/png\" href=\"favicon.png\" sizes=\"16x16\" />\n\t\t\t<script async src={`https://www.googletagmanager.com/gtag/js?id=${GAID}`} />\n\t\t\t<script>\n\t\t\t\t{`\n\t\t\t\twindow.dataLayer = window.dataLayer || [];\n\t\t\t\tfunction gtag(){dataLayer.push(arguments);}\n\t\t\t\tgtag('js', new Date());\n\t\t\t\tgtag('config', '${GAID}');\n\t\t\t\t`}\n\t\t\t</script>\n\t\t</Helmet>\n\t);\n};\n\nSeo.defaultProps = {\n\tlang: `en`,\n\tmeta: [],\n\tdescription: ``,\n};\n\nSeo.propTypes = {\n\tdescription: PropTypes.string,\n\tlang: PropTypes.string,\n\tmeta: PropTypes.arrayOf(PropTypes.object),\n\ttitle: PropTypes.string.isRequired,\n};\n\nexport default Seo;\n","/** @jsx jsx */\nimport React from \"react\";\nimport {\n\tuseStackedPagesProvider,\n\tStackedPagesProvider,\n\tPageIndexProvider,\n} from \"react-stacked-pages-hook\";\n// import { Helmet } from \"react-helmet\";\nimport { jsx, Flex, Box } from \"theme-ui\";\n\nimport useWindowWidth from \"../utils/useWindowWidth\";\nimport PageHeader from \"./PageHeader\";\nimport BrainNote from \"./BrainNote\";\nimport { LinkToStacked } from \"./CustomLinkToStacked\";\nimport Seo from \"./Seo.js\";\n\nconst NOTE_WIDTH = 576; // w-xl\n\nconst StackedPageWrapper = ({ i, ...rest }) => (\n\t<PageIndexProvider value={i}>\n\t\t<NoteWrapper {...rest} i={i} />\n\t</PageIndexProvider>\n);\n\n// A wrapper component to render the content of a page when stacked\nconst NoteWrapper = ({ children, slug, title, overlay, obstructed, highlighted, i }) => {\n\treturn (\n\t\t<>\n\t\t\t<Flex\n\t\t\t\tbg={highlighted ? \"accent\" : \"background\"}\n\t\t\t\tpx={3}\n\t\t\t\tclassName=\"note-container\"\n\t\t\t\tsx={{\n\t\t\t\t\tflexDirection: \"column\",\n\t\t\t\t\tflexShrink: 0,\n\t\t\t\t\toverflowY: \"auto\",\n\t\t\t\t\tposition: [null, null, \"sticky\"], // here\n\t\t\t\t\tmaxWidth: [\"100%\", \"100%\", \"100vw\"],\n\t\t\t\t\tboxShadow: overlay ? `0 0 8px rgba(0, 0, 0, 0.125)` : \"\",\n\t\t\t\t\twidth: [\"100%\", \"100%\", NOTE_WIDTH],\n\t\t\t\t\tleft: 40 * i,\n\t\t\t\t\tright: -585,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<Box\n\t\t\t\t\tsx={{\n\t\t\t\t\t\tdisplay: [\"none\", \"none\", \"block\"],\n\t\t\t\t\t\ttransition: \"opacity\",\n\t\t\t\t\t\ttransitionDuration: 100,\n\t\t\t\t\t\topacity: obstructed ? 1 : 0,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<Box\n\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\t\t\tzIndex: 10,\n\t\t\t\t\t\t\ttransform: \"rotate(90deg)\",\n\t\t\t\t\t\t\ttransformOrigin: \"left\",\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tpb={2}\n\t\t\t\t\t>\n\t\t\t\t\t\t<LinkToStacked\n\t\t\t\t\t\t\tto={slug}\n\t\t\t\t\t\t\tsx={{ fontWeight: \"bold\", textDecoration: \"none\", color: \"text\" }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{title || slug}\n\t\t\t\t\t\t</LinkToStacked>\n\t\t\t\t\t</Box>\n\t\t\t\t</Box>\n\t\t\t\t<Flex\n\t\t\t\t\tsx={{\n\t\t\t\t\t\tflexDirection: \"column\",\n\t\t\t\t\t\tminHeight: \"100%\",\n\t\t\t\t\t\ttransition: \"opacity\",\n\t\t\t\t\t\ttransitionDuration: 100,\n\t\t\t\t\t\topacity: obstructed ? 0 : 1,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</Flex>\n\t\t\t</Flex>\n\t\t</>\n\t);\n};\n\nconst BrainNotesContainer = ({ slug, note, location, siteMetadata }) => {\n\tconst [width] = useWindowWidth();\n\n\t// process data from gatsby pageQuery API\n\tconst processPageQuery = React.useCallback((x) => x.brainNote, []);\n\tconst [state, scrollContainer] = useStackedPagesProvider({\n\t\tfirstPage: { slug, data: { brainNote: note } },\n\t\tlocation,\n\t\tprocessPageQuery,\n\t\tpageWidth: NOTE_WIDTH,\n\t});\n\tconst { stackedPages, stackedPageStates } = state;\n\n\tlet pages = stackedPages;\n\tlet indexToShow;\n\tif (width < 768) {\n\t\tconst activeSlug = Object.keys(state.stackedPageStates).find(\n\t\t\t(slug) => state.stackedPageStates[slug].active\n\t\t);\n\t\tindexToShow = state.stackedPages.findIndex((page) => page.slug === activeSlug);\n\t\tif (indexToShow === -1) {\n\t\t\tindexToShow = state.stackedPages.length - 1;\n\t\t}\n\t\tpages = [state.stackedPages[indexToShow]];\n\t}\n\n\treturn (\n\t\t<Flex\n\t\t\tsx={{\n\t\t\t\tflexDirection: \"column\",\n\t\t\t\theight: \"100vh\",\n\t\t\t\tminHeight: \"100vh\",\n\t\t\t}}\n\t\t>\n\t\t\t<Seo note={note} pages={pages} title=\"\" />\n\t\t\t<PageHeader siteMetadata={siteMetadata} />\n\n\t\t\t<Flex\n\t\t\t\tref={scrollContainer}\n\t\t\t\tsx={{\n\t\t\t\t\tflex: 1,\n\t\t\t\t\tflexGrow: 1,\n\t\t\t\t\toverflowX: [null, null, \"auto\"],\n\t\t\t\t\toverflowY: \"hidden\",\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<Flex\n\t\t\t\t\tclassName=\"note-columns-container\"\n\t\t\t\t\tsx={{\n\t\t\t\t\t\tminWidth: \"unset\",\n\t\t\t\t\t\tflexGrow: 1,\n\t\t\t\t\t\ttransition: [null, null, \"width\"],\n\t\t\t\t\t\ttransitionDuration: 100,\n\t\t\t\t\t\twidth: [\"100%\", \"100%\", NOTE_WIDTH * (pages.length + 1)],\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<StackedPagesProvider value={state}>\n\t\t\t\t\t\t{/* Render the stacked pages */}\n\t\t\t\t\t\t{pages.map((page, i) => (\n\t\t\t\t\t\t\t<StackedPageWrapper\n\t\t\t\t\t\t\t\ti={i}\n\t\t\t\t\t\t\t\tkey={page.slug}\n\t\t\t\t\t\t\t\tslug={page.slug}\n\t\t\t\t\t\t\t\ttitle={page.data.title}\n\t\t\t\t\t\t\t\toverlay={\n\t\t\t\t\t\t\t\t\tstackedPageStates[page.slug] &&\n\t\t\t\t\t\t\t\t\tstackedPageStates[page.slug].overlay\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tobstructed={\n\t\t\t\t\t\t\t\t\tindexToShow !== undefined\n\t\t\t\t\t\t\t\t\t\t? false\n\t\t\t\t\t\t\t\t\t\t: stackedPageStates[page.slug] &&\n\t\t\t\t\t\t\t\t\t\t stackedPageStates[page.slug].obstructed\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\thighlighted={\n\t\t\t\t\t\t\t\t\tstackedPageStates[page.slug] &&\n\t\t\t\t\t\t\t\t\tstackedPageStates[page.slug].highlighted\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<BrainNote note={page.data} />\n\t\t\t\t\t\t\t</StackedPageWrapper>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</StackedPagesProvider>\n\t\t\t\t</Flex>\n\t\t\t</Flex>\n\t\t</Flex>\n\t);\n};\n\nexport default BrainNotesContainer;\n","import React from \"react\";\nimport { graphql } from \"gatsby\";\nimport BrainNoteContainer from \"../components/BrainNoteContainer\";\n\nexport default (props) => {\n\treturn (\n\t\t<BrainNoteContainer\n\t\t\tnote={props.data.brainNote}\n\t\t\tlocation={props.location}\n\t\t\tslug={props.pageContext.slug}\n\t\t\tsiteMetadata={props.data.site.siteMetadata}\n\t\t/>\n\t);\n};\n\nexport const query = graphql`\n\tquery($slug: String) {\n\t\tbrainNote(slug: { eq: $slug }) {\n\t\t\tslug\n\t\t\ttitle\n\t\t\tchildMdx {\n\t\t\t\tbody\n\t\t\t\tfrontmatter {\n\t\t\t\t title\n\t\t\t\t description\n\t\t\t\t date\n\t\t\t\t image\n\t\t\t\t}\n\t\t\t}\n\t\t\tinboundReferenceNotes {\n\t\t\t\ttitle\n\t\t\t\tslug\n\t\t\t\tchildMdx {\n\t\t\t\t\texcerpt\n\t\t\t\t}\n\t\t\t}\n\t\t\toutboundReferenceNotes {\n\t\t\t\ttitle\n\t\t\t\tslug\n\t\t\t\tchildMdx {\n\t\t\t\t\texcerpt\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tsite {\n\t\t\tsiteMetadata {\n\t\t\t\ttitle\n\t\t\t\tdescription\n\t\t\t}\n\t\t}\n\t}\n`;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\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/** Used as references for various `Number` constants. */\n\nvar NAN = 0 / 0;\n/** `Object#toString` result references. */\n\nvar symbolTag = '[object Symbol]';\n/** Used to match leading and trailing whitespace. */\n\nvar reTrim = /^\\s+|\\s+$/g;\n/** Used to detect bad signed hexadecimal string values. */\n\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n/** Used to detect binary string values. */\n\nvar reIsBinary = /^0b[01]+$/i;\n/** Used to detect octal string values. */\n\nvar reIsOctal = /^0o[0-7]+$/i;\n/** Built-in method references without a dependency on `root`. */\n\nvar freeParseInt = parseInt;\n/** Detect free variable `global` from Node.js. */\n\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n/** Detect free variable `self`. */\n\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n/** Used as a reference to the global object. */\n\nvar root = freeGlobal || freeSelf || Function('return this')();\n/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar objectToString = objectProto.toString;\n/* Built-in method references for those with the same name as other `lodash` methods. */\n\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n\nvar now = function now() {\n return root.Date.now();\n};\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n\n\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n\n wait = toNumber(wait) || 0;\n\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time; // Start the timer for the trailing edge.\n\n timerId = setTimeout(timerExpired, wait); // Invoke the leading edge.\n\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime; // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n\n return lastCallTime === undefined || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\n }\n\n function timerExpired() {\n var time = now();\n\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n } // Restart the timer.\n\n\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined; // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n\n return result;\n }\n\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n\n\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n\n\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n\n\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n\n\nfunction isSymbol(value) {\n return typeof value == 'symbol' || isObjectLike(value) && objectToString.call(value) == symbolTag;\n}\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n\n\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n\n if (isSymbol(value)) {\n return NAN;\n }\n\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? other + '' : other;\n }\n\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n}\n\nmodule.exports = throttle;"],"sourceRoot":""}