{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack:///./node_modules/@emotion/sheet/dist/sheet.browser.esm.js","webpack:///./node_modules/@emotion/stylis/dist/stylis.browser.esm.js","webpack:///./node_modules/@emotion/cache/dist/cache.browser.esm.js","webpack:///./node_modules/@emotion/utils/dist/utils.browser.esm.js","webpack:///./node_modules/@emotion/hash/dist/hash.browser.esm.js","webpack:///./node_modules/@emotion/unitless/dist/unitless.browser.esm.js","webpack:///./node_modules/@emotion/memoize/dist/memoize.browser.esm.js","webpack:///./node_modules/@emotion/serialize/dist/serialize.browser.esm.js","webpack:///./node_modules/@emotion/core/dist/emotion-element-57a3a7a3.browser.esm.js","webpack:///./node_modules/@emotion/css/dist/css.browser.esm.js","webpack:///./node_modules/@emotion/core/dist/core.browser.esm.js","webpack:///./node_modules/prop-types/index.js","webpack:///./node_modules/react/index.js","webpack:///(webpack)/buildin/module.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///./node_modules/@financial-times/g-components/src/shared/proptypes.js","webpack:///./node_modules/classnames/index.js","webpack:///./node_modules/@financial-times/o-tracking/dist/javascript/utils.js","webpack:///./node_modules/is-whitespace-character/index.js","webpack:///./node_modules/axios/lib/utils.js","webpack:///./node_modules/@financial-times/g-components/src/grid/index.js","webpack:///./node_modules/@financial-times/g-components/src/shared/helpers.js","webpack:///./node_modules/xtend/immutable.js","webpack:///./node_modules/@financial-times/o-ads/dist/js/utils/index.js","webpack:///./node_modules/@financial-times/o-table/src/js/Tables/BaseTable.js","webpack:///./node_modules/@babel/runtime/regenerator/index.js","webpack:///./node_modules/react-markdown/lib/react-markdown.js","webpack:///./node_modules/trim/index.js","webpack:///./node_modules/@financial-times/o-tracking/dist/javascript/core/settings.js","webpack:///./node_modules/@babel/runtime/helpers/extends.js","webpack:///./node_modules/@financial-times/o-tracking/dist/javascript/core.js","webpack:///./node_modules/@financial-times/o-ads/dist/js/config.js","webpack:///./node_modules/ftdomdelegate/browser.js","webpack:///./node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack:///./node_modules/@financial-times/g-components/src/shared/hooks.js","webpack:///./node_modules/is-decimal/index.js","webpack:///./node_modules/unist-util-visit/index.js","webpack:///./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack:///./node_modules/@financial-times/o-grid/browser.js","webpack:///./node_modules/@financial-times/o-date/browser.js","webpack:///./node_modules/@financial-times/o-tracking/browser.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/parse-entities/index.js","webpack:///./node_modules/repeat-string/index.js","webpack:///./node_modules/trim-trailing-lines/index.js","webpack:///./node_modules/remark-parse/lib/util/interrupt.js","webpack:///./node_modules/remark-parse/lib/util/normalize.js","webpack:///./node_modules/@financial-times/o-toggle/browser.js","webpack:///./node_modules/@financial-times/o-utils/browser.js","webpack:///./node_modules/@financial-times/o-tracking/dist/javascript/core/store.js","webpack:///./node_modules/@financial-times/o-viewport/browser.js","webpack:///./node_modules/axios/lib/defaults.js","webpack:///./node_modules/@financial-times/ft-date-format/index.js","webpack:///./node_modules/@financial-times/g-components/src/grid/grid-child.js","webpack:///./node_modules/@financial-times/g-components/src/grid/grid-row.js","webpack:///./node_modules/@financial-times/g-components/src/grid/grid-container.js","webpack:///./node_modules/react-dom/index.js","webpack:///./app/app.js","webpack:///./node_modules/@financial-times/g-components/src/datetime/index.js","webpack:///./node_modules/@financial-times/o-table/src/js/oTable.js","webpack:///./app/copy/footnote.md","webpack:///./app/util/hooks.js","webpack:///./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack:///./node_modules/axios/index.js","webpack:///./node_modules/object-assign/index.js","webpack:///./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack:///./node_modules/path-browserify/index.js","webpack:///./node_modules/is-alphabetical/index.js","webpack:///./node_modules/remark-parse/lib/defaults.js","webpack:///./node_modules/remark-parse/lib/util/get-indentation.js","webpack:///./node_modules/remark-parse/lib/util/html.js","webpack:///./node_modules/remark-parse/lib/locate/tag.js","webpack:///./node_modules/remark-parse/lib/locate/link.js","webpack:///./node_modules/@financial-times/o-tracking/dist/javascript/core/user.js","webpack:///./node_modules/@financial-times/o-tracking/dist/javascript/core/session.js","webpack:///./node_modules/@financial-times/o-tracking/dist/javascript/core/send.js","webpack:///./node_modules/@financial-times/o-tracking/dist/javascript/core/queue.js","webpack:///./node_modules/@financial-times/o-tracking/dist/libs/get-trace.js","webpack:///./node_modules/@financial-times/o-ads/dist/js/targeting.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/lib/core/createError.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./node_modules/@financial-times/g-components/src/article-layout/index.js","webpack:///./node_modules/@financial-times/g-components/src/header/index.js","webpack:///./node_modules/@financial-times/o-header/browser.js","webpack:///./node_modules/@financial-times/g-components/src/analytics/index.js","webpack:///./node_modules/remove-markdown/index.js","webpack:///./node_modules/@financial-times/g-components/src/ads/index.js","webpack:///./node_modules/@financial-times/g-components/src/onwardjourney/index.js","webpack:///./node_modules/@financial-times/g-components/src/comments/index.js","webpack:///./node_modules/@financial-times/o-comments/browser.js","webpack:///./node_modules/@financial-times/g-components/src/footer/index.js","webpack:///./node_modules/@financial-times/o-footer/browser.js","webpack:///./node_modules/@financial-times/o-ads/browser.js","webpack:///./node_modules/@financial-times/g-components/src/story-topper/index.js","webpack:///./node_modules/@financial-times/g-components/src/share/index.js","webpack:///./node_modules/@financial-times/o-share/browser.js","webpack:///./node_modules/@financial-times/g-components/src/bylines/index.js","webpack:///./node_modules/@financial-times/g-components/src/epilogue/index.js","webpack:///./node_modules/@financial-times/g-components/src/expander/index.js","webpack:///./node_modules/@financial-times/g-components/src/last-updated/index.js","webpack:///./node_modules/@financial-times/g-components/src/card/index.js","webpack:///./app/components/data-table/index.js","webpack:///./node_modules/@financial-times/o-table/main.js","webpack:///./node_modules/@financial-times/o-table/src/js/Tables/FlatTable.js","webpack:///./node_modules/@financial-times/o-table/src/js/Tables/ScrollTable.js","webpack:///./node_modules/@financial-times/o-table/src/js/Tables/OverflowTable.js","webpack:///./node_modules/@financial-times/o-table/src/js/Tables/BasicTable.js","webpack:///./node_modules/@financial-times/o-table/src/js/Sort/TableSorter.js","webpack:///./node_modules/@financial-times/o-table/src/js/Sort/CellFormatter.js","webpack:///./app/copy/methodology.md","webpack:///./app/copy/byline.md","webpack:///./app/copy/intro.md","webpack:///./app/copy/main-copy.md","webpack:///./node_modules/react-hot-loader/root.js","webpack:///./node_modules/react-hot-loader/patch.js","webpack:///./node_modules/react-hot-loader/dist/react-hot-loader.production.min.js","webpack:///./node_modules/react/cjs/react.production.min.js","webpack:///./app/index.js","webpack:///./node_modules/react-dom/cjs/react-dom.production.min.js","webpack:///./node_modules/scheduler/index.js","webpack:///./node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack:///./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/unified/index.js","webpack:///./node_modules/extend/index.js","webpack:///./node_modules/bail/index.js","webpack:///./node_modules/vfile/index.js","webpack:///./node_modules/vfile-message/index.js","webpack:///./node_modules/unist-util-stringify-position/index.js","webpack:///./node_modules/vfile/core.js","webpack:///./node_modules/replace-ext/index.js","webpack:///./node_modules/vfile/node_modules/is-buffer/index.js","webpack:///./node_modules/trough/index.js","webpack:///./node_modules/trough/wrap.js","webpack:///./node_modules/x-is-string/index.js","webpack:///./node_modules/is-plain-obj/index.js","webpack:///./node_modules/remark-parse/index.js","webpack:///./node_modules/unherit/index.js","webpack:///./node_modules/inherits/inherits_browser.js","webpack:///./node_modules/remark-parse/lib/parser.js","webpack:///./node_modules/state-toggle/index.js","webpack:///./node_modules/vfile-location/index.js","webpack:///./node_modules/remark-parse/lib/unescape.js","webpack:///./node_modules/remark-parse/lib/decode.js","webpack:///./node_modules/is-hexadecimal/index.js","webpack:///./node_modules/is-alphanumerical/index.js","webpack:///./node_modules/parse-entities/decode-entity.browser.js","webpack:///./node_modules/remark-parse/lib/tokenizer.js","webpack:///./node_modules/remark-parse/lib/set-options.js","webpack:///./node_modules/markdown-escapes/index.js","webpack:///./node_modules/remark-parse/lib/parse.js","webpack:///./node_modules/unist-util-remove-position/index.js","webpack:///./node_modules/unist-util-visit/node_modules/unist-util-visit-parents/index.js","webpack:///./node_modules/unist-util-is/convert.js","webpack:///./node_modules/remark-parse/lib/tokenize/newline.js","webpack:///./node_modules/remark-parse/lib/tokenize/code-indented.js","webpack:///./node_modules/remark-parse/lib/tokenize/code-fenced.js","webpack:///./node_modules/remark-parse/lib/tokenize/blockquote.js","webpack:///./node_modules/remark-parse/lib/tokenize/heading-atx.js","webpack:///./node_modules/remark-parse/lib/tokenize/thematic-break.js","webpack:///./node_modules/remark-parse/lib/tokenize/list.js","webpack:///./node_modules/remark-parse/lib/util/remove-indentation.js","webpack:///./node_modules/remark-parse/lib/tokenize/heading-setext.js","webpack:///./node_modules/remark-parse/lib/tokenize/html-block.js","webpack:///./node_modules/remark-parse/lib/tokenize/footnote-definition.js","webpack:///./node_modules/collapse-white-space/index.js","webpack:///./node_modules/remark-parse/lib/tokenize/definition.js","webpack:///./node_modules/remark-parse/lib/tokenize/table.js","webpack:///./node_modules/remark-parse/lib/tokenize/paragraph.js","webpack:///./node_modules/remark-parse/lib/tokenize/escape.js","webpack:///./node_modules/remark-parse/lib/locate/escape.js","webpack:///./node_modules/remark-parse/lib/tokenize/auto-link.js","webpack:///./node_modules/remark-parse/lib/tokenize/url.js","webpack:///./node_modules/remark-parse/lib/locate/url.js","webpack:///./node_modules/remark-parse/lib/tokenize/html-inline.js","webpack:///./node_modules/remark-parse/lib/tokenize/link.js","webpack:///./node_modules/remark-parse/lib/tokenize/reference.js","webpack:///./node_modules/remark-parse/lib/tokenize/strong.js","webpack:///./node_modules/remark-parse/lib/locate/strong.js","webpack:///./node_modules/remark-parse/lib/tokenize/emphasis.js","webpack:///./node_modules/is-word-character/index.js","webpack:///./node_modules/remark-parse/lib/locate/emphasis.js","webpack:///./node_modules/remark-parse/lib/tokenize/delete.js","webpack:///./node_modules/remark-parse/lib/locate/delete.js","webpack:///./node_modules/remark-parse/lib/tokenize/code-inline.js","webpack:///./node_modules/remark-parse/lib/locate/code-inline.js","webpack:///./node_modules/remark-parse/lib/tokenize/break.js","webpack:///./node_modules/remark-parse/lib/locate/break.js","webpack:///./node_modules/remark-parse/lib/tokenize/text.js","webpack:///./node_modules/prop-types/factoryWithThrowingShims.js","webpack:///./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/mdast-add-list-metadata/index.js","webpack:///./node_modules/unist-util-visit-parents/index.js","webpack:///./node_modules/react-markdown/lib/plugins/naive-html.js","webpack:///./node_modules/react-markdown/lib/plugins/disallow-node.js","webpack:///./node_modules/react-markdown/lib/ast-to-react.js","webpack:///./node_modules/react-markdown/lib/wrap-table-rows.js","webpack:///./node_modules/react-markdown/lib/get-definitions.js","webpack:///./node_modules/react-markdown/lib/uriTransformer.js","webpack:///./node_modules/react-markdown/lib/renderers.js","webpack:///./node_modules/@financial-times/o-header/dist/js/header.js","webpack:///./node_modules/@financial-times/o-header/dist/js/search.js","webpack:///./node_modules/@financial-times/o-toggle/dist/js/toggle.js","webpack:///./node_modules/@financial-times/o-toggle/dist/js/target.js","webpack:///./node_modules/@financial-times/o-header/dist/js/mega.js","webpack:///./node_modules/@financial-times/o-header/dist/js/drawer.js","webpack:///./node_modules/@financial-times/o-header/dist/js/subnav.js","webpack:///./node_modules/@financial-times/o-header/dist/js/sticky.js","webpack:///./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack:///./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack:///./node_modules/@financial-times/o-tracking/dist/libs/browser-cuid.js","webpack:///./node_modules/@financial-times/o-tracking/dist/javascript/core/transports/index.js","webpack:///./node_modules/@financial-times/o-tracking/dist/javascript/core/transports/xhr.js","webpack:///./node_modules/@financial-times/o-tracking/dist/javascript/core/transports/send-beacon.js","webpack:///./node_modules/@financial-times/o-tracking/dist/javascript/core/transports/image.js","webpack:///./node_modules/@financial-times/o-tracking/dist/javascript/events/custom.js","webpack:///./node_modules/@financial-times/o-tracking/dist/javascript/events/page-view.js","webpack:///./node_modules/@financial-times/o-tracking/dist/javascript/events/click.js","webpack:///./node_modules/@financial-times/o-tracking/dist/javascript/events/component-view.js","webpack:///./node_modules/@financial-times/o-comments/dist/js/comments.js","webpack:///./node_modules/@financial-times/o-comments/dist/js/stream.js","webpack:///./node_modules/@financial-times/o-comments/dist/js/utils/events.js","webpack:///./node_modules/@financial-times/o-comments/dist/js/utils/display-name.js","webpack:///./node_modules/@financial-times/o-overlay/browser.js","webpack:///./node_modules/@financial-times/o-overlay/dist/js/overlay.js","webpack:///./node_modules/@financial-times/o-viewport/dist/utils.js","webpack:///./node_modules/@financial-times/o-layers/browser.js","webpack:///./node_modules/@financial-times/o-overlay/dist/js/utils.js","webpack:///./node_modules/@financial-times/o-comments/dist/js/utils/auth.js","webpack:///./node_modules/@financial-times/o-comments/dist/js/utils/purge-jwt-cache.js","webpack:///./node_modules/@financial-times/o-comments/dist/js/count.js","webpack:///./node_modules/@financial-times/o-footer/dist/js/footer.js","webpack:///./node_modules/@financial-times/o-footer/dist/js/layout.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/@financial-times/o-ads/dist/js/utils/events.js","webpack:///./node_modules/@financial-times/o-ads/dist/js/utils/metrics.js","webpack:///./node_modules/@financial-times/o-ads/dist/js/utils/messenger.js","webpack:///./node_modules/@financial-times/o-ads/dist/js/utils/responsive.js","webpack:///./node_modules/@financial-times/o-ads/dist/js/utils/log.js","webpack:///./node_modules/@financial-times/o-ads/dist/js/version.js","webpack:///./node_modules/@financial-times/o-ads/dist/js/slots.js","webpack:///./node_modules/@financial-times/o-ads/dist/js/slot.js","webpack:///./node_modules/@financial-times/o-ads/dist/js/ad-servers/gpt.js","webpack:///./node_modules/@financial-times/o-ads/dist/js/utils/url.js","webpack:///./node_modules/@financial-times/o-share/dist/js/share.js","webpack:///./node_modules/@financial-times/o-date/dist/js/date.js","webpack:///./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack:///./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/is-buffer/index.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/axios/lib/helpers/spread.js"],"names":["parentHotUpdateCallback","window","chunkId","moreModules","hotAvailableFilesMap","hotRequestedFilesMap","moduleId","Object","prototype","hasOwnProperty","call","hotUpdate","hotWaitingFiles","hotChunksLoading","hotUpdateDownloaded","hotAddUpdateChunk","hotCurrentChildModule","hotApplyOnUpdate","hotCurrentHash","hotCurrentModuleData","hotCurrentParents","hotCurrentParentsTemp","hotCreateRequire","me","installedModules","__webpack_require__","fn","request","hot","active","parents","indexOf","push","children","console","warn","ObjectFactory","name","configurable","enumerable","get","set","value","defineProperty","e","hotStatus","hotSetStatus","then","finishChunkLoading","err","hotWaitingFilesMap","hotEnsureUpdateChunk","t","mode","hotCreateModule","_acceptedDependencies","_declinedDependencies","_selfAccepted","_selfDeclined","_selfInvalidated","_disposeHandlers","_main","accept","dep","callback","undefined","i","length","decline","dispose","addDisposeHandler","removeDisposeHandler","idx","splice","invalidate","this","modules","hotApplyInvalidatedModule","hotQueuedInvalidatedModules","check","hotCheck","apply","hotApply","status","l","hotStatusHandlers","addStatusHandler","removeStatusHandler","data","newStatus","hotDeferred","hotUpdateNewHash","toModuleId","id","Error","requestTimeout","Promise","resolve","reject","XMLHttpRequest","requestPath","p","open","timeout","send","onreadystatechange","readyState","update","JSON","parse","responseText","hotApplyInvalidatedModules","c","h","promise","script","document","createElement","charset","src","head","appendChild","hotDownloadUpdateChunk","deferred","result","outdatedModules","options","hotApplyInternal","cb","j","module","getAffectedStuff","updateModuleId","outdatedDependencies","queue","map","chain","queueItem","pop","type","parentId","parent","concat","addAllToSet","a","b","item","appliedUpdate","warnUnexpectedRequire","abortError","doApply","doDispose","chainInfo","join","onDeclined","ignoreDeclined","onUnaccepted","ignoreUnaccepted","onAccepted","onDisposed","outdatedSelfAcceptedModules","slice","errorHandler","keys","forEach","installedChunks","hotDisposeChunk","dependency","moduleOutdatedDependencies","disposeHandlers","child","error","callbacks","onErrored","dependencyId","ignoreErrored","err2","originalError","list","exports","m","d","getter","o","r","Symbol","toStringTag","__esModule","ns","create","key","bind","n","object","property","s","_setPrototypeOf","setPrototypeOf","__proto__","StyleSheet","isSpeedy","speedy","tags","ctr","nonce","container","before","_proto","insert","rule","_tag","tag","setAttribute","createTextNode","createStyleElement","nextSibling","insertBefore","sheet","styleSheets","ownerNode","sheetForTag","isImportRule","charCodeAt","insertRule","cssRules","flush","parentNode","removeChild","W","X","trim","split","ia","Z","v","replace","F","P","substring","w","L","ja","ka","test","aa","G","ba","la","ma","R","na","ea","oa","H","q","g","x","A","S","B","U","prefix","D","z","M","k","y","C","K","u","I","J","f","N","charAt","ca","O","da","fa","Y","E","ha","Q","use","T","toSheet","block","Sheet","current","ruleSheet","context","content","selectors","line","column","depth","at","delimiter","stylisOptions","stylis","inserted","_insert","nodes","querySelectorAll","Array","node","getAttribute","stylisPlugins","selector","serialized","shouldCache","styles","cache","registered","getRegisteredStyles","registeredStyles","classNames","rawClassName","className","insertStyles","isStringTag","next","str","len","toString","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","fontWeight","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","arg","styleName","toLowerCase","match","p1","p2","cursor","handleInterpolation","mergedProps","interpolation","couldBeSelectorInterpolation","__emotion_styles","anim","obj","string","isArray","_key","interpolated","_i","createStringFromObject","previousCursor","cached","labelPattern","args","stringMode","strings","raw","lastIndex","identifierName","exec","EmotionCacheContext","HTMLElement","ThemeContext","Provider","func","render","props","ref","Consumer","typePropName","createEmotionProps","newProps","theme","cssProp","css","Emotion","arguments","argsLength","createElementArgArray","classnames","cls","toAdd","merge","_len","cx","_len2","_key2","ele","webpackPolyfill","deprecate","paths","originalModule","StringBoolPropType","PropTypes","oneOfType","bool","flagsPropType","shape","prod","isRequired","errorReporting","analytics","googleAnalytics","ads","mainImage","summary","bylines","onwardjourney","shareButtons","header","footer","comments","dark","mainImagePropType","uuid","url","trackingPropType","micrositeName","product","topicPropType","dataMetaPropType","oneOf","description","sameAs","keywords","arrayOf","creator","contactPoint","contactType","telephone","email","includedInDataCatalog","distribution","encodingFormat","contentUrl","temporalCoverage","spatialCoverage","geo","box","bylinesPropType","location","hasOwn","classes","argType","inner","default","log","isUndefined","is","encode","decode","addEvent","broadcast","onPage","triggerPage","getValueFromCookie","getValueFromUrl","getValueFromJsVariable","sanitise","assignIfUndefined","whitelistProps","_browserCuid","_settings","_interopRequireDefault","require","page_callbacks","variable","target","copy","encodeURIComponent","escape","decodeURIComponent","unescape","element","event","listener","addEventListener","attachEvent","namespace","eventType","detail","dispatchEvent","CustomEvent","bubbles","matcher","cookie","RegExp","$1","href","namespaces","reduce","acc","propName","assign","subject","prop","_default","guid","character","re","fromCode","String","fromCharCode","isBuffer","val","isObject","isFunction","isArrayBuffer","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isString","isNumber","isDate","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","navigator","assignValue","extend","thisArg","GridRow","GridChild","GridContainer","plain","stripListLeaders","removeMarkdown","gfm","encodedJSON","_data","stringify","spoorTrackingPixel","jsonString","ieVersion","documentMode","img","data-o-component","imageUUID","getMainImage","makeCancelable","hasCanceled","isCanceled","cancel","registerLayoutChangeEvents","layouts","getGridBreakpoints","breakpoints","Map","entries","decr1","Number","setupQuery","query","size","handleMQChange","mql","matches","matchMedia","addListener","width","unregisterLayoutChangeEvents","listeners","removeQuery","find","removeListener","isNode","Node","nodeType","nodeName","isElement","source","inSample","getVersion","buildObjectFromArray","iframeToSlotName","getTimestamp","getQueryParamByName","getQueryString","getLocation","parseAttributeName","dehyphenise","getReferrer","attach","hash","isNonEmptyString","isPlainObject","isWindow","isStorage","_events","_metrics","_messenger","_responsive","_interopRequireWildcard","_log","_version","_getRequireWildcardCache","WeakMap","has","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","desc","hop","getCurrent","start","end","isOn","info","table","attributeTable","constructor","Boolean","tagName","clone","deep","pairing","pair","hashObj","scriptUrl","async","errorcb","autoRemove","getElementsByTagName","hasRun","processCallback","parentElement","onload","onerror","referrer","hyphen","letter","toUpperCase","attribute","search","results","now","Date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","iframeWindow","slotName","iframes","contentWindow","targetObject","prev","metricsSampleThreshold","Math","random","sampleSize","on","off","once","messenger","responsive","setupMetrics","clearPerfMarks","markPageChange","perfMark","buildPerfmarkSuffix","append","tbody","rowBatch","row","prepend","reverse","firstChild","BaseTable","rootEl","sorter","opts","_listeners","_sorter","_opts","sortable","preferredSortOrder","thead","querySelector","tableCaption","tableHeaders","from","tableRows","_filteredTableRows","wrapper","closest","overlayWrapper","filterContainer","_updateTableHeightListenerSet","_currentSort","_currentFilter","setTimeout","_setupFilters","tableId","filter","filterColumn","parseInt","isNaN","pendingFilterTimeout","debouncedFilterHandler","clearTimeout","rows","_getLatestRowNodes","columnIndex","sortOrder","sortRowsByColumn","_filterRowsByColumn","renderRowUpdates","_updateRowAriaHidden","_hideFilteredRows","_updateTableHeight","_updateRowOrder","_updateTableHeightScheduled","cancelAnimationFrame","tableHeight","_getTableHeight","requestAnimationFrame","style","height","pendingTableHeightUpdate","updateTableHeightDebounced","getBoundingClientRect","_rowsToHide","accumulatedHeight","_updateRowAriaHiddenScheduled","rowsToHide","_hideFilteredRowsScheduled","filteredRows","_updateRowOrderScheduled","_updateRowOrderFilrtedBatchScheduled","nonFilteredRows","headerIndex","cell","_filterMatch","th","_dispatchEvent","sort","cancelable","tableHeaderButtons","hasAttribute","hasChildNodes","headingHTML","childNodes","html","ELEMENT_NODE","outerHTML","textContent","sortButton","innerHTML","classList","add","nextSort","_getNextSortOrder","index","_sortButtonHandler","_rootElDomDelegate","Delegate","getTableHeader","buttonTitle","destroy","removeEventListener","currentSort","instance","filterValue","cellValue","xtend","unified","addListMetadata","naiveHtml","disallowNode","astToReact","wrapTableRows","getDefinitions","uriTransformer","defaultRenderers","allTypes","ReactMarkdown","allowedTypes","disallowedTypes","renderers","rawAst","plugins","applyParserPlugin","renderProps","definitions","ast","removalMethod","unwrapDisallowed","ofType","allowNode","ifNotMatch","escapeHtml","skipHtml","astPlugins","determineAstPlugins","plugin","parser","arr","arr2","_toConsumableArray","defaultProps","sourcePos","rawSourcePos","transformLinkUri","propTypes","linkTarget","transformImageUri","array","types","left","right","settings","setValue","getValue","_extends","setRootID","getRootID","track","rootID","_send","_user","_session","_utils","config","session","root_id","user","passport_id","ft_session","ft_session_s","device","spoor_session","spoor_session_is_new","isNew","spoor_id","userID","settingsConfig","addAndRun","clear","init","_index","defaults","formats","MediumRectangle","sizes","Rectangle","WideSkyscraper","Leaderboard","SuperLeaderboard","HalfPage","Billboard","Portrait","AdhesionBanner","MicroBar","Button2","Responsive","extra","large","medium","small","flags","refresh","inview","displayLabelWithBorders","fetchDeclaritiveConfig","fetchCanonicalURL","canonical","canonicalTag","Config","store","access","root","listenerMap","handle","_removedListeners","matchesTag","matchesRoot","rootElement","documentElement","matchesId","captureForType","handler","useCapture","matcherParam","TypeError","Element","listenerList","singleEventType","correspondingUseElement","eventPhase","currentTarget","ret","toFire","HTMLDocument","fire","preventDefault","asyncGeneratorStep","gen","_next","_throw","done","self","usePortal","rootRef","useRef","useEffect","parentEl","body","firstElementChild","remove","useAds","enabled","OAds","gpt","network","site","gptSite","zone","gptZone","targeting","lazyLoad","initialised","slots","initSlot","global","STORYBOOK_ENV","useLayoutChangeEvents","useState","breakpoint","setBreakpoint","listenersRef","useKeyboardShortcuts","shortcuts","handlers","keyCode","keyPress","code","visit","visitParents","CONTINUE","SKIP","EXIT","tree","visitor","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","getCurrentLayout","getCurrentGutter","enableLayoutChangeEvents","missingDataMessage","getGridProperties","properties","getGridFromDoc","position","gridProperties","getComputedStyle","getPropertyValue","layout","gutter","gridLayouts","parseFloat","layoutName","layoutWidth","nextLayoutWidth","_date","constructAll","updateConfig","page","link","tracking","_custom","_pageView","_click","_core","_componentView","api_key","Tracking","version","developer","level","view","click","_","utils","_getDeclarativeConfigElement","_getDeclarativeConfig","cookieDomain","newConfig","noSend","user_id","setUser","setDomain","declarativeConfigString","declarativeOptions","configEl","innerText","configError","message","boundInit","boundPage","boundEvent","boundUpdateConfig","initialise","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","run","marker","runClearTimeout","Item","noop","nextTick","title","browser","env","argv","versions","removeAllListeners","emit","prependListener","prependOnceListener","binding","cwd","chdir","dir","umask","legacy","invalid","decimal","hexadecimal","alphanumerical","decodeEntity","option","indent","entityCharacters","namedEntity","terminated","characters","reference","following","warning","reason","output","entity","begin","diff","additional","nonTerminated","handleText","text","handleReference","handleWarning","textContext","referenceContext","warningContext","pos","lines","offset","messages","hexa","tests","own","bases","disallowed","Function","res","num","max","substr","interruptors","tokenizers","ctx","params","interruptor","ignore","bools","count","collapseWhiteSpace","_toggle","debounce","wait","later","throttle","Store","loadStore","keyPrefix","undefinedName","storage","expires","storageKey","nameOverride","test_key","localStorage","setItem","getItem","removeItem","_type","load","save","cookieLoad","cookies","cookieSave","expiry","setTime","getTime","toGMTString","domain","cookieRemove","read","write","intervals","resize","orientation","visibility","scroll","setThrottleInterval","interval","listenToResize","ev","viewport","getSize","originalEvent","listenToOrientation","getOrientation","listenToVisibility","hidden","getVisibility","listenToScroll","scrollPos","getScrollPosition","scrollHeight","scrollLeft","scrollTop","top","scrollWidth","listenTo","stopListeningTo","debug","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","headers","adapter","transformRequest","transformResponse","xsrfCookieName","xsrfHeaderName","maxContentLength","validateStatus","common","method","months","days","datetime","date","compiledTemplates","formatReplacementsMap","MMMM","MMM","MM","yyyy","yy","EEEE","EEE","dd","do","mm","hh","HH","inSeconds","minute","hour","day","week","month","year","compile","format","funcString","replacer","ftDateFormat","toDate","asTodayOrYesterdayOrNothing","getSecondsBetween","isToday","isYesterday","dateFormat","tpl","timeAgo","limit","abbreviated","suffix","abs","round","floor","timeAgoNoSeconds","ftTime","dateObj","isNearFuture","isFarFuture","time","otherTime","within24Hours","sameDayOfWeek","getDay","within48Hours","consecutiveDaysOfTheWeek","colspan","data-o-grid-colspan","displayName","number","xl","XL","compact","bleed","snappy","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","App","setContext","fetch","json","buildTime","medalsData","useData","topData","medalspredictedlive","totalactual","livediff","goldactual","silveractual","bronzeactual","medalspredictedtotal","country","middleData","bottomData","classname","allData","flag","lastModifiedDate","updated","toISOString","role","itemScope","itemType","dot","itemProp","intro","contents","columnType","columnName","columnIsSortable","columnSortField","defaultSortIcon","headersTop","columnSpan","truncation","isLinedHorizontal","footnote","mainCopy","methodology","byline","DateTime","datestamp","elRef","dateRef","ODate","dateTime","instanceOf","TableSorter","OTable","Table","tableType","FlatTable","ScrollTable","OverflowTable","BasicTable","el","tableEls","formatFunction","setCellFormatterForType","useInterval","delay","immediate","deps","savedCallback","setInterval","clearInterval","endpoint","pollingInterval","setData","updateData","Axios","newData","etag","arrayWithoutHoles","iterableToArray","nonIterableSpread","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","toObject","test1","getOwnPropertyNames","test2","test3","shouldUseNative","symbols","to","arrayLikeToArray","minLen","normalizeArray","parts","allowAboveRoot","up","last","unshift","xs","resolvedPath","resolvedAbsolute","path","normalize","isAbsolute","trailingSlash","relative","fromParts","toParts","min","samePartsLength","outputParts","sep","dirname","hasRoot","matchedSlash","basename","ext","extname","startDot","startPart","preDotState","commonmark","footnotes","pedantic","blocks","stops","openTag","closeTag","openCloseTag","fromIndex","image","_store","defaultUserConfig","hostname","getSession","defaultSessionConfig","setSession","valueOf","getDomain","_queue","_transports","isIe11","MSInputMethodContext","should_use_sendBeacon","sendBeacon","useSendBeacon","sendRequest","queueTime","offlineLag","transport","user_callback","core_system","system","stringifiedData","complete","image_method","category","action","all_events","all","counts","label","queue_length","nextRequest","shift","server","Queue","items","first","doAdd","created_at","invalidArg","elementPropertiesToCollect","getSiblingsAndPosition","originalEl","siblings","findIndex","getAllElementProperties","returnObject","getDomPathProps","attrs","getContextProps","isOriginalEl","customProps","getTrace","trace","customContext","attributes","domPathProps","contextProps","_config","parameters","Targeting","methods","socialReferrer","getSocialReferrer","timestamp","socialFlow","OADS_VERSION","sf","socialflow","codedValue","lookup","google","socref","searchTerm","qs","queryText","searchField","kw","ts","settle","buildURL","parseHeaders","isURLSameOrigin","createError","requestData","requestHeaders","auth","username","password","Authorization","btoa","paramsSerializer","responseURL","responseHeaders","getAllResponseHeaders","response","responseType","statusText","ontimeout","xsrfValue","withCredentials","setRequestHeader","onDownloadProgress","onUploadProgress","upload","cancelToken","abort","enhanceError","__CANCEL__","Cancel","writable","Context","createContext","ArticleLayout","exact","Header","headerClasses","OHeader","data-o-header--no-js","_header","Analytics","cutsTheMustard","pageData","asset_type","contentId","microsite_name","OTracking","is_live","apiKey","dangerouslySetInnerHTML","__html","md","listUnicodeChar","useImgAltText","Ad","background","reserve","showAdsLabel","defaultFormat","smallFormat","mediumFormat","largeFormat","extraFormat","data-o-ads-name","data-o-ads-targeting","data-o-ads-formats-default","data-o-ads-formats-small","data-o-ads-formats-medium","data-o-ads-formats-large","data-o-ads-formats-extra","aria-hidden","TopAd","MiddleAd","OnwardJourney","urlBase","relatedContent","sections","setSections","sectionP","section","data-g-component","Comments","linkPageUrl","OComments","articleUrl","articleId","_comments","Footer","OFooter","data-o-footer--no-js","aria-label","data-trackable","aria-controls","data-o-tracking-do-not-track","_footer","_slots","_gpt","_targeting","Ads","addDOMEventListener","oAds","configOptions","nonPersonalized","disableConsentCookie","consents","behavioral","getConsents","programmatic","initLibrary","updateTargeting","updatePageTargeting","isInitialised","removeDOMEventListener","initAll","consentCookie","StoryTopper","topic","headline","relatedArticle","socialHeadline","twitterHeadline","facebookHeadline","tweetText","publishedDate","suppressHydrationWarning","alt","credit","textTwitter","textFacebook","names","Share","textLinkedIn","textWhatsApp","separated","OShare","services","rel","_share","NamesElement","namesList","separator","author","DateElement","forwardRef","Intl","DateTimeFormat","formatToParts","dateFormatted","Bylines","dateFirst","dateElRef","oDateRef","Epilogue","Expander","showLabel","itemsToShow","showLessText","showMoreText","hasNote","expanded","setExpanded","Tag","tagChildren","colSpan","childArray","Children","toArray","Fragment","onClick","LastUpdated","live","display","Card","headerAttributes","isSortable","scope","cellAttributes","columnIsVerticallyCentred","footerAttributes","tableAttributes","isStriped","isCompact","HeadTop","textAlign","Head","secondary","Body","i1","i2","toLocaleString","columnIsHeader","Foot","footers","Footnote","TableContainer","DataTable","captionTop","captionBottom","isHeaderHidden","tableRef","tableOrigami","updateRows","namedClass","oTable","_tableHeadersWithoutSort","cloneNode","_createFlatTableStructure","addSortButtons","_ready","latestRows","newGroupBody","newRow","clonedHeader","clonedTd","_createScrollTableStructure","clonedRows","headerRow","cellClone","filteredData","minimumRowCount","_addControlsToDom","_setupScroll","_setupExpander","expand","_expand","canExpand","_minimumRowCount","_updateExpander","controls","_expanderUpdateScheduled","isExpanded","contract","isContracted","expanderButton","_updateControls","toggle","removeAttribute","maxTableHeight","_contractedWrapperHeight","buttonHeight","extraHeight","supportsArrows","_supportsArrows","overlayWrapperHtml","range","createRange","selectNode","overlayFragment","createContextualFragment","controlsOverlay","fadeOverlay","forwardButton","backButton","_updateControlOverlayPosition","theadHeight","captionHeight","scrollForward","scrollBy","clientWidth","behavior","scrollBackward","updateScroll","_controlUpdateScheduled","_fromEnd","_fromStart","IntersectionObserver","arrowFadeObserverConfig","threshold","rootMargin","arrowFadeObserver","entry","intersectionRatio","observe","toggleExpanded","expanderButtonContainer","buttonOffset","contractTable","pageYOffset","expandTable","canScrollTable","_canScrollTable","setProperty","showArrowDock","_showArrowDock","_updateScrollControl","showStickyArrows","_stickyArrows","arrowsDocked","scrolledToBoundary","hideAtBoundary","_canScrollPastTable","outsideTable","elementButton","_rowsHiddenByExpander","visibleRowCount","clientHeight","bottom","_tableTallerThanViewport","CSS","supports","getIntlCollator","Collator","ascendingSort","intlCollator","compare","localeCompare","descendingSort","_cellFormatter","CellFormatter","batch","tableHeaderElement","cellFormatter","aCol","bCol","formatCell","sorted","headerSort","setFormatter","extractAltFromImages","insertAdjacentHTML","extractText","accumulator","nodeText","expandAbbreviations","digit","abbreviation","pow","removeDigitGroupSeparators","extractDigitsIfFound","digitsAndRange","extractNumberFromRange","ftDateTimeToNumber","monthNames","monthIndex","startsWith","period","twentyFourHour","UTC","removeRefereneAsterisk","removeEmptyCellIndicators","extractNodeContent","step","extractNumber","filters","percent","currency","numeric","sortValue","React","AppContainer","warnAboutHMRDisabled","only","shouldWrapWithAppContainer","areComponentsEqual","setConfig","cold","configureComponent","for","iterator","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","refs","updater","isReactComponent","setState","forceUpdate","isPureReactComponent","__self","__source","$$typeof","_owner","V","ReactCurrentDispatcher","ReactCurrentBatchConfig","suspense","ReactCurrentOwner","IsSomeRendererActing","Component","Profiler","PureComponent","StrictMode","Suspense","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","cloneElement","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","_context","createFactory","createRef","isValidElement","lazy","_ctor","_status","_result","memo","useCallback","useContext","useDebugValue","useImperativeHandle","useLayoutEffect","useMemo","useReducer","getElementById","hydrate","onError","pa","qa","ra","sa","extractEvents","eventTypes","ta","phasedRegistrationNames","ua","registrationName","va","wa","dependencies","xa","ya","za","Aa","Ba","Ca","stateNode","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","Ua","Va","xlinkHref","Wa","Xa","Sa","Ta","Ra","setAttributeNS","Ya","Za","$a","ab","bb","db","eb","fb","gb","hb","ib","jb","kb","lb","mb","nb","pb","qb","_debugOwner","_debugSource","fileName","lineNumber","return","rb","sb","xb","_valueTracker","stopTracking","tb","yb","checked","zb","defaultChecked","defaultValue","_wrapperState","initialChecked","Ab","initialValue","controlled","Bb","Cb","Db","Eb","ownerDocument","activeElement","Gb","Fb","Hb","selected","defaultSelected","disabled","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","MSApp","execUnsafeLocalFunction","namespaceURI","Rb","lastChild","nodeValue","Sb","Tb","animationend","animationiteration","animationstart","transitionend","Ub","Vb","Wb","animation","transition","Xb","Yb","Zb","$b","ac","bc","cc","dc","alternate","effectTag","ec","memoizedState","dehydrated","fc","hc","sibling","gc","ic","jc","kc","lc","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","release","mc","nc","srcElement","oc","pc","qc","topLevelType","nativeEvent","targetInst","ancestors","rc","eventSystemFlags","sc","containerInfo","tc","uc","vc","wc","xc","yc","zc","Ac","Bc","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Kc","blockedOn","Lc","delete","pointerId","Mc","Nc","Pc","unstable_runWithPriority","priority","Qc","Rc","Sc","Tc","Uc","unstable_scheduleCallback","unstable_NormalPriority","Vc","Wc","Yc","Zc","$c","ad","bubbled","captured","eventPriority","bd","cd","unstable_UserBlockingPriority","ed","fd","gd","hd","Oc","jd","gridArea","lineClamp","kd","ld","nd","menuitem","area","base","br","col","embed","hr","input","keygen","meta","param","wbr","od","pd","qd","rd","sd","td","ud","vd","xd","HTMLIFrameElement","yd","contentEditable","Dd","Ed","Fd","autoFocus","Gd","Hd","Id","Jd","Kd","previousSibling","Ld","Md","Nd","Od","Pd","Qd","Rd","Sd","Td","dispatchConfig","Ud","_targetInst","Vd","Wd","Xd","Yd","Zd","$d","ae","be","ce","Interface","isDefaultPrevented","defaultPrevented","returnValue","ee","eventPool","fe","destructor","de","getPooled","stopPropagation","cancelBubble","persist","timeStamp","isTrusted","ge","he","ie","je","ke","le","ne","oe","beforeInput","compositionEnd","compositionStart","compositionUpdate","pe","qe","se","ve","locale","which","te","ctrlKey","altKey","metaKey","char","ue","we","color","tel","xe","ye","change","ze","Ae","Be","Ce","De","Ee","Fe","Ge","detachEvent","He","Ie","Je","Ke","Le","Me","_isInputEventSupported","Ne","Oe","Alt","Control","Meta","Shift","Pe","getModifierState","Qe","Re","Se","Te","Ue","Ve","screenX","screenY","clientX","clientY","pageX","pageY","shiftKey","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","We","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Xe","mouseEnter","mouseLeave","pointerEnter","pointerLeave","Ye","defaultView","parentWindow","$e","af","bf","cf","df","select","ef","ff","gf","hf","jf","selectionStart","selectionEnd","anchorNode","getSelection","anchorOffset","focusNode","focusOffset","kf","onSelect","lf","animationName","elapsedTime","pseudoElement","mf","clipboardData","nf","of","charCode","pf","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","qf","8","9","12","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","rf","repeat","dataTransfer","tf","touches","targetTouches","changedTouches","uf","vf","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","wf","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","yf","zf","Af","Bf","Cf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","childContextTypes","Df","Ef","Ff","getChildContext","Gf","__reactInternalMemoizedMergedChildContext","Hf","If","Jf","Kf","unstable_cancelCallback","Lf","unstable_requestPaint","Mf","unstable_now","Nf","unstable_getCurrentPriorityLevel","Of","unstable_ImmediatePriority","Pf","Qf","Rf","unstable_LowPriority","Sf","unstable_IdlePriority","Tf","Uf","unstable_shouldYield","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","ng","og","pg","childExpirationTime","qg","firstContext","expirationTime","rg","sg","observedBits","responders","tg","ug","updateQueue","baseState","baseQueue","shared","pending","effects","vg","wg","suspenseConfig","payload","xg","yg","zg","Ag","Bg","Cg","Dg","Eg","Fg","Jg","_reactInternalFiber","Gg","Hg","Ig","Kg","shouldComponentUpdate","Lg","contextType","state","Mg","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Ng","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Og","Pg","_stringRef","Qg","Rg","lastEffect","nextEffect","firstEffect","Sg","Tg","elementType","Ug","implementation","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","ch","dh","eh","fh","gh","memoizedProps","revealOrder","ih","responder","jh","kh","lh","mh","nh","oh","ph","qh","rh","sh","uh","vh","wh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","dispatch","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","readContext","useResponder","useDeferredValue","useTransition","Oh","Ph","Qh","Rh","Sh","Th","pendingProps","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","ei","fi","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","gi","getDerivedStateFromError","hi","pendingContext","ni","pi","qi","ii","retryTime","ji","fallback","unstable_avoidThisFallback","ki","li","isBackwards","rendering","renderingStartTime","tail","tailExpiration","tailMode","mi","ri","si","wasMultiple","multiple","onclick","createElementNS","ti","ui","vi","wi","xi","yi","zi","Ai","stack","Bi","WeakSet","Set","Ci","Fi","Ei","Gi","__reactInternalSnapshotBeforeUpdate","Hi","Ii","Ji","focus","Ki","Li","componentWillUnmount","Di","Mi","Ni","Oi","Pi","Qi","_reactRootContainer","Ri","Si","Ti","Ui","Vi","Wi","Xi","Yi","Zi","$i","componentDidCatch","aj","componentStack","Rj","bj","ceil","cj","dj","kj","lj","mj","nj","oj","qj","rj","sj","tj","uj","vj","wj","timeoutMs","xj","yj","zj","lastExpiredTime","Aj","firstPendingTime","lastPingedTime","nextKnownPendingLevel","callbackExpirationTime","callbackPriority","callbackNode","Bj","Cj","Dj","Ej","Fj","Gj","Hj","finishedWork","finishedExpirationTime","lastSuspendedTime","Ij","timeoutHandle","Jj","busyMinDurationMs","busyDelayMs","Kj","Mj","Nj","pingCache","Oj","ub","Pj","Xc","Qj","Sj","firstSuspendedTime","rangeCount","wb","activeElementDetached","focusedElem","selectionRange","Tj","wd","contains","compareDocumentPosition","setStart","removeAllRanges","addRange","setEnd","vb","Uj","Vj","Wj","ob","Xj","unstable_observedBits","Zj","pendingChildren","ak","bk","ck","dk","ek","fk","Jc","_internalRoot","gk","ik","hk","jk","kk","unmount","form","Lj","lk","Events","findFiberByHostInstance","bundleType","rendererPackageName","isDisabled","supportsFiber","inject","onCommitFiberRoot","onCommitFiberUnmount","Yj","overrideHookState","overrideProps","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","createPortal","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","MessageChannel","unstable_forceFrameRate","performance","port2","port1","onmessage","postMessage","sortIndex","startTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","_s","_e","_arr","_n","_d","runtime","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","define","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","_invoke","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","invoke","__await","unwrapped","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","isGeneratorFunction","genFun","ctor","mark","awrap","iter","skipTempReset","stop","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","globalThis","bail","vfile","trough","attachers","transformers","frozen","freezeIndex","processor","assertUnfrozen","freeze","addPlugin","addList","addPreset","doc","Parser","file","assertParser","newable","Compiler","assertCompiler","assertNode","runSync","assertDone","processSync","destination","transformer","Infinity","executor","pipeline","asyncName","toStr","gOPD","hasOwnConstructor","hasIsPrototypeOf","newValue","getProperty","copyIsArray","VMessage","VFile","proto","origin","filePath","fatal","fail","VMessagePrototype","parseOrigin","ruleId","point","encoding","history","assertPart","part","assertNonEmpty","assertPath","stem","npath","nFileName","readFloatLE","isSlowBuffer","_isBuffer","fns","middleware","invoked","unherit","Local","inherits","Super","From","superCtor","super_","TempCtor","vfileLocation","tokenizer","setOptions","inList","inBlock","inLink","atStart","toOffset","exitStart","enterList","enterLink","enterBlock","interruptParagraph","interruptList","interruptBlockquote","blockTokenizers","newline","indentedCode","fencedCode","blockquote","atxHeading","thematicBreak","setextHeading","definition","paragraph","inlineTokenizers","autoLink","strong","emphasis","deletion","break","blockMethods","inlineMethods","tokenizeBlock","tokenizeInline","tokenizeFactory","offsetToPositionFactory","indices","positionToOffsetFactory","toPosition","entities","decoder","offsets","alphabetical","matched","valueLength","tokens","eat","updatePosition","onlyAtStart","notInList","notInBlock","notInLink","eof","subvalue","Position","indentation","getOffset","combined","validateEat","MERGEABLE_NODES","mergeable","escapes","removePosition","EXPRESSION_LINE_BREAKS","hard","soft","force","convert","one","subresult","toResult","typeFactory","ok","anyFactory","matchesFactory","checks","convertAll","whitespace","silent","blankQueue","subvalueQueue","contentQueue","CODE_INDENT","lang","fenceCount","exdentedContent","closing","exdentedClosing","interrupt","rest","nextIndex","startIndex","prefixed","exit","currentLine","indents","markerCount","getIndent","removeIndent","markers","ordered","currentMarker","prevEmpty","empty","allLines","emptyLines","enterTop","exitBlockquote","isLoose","indented","interuptors","LIST_ORDERED_COMMONMARK_MARKERS","LIST_ORDERED_MARKERS","LIST_UNORDERED_MARKERS","TAB_SIZE","trail","loose","listItem","EXPRESSION_LOOSE_LIST_ITEM","EXPRESSION_TASK_ITEM","EXPRESSION_BULLET","EXPRESSION_PEDANTIC_BULLET","EXPRESSION_INITIAL_INDENT","task","pedanticListItem","normalListItem","$0","bullet","trimmedLines","$2","$3","$4","maximum","padding","minIndent","matrix","SETEXT_MARKERS","sequence","sequences","footnoteDefinition","EXPRESSION_INITIAL_TAB","subqueue","identifier","C_BRACKET_OPEN","beforeURL","beforeTitle","isEnclosedURLCharacter","isUnclosedURLCharacter","alignments","alignment","hasDash","align","preamble","opening","lineCount","lineIndex","pipeIndex","trimTrailingLines","locate","locator","MAILTO_LENGTH","hasAtCharacter","PROTOCOLS","PROTOCOLS_LENGTH","protocol","parenCount","nextCharacter","inlineHTML","EXPRESSION_HTML_LINK_OPEN","EXPRESSION_HTML_LINK_CLOSE","LINK_MARKERS","COMMONMARK_LINK_MARKERS","closed","hasMarker","isImage","bracketed","referenceType","asterisk","underscore","word","strikethrough","previous","preceding","inlineCode","openingCount","found","tickQueue","hardBreak","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","componentName","propFullName","secret","getShim","ReactPropTypes","symbol","any","objectOf","checkPropTypes","visitWithParents","listNode","selfClosingRe","simpleTagRe","currentParent","selfClosing","getSelfClosing","getSimpleTag","matching","matchingTag","findAndPull","fromNode","toNode","toIndex","virtual","untangle","disallow","renderer","isReactFragment","nodeProps","getNodeProps","resolveChildren","childNode","isTagRenderer","sourcePosition","includeNodeIndex","parentChildCount","assignDefined","tight","unwrapParagraphs","language","inline","columnAlignment","isHeader","isBlock","defs","protocols","uri","colon","SimpleRenderer","getCoreProps","linkReference","imageReference","tableHead","tableBody","tableRow","tableCell","coreProps","checkbox","readOnly","heading","virtualHtml","_search","_mega","_drawer","_subnav","_sticky","headerEl","_oToggle","_target","handleSpaceKeydown","Toggle","toggleEl","_targets","attr","targetEl","Target","addToggle","close","stateName","isOpen","removeToggle","toggles","togglePosition","show","hide","addEvents","menu","animate","menus","handleCloseEvents","allFocusable","handleKeydown","handleClick","handleMouseenter","handleMouseleave","innerWidth","offsetWidth","handleFocus","handleTab","firstEl","lastEl","removeEvents","addDrawerToggles","drawerEl","handleClose","openingControl","toggleCallback","toggleTabbing","firstFocusable","control","drawerToggle","tabIndex","addSubmenuToggles","submenus","submenu","isEnabled","oUtils","subnav","wrapperWidth","scrollable","currentSelection","currentSelectionEnd","scrollTo","checkCurrentPosition","direction","remaining","distance","_oUtils","viewportOffset","lastScrollDepth","lastAnimationFrame","lastStickyState","debouncedScrollEnd","scrollStart","handleFrame","scrollDepth","scrollY","isActive","isScrollingDown","startLoop","innerHeight","subClass","superClass","api","discreteValues","pad","randomBlock","safeCounter","fingerprint","slug","counter","print","globalCount","mimeTypes","userAgent","_xhr","_sendBeacon","_image","mock","xhr","resolver","rejecter","Image","defaultEventConfig","trackingEvent","origamiElement","getOrigamiEventTarget","component_name","component_id","getComponentId","_getElementPath","siblingIndex","srcParent","_generateHash","reduceRight","builder","defaultPageConfig","URL","internalQueue","_ftdomdelegate","_getTrace","eventPropertiesToCollect","eventData","firstDomPathToken","domPathTokens","oTrackingSkipQueueAttr","skipQueue","source_id","getEventProperties","handleClickEvent","clickEvent","clickElement","runQueue","nextLink","elementsToTrack","TRACKING_ATTRIBUTES","decorateEventData","viewedEl","getContextData","dataBeforeWhitelist","observer","onChange","changes","isIntersecting","unobserve","_stream","_count","getDataAttributes","isCount","renderCount","stream","fetchCount","dataset","shortKey","m1","m2","events","_purgeJwtCache","Stream","streamEl","eventSeenTimes","useStagingEnvironment","renderAndAuthenticate","renderComments","authenticateUser","login","validation","catch","authenticationToken","renderSignedInMessage","fetchOptions","fetchJsonWebToken","token","userHasValidSession","scriptElement","rootUrl","Coral","createStreamEmbed","storyURL","storyID","rootURL","autoRender","onAny","publishEvent","stagingWarning","Event","purgeCacheAfterCompletion","overlay","prompt","onOverlayReady","displayNameForm","promptValidation","onOverlayClosed","_ref","success","displayNamePrompt","mappedEvent","coralEventMap","oComments","oCommentsEventOptions","oCommentsEvent","oTracking","disableOTracking","oTrackingEventOptions","coral","isWithheld","oTrackingEvent","editButtonId","signedInMessage","oldSignedInMessage","_oOverlay","isUnique","available","findInvalidCharacters","matchingCharacters","uniqueMatchingCharacters","class","invalidCharacters","apiError","errorMessage","_overlay","_oViewport","_oLayers","overlays","checkOptions","trigger","modal","layer","shaded","getOptionsFromTrigger","optionsFromKey","triggerClickHandler","visible","isVisible","offsetHeight","focusTrap","overlayFocusableElements","elementVisible","elementLabelVisible","labels","some","elementIsUncheckedRadio","lastElement","Overlay","noOptError","getLayerContext","parentnode","delegates","fullscreen","originalOverflow","overflow","pushState","popstateHandler","loadContent","copyContentFromUrl","copyContentFromElement","wrapperEl","zindex","headingId","preventclosing","nofocus","visuallyhidetitle","tooltip","_button","shadow","closeHandler","nested","resizeListenerHandler","resizeListener","closeOnEscapePressHandler","closeOnEscapePress","closeOnNewLayerHandler","closeOnNewLayer","customclose","closeOnExternalClickHandler","closeOnExternalClick","outline","getWidth","getHeight","realign","overlay_id","_trapFocus","back","respondToWindow","dimension","_align","edge","capitalise","borderHeight","borderWidth","triggers","overlaysArray","_debug","Utils","ignoreScrollbars","pageXOffset","scrollX","screen","unCapitalise","dashIndex","subKey","getOffsetRect","eClientRect","docElem","clientTop","clientLeft","searchParams","credentials","purgeJwtCache","Count","countEl","countLabel","getCountLabel","useStaging","commentCount","_layout","COLLAPSIBLE_BREAKPOINTS","footerEl","shouldCollapse","_toggles","setup","toggleEls","_oGrid","lastBreakpoint","LUX","msPerformance","webkitPerformance","mozPerformance","clearMarks","eventDetailsObj","creativeId","eventName","getMarksForEvents","markNames","getEntriesByName","marks","mName","pMarks","markName","mNameNoSuffix","pMarks2","metricsDefinitions","groupsToClear","getEntriesByType","relevantGroupsMarks","group","includes","spoorAction","eventsToClear","getNavigationPerfMarks","desiredMarks","navMarksArray","navMarks","disableSampling","eDef","sendMetricsOnEvent","eMarkMap","listenOnInitialised","sendMetrics","eventDetails","navigation","eventPayload","timings","creative","isEmpty","post","getNearestBreakpoint","winner","dims","breakpointDims","setCurrent","brps","argsIndex","groupCollapsed","groupEnd","_slot","screensize","Slots","invokeMethodOnSlots","slot","findFormatBySize","onBreakpointChange","isCurrentlyResponsive","stillWantsResponsive","collapse","uncollapse","submitImpression","initLazyLoading","initRefresh","refreshCount","initRendered","setFormatLoaded","maximise","initResponsive","initPostMessage","slotClass","addClass","flushLazyLoading","lazyLoadingObservers","slotConfig","lazyLoadingConfig","lazyLoadingObserver","viewportMargin","intersectionRect","unitName","lineItemId","VALID_SIZE_STRINGS","VALID_COLLAPSE_MODES","attributeParsers","_sizes","regex","mapping","responsiveSizes","screenName","responsiveFormats","lazyLoadThreshold","collapseEmpty","convertLazyLoadBooleanToObject","onChangeBreakpoint","hasValidSize","Slot","cfg","outer","addContainer","setName","defer","center","outOfPage","companion","outerEl","parseAttributeConfig","lazyLoadObserver","initLazyLoad","centerContainer","labelContainer","getAttributes","clearSlot","destroySlot","submitGptImpression","details","DEFAULT_LAZY_LOAD","_url","fetchMarginPercent","renderMarginPercent","mobileScaling","gptConfig","loadGPT","onReady","slotMethods","onRender","onRefresh","onResize","googletag","cmd","pubads","onRenderEnded","enableCompanions","setRenderingMode","setPageTargeting","setPageCollapseEmpty","enableLazyLoad","stripUrlParams","SEARCH_PARAMS","enableServices","setTargeting","setRequestNonPersonalizedAds","lazyLoadConf","enableSyncRendering","enableSingleRequest","enableAsyncRendering","targetingData","clearPageTargetingForKey","clearTargeting","collapseEmptyDivs","companions","disableInitialLoad","companionAds","setRefreshUnfilledSlots","defineSlot","addServices","setCollapseEmpty","setURL","iframe","gptSlotId","getSlotId","domId","getDomId","iframeId","getId","slotTargeting","getTargetingMap","serviceName","iFrameEl","setUnitName","defineOutOfPageSlot","defineSizeMapping","gptSlot","pubadsReady","sizeMapping","addSize","build","destroySlots","addService","setCollapseEmptyDiv","impressionURL","trackingUrlElement","oAdsImpressionUrl","updateCorrelator","clearPageTargeting","override","hasGPTLoaded","apiReady","conf","filterNestedParams","nestedParams","keysToStrip","childParams","socialUrls","twitter","facebook","linkedin","pinterest","whatsapp","enterpriseSharing","descriptiveLinkText","oShare","openWindows","dispatchCustomEvent","actionEl","shareLocation","oShareLocation","opener","share","shareSocial","generateSocialUrl","socialNetwork","templateUrl","titleExtra","relatedTwitterAccounts","host","pathname","ulElement","links","liElement","spanElement","aElement","templateLinkText","rootDelegate","rootDomDelegate","_ftDateFormat","updateEventName","ftDateFormatWarning","methodName","printers","printer","_renderDateFor","dateString","labelString","dateEls","createInstance","defaultConfig","axios","instanceConfig","CancelToken","isCancel","promises","spread","InterceptorManager","dispatchRequest","interceptors","interceptor","fulfilled","rejected","normalizedName","serializedParams","ignoreDuplicateOf","parsed","originURL","msie","urlParsingNode","resolveURL","port","requestURL","secure","eject","transformData","isAbsoluteURL","combineURLs","throwIfCancellationRequested","throwIfRequested","baseURL","relativeURL","resolvePromise"],"mappings":"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","file":"main.cd3162eb.js","sourcesContent":[" \tfunction hotDisposeChunk(chunkId) {\n \t\tdelete installedChunks[chunkId];\n \t}\n \tvar parentHotUpdateCallback = window[\"webpackHotUpdate\"];\n \twindow[\"webpackHotUpdate\"] = // eslint-disable-next-line no-unused-vars\n \tfunction webpackHotUpdateCallback(chunkId, moreModules) {\n \t\thotAddUpdateChunk(chunkId, moreModules);\n \t\tif (parentHotUpdateCallback) parentHotUpdateCallback(chunkId, moreModules);\n \t} ;\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotDownloadUpdateChunk(chunkId) {\n \t\tvar script = document.createElement(\"script\");\n \t\tscript.charset = \"utf-8\";\n \t\tscript.src = __webpack_require__.p + \"\" + chunkId + \".\" + hotCurrentHash + \".hot-update.js\";\n \t\tif (null) script.crossOrigin = null;\n \t\tdocument.head.appendChild(script);\n \t}\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotDownloadManifest(requestTimeout) {\n \t\trequestTimeout = requestTimeout || 10000;\n \t\treturn new Promise(function(resolve, reject) {\n \t\t\tif (typeof XMLHttpRequest === \"undefined\") {\n \t\t\t\treturn reject(new Error(\"No browser support\"));\n \t\t\t}\n \t\t\ttry {\n \t\t\t\tvar request = new XMLHttpRequest();\n \t\t\t\tvar requestPath = __webpack_require__.p + \"\" + hotCurrentHash + \".hot-update.json\";\n \t\t\t\trequest.open(\"GET\", requestPath, true);\n \t\t\t\trequest.timeout = requestTimeout;\n \t\t\t\trequest.send(null);\n \t\t\t} catch (err) {\n \t\t\t\treturn reject(err);\n \t\t\t}\n \t\t\trequest.onreadystatechange = function() {\n \t\t\t\tif (request.readyState !== 4) return;\n \t\t\t\tif (request.status === 0) {\n \t\t\t\t\t// timeout\n \t\t\t\t\treject(\n \t\t\t\t\t\tnew Error(\"Manifest request to \" + requestPath + \" timed out.\")\n \t\t\t\t\t);\n \t\t\t\t} else if (request.status === 404) {\n \t\t\t\t\t// no update available\n \t\t\t\t\tresolve();\n \t\t\t\t} else if (request.status !== 200 && request.status !== 304) {\n \t\t\t\t\t// other failure\n \t\t\t\t\treject(new Error(\"Manifest request to \" + requestPath + \" failed.\"));\n \t\t\t\t} else {\n \t\t\t\t\t// success\n \t\t\t\t\ttry {\n \t\t\t\t\t\tvar update = JSON.parse(request.responseText);\n \t\t\t\t\t} catch (e) {\n \t\t\t\t\t\treject(e);\n \t\t\t\t\t\treturn;\n \t\t\t\t\t}\n \t\t\t\t\tresolve(update);\n \t\t\t\t}\n \t\t\t};\n \t\t});\n \t}\n\n \tvar hotApplyOnUpdate = true;\n \t// eslint-disable-next-line no-unused-vars\n \tvar hotCurrentHash = \"cd3162ebeb9c1e965f0c\";\n \tvar hotRequestTimeout = 10000;\n \tvar hotCurrentModuleData = {};\n \tvar hotCurrentChildModule;\n \t// eslint-disable-next-line no-unused-vars\n \tvar hotCurrentParents = [];\n \t// eslint-disable-next-line no-unused-vars\n \tvar hotCurrentParentsTemp = [];\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotCreateRequire(moduleId) {\n \t\tvar me = installedModules[moduleId];\n \t\tif (!me) return __webpack_require__;\n \t\tvar fn = function(request) {\n \t\t\tif (me.hot.active) {\n \t\t\t\tif (installedModules[request]) {\n \t\t\t\t\tif (installedModules[request].parents.indexOf(moduleId) === -1) {\n \t\t\t\t\t\tinstalledModules[request].parents.push(moduleId);\n \t\t\t\t\t}\n \t\t\t\t} else {\n \t\t\t\t\thotCurrentParents = [moduleId];\n \t\t\t\t\thotCurrentChildModule = request;\n \t\t\t\t}\n \t\t\t\tif (me.children.indexOf(request) === -1) {\n \t\t\t\t\tme.children.push(request);\n \t\t\t\t}\n \t\t\t} else {\n \t\t\t\tconsole.warn(\n \t\t\t\t\t\"[HMR] unexpected require(\" +\n \t\t\t\t\t\trequest +\n \t\t\t\t\t\t\") from disposed module \" +\n \t\t\t\t\t\tmoduleId\n \t\t\t\t);\n \t\t\t\thotCurrentParents = [];\n \t\t\t}\n \t\t\treturn __webpack_require__(request);\n \t\t};\n \t\tvar ObjectFactory = function ObjectFactory(name) {\n \t\t\treturn {\n \t\t\t\tconfigurable: true,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: function() {\n \t\t\t\t\treturn __webpack_require__[name];\n \t\t\t\t},\n \t\t\t\tset: function(value) {\n \t\t\t\t\t__webpack_require__[name] = value;\n \t\t\t\t}\n \t\t\t};\n \t\t};\n \t\tfor (var name in __webpack_require__) {\n \t\t\tif (\n \t\t\t\tObject.prototype.hasOwnProperty.call(__webpack_require__, name) &&\n \t\t\t\tname !== \"e\" &&\n \t\t\t\tname !== \"t\"\n \t\t\t) {\n \t\t\t\tObject.defineProperty(fn, name, ObjectFactory(name));\n \t\t\t}\n \t\t}\n \t\tfn.e = function(chunkId) {\n \t\t\tif (hotStatus === \"ready\") hotSetStatus(\"prepare\");\n \t\t\thotChunksLoading++;\n \t\t\treturn __webpack_require__.e(chunkId).then(finishChunkLoading, function(err) {\n \t\t\t\tfinishChunkLoading();\n \t\t\t\tthrow err;\n \t\t\t});\n\n \t\t\tfunction finishChunkLoading() {\n \t\t\t\thotChunksLoading--;\n \t\t\t\tif (hotStatus === \"prepare\") {\n \t\t\t\t\tif (!hotWaitingFilesMap[chunkId]) {\n \t\t\t\t\t\thotEnsureUpdateChunk(chunkId);\n \t\t\t\t\t}\n \t\t\t\t\tif (hotChunksLoading === 0 && hotWaitingFiles === 0) {\n \t\t\t\t\t\thotUpdateDownloaded();\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t};\n \t\tfn.t = function(value, mode) {\n \t\t\tif (mode & 1) value = fn(value);\n \t\t\treturn __webpack_require__.t(value, mode & ~1);\n \t\t};\n \t\treturn fn;\n \t}\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotCreateModule(moduleId) {\n \t\tvar hot = {\n \t\t\t// private stuff\n \t\t\t_acceptedDependencies: {},\n \t\t\t_declinedDependencies: {},\n \t\t\t_selfAccepted: false,\n \t\t\t_selfDeclined: false,\n \t\t\t_selfInvalidated: false,\n \t\t\t_disposeHandlers: [],\n \t\t\t_main: hotCurrentChildModule !== moduleId,\n\n \t\t\t// Module API\n \t\t\tactive: true,\n \t\t\taccept: function(dep, callback) {\n \t\t\t\tif (dep === undefined) hot._selfAccepted = true;\n \t\t\t\telse if (typeof dep === \"function\") hot._selfAccepted = dep;\n \t\t\t\telse if (typeof dep === \"object\")\n \t\t\t\t\tfor (var i = 0; i < dep.length; i++)\n \t\t\t\t\t\thot._acceptedDependencies[dep[i]] = callback || function() {};\n \t\t\t\telse hot._acceptedDependencies[dep] = callback || function() {};\n \t\t\t},\n \t\t\tdecline: function(dep) {\n \t\t\t\tif (dep === undefined) hot._selfDeclined = true;\n \t\t\t\telse if (typeof dep === \"object\")\n \t\t\t\t\tfor (var i = 0; i < dep.length; i++)\n \t\t\t\t\t\thot._declinedDependencies[dep[i]] = true;\n \t\t\t\telse hot._declinedDependencies[dep] = true;\n \t\t\t},\n \t\t\tdispose: function(callback) {\n \t\t\t\thot._disposeHandlers.push(callback);\n \t\t\t},\n \t\t\taddDisposeHandler: function(callback) {\n \t\t\t\thot._disposeHandlers.push(callback);\n \t\t\t},\n \t\t\tremoveDisposeHandler: function(callback) {\n \t\t\t\tvar idx = hot._disposeHandlers.indexOf(callback);\n \t\t\t\tif (idx >= 0) hot._disposeHandlers.splice(idx, 1);\n \t\t\t},\n \t\t\tinvalidate: function() {\n \t\t\t\tthis._selfInvalidated = true;\n \t\t\t\tswitch (hotStatus) {\n \t\t\t\t\tcase \"idle\":\n \t\t\t\t\t\thotUpdate = {};\n \t\t\t\t\t\thotUpdate[moduleId] = modules[moduleId];\n \t\t\t\t\t\thotSetStatus(\"ready\");\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"ready\":\n \t\t\t\t\t\thotApplyInvalidatedModule(moduleId);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"prepare\":\n \t\t\t\t\tcase \"check\":\n \t\t\t\t\tcase \"dispose\":\n \t\t\t\t\tcase \"apply\":\n \t\t\t\t\t\t(hotQueuedInvalidatedModules =\n \t\t\t\t\t\t\thotQueuedInvalidatedModules || []).push(moduleId);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tdefault:\n \t\t\t\t\t\t// ignore requests in error states\n \t\t\t\t\t\tbreak;\n \t\t\t\t}\n \t\t\t},\n\n \t\t\t// Management API\n \t\t\tcheck: hotCheck,\n \t\t\tapply: hotApply,\n \t\t\tstatus: function(l) {\n \t\t\t\tif (!l) return hotStatus;\n \t\t\t\thotStatusHandlers.push(l);\n \t\t\t},\n \t\t\taddStatusHandler: function(l) {\n \t\t\t\thotStatusHandlers.push(l);\n \t\t\t},\n \t\t\tremoveStatusHandler: function(l) {\n \t\t\t\tvar idx = hotStatusHandlers.indexOf(l);\n \t\t\t\tif (idx >= 0) hotStatusHandlers.splice(idx, 1);\n \t\t\t},\n\n \t\t\t//inherit from previous dispose call\n \t\t\tdata: hotCurrentModuleData[moduleId]\n \t\t};\n \t\thotCurrentChildModule = undefined;\n \t\treturn hot;\n \t}\n\n \tvar hotStatusHandlers = [];\n \tvar hotStatus = \"idle\";\n\n \tfunction hotSetStatus(newStatus) {\n \t\thotStatus = newStatus;\n \t\tfor (var i = 0; i < hotStatusHandlers.length; i++)\n \t\t\thotStatusHandlers[i].call(null, newStatus);\n \t}\n\n \t// while downloading\n \tvar hotWaitingFiles = 0;\n \tvar hotChunksLoading = 0;\n \tvar hotWaitingFilesMap = {};\n \tvar hotRequestedFilesMap = {};\n \tvar hotAvailableFilesMap = {};\n \tvar hotDeferred;\n\n \t// The update info\n \tvar hotUpdate, hotUpdateNewHash, hotQueuedInvalidatedModules;\n\n \tfunction toModuleId(id) {\n \t\tvar isNumber = +id + \"\" === id;\n \t\treturn isNumber ? +id : id;\n \t}\n\n \tfunction hotCheck(apply) {\n \t\tif (hotStatus !== \"idle\") {\n \t\t\tthrow new Error(\"check() is only allowed in idle status\");\n \t\t}\n \t\thotApplyOnUpdate = apply;\n \t\thotSetStatus(\"check\");\n \t\treturn hotDownloadManifest(hotRequestTimeout).then(function(update) {\n \t\t\tif (!update) {\n \t\t\t\thotSetStatus(hotApplyInvalidatedModules() ? \"ready\" : \"idle\");\n \t\t\t\treturn null;\n \t\t\t}\n \t\t\thotRequestedFilesMap = {};\n \t\t\thotWaitingFilesMap = {};\n \t\t\thotAvailableFilesMap = update.c;\n \t\t\thotUpdateNewHash = update.h;\n\n \t\t\thotSetStatus(\"prepare\");\n \t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\thotDeferred = {\n \t\t\t\t\tresolve: resolve,\n \t\t\t\t\treject: reject\n \t\t\t\t};\n \t\t\t});\n \t\t\thotUpdate = {};\n \t\t\tvar chunkId = 0;\n \t\t\t// eslint-disable-next-line no-lone-blocks\n \t\t\t{\n \t\t\t\thotEnsureUpdateChunk(chunkId);\n \t\t\t}\n \t\t\tif (\n \t\t\t\thotStatus === \"prepare\" &&\n \t\t\t\thotChunksLoading === 0 &&\n \t\t\t\thotWaitingFiles === 0\n \t\t\t) {\n \t\t\t\thotUpdateDownloaded();\n \t\t\t}\n \t\t\treturn promise;\n \t\t});\n \t}\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotAddUpdateChunk(chunkId, moreModules) {\n \t\tif (!hotAvailableFilesMap[chunkId] || !hotRequestedFilesMap[chunkId])\n \t\t\treturn;\n \t\thotRequestedFilesMap[chunkId] = false;\n \t\tfor (var moduleId in moreModules) {\n \t\t\tif (Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\thotUpdate[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif (--hotWaitingFiles === 0 && hotChunksLoading === 0) {\n \t\t\thotUpdateDownloaded();\n \t\t}\n \t}\n\n \tfunction hotEnsureUpdateChunk(chunkId) {\n \t\tif (!hotAvailableFilesMap[chunkId]) {\n \t\t\thotWaitingFilesMap[chunkId] = true;\n \t\t} else {\n \t\t\thotRequestedFilesMap[chunkId] = true;\n \t\t\thotWaitingFiles++;\n \t\t\thotDownloadUpdateChunk(chunkId);\n \t\t}\n \t}\n\n \tfunction hotUpdateDownloaded() {\n \t\thotSetStatus(\"ready\");\n \t\tvar deferred = hotDeferred;\n \t\thotDeferred = null;\n \t\tif (!deferred) return;\n \t\tif (hotApplyOnUpdate) {\n \t\t\t// Wrap deferred object in Promise to mark it as a well-handled Promise to\n \t\t\t// avoid triggering uncaught exception warning in Chrome.\n \t\t\t// See https://bugs.chromium.org/p/chromium/issues/detail?id=465666\n \t\t\tPromise.resolve()\n \t\t\t\t.then(function() {\n \t\t\t\t\treturn hotApply(hotApplyOnUpdate);\n \t\t\t\t})\n \t\t\t\t.then(\n \t\t\t\t\tfunction(result) {\n \t\t\t\t\t\tdeferred.resolve(result);\n \t\t\t\t\t},\n \t\t\t\t\tfunction(err) {\n \t\t\t\t\t\tdeferred.reject(err);\n \t\t\t\t\t}\n \t\t\t\t);\n \t\t} else {\n \t\t\tvar outdatedModules = [];\n \t\t\tfor (var id in hotUpdate) {\n \t\t\t\tif (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {\n \t\t\t\t\toutdatedModules.push(toModuleId(id));\n \t\t\t\t}\n \t\t\t}\n \t\t\tdeferred.resolve(outdatedModules);\n \t\t}\n \t}\n\n \tfunction hotApply(options) {\n \t\tif (hotStatus !== \"ready\")\n \t\t\tthrow new Error(\"apply() is only allowed in ready status\");\n \t\toptions = options || {};\n \t\treturn hotApplyInternal(options);\n \t}\n\n \tfunction hotApplyInternal(options) {\n \t\thotApplyInvalidatedModules();\n\n \t\tvar cb;\n \t\tvar i;\n \t\tvar j;\n \t\tvar module;\n \t\tvar moduleId;\n\n \t\tfunction getAffectedStuff(updateModuleId) {\n \t\t\tvar outdatedModules = [updateModuleId];\n \t\t\tvar outdatedDependencies = {};\n\n \t\t\tvar queue = outdatedModules.map(function(id) {\n \t\t\t\treturn {\n \t\t\t\t\tchain: [id],\n \t\t\t\t\tid: id\n \t\t\t\t};\n \t\t\t});\n \t\t\twhile (queue.length > 0) {\n \t\t\t\tvar queueItem = queue.pop();\n \t\t\t\tvar moduleId = queueItem.id;\n \t\t\t\tvar chain = queueItem.chain;\n \t\t\t\tmodule = installedModules[moduleId];\n \t\t\t\tif (\n \t\t\t\t\t!module ||\n \t\t\t\t\t(module.hot._selfAccepted && !module.hot._selfInvalidated)\n \t\t\t\t)\n \t\t\t\t\tcontinue;\n \t\t\t\tif (module.hot._selfDeclined) {\n \t\t\t\t\treturn {\n \t\t\t\t\t\ttype: \"self-declined\",\n \t\t\t\t\t\tchain: chain,\n \t\t\t\t\t\tmoduleId: moduleId\n \t\t\t\t\t};\n \t\t\t\t}\n \t\t\t\tif (module.hot._main) {\n \t\t\t\t\treturn {\n \t\t\t\t\t\ttype: \"unaccepted\",\n \t\t\t\t\t\tchain: chain,\n \t\t\t\t\t\tmoduleId: moduleId\n \t\t\t\t\t};\n \t\t\t\t}\n \t\t\t\tfor (var i = 0; i < module.parents.length; i++) {\n \t\t\t\t\tvar parentId = module.parents[i];\n \t\t\t\t\tvar parent = installedModules[parentId];\n \t\t\t\t\tif (!parent) continue;\n \t\t\t\t\tif (parent.hot._declinedDependencies[moduleId]) {\n \t\t\t\t\t\treturn {\n \t\t\t\t\t\t\ttype: \"declined\",\n \t\t\t\t\t\t\tchain: chain.concat([parentId]),\n \t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\tparentId: parentId\n \t\t\t\t\t\t};\n \t\t\t\t\t}\n \t\t\t\t\tif (outdatedModules.indexOf(parentId) !== -1) continue;\n \t\t\t\t\tif (parent.hot._acceptedDependencies[moduleId]) {\n \t\t\t\t\t\tif (!outdatedDependencies[parentId])\n \t\t\t\t\t\t\toutdatedDependencies[parentId] = [];\n \t\t\t\t\t\taddAllToSet(outdatedDependencies[parentId], [moduleId]);\n \t\t\t\t\t\tcontinue;\n \t\t\t\t\t}\n \t\t\t\t\tdelete outdatedDependencies[parentId];\n \t\t\t\t\toutdatedModules.push(parentId);\n \t\t\t\t\tqueue.push({\n \t\t\t\t\t\tchain: chain.concat([parentId]),\n \t\t\t\t\t\tid: parentId\n \t\t\t\t\t});\n \t\t\t\t}\n \t\t\t}\n\n \t\t\treturn {\n \t\t\t\ttype: \"accepted\",\n \t\t\t\tmoduleId: updateModuleId,\n \t\t\t\toutdatedModules: outdatedModules,\n \t\t\t\toutdatedDependencies: outdatedDependencies\n \t\t\t};\n \t\t}\n\n \t\tfunction addAllToSet(a, b) {\n \t\t\tfor (var i = 0; i < b.length; i++) {\n \t\t\t\tvar item = b[i];\n \t\t\t\tif (a.indexOf(item) === -1) a.push(item);\n \t\t\t}\n \t\t}\n\n \t\t// at begin all updates modules are outdated\n \t\t// the \"outdated\" status can propagate to parents if they don't accept the children\n \t\tvar outdatedDependencies = {};\n \t\tvar outdatedModules = [];\n \t\tvar appliedUpdate = {};\n\n \t\tvar warnUnexpectedRequire = function warnUnexpectedRequire() {\n \t\t\tconsole.warn(\n \t\t\t\t\"[HMR] unexpected require(\" + result.moduleId + \") to disposed module\"\n \t\t\t);\n \t\t};\n\n \t\tfor (var id in hotUpdate) {\n \t\t\tif (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {\n \t\t\t\tmoduleId = toModuleId(id);\n \t\t\t\t/** @type {TODO} */\n \t\t\t\tvar result;\n \t\t\t\tif (hotUpdate[id]) {\n \t\t\t\t\tresult = getAffectedStuff(moduleId);\n \t\t\t\t} else {\n \t\t\t\t\tresult = {\n \t\t\t\t\t\ttype: \"disposed\",\n \t\t\t\t\t\tmoduleId: id\n \t\t\t\t\t};\n \t\t\t\t}\n \t\t\t\t/** @type {Error|false} */\n \t\t\t\tvar abortError = false;\n \t\t\t\tvar doApply = false;\n \t\t\t\tvar doDispose = false;\n \t\t\t\tvar chainInfo = \"\";\n \t\t\t\tif (result.chain) {\n \t\t\t\t\tchainInfo = \"\\nUpdate propagation: \" + result.chain.join(\" -> \");\n \t\t\t\t}\n \t\t\t\tswitch (result.type) {\n \t\t\t\t\tcase \"self-declined\":\n \t\t\t\t\t\tif (options.onDeclined) options.onDeclined(result);\n \t\t\t\t\t\tif (!options.ignoreDeclined)\n \t\t\t\t\t\t\tabortError = new Error(\n \t\t\t\t\t\t\t\t\"Aborted because of self decline: \" +\n \t\t\t\t\t\t\t\t\tresult.moduleId +\n \t\t\t\t\t\t\t\t\tchainInfo\n \t\t\t\t\t\t\t);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"declined\":\n \t\t\t\t\t\tif (options.onDeclined) options.onDeclined(result);\n \t\t\t\t\t\tif (!options.ignoreDeclined)\n \t\t\t\t\t\t\tabortError = new Error(\n \t\t\t\t\t\t\t\t\"Aborted because of declined dependency: \" +\n \t\t\t\t\t\t\t\t\tresult.moduleId +\n \t\t\t\t\t\t\t\t\t\" in \" +\n \t\t\t\t\t\t\t\t\tresult.parentId +\n \t\t\t\t\t\t\t\t\tchainInfo\n \t\t\t\t\t\t\t);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"unaccepted\":\n \t\t\t\t\t\tif (options.onUnaccepted) options.onUnaccepted(result);\n \t\t\t\t\t\tif (!options.ignoreUnaccepted)\n \t\t\t\t\t\t\tabortError = new Error(\n \t\t\t\t\t\t\t\t\"Aborted because \" + moduleId + \" is not accepted\" + chainInfo\n \t\t\t\t\t\t\t);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"accepted\":\n \t\t\t\t\t\tif (options.onAccepted) options.onAccepted(result);\n \t\t\t\t\t\tdoApply = true;\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"disposed\":\n \t\t\t\t\t\tif (options.onDisposed) options.onDisposed(result);\n \t\t\t\t\t\tdoDispose = true;\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tdefault:\n \t\t\t\t\t\tthrow new Error(\"Unexception type \" + result.type);\n \t\t\t\t}\n \t\t\t\tif (abortError) {\n \t\t\t\t\thotSetStatus(\"abort\");\n \t\t\t\t\treturn Promise.reject(abortError);\n \t\t\t\t}\n \t\t\t\tif (doApply) {\n \t\t\t\t\tappliedUpdate[moduleId] = hotUpdate[moduleId];\n \t\t\t\t\taddAllToSet(outdatedModules, result.outdatedModules);\n \t\t\t\t\tfor (moduleId in result.outdatedDependencies) {\n \t\t\t\t\t\tif (\n \t\t\t\t\t\t\tObject.prototype.hasOwnProperty.call(\n \t\t\t\t\t\t\t\tresult.outdatedDependencies,\n \t\t\t\t\t\t\t\tmoduleId\n \t\t\t\t\t\t\t)\n \t\t\t\t\t\t) {\n \t\t\t\t\t\t\tif (!outdatedDependencies[moduleId])\n \t\t\t\t\t\t\t\toutdatedDependencies[moduleId] = [];\n \t\t\t\t\t\t\taddAllToSet(\n \t\t\t\t\t\t\t\toutdatedDependencies[moduleId],\n \t\t\t\t\t\t\t\tresult.outdatedDependencies[moduleId]\n \t\t\t\t\t\t\t);\n \t\t\t\t\t\t}\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t\tif (doDispose) {\n \t\t\t\t\taddAllToSet(outdatedModules, [result.moduleId]);\n \t\t\t\t\tappliedUpdate[moduleId] = warnUnexpectedRequire;\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// Store self accepted outdated modules to require them later by the module system\n \t\tvar outdatedSelfAcceptedModules = [];\n \t\tfor (i = 0; i < outdatedModules.length; i++) {\n \t\t\tmoduleId = outdatedModules[i];\n \t\t\tif (\n \t\t\t\tinstalledModules[moduleId] &&\n \t\t\t\tinstalledModules[moduleId].hot._selfAccepted &&\n \t\t\t\t// removed self-accepted modules should not be required\n \t\t\t\tappliedUpdate[moduleId] !== warnUnexpectedRequire &&\n \t\t\t\t// when called invalidate self-accepting is not possible\n \t\t\t\t!installedModules[moduleId].hot._selfInvalidated\n \t\t\t) {\n \t\t\t\toutdatedSelfAcceptedModules.push({\n \t\t\t\t\tmodule: moduleId,\n \t\t\t\t\tparents: installedModules[moduleId].parents.slice(),\n \t\t\t\t\terrorHandler: installedModules[moduleId].hot._selfAccepted\n \t\t\t\t});\n \t\t\t}\n \t\t}\n\n \t\t// Now in \"dispose\" phase\n \t\thotSetStatus(\"dispose\");\n \t\tObject.keys(hotAvailableFilesMap).forEach(function(chunkId) {\n \t\t\tif (hotAvailableFilesMap[chunkId] === false) {\n \t\t\t\thotDisposeChunk(chunkId);\n \t\t\t}\n \t\t});\n\n \t\tvar idx;\n \t\tvar queue = outdatedModules.slice();\n \t\twhile (queue.length > 0) {\n \t\t\tmoduleId = queue.pop();\n \t\t\tmodule = installedModules[moduleId];\n \t\t\tif (!module) continue;\n\n \t\t\tvar data = {};\n\n \t\t\t// Call dispose handlers\n \t\t\tvar disposeHandlers = module.hot._disposeHandlers;\n \t\t\tfor (j = 0; j < disposeHandlers.length; j++) {\n \t\t\t\tcb = disposeHandlers[j];\n \t\t\t\tcb(data);\n \t\t\t}\n \t\t\thotCurrentModuleData[moduleId] = data;\n\n \t\t\t// disable module (this disables requires from this module)\n \t\t\tmodule.hot.active = false;\n\n \t\t\t// remove module from cache\n \t\t\tdelete installedModules[moduleId];\n\n \t\t\t// when disposing there is no need to call dispose handler\n \t\t\tdelete outdatedDependencies[moduleId];\n\n \t\t\t// remove \"parents\" references from all children\n \t\t\tfor (j = 0; j < module.children.length; j++) {\n \t\t\t\tvar child = installedModules[module.children[j]];\n \t\t\t\tif (!child) continue;\n \t\t\t\tidx = child.parents.indexOf(moduleId);\n \t\t\t\tif (idx >= 0) {\n \t\t\t\t\tchild.parents.splice(idx, 1);\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// remove outdated dependency from module children\n \t\tvar dependency;\n \t\tvar moduleOutdatedDependencies;\n \t\tfor (moduleId in outdatedDependencies) {\n \t\t\tif (\n \t\t\t\tObject.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)\n \t\t\t) {\n \t\t\t\tmodule = installedModules[moduleId];\n \t\t\t\tif (module) {\n \t\t\t\t\tmoduleOutdatedDependencies = outdatedDependencies[moduleId];\n \t\t\t\t\tfor (j = 0; j < moduleOutdatedDependencies.length; j++) {\n \t\t\t\t\t\tdependency = moduleOutdatedDependencies[j];\n \t\t\t\t\t\tidx = module.children.indexOf(dependency);\n \t\t\t\t\t\tif (idx >= 0) module.children.splice(idx, 1);\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// Now in \"apply\" phase\n \t\thotSetStatus(\"apply\");\n\n \t\tif (hotUpdateNewHash !== undefined) {\n \t\t\thotCurrentHash = hotUpdateNewHash;\n \t\t\thotUpdateNewHash = undefined;\n \t\t}\n \t\thotUpdate = undefined;\n\n \t\t// insert new code\n \t\tfor (moduleId in appliedUpdate) {\n \t\t\tif (Object.prototype.hasOwnProperty.call(appliedUpdate, moduleId)) {\n \t\t\t\tmodules[moduleId] = appliedUpdate[moduleId];\n \t\t\t}\n \t\t}\n\n \t\t// call accept handlers\n \t\tvar error = null;\n \t\tfor (moduleId in outdatedDependencies) {\n \t\t\tif (\n \t\t\t\tObject.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)\n \t\t\t) {\n \t\t\t\tmodule = installedModules[moduleId];\n \t\t\t\tif (module) {\n \t\t\t\t\tmoduleOutdatedDependencies = outdatedDependencies[moduleId];\n \t\t\t\t\tvar callbacks = [];\n \t\t\t\t\tfor (i = 0; i < moduleOutdatedDependencies.length; i++) {\n \t\t\t\t\t\tdependency = moduleOutdatedDependencies[i];\n \t\t\t\t\t\tcb = module.hot._acceptedDependencies[dependency];\n \t\t\t\t\t\tif (cb) {\n \t\t\t\t\t\t\tif (callbacks.indexOf(cb) !== -1) continue;\n \t\t\t\t\t\t\tcallbacks.push(cb);\n \t\t\t\t\t\t}\n \t\t\t\t\t}\n \t\t\t\t\tfor (i = 0; i < callbacks.length; i++) {\n \t\t\t\t\t\tcb = callbacks[i];\n \t\t\t\t\t\ttry {\n \t\t\t\t\t\t\tcb(moduleOutdatedDependencies);\n \t\t\t\t\t\t} catch (err) {\n \t\t\t\t\t\t\tif (options.onErrored) {\n \t\t\t\t\t\t\t\toptions.onErrored({\n \t\t\t\t\t\t\t\t\ttype: \"accept-errored\",\n \t\t\t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\t\t\tdependencyId: moduleOutdatedDependencies[i],\n \t\t\t\t\t\t\t\t\terror: err\n \t\t\t\t\t\t\t\t});\n \t\t\t\t\t\t\t}\n \t\t\t\t\t\t\tif (!options.ignoreErrored) {\n \t\t\t\t\t\t\t\tif (!error) error = err;\n \t\t\t\t\t\t\t}\n \t\t\t\t\t\t}\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// Load self accepted modules\n \t\tfor (i = 0; i < outdatedSelfAcceptedModules.length; i++) {\n \t\t\tvar item = outdatedSelfAcceptedModules[i];\n \t\t\tmoduleId = item.module;\n \t\t\thotCurrentParents = item.parents;\n \t\t\thotCurrentChildModule = moduleId;\n \t\t\ttry {\n \t\t\t\t__webpack_require__(moduleId);\n \t\t\t} catch (err) {\n \t\t\t\tif (typeof item.errorHandler === \"function\") {\n \t\t\t\t\ttry {\n \t\t\t\t\t\titem.errorHandler(err);\n \t\t\t\t\t} catch (err2) {\n \t\t\t\t\t\tif (options.onErrored) {\n \t\t\t\t\t\t\toptions.onErrored({\n \t\t\t\t\t\t\t\ttype: \"self-accept-error-handler-errored\",\n \t\t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\t\terror: err2,\n \t\t\t\t\t\t\t\toriginalError: err\n \t\t\t\t\t\t\t});\n \t\t\t\t\t\t}\n \t\t\t\t\t\tif (!options.ignoreErrored) {\n \t\t\t\t\t\t\tif (!error) error = err2;\n \t\t\t\t\t\t}\n \t\t\t\t\t\tif (!error) error = err;\n \t\t\t\t\t}\n \t\t\t\t} else {\n \t\t\t\t\tif (options.onErrored) {\n \t\t\t\t\t\toptions.onErrored({\n \t\t\t\t\t\t\ttype: \"self-accept-errored\",\n \t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\terror: err\n \t\t\t\t\t\t});\n \t\t\t\t\t}\n \t\t\t\t\tif (!options.ignoreErrored) {\n \t\t\t\t\t\tif (!error) error = err;\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// handle errors in accept handlers and self accepted module load\n \t\tif (error) {\n \t\t\thotSetStatus(\"fail\");\n \t\t\treturn Promise.reject(error);\n \t\t}\n\n \t\tif (hotQueuedInvalidatedModules) {\n \t\t\treturn hotApplyInternal(options).then(function(list) {\n \t\t\t\toutdatedModules.forEach(function(moduleId) {\n \t\t\t\t\tif (list.indexOf(moduleId) < 0) list.push(moduleId);\n \t\t\t\t});\n \t\t\t\treturn list;\n \t\t\t});\n \t\t}\n\n \t\thotSetStatus(\"idle\");\n \t\treturn new Promise(function(resolve) {\n \t\t\tresolve(outdatedModules);\n \t\t});\n \t}\n\n \tfunction hotApplyInvalidatedModules() {\n \t\tif (hotQueuedInvalidatedModules) {\n \t\t\tif (!hotUpdate) hotUpdate = {};\n \t\t\thotQueuedInvalidatedModules.forEach(hotApplyInvalidatedModule);\n \t\t\thotQueuedInvalidatedModules = undefined;\n \t\t\treturn true;\n \t\t}\n \t}\n\n \tfunction hotApplyInvalidatedModule(moduleId) {\n \t\tif (!Object.prototype.hasOwnProperty.call(hotUpdate, moduleId))\n \t\t\thotUpdate[moduleId] = modules[moduleId];\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {},\n \t\t\thot: hotCreateModule(moduleId),\n \t\t\tparents: (hotCurrentParentsTemp = hotCurrentParents, hotCurrentParents = [], hotCurrentParentsTemp),\n \t\t\tchildren: []\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, hotCreateRequire(moduleId));\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// __webpack_hash__\n \t__webpack_require__.h = function() { return hotCurrentHash; };\n\n\n \t// Load entry module and return exports\n \treturn hotCreateRequire(109)(__webpack_require__.s = 109);\n","export default function _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}","/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n  if (tag.sheet) {\n    // $FlowFixMe\n    return tag.sheet;\n  } // this weirdness brought to you by firefox\n\n  /* istanbul ignore next */\n\n\n  for (var i = 0; i < document.styleSheets.length; i++) {\n    if (document.styleSheets[i].ownerNode === tag) {\n      // $FlowFixMe\n      return document.styleSheets[i];\n    }\n  }\n}\n\nfunction createStyleElement(options) {\n  var tag = document.createElement('style');\n  tag.setAttribute('data-emotion', options.key);\n\n  if (options.nonce !== undefined) {\n    tag.setAttribute('nonce', options.nonce);\n  }\n\n  tag.appendChild(document.createTextNode(''));\n  return tag;\n}\n\nvar StyleSheet =\n/*#__PURE__*/\nfunction () {\n  function StyleSheet(options) {\n    this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n    this.tags = [];\n    this.ctr = 0;\n    this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n    this.key = options.key;\n    this.container = options.container;\n    this.before = null;\n  }\n\n  var _proto = StyleSheet.prototype;\n\n  _proto.insert = function insert(rule) {\n    // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n    // it's 1 in dev because we insert source maps that map a single rule to a location\n    // and you can only have one source map per style tag\n    if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n      var _tag = createStyleElement(this);\n\n      var before;\n\n      if (this.tags.length === 0) {\n        before = this.before;\n      } else {\n        before = this.tags[this.tags.length - 1].nextSibling;\n      }\n\n      this.container.insertBefore(_tag, before);\n      this.tags.push(_tag);\n    }\n\n    var tag = this.tags[this.tags.length - 1];\n\n    if (this.isSpeedy) {\n      var sheet = sheetForTag(tag);\n\n      try {\n        // this is a really hot path\n        // we check the second character first because having \"i\"\n        // as the second character will happen less often than\n        // having \"@\" as the first character\n        var isImportRule = rule.charCodeAt(1) === 105 && rule.charCodeAt(0) === 64; // this is the ultrafast version, works across browsers\n        // the big drawback is that the css won't be editable in devtools\n\n        sheet.insertRule(rule, // we need to insert @import rules before anything else\n        // otherwise there will be an error\n        // technically this means that the @import rules will\n        // _usually_(not always since there could be multiple style tags)\n        // be the first ones in prod and generally later in dev\n        // this shouldn't really matter in the real world though\n        // @import is generally only used for font faces from google fonts and etc.\n        // so while this could be technically correct then it would be slower and larger\n        // for a tiny bit of correctness that won't matter in the real world\n        isImportRule ? 0 : sheet.cssRules.length);\n      } catch (e) {\n        if (process.env.NODE_ENV !== 'production') {\n          console.warn(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n        }\n      }\n    } else {\n      tag.appendChild(document.createTextNode(rule));\n    }\n\n    this.ctr++;\n  };\n\n  _proto.flush = function flush() {\n    // $FlowFixMe\n    this.tags.forEach(function (tag) {\n      return tag.parentNode.removeChild(tag);\n    });\n    this.tags = [];\n    this.ctr = 0;\n  };\n\n  return StyleSheet;\n}();\n\nexport { StyleSheet };\n","function stylis_min (W) {\n  function M(d, c, e, h, a) {\n    for (var m = 0, b = 0, v = 0, n = 0, q, g, x = 0, K = 0, k, u = k = q = 0, l = 0, r = 0, I = 0, t = 0, B = e.length, J = B - 1, y, f = '', p = '', F = '', G = '', C; l < B;) {\n      g = e.charCodeAt(l);\n      l === J && 0 !== b + n + v + m && (0 !== b && (g = 47 === b ? 10 : 47), n = v = m = 0, B++, J++);\n\n      if (0 === b + n + v + m) {\n        if (l === J && (0 < r && (f = f.replace(N, '')), 0 < f.trim().length)) {\n          switch (g) {\n            case 32:\n            case 9:\n            case 59:\n            case 13:\n            case 10:\n              break;\n\n            default:\n              f += e.charAt(l);\n          }\n\n          g = 59;\n        }\n\n        switch (g) {\n          case 123:\n            f = f.trim();\n            q = f.charCodeAt(0);\n            k = 1;\n\n            for (t = ++l; l < B;) {\n              switch (g = e.charCodeAt(l)) {\n                case 123:\n                  k++;\n                  break;\n\n                case 125:\n                  k--;\n                  break;\n\n                case 47:\n                  switch (g = e.charCodeAt(l + 1)) {\n                    case 42:\n                    case 47:\n                      a: {\n                        for (u = l + 1; u < J; ++u) {\n                          switch (e.charCodeAt(u)) {\n                            case 47:\n                              if (42 === g && 42 === e.charCodeAt(u - 1) && l + 2 !== u) {\n                                l = u + 1;\n                                break a;\n                              }\n\n                              break;\n\n                            case 10:\n                              if (47 === g) {\n                                l = u + 1;\n                                break a;\n                              }\n\n                          }\n                        }\n\n                        l = u;\n                      }\n\n                  }\n\n                  break;\n\n                case 91:\n                  g++;\n\n                case 40:\n                  g++;\n\n                case 34:\n                case 39:\n                  for (; l++ < J && e.charCodeAt(l) !== g;) {\n                  }\n\n              }\n\n              if (0 === k) break;\n              l++;\n            }\n\n            k = e.substring(t, l);\n            0 === q && (q = (f = f.replace(ca, '').trim()).charCodeAt(0));\n\n            switch (q) {\n              case 64:\n                0 < r && (f = f.replace(N, ''));\n                g = f.charCodeAt(1);\n\n                switch (g) {\n                  case 100:\n                  case 109:\n                  case 115:\n                  case 45:\n                    r = c;\n                    break;\n\n                  default:\n                    r = O;\n                }\n\n                k = M(c, r, k, g, a + 1);\n                t = k.length;\n                0 < A && (r = X(O, f, I), C = H(3, k, r, c, D, z, t, g, a, h), f = r.join(''), void 0 !== C && 0 === (t = (k = C.trim()).length) && (g = 0, k = ''));\n                if (0 < t) switch (g) {\n                  case 115:\n                    f = f.replace(da, ea);\n\n                  case 100:\n                  case 109:\n                  case 45:\n                    k = f + '{' + k + '}';\n                    break;\n\n                  case 107:\n                    f = f.replace(fa, '$1 $2');\n                    k = f + '{' + k + '}';\n                    k = 1 === w || 2 === w && L('@' + k, 3) ? '@-webkit-' + k + '@' + k : '@' + k;\n                    break;\n\n                  default:\n                    k = f + k, 112 === h && (k = (p += k, ''));\n                } else k = '';\n                break;\n\n              default:\n                k = M(c, X(c, f, I), k, h, a + 1);\n            }\n\n            F += k;\n            k = I = r = u = q = 0;\n            f = '';\n            g = e.charCodeAt(++l);\n            break;\n\n          case 125:\n          case 59:\n            f = (0 < r ? f.replace(N, '') : f).trim();\n            if (1 < (t = f.length)) switch (0 === u && (q = f.charCodeAt(0), 45 === q || 96 < q && 123 > q) && (t = (f = f.replace(' ', ':')).length), 0 < A && void 0 !== (C = H(1, f, c, d, D, z, p.length, h, a, h)) && 0 === (t = (f = C.trim()).length) && (f = '\\x00\\x00'), q = f.charCodeAt(0), g = f.charCodeAt(1), q) {\n              case 0:\n                break;\n\n              case 64:\n                if (105 === g || 99 === g) {\n                  G += f + e.charAt(l);\n                  break;\n                }\n\n              default:\n                58 !== f.charCodeAt(t - 1) && (p += P(f, q, g, f.charCodeAt(2)));\n            }\n            I = r = u = q = 0;\n            f = '';\n            g = e.charCodeAt(++l);\n        }\n      }\n\n      switch (g) {\n        case 13:\n        case 10:\n          47 === b ? b = 0 : 0 === 1 + q && 107 !== h && 0 < f.length && (r = 1, f += '\\x00');\n          0 < A * Y && H(0, f, c, d, D, z, p.length, h, a, h);\n          z = 1;\n          D++;\n          break;\n\n        case 59:\n        case 125:\n          if (0 === b + n + v + m) {\n            z++;\n            break;\n          }\n\n        default:\n          z++;\n          y = e.charAt(l);\n\n          switch (g) {\n            case 9:\n            case 32:\n              if (0 === n + m + b) switch (x) {\n                case 44:\n                case 58:\n                case 9:\n                case 32:\n                  y = '';\n                  break;\n\n                default:\n                  32 !== g && (y = ' ');\n              }\n              break;\n\n            case 0:\n              y = '\\\\0';\n              break;\n\n            case 12:\n              y = '\\\\f';\n              break;\n\n            case 11:\n              y = '\\\\v';\n              break;\n\n            case 38:\n              0 === n + b + m && (r = I = 1, y = '\\f' + y);\n              break;\n\n            case 108:\n              if (0 === n + b + m + E && 0 < u) switch (l - u) {\n                case 2:\n                  112 === x && 58 === e.charCodeAt(l - 3) && (E = x);\n\n                case 8:\n                  111 === K && (E = K);\n              }\n              break;\n\n            case 58:\n              0 === n + b + m && (u = l);\n              break;\n\n            case 44:\n              0 === b + v + n + m && (r = 1, y += '\\r');\n              break;\n\n            case 34:\n            case 39:\n              0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n              break;\n\n            case 91:\n              0 === n + b + v && m++;\n              break;\n\n            case 93:\n              0 === n + b + v && m--;\n              break;\n\n            case 41:\n              0 === n + b + m && v--;\n              break;\n\n            case 40:\n              if (0 === n + b + m) {\n                if (0 === q) switch (2 * x + 3 * K) {\n                  case 533:\n                    break;\n\n                  default:\n                    q = 1;\n                }\n                v++;\n              }\n\n              break;\n\n            case 64:\n              0 === b + v + n + m + u + k && (k = 1);\n              break;\n\n            case 42:\n            case 47:\n              if (!(0 < n + m + v)) switch (b) {\n                case 0:\n                  switch (2 * g + 3 * e.charCodeAt(l + 1)) {\n                    case 235:\n                      b = 47;\n                      break;\n\n                    case 220:\n                      t = l, b = 42;\n                  }\n\n                  break;\n\n                case 42:\n                  47 === g && 42 === x && t + 2 !== l && (33 === e.charCodeAt(t + 2) && (p += e.substring(t, l + 1)), y = '', b = 0);\n              }\n          }\n\n          0 === b && (f += y);\n      }\n\n      K = x;\n      x = g;\n      l++;\n    }\n\n    t = p.length;\n\n    if (0 < t) {\n      r = c;\n      if (0 < A && (C = H(2, p, r, d, D, z, t, h, a, h), void 0 !== C && 0 === (p = C).length)) return G + p + F;\n      p = r.join(',') + '{' + p + '}';\n\n      if (0 !== w * E) {\n        2 !== w || L(p, 2) || (E = 0);\n\n        switch (E) {\n          case 111:\n            p = p.replace(ha, ':-moz-$1') + p;\n            break;\n\n          case 112:\n            p = p.replace(Q, '::-webkit-input-$1') + p.replace(Q, '::-moz-$1') + p.replace(Q, ':-ms-input-$1') + p;\n        }\n\n        E = 0;\n      }\n    }\n\n    return G + p + F;\n  }\n\n  function X(d, c, e) {\n    var h = c.trim().split(ia);\n    c = h;\n    var a = h.length,\n        m = d.length;\n\n    switch (m) {\n      case 0:\n      case 1:\n        var b = 0;\n\n        for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n          c[b] = Z(d, c[b], e).trim();\n        }\n\n        break;\n\n      default:\n        var v = b = 0;\n\n        for (c = []; b < a; ++b) {\n          for (var n = 0; n < m; ++n) {\n            c[v++] = Z(d[n] + ' ', h[b], e).trim();\n          }\n        }\n\n    }\n\n    return c;\n  }\n\n  function Z(d, c, e) {\n    var h = c.charCodeAt(0);\n    33 > h && (h = (c = c.trim()).charCodeAt(0));\n\n    switch (h) {\n      case 38:\n        return c.replace(F, '$1' + d.trim());\n\n      case 58:\n        return d.trim() + c.replace(F, '$1' + d.trim());\n\n      default:\n        if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n    }\n\n    return d + c;\n  }\n\n  function P(d, c, e, h) {\n    var a = d + ';',\n        m = 2 * c + 3 * e + 4 * h;\n\n    if (944 === m) {\n      d = a.indexOf(':', 9) + 1;\n      var b = a.substring(d, a.length - 1).trim();\n      b = a.substring(0, d).trim() + b + ';';\n      return 1 === w || 2 === w && L(b, 1) ? '-webkit-' + b + b : b;\n    }\n\n    if (0 === w || 2 === w && !L(a, 1)) return a;\n\n    switch (m) {\n      case 1015:\n        return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n\n      case 951:\n        return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n\n      case 963:\n        return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n\n      case 1009:\n        if (100 !== a.charCodeAt(4)) break;\n\n      case 969:\n      case 942:\n        return '-webkit-' + a + a;\n\n      case 978:\n        return '-webkit-' + a + '-moz-' + a + a;\n\n      case 1019:\n      case 983:\n        return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n\n      case 883:\n        if (45 === a.charCodeAt(8)) return '-webkit-' + a + a;\n        if (0 < a.indexOf('image-set(', 11)) return a.replace(ja, '$1-webkit-$2') + a;\n        break;\n\n      case 932:\n        if (45 === a.charCodeAt(4)) switch (a.charCodeAt(5)) {\n          case 103:\n            return '-webkit-box-' + a.replace('-grow', '') + '-webkit-' + a + '-ms-' + a.replace('grow', 'positive') + a;\n\n          case 115:\n            return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n\n          case 98:\n            return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n        }\n        return '-webkit-' + a + '-ms-' + a + a;\n\n      case 964:\n        return '-webkit-' + a + '-ms-flex-' + a + a;\n\n      case 1023:\n        if (99 !== a.charCodeAt(8)) break;\n        b = a.substring(a.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n        return '-webkit-box-pack' + b + '-webkit-' + a + '-ms-flex-pack' + b + a;\n\n      case 1005:\n        return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n\n      case 1e3:\n        b = a.substring(13).trim();\n        c = b.indexOf('-') + 1;\n\n        switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n          case 226:\n            b = a.replace(G, 'tb');\n            break;\n\n          case 232:\n            b = a.replace(G, 'tb-rl');\n            break;\n\n          case 220:\n            b = a.replace(G, 'lr');\n            break;\n\n          default:\n            return a;\n        }\n\n        return '-webkit-' + a + '-ms-' + b + a;\n\n      case 1017:\n        if (-1 === a.indexOf('sticky', 9)) break;\n\n      case 975:\n        c = (a = d).length - 10;\n        b = (33 === a.charCodeAt(c) ? a.substring(0, c) : a).substring(d.indexOf(':', 7) + 1).trim();\n\n        switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n          case 203:\n            if (111 > b.charCodeAt(8)) break;\n\n          case 115:\n            a = a.replace(b, '-webkit-' + b) + ';' + a;\n            break;\n\n          case 207:\n          case 102:\n            a = a.replace(b, '-webkit-' + (102 < m ? 'inline-' : '') + 'box') + ';' + a.replace(b, '-webkit-' + b) + ';' + a.replace(b, '-ms-' + b + 'box') + ';' + a;\n        }\n\n        return a + ';';\n\n      case 938:\n        if (45 === a.charCodeAt(5)) switch (a.charCodeAt(6)) {\n          case 105:\n            return b = a.replace('-items', ''), '-webkit-' + a + '-webkit-box-' + b + '-ms-flex-' + b + a;\n\n          case 115:\n            return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n\n          default:\n            return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n        }\n        break;\n\n      case 973:\n      case 989:\n        if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n\n      case 931:\n      case 953:\n        if (!0 === la.test(d)) return 115 === (b = d.substring(d.indexOf(':') + 1)).charCodeAt(0) ? P(d.replace('stretch', 'fill-available'), c, e, h).replace(':fill-available', ':stretch') : a.replace(b, '-webkit-' + b) + a.replace(b, '-moz-' + b.replace('fill-', '')) + a;\n        break;\n\n      case 962:\n        if (a = '-webkit-' + a + (102 === a.charCodeAt(5) ? '-ms-' + a : '') + a, 211 === e + h && 105 === a.charCodeAt(13) && 0 < a.indexOf('transform', 10)) return a.substring(0, a.indexOf(';', 27) + 1).replace(ma, '$1-webkit-$2') + a;\n    }\n\n    return a;\n  }\n\n  function L(d, c) {\n    var e = d.indexOf(1 === c ? ':' : '{'),\n        h = d.substring(0, 3 !== c ? e : 10);\n    e = d.substring(e + 1, d.length - 1);\n    return R(2 !== c ? h : h.replace(na, '$1'), e, c);\n  }\n\n  function ea(d, c) {\n    var e = P(c, c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2));\n    return e !== c + ';' ? e.replace(oa, ' or ($1)').substring(4) : '(' + c + ')';\n  }\n\n  function H(d, c, e, h, a, m, b, v, n, q) {\n    for (var g = 0, x = c, w; g < A; ++g) {\n      switch (w = S[g].call(B, d, x, e, h, a, m, b, v, n, q)) {\n        case void 0:\n        case !1:\n        case !0:\n        case null:\n          break;\n\n        default:\n          x = w;\n      }\n    }\n\n    if (x !== c) return x;\n  }\n\n  function T(d) {\n    switch (d) {\n      case void 0:\n      case null:\n        A = S.length = 0;\n        break;\n\n      default:\n        if ('function' === typeof d) S[A++] = d;else if ('object' === typeof d) for (var c = 0, e = d.length; c < e; ++c) {\n          T(d[c]);\n        } else Y = !!d | 0;\n    }\n\n    return T;\n  }\n\n  function U(d) {\n    d = d.prefix;\n    void 0 !== d && (R = null, d ? 'function' !== typeof d ? w = 1 : (w = 2, R = d) : w = 0);\n    return U;\n  }\n\n  function B(d, c) {\n    var e = d;\n    33 > e.charCodeAt(0) && (e = e.trim());\n    V = e;\n    e = [V];\n\n    if (0 < A) {\n      var h = H(-1, c, e, e, D, z, 0, 0, 0, 0);\n      void 0 !== h && 'string' === typeof h && (c = h);\n    }\n\n    var a = M(O, e, c, 0, 0);\n    0 < A && (h = H(-2, a, e, e, D, z, a.length, 0, 0, 0), void 0 !== h && (a = h));\n    V = '';\n    E = 0;\n    z = D = 1;\n    return a;\n  }\n\n  var ca = /^\\0+/g,\n      N = /[\\0\\r\\f]/g,\n      aa = /: */g,\n      ka = /zoo|gra/,\n      ma = /([,: ])(transform)/g,\n      ia = /,\\r+?/g,\n      F = /([\\t\\r\\n ])*\\f?&/g,\n      fa = /@(k\\w+)\\s*(\\S*)\\s*/,\n      Q = /::(place)/g,\n      ha = /:(read-only)/g,\n      G = /[svh]\\w+-[tblr]{2}/,\n      da = /\\(\\s*(.*)\\s*\\)/g,\n      oa = /([\\s\\S]*?);/g,\n      ba = /-self|flex-/g,\n      na = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n      la = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n      ja = /([^-])(image-set\\()/,\n      z = 1,\n      D = 1,\n      E = 0,\n      w = 1,\n      O = [],\n      S = [],\n      A = 0,\n      R = null,\n      Y = 0,\n      V = '';\n  B.use = T;\n  B.set = U;\n  void 0 !== W && U(W);\n  return B;\n}\n\nexport default stylis_min;\n","import { StyleSheet } from '@emotion/sheet';\nimport Stylis from '@emotion/stylis';\nimport '@emotion/weak-memoize';\n\n// https://github.com/thysultan/stylis.js/tree/master/plugins/rule-sheet\n// inlined to avoid umd wrapper and peerDep warnings/installing stylis\n// since we use stylis after closure compiler\nvar delimiter = '/*|*/';\nvar needle = delimiter + '}';\n\nfunction toSheet(block) {\n  if (block) {\n    Sheet.current.insert(block + '}');\n  }\n}\n\nvar Sheet = {\n  current: null\n};\nvar ruleSheet = function ruleSheet(context, content, selectors, parents, line, column, length, ns, depth, at) {\n  switch (context) {\n    // property\n    case 1:\n      {\n        switch (content.charCodeAt(0)) {\n          case 64:\n            {\n              // @import\n              Sheet.current.insert(content + ';');\n              return '';\n            }\n          // charcode for l\n\n          case 108:\n            {\n              // charcode for b\n              // this ignores label\n              if (content.charCodeAt(2) === 98) {\n                return '';\n              }\n            }\n        }\n\n        break;\n      }\n    // selector\n\n    case 2:\n      {\n        if (ns === 0) return content + delimiter;\n        break;\n      }\n    // at-rule\n\n    case 3:\n      {\n        switch (ns) {\n          // @font-face, @page\n          case 102:\n          case 112:\n            {\n              Sheet.current.insert(selectors[0] + content);\n              return '';\n            }\n\n          default:\n            {\n              return content + (at === 0 ? delimiter : '');\n            }\n        }\n      }\n\n    case -2:\n      {\n        content.split(needle).forEach(toSheet);\n      }\n  }\n};\n\nvar createCache = function createCache(options) {\n  if (options === undefined) options = {};\n  var key = options.key || 'css';\n  var stylisOptions;\n\n  if (options.prefix !== undefined) {\n    stylisOptions = {\n      prefix: options.prefix\n    };\n  }\n\n  var stylis = new Stylis(stylisOptions);\n\n  if (process.env.NODE_ENV !== 'production') {\n    // $FlowFixMe\n    if (/[^a-z-]/.test(key)) {\n      throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n    }\n  }\n\n  var inserted = {}; // $FlowFixMe\n\n  var container;\n\n  {\n    container = options.container || document.head;\n    var nodes = document.querySelectorAll(\"style[data-emotion-\" + key + \"]\");\n    Array.prototype.forEach.call(nodes, function (node) {\n      var attrib = node.getAttribute(\"data-emotion-\" + key); // $FlowFixMe\n\n      attrib.split(' ').forEach(function (id) {\n        inserted[id] = true;\n      });\n\n      if (node.parentNode !== container) {\n        container.appendChild(node);\n      }\n    });\n  }\n\n  var _insert;\n\n  {\n    stylis.use(options.stylisPlugins)(ruleSheet);\n\n    _insert = function insert(selector, serialized, sheet, shouldCache) {\n      var name = serialized.name;\n      Sheet.current = sheet;\n\n      if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n        var map = serialized.map;\n        Sheet.current = {\n          insert: function insert(rule) {\n            sheet.insert(rule + map);\n          }\n        };\n      }\n\n      stylis(selector, serialized.styles);\n\n      if (shouldCache) {\n        cache.inserted[name] = true;\n      }\n    };\n  }\n\n  if (process.env.NODE_ENV !== 'production') {\n    // https://esbench.com/bench/5bf7371a4cd7e6009ef61d0a\n    var commentStart = /\\/\\*/g;\n    var commentEnd = /\\*\\//g;\n    stylis.use(function (context, content) {\n      switch (context) {\n        case -1:\n          {\n            while (commentStart.test(content)) {\n              commentEnd.lastIndex = commentStart.lastIndex;\n\n              if (commentEnd.test(content)) {\n                commentStart.lastIndex = commentEnd.lastIndex;\n                continue;\n              }\n\n              throw new Error('Your styles have an unterminated comment (\"/*\" without corresponding \"*/\").');\n            }\n\n            commentStart.lastIndex = 0;\n            break;\n          }\n      }\n    });\n    stylis.use(function (context, content, selectors) {\n      switch (context) {\n        case -1:\n          {\n            var flag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n            var unsafePseudoClasses = content.match(/(:first|:nth|:nth-last)-child/g);\n\n            if (unsafePseudoClasses && cache.compat !== true) {\n              unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n                var ignoreRegExp = new RegExp(unsafePseudoClass + \".*\\\\/\\\\* \" + flag + \" \\\\*\\\\/\");\n                var ignore = ignoreRegExp.test(content);\n\n                if (unsafePseudoClass && !ignore) {\n                  console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n                }\n              });\n            }\n\n            break;\n          }\n      }\n    });\n  }\n\n  var cache = {\n    key: key,\n    sheet: new StyleSheet({\n      key: key,\n      container: container,\n      nonce: options.nonce,\n      speedy: options.speedy\n    }),\n    nonce: options.nonce,\n    inserted: inserted,\n    registered: {},\n    insert: _insert\n  };\n  return cache;\n};\n\nexport default createCache;\n","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n  var rawClassName = '';\n  classNames.split(' ').forEach(function (className) {\n    if (registered[className] !== undefined) {\n      registeredStyles.push(registered[className]);\n    } else {\n      rawClassName += className + \" \";\n    }\n  });\n  return rawClassName;\n}\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n  var className = cache.key + \"-\" + serialized.name;\n\n  if ( // we only need to add the styles to the registered cache if the\n  // class name could be used further down\n  // the tree but if it's a string tag, we know it won't\n  // so we don't have to add it to registered cache.\n  // this improves memory usage since we can avoid storing the whole style string\n  (isStringTag === false || // we need to always store it if we're in compat mode and\n  // in node since emotion-server relies on whether a style is in\n  // the registered cache to know whether a style is global or not\n  // also, note that this check will be dead code eliminated in the browser\n  isBrowser === false && cache.compat !== undefined) && cache.registered[className] === undefined) {\n    cache.registered[className] = serialized.styles;\n  }\n\n  if (cache.inserted[serialized.name] === undefined) {\n    var current = serialized;\n\n    do {\n      var maybeStyles = cache.insert(\".\" + className, current, cache.sheet, true);\n\n      current = current.next;\n    } while (current !== undefined);\n  }\n};\n\nexport { getRegisteredStyles, insertStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n  // 'm' and 'r' are mixing constants generated offline.\n  // They're not really 'magic', they just happen to work well.\n  // const m = 0x5bd1e995;\n  // const r = 24;\n  // Initialize the hash\n  var h = 0; // Mix 4 bytes at a time into the hash\n\n  var k,\n      i = 0,\n      len = str.length;\n\n  for (; len >= 4; ++i, len -= 4) {\n    k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n    k =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n    k ^=\n    /* k >>> r: */\n    k >>> 24;\n    h =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n    /* Math.imul(h, m): */\n    (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Handle the last few bytes of the input array\n\n\n  switch (len) {\n    case 3:\n      h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n    case 2:\n      h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n    case 1:\n      h ^= str.charCodeAt(i) & 0xff;\n      h =\n      /* Math.imul(h, m): */\n      (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Do a few final mixes of the hash to ensure the last few\n  // bytes are well-incorporated.\n\n\n  h ^= h >>> 13;\n  h =\n  /* Math.imul(h, m): */\n  (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport default murmur2;\n","var unitlessKeys = {\n  animationIterationCount: 1,\n  borderImageOutset: 1,\n  borderImageSlice: 1,\n  borderImageWidth: 1,\n  boxFlex: 1,\n  boxFlexGroup: 1,\n  boxOrdinalGroup: 1,\n  columnCount: 1,\n  columns: 1,\n  flex: 1,\n  flexGrow: 1,\n  flexPositive: 1,\n  flexShrink: 1,\n  flexNegative: 1,\n  flexOrder: 1,\n  gridRow: 1,\n  gridRowEnd: 1,\n  gridRowSpan: 1,\n  gridRowStart: 1,\n  gridColumn: 1,\n  gridColumnEnd: 1,\n  gridColumnSpan: 1,\n  gridColumnStart: 1,\n  msGridRow: 1,\n  msGridRowSpan: 1,\n  msGridColumn: 1,\n  msGridColumnSpan: 1,\n  fontWeight: 1,\n  lineHeight: 1,\n  opacity: 1,\n  order: 1,\n  orphans: 1,\n  tabSize: 1,\n  widows: 1,\n  zIndex: 1,\n  zoom: 1,\n  WebkitLineClamp: 1,\n  // SVG-related properties\n  fillOpacity: 1,\n  floodOpacity: 1,\n  stopOpacity: 1,\n  strokeDasharray: 1,\n  strokeDashoffset: 1,\n  strokeMiterlimit: 1,\n  strokeOpacity: 1,\n  strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","function memoize(fn) {\n  var cache = {};\n  return function (arg) {\n    if (cache[arg] === undefined) cache[arg] = fn(arg);\n    return cache[arg];\n  };\n}\n\nexport default memoize;\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n  return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n  return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = memoize(function (styleName) {\n  return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n  switch (key) {\n    case 'animation':\n    case 'animationName':\n      {\n        if (typeof value === 'string') {\n          return value.replace(animationRegex, function (match, p1, p2) {\n            cursor = {\n              name: p1,\n              styles: p2,\n              next: cursor\n            };\n            return p1;\n          });\n        }\n      }\n  }\n\n  if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n    return value + 'px';\n  }\n\n  return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n  var contentValuePattern = /(attr|calc|counters?|url)\\(/;\n  var contentValues = ['normal', 'none', 'counter', 'open-quote', 'close-quote', 'no-open-quote', 'no-close-quote', 'initial', 'inherit', 'unset'];\n  var oldProcessStyleValue = processStyleValue;\n  var msPattern = /^-ms-/;\n  var hyphenPattern = /-(.)/g;\n  var hyphenatedCache = {};\n\n  processStyleValue = function processStyleValue(key, value) {\n    if (key === 'content') {\n      if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n        console.error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n      }\n    }\n\n    var processed = oldProcessStyleValue(key, value);\n\n    if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n      hyphenatedCache[key] = true;\n      console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n        return _char.toUpperCase();\n      }) + \"?\");\n    }\n\n    return processed;\n  };\n}\n\nvar shouldWarnAboutInterpolatingClassNameFromCss = true;\n\nfunction handleInterpolation(mergedProps, registered, interpolation, couldBeSelectorInterpolation) {\n  if (interpolation == null) {\n    return '';\n  }\n\n  if (interpolation.__emotion_styles !== undefined) {\n    if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n      throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n    }\n\n    return interpolation;\n  }\n\n  switch (typeof interpolation) {\n    case 'boolean':\n      {\n        return '';\n      }\n\n    case 'object':\n      {\n        if (interpolation.anim === 1) {\n          cursor = {\n            name: interpolation.name,\n            styles: interpolation.styles,\n            next: cursor\n          };\n          return interpolation.name;\n        }\n\n        if (interpolation.styles !== undefined) {\n          var next = interpolation.next;\n\n          if (next !== undefined) {\n            // not the most efficient thing ever but this is a pretty rare case\n            // and there will be very few iterations of this generally\n            while (next !== undefined) {\n              cursor = {\n                name: next.name,\n                styles: next.styles,\n                next: cursor\n              };\n              next = next.next;\n            }\n          }\n\n          var styles = interpolation.styles + \";\";\n\n          if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n            styles += interpolation.map;\n          }\n\n          return styles;\n        }\n\n        return createStringFromObject(mergedProps, registered, interpolation);\n      }\n\n    case 'function':\n      {\n        if (mergedProps !== undefined) {\n          var previousCursor = cursor;\n          var result = interpolation(mergedProps);\n          cursor = previousCursor;\n          return handleInterpolation(mergedProps, registered, result, couldBeSelectorInterpolation);\n        } else if (process.env.NODE_ENV !== 'production') {\n          console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n        }\n\n        break;\n      }\n\n    case 'string':\n      if (process.env.NODE_ENV !== 'production') {\n        var matched = [];\n        var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n          var fakeVarName = \"animation\" + matched.length;\n          matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n          return \"${\" + fakeVarName + \"}\";\n        });\n\n        if (matched.length) {\n          console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n        }\n      }\n\n      break;\n  } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n  if (registered == null) {\n    return interpolation;\n  }\n\n  var cached = registered[interpolation];\n\n  if (process.env.NODE_ENV !== 'production' && couldBeSelectorInterpolation && shouldWarnAboutInterpolatingClassNameFromCss && cached !== undefined) {\n    console.error('Interpolating a className from css`` is not recommended and will cause problems with composition.\\n' + 'Interpolating a className from css`` will be completely unsupported in a future major version of Emotion');\n    shouldWarnAboutInterpolatingClassNameFromCss = false;\n  }\n\n  return cached !== undefined && !couldBeSelectorInterpolation ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n  var string = '';\n\n  if (Array.isArray(obj)) {\n    for (var i = 0; i < obj.length; i++) {\n      string += handleInterpolation(mergedProps, registered, obj[i], false);\n    }\n  } else {\n    for (var _key in obj) {\n      var value = obj[_key];\n\n      if (typeof value !== 'object') {\n        if (registered != null && registered[value] !== undefined) {\n          string += _key + \"{\" + registered[value] + \"}\";\n        } else if (isProcessableValue(value)) {\n          string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n        }\n      } else {\n        if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n          throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n        }\n\n        if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n          for (var _i = 0; _i < value.length; _i++) {\n            if (isProcessableValue(value[_i])) {\n              string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n            }\n          }\n        } else {\n          var interpolated = handleInterpolation(mergedProps, registered, value, false);\n\n          switch (_key) {\n            case 'animation':\n            case 'animationName':\n              {\n                string += processStyleName(_key) + \":\" + interpolated + \";\";\n                break;\n              }\n\n            default:\n              {\n                if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n                  console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n                }\n\n                string += _key + \"{\" + interpolated + \"}\";\n              }\n          }\n        }\n      }\n    }\n  }\n\n  return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*;/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n  sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n  if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n    return args[0];\n  }\n\n  var stringMode = true;\n  var styles = '';\n  cursor = undefined;\n  var strings = args[0];\n\n  if (strings == null || strings.raw === undefined) {\n    stringMode = false;\n    styles += handleInterpolation(mergedProps, registered, strings, false);\n  } else {\n    if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n      console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n    }\n\n    styles += strings[0];\n  } // we start at 1 since we've already handled the first arg\n\n\n  for (var i = 1; i < args.length; i++) {\n    styles += handleInterpolation(mergedProps, registered, args[i], styles.charCodeAt(styles.length - 1) === 46);\n\n    if (stringMode) {\n      if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n        console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n      }\n\n      styles += strings[i];\n    }\n  }\n\n  var sourceMap;\n\n  if (process.env.NODE_ENV !== 'production') {\n    styles = styles.replace(sourceMapPattern, function (match) {\n      sourceMap = match;\n      return '';\n    });\n  } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n  labelPattern.lastIndex = 0;\n  var identifierName = '';\n  var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n  while ((match = labelPattern.exec(styles)) !== null) {\n    identifierName += '-' + // $FlowFixMe we know it's not null\n    match[1];\n  }\n\n  var name = hashString(styles) + identifierName;\n\n  if (process.env.NODE_ENV !== 'production') {\n    // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n    return {\n      name: name,\n      styles: styles,\n      map: sourceMap,\n      next: cursor,\n      toString: function toString() {\n        return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n      }\n    };\n  }\n\n  return {\n    name: name,\n    styles: styles,\n    next: cursor\n  };\n};\n\nexport { serializeStyles };\n","import '@babel/runtime/helpers/inheritsLoose';\nimport { createContext, forwardRef, createElement } from 'react';\nimport createCache from '@emotion/cache';\nimport { getRegisteredStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar EmotionCacheContext = /*#__PURE__*/createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? createCache() : null);\nvar ThemeContext = /*#__PURE__*/createContext({});\nvar CacheProvider = EmotionCacheContext.Provider;\n\nvar withEmotionCache = function withEmotionCache(func) {\n  var render = function render(props, ref) {\n    return /*#__PURE__*/createElement(EmotionCacheContext.Consumer, null, function (cache) {\n      return func(props, cache, ref);\n    });\n  }; // $FlowFixMe\n\n\n  return /*#__PURE__*/forwardRef(render);\n};\n\n// thus we only need to replace what is a valid character for JS, but not for CSS\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n  return identifier.replace(/\\$/g, '-');\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n  if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n  props.css.indexOf(':') !== -1) {\n    throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/css' like this: css`\" + props.css + \"`\");\n  }\n\n  var newProps = {};\n\n  for (var key in props) {\n    if (hasOwnProperty.call(props, key)) {\n      newProps[key] = props[key];\n    }\n  }\n\n  newProps[typePropName] = type; // TODO: check if this still works with all of those different JSX functions\n\n  if (process.env.NODE_ENV !== 'production') {\n    var error = new Error();\n\n    if (error.stack) {\n      // chrome\n      var match = error.stack.match(/at (?:Object\\.|Module\\.|)(?:jsx|createEmotionProps).*\\n\\s+at (?:Object\\.|)([A-Z][A-Za-z$]+) /);\n\n      if (!match) {\n        // safari and firefox\n        match = error.stack.match(/.*\\n([A-Z][A-Za-z$]+)@/);\n      }\n\n      if (match) {\n        newProps[labelPropName] = sanitizeIdentifier(match[1]);\n      }\n    }\n  }\n\n  return newProps;\n};\n\nvar render = function render(cache, props, theme, ref) {\n  var cssProp = theme === null ? props.css : props.css(theme); // so that using `css` from `emotion` and passing the result to the css prop works\n  // not passing the registered cache to serializeStyles because it would\n  // make certain babel optimisations not possible\n\n  if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n    cssProp = cache.registered[cssProp];\n  }\n\n  var type = props[typePropName];\n  var registeredStyles = [cssProp];\n  var className = '';\n\n  if (typeof props.className === 'string') {\n    className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n  } else if (props.className != null) {\n    className = props.className + \" \";\n  }\n\n  var serialized = serializeStyles(registeredStyles);\n\n  if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n    var labelFromStack = props[labelPropName];\n\n    if (labelFromStack) {\n      serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n    }\n  }\n\n  var rules = insertStyles(cache, serialized, typeof type === 'string');\n  className += cache.key + \"-\" + serialized.name;\n  var newProps = {};\n\n  for (var key in props) {\n    if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n      newProps[key] = props[key];\n    }\n  }\n\n  newProps.ref = ref;\n  newProps.className = className;\n  var ele = /*#__PURE__*/createElement(type, newProps);\n\n  return ele;\n}; // eslint-disable-next-line no-undef\n\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n  if (typeof props.css === 'function') {\n    return /*#__PURE__*/createElement(ThemeContext.Consumer, null, function (theme) {\n      return render(cache, props, theme, ref);\n    });\n  }\n\n  return render(cache, props, null, ref);\n});\n\nif (process.env.NODE_ENV !== 'production') {\n  Emotion.displayName = 'EmotionCssPropInternal';\n}\n\nexport { CacheProvider as C, Emotion as E, ThemeContext as T, createEmotionProps as c, hasOwnProperty as h, withEmotionCache as w };\n","import { serializeStyles } from '@emotion/serialize';\n\nfunction css() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return serializeStyles(args);\n}\n\nexport default css;\n","import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport { createElement, Component } from 'react';\nimport '@emotion/cache';\nimport { h as hasOwnProperty, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext } from './emotion-element-57a3a7a3.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, w as withEmotionCache } from './emotion-element-57a3a7a3.browser.esm.js';\nimport { insertStyles, getRegisteredStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { StyleSheet } from '@emotion/sheet';\nimport css from '@emotion/css';\nexport { default as css } from '@emotion/css';\n\nvar jsx = function jsx(type, props) {\n  var args = arguments;\n\n  if (props == null || !hasOwnProperty.call(props, 'css')) {\n    // $FlowFixMe\n    return createElement.apply(undefined, args);\n  }\n\n  var argsLength = args.length;\n  var createElementArgArray = new Array(argsLength);\n  createElementArgArray[0] = Emotion;\n  createElementArgArray[1] = createEmotionProps(type, props);\n\n  for (var i = 2; i < argsLength; i++) {\n    createElementArgArray[i] = args[i];\n  } // $FlowFixMe\n\n\n  return createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false;\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n  if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n  // probably using the custom createElement which\n  // means it will be turned into a className prop\n  // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n  props.className || props.css)) {\n    console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n    warnedAboutCssPropForGlobal = true;\n  }\n\n  var styles = props.styles;\n\n  if (typeof styles === 'function') {\n    return /*#__PURE__*/createElement(ThemeContext.Consumer, null, function (theme) {\n      var serialized = serializeStyles([styles(theme)]);\n      return /*#__PURE__*/createElement(InnerGlobal, {\n        serialized: serialized,\n        cache: cache\n      });\n    });\n  }\n\n  var serialized = serializeStyles([styles]);\n  return /*#__PURE__*/createElement(InnerGlobal, {\n    serialized: serialized,\n    cache: cache\n  });\n});\n\n// maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\nvar InnerGlobal = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(InnerGlobal, _React$Component);\n\n  function InnerGlobal(props, context, updater) {\n    return _React$Component.call(this, props, context, updater) || this;\n  }\n\n  var _proto = InnerGlobal.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.sheet = new StyleSheet({\n      key: this.props.cache.key + \"-global\",\n      nonce: this.props.cache.sheet.nonce,\n      container: this.props.cache.sheet.container\n    }); // $FlowFixMe\n\n    var node = document.querySelector(\"style[data-emotion-\" + this.props.cache.key + \"=\\\"\" + this.props.serialized.name + \"\\\"]\");\n\n    if (node !== null) {\n      this.sheet.tags.push(node);\n    }\n\n    if (this.props.cache.sheet.tags.length) {\n      this.sheet.before = this.props.cache.sheet.tags[0];\n    }\n\n    this.insertStyles();\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    if (prevProps.serialized.name !== this.props.serialized.name) {\n      this.insertStyles();\n    }\n  };\n\n  _proto.insertStyles = function insertStyles$1() {\n    if (this.props.serialized.next !== undefined) {\n      // insert keyframes\n      insertStyles(this.props.cache, this.props.serialized.next, true);\n    }\n\n    if (this.sheet.tags.length) {\n      // if this doesn't exist then it will be null so the style element will be appended\n      var element = this.sheet.tags[this.sheet.tags.length - 1].nextElementSibling;\n      this.sheet.before = element;\n      this.sheet.flush();\n    }\n\n    this.props.cache.insert(\"\", this.props.serialized, this.sheet, false);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.sheet.flush();\n  };\n\n  _proto.render = function render() {\n\n    return null;\n  };\n\n  return InnerGlobal;\n}(Component);\n\nvar keyframes = function keyframes() {\n  var insertable = css.apply(void 0, arguments);\n  var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n  return {\n    name: name,\n    styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n    anim: 1,\n    toString: function toString() {\n      return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n    }\n  };\n};\n\nvar classnames = function classnames(args) {\n  var len = args.length;\n  var i = 0;\n  var cls = '';\n\n  for (; i < len; i++) {\n    var arg = args[i];\n    if (arg == null) continue;\n    var toAdd = void 0;\n\n    switch (typeof arg) {\n      case 'boolean':\n        break;\n\n      case 'object':\n        {\n          if (Array.isArray(arg)) {\n            toAdd = classnames(arg);\n          } else {\n            toAdd = '';\n\n            for (var k in arg) {\n              if (arg[k] && k) {\n                toAdd && (toAdd += ' ');\n                toAdd += k;\n              }\n            }\n          }\n\n          break;\n        }\n\n      default:\n        {\n          toAdd = arg;\n        }\n    }\n\n    if (toAdd) {\n      cls && (cls += ' ');\n      cls += toAdd;\n    }\n  }\n\n  return cls;\n};\n\nfunction merge(registered, css, className) {\n  var registeredStyles = [];\n  var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n  if (registeredStyles.length < 2) {\n    return className;\n  }\n\n  return rawClassName + css(registeredStyles);\n}\n\nvar ClassNames = withEmotionCache(function (props, context) {\n  return /*#__PURE__*/createElement(ThemeContext.Consumer, null, function (theme) {\n    var hasRendered = false;\n\n    var css = function css() {\n      if (hasRendered && process.env.NODE_ENV !== 'production') {\n        throw new Error('css can only be used during render');\n      }\n\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      var serialized = serializeStyles(args, context.registered);\n\n      {\n        insertStyles(context, serialized, false);\n      }\n\n      return context.key + \"-\" + serialized.name;\n    };\n\n    var cx = function cx() {\n      if (hasRendered && process.env.NODE_ENV !== 'production') {\n        throw new Error('cx can only be used during render');\n      }\n\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      return merge(context.registered, css, classnames(args));\n    };\n\n    var content = {\n      css: css,\n      cx: cx,\n      theme: theme\n    };\n    var ele = props.children(content);\n    hasRendered = true;\n\n    return ele;\n  });\n});\n\nexport { ClassNames, Global, jsx as createElement, jsx, keyframes };\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\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\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.min.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n","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","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\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\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/**\n * @file\n * Reusable proptypes\n */\n\nimport PropTypes from 'prop-types';\n\nexport const StringBoolPropType = PropTypes.oneOfType([PropTypes.string, PropTypes.bool]);\n\nexport const flagsPropType = PropTypes.shape({\n  prod: StringBoolPropType.isRequired,\n  errorReporting: StringBoolPropType.isRequired,\n  analytics: StringBoolPropType.isRequired,\n  googleAnalytics: StringBoolPropType.isRequired,\n  ads: StringBoolPropType.isRequired,\n  mainImage: StringBoolPropType.isRequired,\n  summary: StringBoolPropType.isRequired,\n  bylines: StringBoolPropType.isRequired,\n  onwardjourney: StringBoolPropType.isRequired,\n  shareButtons: StringBoolPropType.isRequired,\n  header: StringBoolPropType.isRequired,\n  footer: StringBoolPropType.isRequired,\n  comments: StringBoolPropType.isRequired,\n  data: StringBoolPropType.isRequired,\n  dark: StringBoolPropType.isRequired,\n});\n\nexport const mainImagePropType = PropTypes.oneOfType([\n  PropTypes.shape({\n    uuid: PropTypes.string.isRequired,\n  }),\n  PropTypes.shape({\n    url: PropTypes.string.isRequired,\n  }),\n]).isRequired;\n\nexport const trackingPropType = PropTypes.shape({\n  micrositeName: PropTypes.string,\n  product: PropTypes.string,\n});\n\nexport const topicPropType = PropTypes.shape({\n  url: PropTypes.string.isRequired,\n  name: PropTypes.string.isRequired,\n});\n\nexport const dataMetaPropType = PropTypes.shape({\n  '@context': PropTypes.oneOf(['https://schema.org/']),\n  '@type': PropTypes.oneOf(['Dataset']),\n  name: PropTypes.string.isRequired,\n  description: PropTypes.string.isRequired,\n  url: PropTypes.string.isRequired,\n  sameAs: PropTypes.string.isRequired,\n  keywords: PropTypes.arrayOf(PropTypes.string).isRequired,\n  creator: PropTypes.shape({\n    '@type': PropTypes.oneOf(['Organization']),\n    url: PropTypes.string.isRequired,\n    name: PropTypes.string.isRequired,\n    contactPoint: PropTypes.shape({\n      '@type': PropTypes.oneOf(['ContactPoint']),\n      contactType: PropTypes.string,\n      telephone: PropTypes.string,\n      email: PropTypes.string,\n    }),\n  }).isRequired,\n  includedInDataCatalog: PropTypes.shape({\n    '@type': PropTypes.oneOf(['DataCatalog']),\n    name: PropTypes.string.isRequired,\n  }),\n  distribution: PropTypes.arrayOf(\n    PropTypes.shape({\n      '@type': PropTypes.oneOf(['DataDownload']),\n      encodingFormat: PropTypes.string.isRequired,\n      contentUrl: PropTypes.string.isRequired,\n    }),\n  ),\n  // Dates the dataset covers\n  temporalCoverage: PropTypes.string.isRequired,\n  // Where the dataset covers. See spec.\n  spatialCoverage: PropTypes.shape({\n    '@type': PropTypes.oneOf(['Place']),\n    geo: PropTypes.shape({\n      '@type': PropTypes.oneOf(['GeoShape']),\n      box: PropTypes.string.isRequired,\n    }),\n  }),\n});\n\nexport const bylinesPropType = PropTypes.oneOfType([\n  PropTypes.string,\n  PropTypes.arrayOf(\n    PropTypes.shape({\n      name: PropTypes.string.isRequired,\n      url: PropTypes.string,\n      location: PropTypes.string,\n    }),\n  )\n]);\n\nexport default '';\n","/*!\n  Copyright (c) 2018 Jed Watson.\n  Licensed under the MIT License (MIT), see\n  http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.log = log;\nexports.isUndefined = exports.is = is;\nexports.merge = merge;\nexports.encode = encode;\nexports.decode = decode;\nexports.addEvent = addEvent;\nexports.broadcast = broadcast;\nexports.onPage = onPage;\nexports.triggerPage = triggerPage;\nexports.getValueFromCookie = getValueFromCookie;\nexports.getValueFromUrl = getValueFromUrl;\nexports.getValueFromJsVariable = getValueFromJsVariable;\nexports.sanitise = sanitise;\nexports.assignIfUndefined = assignIfUndefined;\nexports.whitelistProps = whitelistProps;\nObject.defineProperty(exports, \"guid\", {\n  enumerable: true,\n  get: function get() {\n    return _browserCuid.default;\n  }\n});\nexports.default = void 0;\n\nvar _settings = _interopRequireDefault(require(\"./core/settings\"));\n\nvar _browserCuid = _interopRequireDefault(require(\"../libs/browser-cuid\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Shared 'internal' scope.\n * @private\n */\n\n/**\n * CUID Generator\n */\n\n/**\n * Record of callbacks to call when a page is tracked.\n */\nvar page_callbacks = [];\n/**\n * Log messages to the browser console. Requires 'log' to be set on init.\n *\n * @param {*} List of objects to log\n * @return {undefined}\n */\n\nfunction log() {\n  if (_settings.default.get('developer') && window.console) {\n    for (var i = 0; i < arguments.length; i++) {\n      window.console.log(arguments[i]);\n    }\n  }\n}\n/**\n * Tests if variable is a certain type. Defaults to check for undefined if no type specified.\n *\n * @param {*} variable - The variable to check.\n * @param {string} type - The type to test for. Defaults to undefined.\n *\n * @return {boolean} - The answer for if the variable is of type.\n */\n\n\nfunction is(variable, type) {\n  if (!type) {\n    type = 'undefined';\n  }\n\n  return typeof variable === type;\n}\n/**\n * Merge objects together. Will remove undefined and null values.\n *\n * @param {Object} target - The original object to merge in to.\n * @param {Object} options - The object to merge into the target. If omitted, will merge target into a new empty Object.\n *\n * @return {Object} The merged object.\n */\n\n\nfunction merge(target, options) {\n  if (!options) {\n    options = target;\n    target = {};\n  }\n\n  var name;\n  var src;\n  var copy;\n  /* jshint -W089 */\n\n  /* eslint guard-for-in: 0 */\n\n  for (name in options) {\n    src = target[name];\n    copy = options[name]; // Prevent never-ending loop\n\n    if (target === copy) {\n      continue;\n    } // Gets rid of missing values too\n\n\n    if (typeof copy !== 'undefined' && copy !== null) {\n      target[name] = src === Object(src) && !is(src, 'function') ? merge(src, copy) : copy;\n    }\n  }\n  /* jshint +W089 */\n\n  /* jslint forin:true */\n\n\n  return target;\n}\n/**\n * URL encode a string.\n * @param {string} str - The string to be encoded.\n *\n * @return {string} The encoded string.\n */\n\n\nfunction encode(str) {\n  if (window.encodeURIComponent) {\n    return window.encodeURIComponent(str);\n  } else {\n    return window.escape(str);\n  }\n}\n/**\n * URL decode a string.\n * @param {string} str - The string to be decoded.\n *\n * @return {string} The decoded string.\n */\n\n\nfunction decode(str) {\n  if (window.decodeURIComponent) {\n    return window.decodeURIComponent(str);\n  } else {\n    return window.unescape(str);\n  }\n}\n/*\n * Utility to add event listeners.\n *\n * @param {Element} element\n * @param {string} event\n * @param {Function} listener\n */\n\n\nfunction addEvent(element, event, listener) {\n  if (element.addEventListener) {\n    element.addEventListener(event, listener, false);\n  } else {\n    element.attachEvent('on' + event, listener);\n  }\n}\n/*\n * Utility for dispatching custom events from window\n *\n * @param {string} namespace\n * @param {string} eventType\n * @param {Object} detail\n */\n\n\nfunction broadcast(namespace, eventType, detail) {\n  detail = detail || {};\n\n  try {\n    window.dispatchEvent(new CustomEvent(namespace + '.' + eventType, {\n      detail: detail,\n      bubbles: true\n    }));\n  } catch (error) {}\n}\n/**\n * Listen for page tracking requests.\n *\n * @param {Function} cb - The callback to be called whenever a page is tracked.\n * @return {undefined}\n */\n\n\nfunction onPage(cb) {\n  if (is(cb, 'function')) {\n    page_callbacks.push(cb);\n  }\n}\n/**\n * Trigger the 'page' listeners.\n * @return {undefined}\n */\n\n\nfunction triggerPage() {\n  for (var i = 0; i < page_callbacks.length; i++) {\n    page_callbacks[i]();\n  }\n}\n/**\n * Get a value from document.cookie matching the first match of the regexp you supply\n * @param {RegExp} matcher - The Regex to match with\n * @return {String} - The vale from the cookie\n */\n\n\nfunction getValueFromCookie(matcher) {\n  return document.cookie.match(matcher) && RegExp.$1 !== '' && RegExp.$1 !== 'null' ? RegExp.$1 : null;\n}\n/**\n * Get a value from the url, used for uuid or querystring parameters\n * @param {RegExp} matcher - The Regex to match with\n * @return {String} - The value from the URL\n */\n\n\nfunction getValueFromUrl(matcher) {\n  return document.location.href.match(matcher) && RegExp.$1 !== '' ? RegExp.$1 : null;\n}\n/**\n * Get a value from a specified JavaScript variable.\n * @param {String} str - The name of variable, in dot syntax.\n * @return {String} The value from the JS variable.\n */\n\n\nfunction getValueFromJsVariable(str) {\n  if (typeof str !== 'string') {\n    return null;\n  }\n\n  var i;\n  var namespaces = str.split('.');\n  var test = window;\n\n  for (i = 0; i < namespaces.length; i = i + 1) {\n    if (typeof test[namespaces[i]] === 'undefined') {\n      return null;\n    }\n\n    test = test[namespaces[i]];\n  }\n\n  return test !== '' ? test : null;\n}\n/**\n * Whitelist props\n * @param {Object} props - An object whose props need to be whitelisted\n * @param {Array} list - A list for whitelisting\n * @return\n */\n\n\nfunction whitelistProps(props, list) {\n  return list.reduce((acc, propName) => Object.assign({}, acc, props[propName] ? {\n    [propName]: props[propName]\n  } : undefined), {});\n}\n/**\n * Trim strings\n * @param {String} str - The string to trim.\n * @return {String} The trimmed string.\n */\n\n\nfunction sanitise(str) {\n  return typeof str === 'string' ? str.trim() : str;\n}\n/**\n * Assign the subject value if the target properties are undefined\n * @param {Object} subject - assign the value\n * @param {Object} target - be assigned the value\n * @return\n */\n\n\nfunction assignIfUndefined(subject, target) {\n  for (var prop in subject) {\n    if (!target[prop]) {\n      target[prop] = subject[prop];\n    } else {\n      console.warn(\"You can't set a custom property called \".concat(prop));\n    }\n  }\n}\n/**\n * Utilities.\n * @alias utils\n */\n\n\nvar _default = {\n  log,\n  is,\n  isUndefined: is,\n  merge,\n  encode,\n  decode,\n  guid: _browserCuid.default,\n  addEvent,\n  broadcast,\n  onPage,\n  triggerPage,\n  getValueFromCookie,\n  getValueFromUrl,\n  getValueFromJsVariable,\n  sanitise,\n  assignIfUndefined,\n  whitelistProps\n};\nexports.default = _default;","'use strict'\n\nmodule.exports = whitespace\n\nvar fromCode = String.fromCharCode\nvar re = /\\s/\n\n// Check if the given character code, or the character code at the first\n// character, is a whitespace character.\nfunction whitespace(character) {\n  return re.test(\n    typeof character === 'number' ? fromCode(character) : character.charAt(0)\n  )\n}\n","'use strict';\n\nvar bind = require('./helpers/bind');\nvar isBuffer = require('is-buffer');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n  return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n  return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n  return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n  var result;\n  if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n    result = ArrayBuffer.isView(val);\n  } else {\n    result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n  }\n  return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n  return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n  return typeof val === 'number';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n  return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n  return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n  return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n  return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n  return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n  return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n  return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n  return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n  return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n *  typeof window -> undefined\n *  typeof document -> undefined\n *\n * react-native:\n *  navigator.product -> 'ReactNative'\n */\nfunction isStandardBrowserEnv() {\n  if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {\n    return false;\n  }\n  return (\n    typeof window !== 'undefined' &&\n    typeof document !== 'undefined'\n  );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n  // Don't bother if no value provided\n  if (obj === null || typeof obj === 'undefined') {\n    return;\n  }\n\n  // Force an array if not already something iterable\n  if (typeof obj !== 'object') {\n    /*eslint no-param-reassign:0*/\n    obj = [obj];\n  }\n\n  if (isArray(obj)) {\n    // Iterate over array values\n    for (var i = 0, l = obj.length; i < l; i++) {\n      fn.call(null, obj[i], i, obj);\n    }\n  } else {\n    // Iterate over object keys\n    for (var key in obj) {\n      if (Object.prototype.hasOwnProperty.call(obj, key)) {\n        fn.call(null, obj[key], key, obj);\n      }\n    }\n  }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n  var result = {};\n  function assignValue(val, key) {\n    if (typeof result[key] === 'object' && typeof val === 'object') {\n      result[key] = merge(result[key], val);\n    } else {\n      result[key] = val;\n    }\n  }\n\n  for (var i = 0, l = arguments.length; i < l; i++) {\n    forEach(arguments[i], assignValue);\n  }\n  return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n  forEach(b, function assignValue(val, key) {\n    if (thisArg && typeof val === 'function') {\n      a[key] = bind(val, thisArg);\n    } else {\n      a[key] = val;\n    }\n  });\n  return a;\n}\n\nmodule.exports = {\n  isArray: isArray,\n  isArrayBuffer: isArrayBuffer,\n  isBuffer: isBuffer,\n  isFormData: isFormData,\n  isArrayBufferView: isArrayBufferView,\n  isString: isString,\n  isNumber: isNumber,\n  isObject: isObject,\n  isUndefined: isUndefined,\n  isDate: isDate,\n  isFile: isFile,\n  isBlob: isBlob,\n  isFunction: isFunction,\n  isStream: isStream,\n  isURLSearchParams: isURLSearchParams,\n  isStandardBrowserEnv: isStandardBrowserEnv,\n  forEach: forEach,\n  merge: merge,\n  extend: extend,\n  trim: trim\n};\n","/**\n * @file\n * Grid components reflecting o-grid API\n */\n\nimport { GridChild } from './grid-child';\nimport { GridRow } from './grid-row';\nimport { GridContainer } from './grid-container';\n\nexport { GridChild };\nexport { GridRow };\nexport { GridContainer };\n\nexport default {\n  GridRow,\n  GridChild,\n  GridContainer,\n};\n","/**\n * @file\n * Various helper functions\n */\n\nimport React from 'react';\nimport removeMarkdown from 'remove-markdown';\nimport { getGridBreakpoints } from '@financial-times/o-grid';\n\nexport function plain(str, stripListLeaders = true) {\n  return removeMarkdown(str, { stripListLeaders, gfm: true });\n}\n\nexport function encodedJSON(_data) {\n  const data = _data instanceof String ? JSON.parse(_data) : _data;\n  try {\n    return encodeURIComponent(JSON.stringify(data, null, ''));\n  } catch (e) {\n    return '';\n  }\n}\n\nexport function spoorTrackingPixel(data) {\n  const jsonString = encodedJSON(data);\n  if (document) {\n    const ieVersion = document.documentMode ? document.documentMode : 99; // eslint-disable-line\n    const img = `<img src=\"https://spoor-api.ft.com/px.gif?data=${jsonString}\" height=\"1\" width=\"1\" />`;\n    return ieVersion < 9 ? img : <noscript data-o-component=\"o-tracking\">{img}</noscript>;\n  }\n\n  return null;\n}\n\nexport function imageUUID(uuid) {\n  return `https://www.ft.com/__origami/service/image/v2/images/raw/ftcms%3A${uuid}?source=ig`;\n}\n\nexport function getMainImage(img = {}) {\n  if (Object.prototype.hasOwnProperty.call(img, 'uuid')) return imageUUID(img.uuid);\n  if (Object.prototype.hasOwnProperty.call(img, 'url')) return img.url;\n  return '';\n}\n\n// Via: https://reactjs.org/blog/2015/12/16/ismounted-antipattern.html\n\nexport const makeCancelable = (promise) => {\n  let hasCanceled = false;\n\n  const wrappedPromise = new Promise((resolve, reject) => {\n    /* eslint-disable prefer-promise-reject-errors */\n    promise.then(\n      (val) => (hasCanceled ? reject({ isCanceled: true }) : resolve(val)),\n      (error) => (hasCanceled ? reject({ isCanceled: true }) : reject(error)),\n    );\n    /* eslint-enable */\n  });\n\n  return {\n    promise: wrappedPromise,\n    cancel() {\n      hasCanceled = true;\n    },\n  };\n};\n\nexport const registerLayoutChangeEvents = () => {\n  // Create a map containing all breakpoints exposed via html:before\n  const { layouts } = getGridBreakpoints();\n  if (layouts) {\n    const breakpoints = new Map([...Object.entries(layouts), ['default', '240px']]);\n    const decr1 = (val) => `${Number(val.replace('px', '') - 1)}px`;\n\n    const setupQuery = (query, size) => {\n      // matchMedia listener handler: Dispatch `o-grid.layoutChange` event if a match\n      const handleMQChange = (mql) => {\n        if (mql.matches) {\n          window.dispatchEvent(\n            new CustomEvent('o-grid.layoutChange', {\n              detail: size,\n            }),\n          );\n        }\n      };\n\n      const mql = window.matchMedia(query);\n      mql.addListener(handleMQChange);\n      handleMQChange(mql);\n\n      return [query, handleMQChange];\n    };\n\n    // Generate media queries for each\n    return [...breakpoints].map(([size, width]) => {\n      switch (size) {\n        case 'S':\n          return setupQuery(\n            `(min-width: ${width}) and (max-width: ${decr1(breakpoints.get('M'))})`,\n            size,\n          );\n        case 'M':\n          return setupQuery(\n            `(min-width: ${width}) and (max-width: ${decr1(breakpoints.get('L'))})`,\n            size,\n          );\n        case 'L':\n          return setupQuery(\n            `(min-width: ${width}) and (max-width: ${decr1(breakpoints.get('XL'))})`,\n            size,\n          );\n        case 'XL':\n          return setupQuery(`(min-width: ${width})`, size);\n        case 'default':\n        default:\n          return setupQuery(`(max-width: ${decr1(breakpoints.get('S'))})`, size);\n      }\n    });\n  }\n\n  throw new Error(\n    'To enable grid layout change events, include oGridSurfaceLayoutSizes in your Sass',\n  );\n};\n\nexport const unregisterLayoutChangeEvents = (listeners) => {\n  const { layouts } = getGridBreakpoints();\n  if (layouts) {\n    const breakpoints = new Map([...Object.entries(layouts), ['default', '240px']]);\n    const decr1 = (val) => `${Number(val.replace('px', '') - 1)}px`;\n\n    const removeQuery = (query) => {\n      const [, listener] = listeners.find(([q]) => q === query);\n      const mql = window.matchMedia(query);\n      mql.removeListener(listener);\n    };\n\n    breakpoints.forEach((width, size) => {\n      switch (size) {\n        case 'S':\n          removeQuery(\n            `(min-width: ${width}) and (max-width: ${decr1(breakpoints.get('M'))})`,\n            size,\n          );\n          break;\n        case 'M':\n          removeQuery(\n            `(min-width: ${width}) and (max-width: ${decr1(breakpoints.get('L'))})`,\n            size,\n          );\n          break;\n        case 'L':\n          removeQuery(\n            `(min-width: ${width}) and (max-width: ${decr1(breakpoints.get('XL'))})`,\n            size,\n          );\n          break;\n        case 'XL':\n          removeQuery(`(min-width: ${width})`, size);\n          break;\n        case 'default':\n        default:\n          removeQuery(`(max-width: ${decr1(breakpoints.get('S'))})`, size);\n          break;\n      }\n    });\n  }\n};\n\n/**\n * @function\n * Tests whether an object is a DOM node.\n * Via: https://stackoverflow.com/a/384380/467760\n */\nexport function isNode(o) {\n  return typeof Node === 'object'\n    ? o instanceof Node\n    : o &&\n        typeof o === 'object' &&\n        typeof o.nodeType === 'number' &&\n        typeof o.nodeName === 'string';\n}\n\n/**\n * @function\n * Tests whether an object is a DOM element.\n * Via: https://stackoverflow.com/a/384380/467760\n */\nexport function isElement(o) {\n  return typeof HTMLElement === 'object'\n    ? o instanceof HTMLElement // DOM2\n    : o &&\n        typeof o === 'object' &&\n        o !== null &&\n        o.nodeType === 1 &&\n        typeof o.nodeName === 'string';\n}\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n    var target = {}\n\n    for (var i = 0; i < arguments.length; i++) {\n        var source = arguments[i]\n\n        for (var key in source) {\n            if (hasOwnProperty.call(source, key)) {\n                target[key] = source[key]\n            }\n        }\n    }\n\n    return target\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.extend = extend;\nexports.inSample = inSample;\nexports.default = exports.getVersion = exports.cookie = exports.buildObjectFromArray = exports.iframeToSlotName = exports.getTimestamp = exports.getQueryParamByName = exports.getQueryString = exports.getLocation = exports.parseAttributeName = exports.dehyphenise = exports.getReferrer = exports.attach = exports.hash = exports.isElement = exports.isNonEmptyString = exports.isPlainObject = exports.isWindow = exports.isObject = exports.isStorage = exports.isFunction = exports.isString = exports.isArray = void 0;\n\nvar _events = require(\"./events.js\");\n\nvar _metrics = require(\"./metrics.js\");\n\nvar _messenger = _interopRequireDefault(require(\"./messenger.js\"));\n\nvar _responsive = _interopRequireWildcard(require(\"./responsive.js\"));\n\nvar _log = _interopRequireWildcard(require(\"./log.js\"));\n\nvar _version = _interopRequireDefault(require(\"../version.js\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Utility methods for the advertising library.\n * @author Origami Advertising, origami.advertising@ft.com\n * @module utils\n */\nvar hop = Object.prototype.hasOwnProperty;\n_responsive.default.getCurrent = _responsive.getCurrent;\n_log.default.start = _log.start;\n_log.default.end = _log.end;\n_log.default.isOn = _log.isOn;\n_log.default.info = _log.info;\n_log.default.warn = _log.warn;\n_log.default.error = _log.error;\n_log.default.table = _log.table;\n_log.default.attributeTable = _log.attributeTable;\n/**\n * Uses object prototype toString method to get at the type of object we are dealing,\n * IE returns [object Object] for null and undefined so we need to filter those\n * http://es5.github.com/#x15.2.4.2\n * @private\n * @param {object} Any javascript object\n * @returns The type of the object e.g Array, String, Object\n */\n\nfunction is(object) {\n  var type = Object.prototype.toString.call(object).match(/^\\[object\\s(.*)\\]$/)[1];\n\n  if (object === null) {\n    return 'Null';\n  } else if (object === undefined) {\n    return 'Undefined';\n  } else {\n    return type;\n  }\n}\n/**\n * Test if an object is an Array\n * @param {object} obj The object to be tested\n * @returns {boolean} true if the object is of type Array, otherwise false\n */\n\n\nvar isArray = function isArray(obj) {\n  return is(obj) === 'Array';\n};\n/**\n * Test if an object is a String\n * @param {object} obj The object to be tested\n * @returns {boolean} true if the object is of type String, otherwise false\n */\n\n\nexports.isArray = isArray;\n\nvar isString = function isString(obj) {\n  return is(obj) === 'String';\n};\n/**\n * Test if an object is a Function\n * @param {object} obj The object to be tested\n * @returns {boolean} true if the object is of type Function, otherwise false\n */\n\n\nexports.isString = isString;\n\nvar isFunction = function isFunction(obj) {\n  return is(obj) === 'Function';\n};\n/**\n * Test if an object is a Storage object\n * @param {object} obj The object to be tested\n * @returns {boolean} true if the object is of type Storage, otherwise false\n */\n\n\nexports.isFunction = isFunction;\n\nvar isStorage = function isStorage(obj) {\n  return is(obj) === 'Storage';\n};\n/**\n * Test if an object is an Object\n * @param {object} obj The object to be tested\n * @returns {boolean} true if the object is of type Object, otherwise false\n */\n\n\nexports.isStorage = isStorage;\n\nvar isObject = function isObject(obj) {\n  return is(obj) === 'Object';\n};\n/**\n * Test if an object is the global window object\n * @param {object} obj The object to be tested\n * @returns {boolean} true if the object is the window obj, otherwise false\n */\n\n\nexports.isObject = isObject;\n\nvar isWindow = function isWindow(obj) {\n  return obj && obj !== null && obj === window;\n};\n/**\n * Test if an object inherits from any other objects, used in extend\n * to protect against deep copies running out of memory and constructors\n * losing there prototypes when cloned\n * @param {object} obj The object to be tested\n * @returns {boolean} true if the object is plain false otherwise\n */\n\n\nexports.isWindow = isWindow;\n\nvar isPlainObject = function isPlainObject(obj) {\n  var hop = Object.prototype.hasOwnProperty; // Must be an Object.\n  // Because of IE, we also have to check the presence of the constructor property.\n  // Make sure that DOM nodes and window objects don't pass through, as well\n\n  if (!obj || !isObject(obj) || obj.nodeType || isWindow(obj)) {\n    return false;\n  }\n\n  try {\n    // Not own constructor property must be Object\n    if (obj.constructor && !hop.call(obj, 'constructor') && !hop.call(obj.constructor.prototype, 'isPrototypeOf')) {\n      return false;\n    }\n  } catch (e) {\n    /* istanbul ignore next  */\n    // IE8,9 Will throw exceptions on certain host objects\n    return false;\n  } // Own properties are enumerated firstly, so to speed up,\n  // if last one is own, then all properties are own.\n\n\n  var key;\n\n  for (key in obj) {// empty\n  }\n\n  return key === undefined || hop.call(obj, key);\n};\n/**\n * Test if an object is a string with a length\n * @param {object} str The object to be tested\n * @returns {boolean} true if the object is a string with a length greater than 0\n */\n\n\nexports.isPlainObject = isPlainObject;\n\nvar isNonEmptyString = function isNonEmptyString(str) {\n  return isString(str) && Boolean(str.length);\n};\n\nexports.isNonEmptyString = isNonEmptyString;\n\nvar isElement = function isElement(element) {\n  return element && element.nodeType === 1 && element.tagName || false;\n};\n\nexports.isElement = isElement;\n\nfunction extend() {\n  /* jshint forin: false */\n\n  /* when doing a deep copy we want to copy prototype properties */\n  var options;\n  var src;\n  var copy;\n  var copyIsArray;\n  var clone;\n  var target = arguments[0] || {};\n  var length = arguments.length;\n  var deep = false;\n  var i = 1; // Handle a deep copy situation\n\n  if (typeof target === 'boolean') {\n    deep = target;\n    target = arguments[1] || {}; // skip the boolean and the target\n\n    i = 2;\n  } // Handle case when target is a string or something (possible in deep copy)\n\n  /* istanbul ignore else  */\n\n\n  if (typeof target !== 'object' && !isFunction(target)) {\n    target = {};\n  } // do nothing if only one argument is passed (or 2 for a deep copy)\n\n  /* istanbul ignore else  */\n\n\n  if (length === i) {\n    return target;\n  }\n\n  for (; i < length; i++) {\n    // Only deal with non-null/undefined values\n    if ((options = arguments[i]) !== null) {\n      // Extend the base object\n      for (var name in options) {\n        /* istanbul ignore next */\n        if (options.hasOwnProperty(name)) {\n          src = target[name];\n          copy = options[name]; // Prevent never-ending loop\n\n          if (target === copy) {\n            continue;\n          } // Recurse if we're merging arrays\n\n\n          if (deep && copy && (isPlainObject(copy) || isArray(copy))) {\n            copyIsArray = isArray(copy);\n\n            if (copyIsArray) {\n              copyIsArray = false;\n              clone = src && isArray(src) ? src : [];\n            } else {\n              clone = src && isObject(src) ? src : {};\n            } // Never move original objects, clone them\n\n\n            target[name] = extend(deep, clone, copy); // Don't bring in undefined values\n          } else if (copy !== undefined) {\n            target[name] = copy;\n          }\n        }\n      }\n    }\n  } // Return the modified object\n\n\n  return target;\n}\n/**\n * Create an object hash from a delimited string\n * Beware all properties on the resulting object will have string values.\n * @param {string}        str       The string to transform\n * @param {string|regexp} delimiter The character that delimits each name/value pair\n * @param {string}        pairing   The character that separates the name from the value\n * @return {object}\n *\n */\n\n\nvar hash = function hash(str, delimiter, pairing) {\n  var pair;\n  var value;\n  var hashObj = {};\n\n  if (str && str.split) {\n    str = str.split(delimiter);\n\n    for (var idx = 0, l = str.length; idx < l; idx += 1) {\n      value = str[idx];\n      pair = value.split(pairing);\n\n      if (pair.length > 1) {\n        hashObj[pair[0].trim()] = pair.slice(1).join(pairing);\n      }\n    }\n  }\n\n  return hashObj;\n};\n/**\n * Takes a script URL as a string value, creates a new script element, sets the src and attaches to the page\n * The async value of the script can be set by the seccond parameter, which is a boolean\n * Note, we should use protocol-relative URL paths to ensure we don't run into http/https issues\n * @param {string} scriptUrl The url to the script file to be added\n * @param {boolean} async Set the async attribute on the script tag\n * @param {function} callback A function to run when the script loads\n * @param {function} errorcb A function to run if the script fails to load\n * @returns {HTMLElement} the created script tag\n */\n\n\nexports.hash = hash;\n\nvar attach = function attach(scriptUrl, async, callback, errorcb, autoRemove) {\n  var tag = document.createElement('script');\n  var node = document.getElementsByTagName('script')[0];\n  var hasRun = false;\n\n  function processCallback(callback) {\n    /* istanbul ignore else  */\n    if (!hasRun) {\n      callback.call();\n      hasRun = true;\n      /* istanbul ignore else  */\n\n      if (autoRemove) {\n        tag.parentElement.removeChild(tag);\n      }\n    }\n  }\n\n  tag.setAttribute('src', scriptUrl);\n  tag.setAttribute('o-ads', '');\n  /* istanbul ignore else */\n\n  if (async) {\n    tag.async = 'true';\n  }\n  /* istanbul ignore else  */\n\n\n  if (isFunction(callback)) {\n    /* istanbul ignore if - legacy IE code, won't test */\n    if (hop.call(tag, 'onreadystatechange')) {\n      tag.onreadystatechange = function () {\n        if (tag.readyState === 'loaded') {\n          processCallback(callback);\n        }\n      };\n    } else {\n      tag.onload = function () {\n        processCallback(callback);\n      };\n    }\n  }\n  /* istanbul ignore else  */\n\n\n  if (isFunction(errorcb)) {\n    tag.onerror = function () {\n      processCallback(errorcb);\n    };\n  } // Use insert before, append child has issues with script tags in some browsers.\n\n\n  node.parentNode.insertBefore(tag, node);\n  return tag;\n};\n/**\n * return the current documents referrer or an empty string if non exists\n * This method enables us to mock the referrer in our tests reliably and doesn't really serve any other purpose\n * @returns {string} document.referrer\n */\n\n/* istanbul ignore next - cannot reliably test value of referer */\n\n\nexports.attach = attach;\n\nvar getReferrer = function getReferrer() {\n  return document.referrer || '';\n};\n/**\n * Remove hyphens from a string and upper case the following letter\n * @param {string} string the string to parse\n * @returns {string}\n */\n\n\nexports.getReferrer = getReferrer;\n\nvar dehyphenise = function dehyphenise(string) {\n  return string.replace(/(-)([a-z])/g, function (match, hyphen, letter) {\n    return letter.toUpperCase();\n  });\n};\n/**\n * remove prefixes from o-ads data attributes and dehyphenise the name\n * @param {string|} name the name of the attribute to parse\n * @returns {string}\n */\n\n\nexports.dehyphenise = dehyphenise;\n\nvar parseAttributeName = function parseAttributeName(attribute) {\n  var name = isString(attribute) ? attribute : attribute.name;\n  return dehyphenise(name.replace(/(data-)?o-ads-/, ''));\n};\n/**\n * return the current documents url or an empty string if non exists\n * This method enables us to mock the document location string in our tests reliably and doesn't really serve any other purpose\n * @returns {string}\n */\n\n/* istanbul ignore next - cannot reliably test value of location */\n\n\nexports.parseAttributeName = parseAttributeName;\n\nvar getLocation = function getLocation() {\n  return document.location.href || '';\n};\n/**\n * return the current documents search or an empty string if non exists\n * also strips the initial ? from the search string for easier parsing\n * This method enables us to mock the search string in our tests reliably and doesn't really serve any other purpose\n * @returns {string}\n */\n\n\nexports.getLocation = getLocation;\n\nvar getQueryString = function getQueryString() {\n  return document.location.search.substring(1) || '';\n};\n/**\n * Get a query string parameter by name from a url\n * @param name\n * @param url\n * @returns {string | null}\n */\n\n\nexports.getQueryString = getQueryString;\n\nvar getQueryParamByName = function getQueryParamByName(name, url) {\n  url = url || window.location.href;\n  name = name.replace(/[[\\]]/g, '\\\\$&');\n  var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)');\n  var results = regex.exec(url);\n\n  if (!results) {\n    return null;\n  }\n\n  if (!results[2]) {\n    return '';\n  }\n\n  return decodeURIComponent(results[2].replace(/\\+/g, ' '));\n};\n/**\n * returns a timestamp of the current date/time in the format YYYYMMDDHHMMSS\n * @returns {string}\n */\n\n\nexports.getQueryParamByName = getQueryParamByName;\n\nvar getTimestamp = function getTimestamp() {\n  var now = new Date();\n  return [now.getFullYear(), \"0\".concat(now.getMonth() + 1).slice(-2), \"0\".concat(now.getDate()).slice(-2), \"0\".concat(now.getHours()).slice(-2), \"0\".concat(now.getMinutes()).slice(-2), \"0\".concat(now.getSeconds()).slice(-2)].join('');\n};\n/**\n * Given the window object of an iframe this method returns the o-ads slot name\n * that rendered the iframe, if the iframe was not rendered by o-ads this will\n * return false\n * @param {window}  a window object\n * @returns {String|Boolean}\n */\n\n\nexports.getTimestamp = getTimestamp;\n\nvar iframeToSlotName = function iframeToSlotName(iframeWindow) {\n  // capture all iframes in the page in a live node list\n  var iframes = document.getElementsByTagName('iframe');\n  var slotName;\n  var node;\n  var i = iframes.length; // Figure out which iframe DOM node we have the window for\n\n  while (i--) {\n    /* istanbul ignore else  */\n    if (iframes[i].contentWindow === iframeWindow) {\n      node = iframes[i];\n      break;\n    }\n  }\n  /* istanbul ignore else  */\n\n\n  if (node) {\n    // find the closest parent with a data-o-ads-name attribute, that's our slot name\n    while (node.parentNode) {\n      slotName = node.getAttribute('data-o-ads-name');\n      /* istanbul ignore else  */\n\n      if (slotName) {\n        return slotName;\n      }\n\n      node = node.parentNode;\n    }\n  }\n\n  return false;\n};\n\nexports.iframeToSlotName = iframeToSlotName;\n\nvar buildObjectFromArray = function buildObjectFromArray(targetObject) {\n  return targetObject.reduce((prev, data) => {\n    prev[data.key] = data.value;\n    return prev;\n  }, {});\n};\n\nexports.buildObjectFromArray = buildObjectFromArray;\n\nvar cookie = function cookie(name) {\n  var val = document.cookie.match(\"(^|;)\\\\s*\".concat(name, \"\\\\s*=\\\\s*([^;]+)\"));\n  return val ? val.pop() : null;\n};\n\nexports.cookie = cookie;\n\nvar getVersion = () => _version.default || 'UNKNOWN';\n\nexports.getVersion = getVersion;\nvar metricsSampleThreshold = Math.random();\n\nfunction inSample(sampleSize) {\n  return typeof sampleSize === 'undefined' || sampleSize > metricsSampleThreshold;\n}\n\nvar _default = {\n  on: _events.on,\n  off: _events.off,\n  once: _events.once,\n  broadcast: _events.broadcast,\n  messenger: _messenger.default,\n  responsive: _responsive.default,\n  log: _log.default,\n  isArray,\n  isString,\n  isFunction,\n  isStorage,\n  isObject,\n  isWindow,\n  isPlainObject,\n  isNonEmptyString,\n  isElement,\n  extend,\n  hash,\n  attach,\n  getReferrer,\n  dehyphenise,\n  parseAttributeName,\n  getLocation,\n  getQueryString,\n  getQueryParamByName,\n  getTimestamp,\n  iframeToSlotName,\n  buildObjectFromArray,\n  cookie,\n  getVersion,\n  setupMetrics: _metrics.setupMetrics,\n  clearPerfMarks: _metrics.clearPerfMarks,\n  markPageChange: _metrics.markPageChange,\n  inSample,\n  perfMark: _events.perfMark,\n  buildPerfmarkSuffix: _events.buildPerfmarkSuffix\n};\nexports.default = _default;","import Delegate from 'ftdomdelegate';\n\n/**\n * Append rows to table.\n *\n * @access private\n * @param {Element} tbody - The table body to append the row batch to.\n * @param {Array} rowBatch - An array of rows to append to the table body.\n * @returns {undefined}\n */\nfunction append(tbody, rowBatch) {\n\tif (tbody.append) {\n\t\ttbody.append(...rowBatch);\n\t} else {\n\t\trowBatch.forEach(row => tbody.appendChild(row));\n\t}\n}\n\n/**\n * Prepend rows to table.\n *\n * @access private\n * @param {Element} tbody - The table body to prepend the row batch to.\n * @param {Array} rowBatch - An array of rows to prepend to the table body.\n * @returns {undefined}\n */\nfunction prepend(tbody, rowBatch) {\n\tif (tbody.prepend) {\n\t\ttbody.prepend(...rowBatch);\n\t} else {\n\t\trowBatch.reverse().forEach(row => {\n\t\t\ttbody.insertBefore(row, tbody.firstChild);\n\t\t});\n\t}\n}\n\nclass BaseTable {\n\n\t/**\n\t * The shared functionality of all `o-table` variants.\n\t *\n\t * @access public\n\t * @param {HTMLElement} rootEl - The `o-table` element.\n\t * @param {TableSorter} sorter\n\t * @param {Object} opts [{}]\n\t * @param {Bool} opts.sortable [true]\n\t * @returns {BaseTable}\n\t */\n\tconstructor(rootEl, sorter, opts = {}) {\n\t\tthis._listeners = [];\n\t\tthis._sorter = sorter;\n\t\tthis.rootEl = rootEl;\n\t\tthis._opts = Object.assign({\n\t\t\tsortable: this.rootEl.getAttribute('data-o-table-sortable') !== 'false',\n\t\t\tpreferredSortOrder: this.rootEl.getAttribute('data-o-table-preferred-sort-order')\n\t\t}, opts);\n\t\tthis.thead = this.rootEl.querySelector('thead');\n\t\tthis.tbody = this.rootEl.querySelector('tbody');\n\t\tthis.tableCaption = this.rootEl.querySelector('caption');\n\t\tthis.tableHeaders = this.thead ? Array.from(\n\t\t\tthis.thead.querySelectorAll('tr:last-of-type > th')\n\t\t) : [];\n\t\tthis.tableRows = this.tbody ? Array.from(this.tbody.getElementsByTagName('tr')) : [];\n\t\tthis._filteredTableRows = [];\n\t\tthis.wrapper = this.rootEl.closest('.o-table-scroll-wrapper');\n\t\tthis.container = this.rootEl.closest('.o-table-container');\n\t\tthis.overlayWrapper = this.rootEl.closest('.o-table-overlay-wrapper');\n\t\tthis.filterContainer = this.wrapper || this.container;\n\t\tthis._updateTableHeightListenerSet = false;\n\n\t\t/**\n\t\t * @property {Object|Null} _currentSort - The current sort applied.\n\t\t * @property {Number} _currentSort.columnIndex - The index of the currently sorted column.\n\t\t * @property {String} _currentSort.sortOrder - The type of sort, \"ascending\" or \"descending\"\n\t\t */\n\t\tthis._currentSort = null;\n\n\t\t/**\n\t\t * @property {Object|Null} _currentFilter - The filter currently applied.\n\t\t * @property {Number} _currentFilter.columnIndex - The index of the column which is filtered.\n\t\t * @property {String|Function} _currentFilter.filter - The filter applied.\n\t\t */\n\t\tthis._currentFilter = null;\n\n\t\t// Defer filter setup.\n\t\twindow.setTimeout(this._setupFilters.bind(this), 0);\n\t}\n\n\t/**\n\t * Apply and add event listeners to any filter controls for this table.\n\t * E.g. form inputs with the data attribute `[data-o-table-filter-id=\"tableId\"]`\n\t * @access private\n\t */\n\t_setupFilters() {\n\t\tconst tableId = this.rootEl.getAttribute('id');\n\t\tif (!tableId) {\n\t\t\treturn;\n\t\t}\n\t\t// Do nothing if no filter is found for this table.\n\t\tconst filter = window.document.querySelector(`[data-o-table-filter-id=\"${tableId}\"]`);\n\t\tif (!filter) {\n\t\t\treturn;\n\t\t}\n\t\t// Do not setup filter if markup is missing.\n\t\tif (!this.filterContainer) {\n\t\t\tconsole.warn(`Could not setup the filter for the table \"${tableId}\" as markup is missing. A filterable table must be within a div with class \"o-table-container\".`);\n\t\t\treturn;\n\t\t}\n\t\t// Warn if a misconfigured filter was found.\n\t\tconst filterColumn = parseInt(filter.getAttribute('data-o-table-filter-column'), 10);\n\t\tif (isNaN(filterColumn)) {\n\t\t\tconsole.warn(`Could not setup the filter for the table \"${tableId}\" as no column index was given to filter on. Add a \\`data-o-table-filter-column=\"{columnIndex}\"\\` attribute to the filter.`, filter);\n\t\t\treturn;\n\t\t}\n\t\t// Apply the filter .\n\t\tif (filter.value) {\n\t\t\tthis.filter(filterColumn, filter.value);\n\t\t}\n\t\t// Add a listener to filter the table.\n\t\tlet pendingFilterTimeout;\n\t\tconst debouncedFilterHandler = function(event) {\n\t\t\tif (pendingFilterTimeout) {\n\t\t\t\tclearTimeout(pendingFilterTimeout);\n\t\t\t}\n\t\t\tpendingFilterTimeout = setTimeout(function () {\n\t\t\t\tthis.filter(filterColumn, event.target.value || '');\n\t\t\t\tpendingFilterTimeout = null;\n\t\t\t}.bind(this), 33);\n\t\t}.bind(this);\n\t\tfilter.addEventListener('input', debouncedFilterHandler);\n\t\tfilter.addEventListener('change', debouncedFilterHandler);\n\t\tthis._listeners.push({ element: filter, debouncedFilterHandler, type: 'input' });\n\t\tthis._listeners.push({ element: filter, debouncedFilterHandler, type: 'change' });\n\t}\n\n\t/**\n\t * Update the o-table instance with rows added or removed dynamically from\n\t * the table. Applies any existing sort and filter to new rows.\n\t *\n\t * @returns {undefined}\n\t */\n\tupdateRows() {\n\t\tconst rows = this._getLatestRowNodes();\n\t\t// Set o-table rows.\n\t\tthis.tableRows = rows;\n\t\t// Re-apply sort.\n\t\tif (this._currentSort) {\n\t\t\tconst { columnIndex, sortOrder } = this._currentSort;\n\t\t\tthis.sortRowsByColumn(columnIndex, sortOrder);\n\t\t}\n\t\t// Re-apply filter.\n\t\tif (this._currentFilter) {\n\t\t\tconst { columnIndex, filter } = this._currentFilter;\n\t\t\tthis._filterRowsByColumn(columnIndex, filter);\n\t\t}\n\t\t// Render rows.\n\t\tthis.renderRowUpdates();\n\t}\n\n\t/**\n\t * Get all the table body's current row nodes.\n\t *\n\t * @returns {Array<Node>}\n\t * @access private\n\t */\n\t_getLatestRowNodes() {\n\t\treturn this.tbody ? Array.from(this.tbody.getElementsByTagName('tr')) : [];\n\t}\n\n\t/**\n\t * Updates the dom to account for row updates, including when their sort\n\t * order changes, or any filter is applied. E.g. changes the dom order,\n\t * applies aria-labels to hidden rows, updates the table height to\n\t * efficiently hide them.\n\t *\n\t * Note this does not calculate which rows should be sorted or filtered,\n\t * and does not look for new rows added to the dom. See `updateRows`.\n\t *\n\t * @see updateRows\n\t * @returns {undefined}\n\t */\n\trenderRowUpdates() {\n\t\tthis._updateRowAriaHidden();\n\t\tthis._hideFilteredRows();\n\t\tthis._updateTableHeight();\n\t\tthis._updateRowOrder();\n\t}\n\n\t/**\n\t * Hide filtered rows by updating the container height.\n\t * Filtered rows are not removed from the table so column width is not\n\t * recalculated. Unfortunately \"visibility: collaposed\" has inconsistent\n\t * support.\n\t */\n\t_updateTableHeight() {\n\t\tif (!this.filterContainer) {\n\t\t\tconsole.warn(`The table has missing markup. A resposnive or filterable table must be within a div with class \"o-table-container\".`, this.rootEl);\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._updateTableHeightScheduled) {\n\t\t\twindow.cancelAnimationFrame(this._updateTableHeightScheduled);\n\t\t}\n\n\t\tconst tableHeight = this._getTableHeight();\n\n\t\tthis._updateTableHeightScheduled = window.requestAnimationFrame(function () {\n\t\t\tthis.filterContainer.style.height = !isNaN(tableHeight) ? `${tableHeight}px` : '';\n\t\t}.bind(this));\n\n\t\t// If the table height has been set, it should be updated on resize,\n\t\t// so listen to resize events.\n\t\tif (!this._updateTableHeightListenerSet) {\n\t\t\t// debounce the height update on resize\n\t\t\t// breaking: on the next major release use the o-utils\n\t\t\t// debounce function instead\n\t\t\tlet pendingTableHeightUpdate;\n\t\t\tconst updateTableHeightDebounced = function () {\n\t\t\t\tif (pendingTableHeightUpdate) {\n\t\t\t\t\tclearTimeout(pendingTableHeightUpdate);\n\t\t\t\t}\n\t\t\t\tpendingTableHeightUpdate = setTimeout(function () {\n\t\t\t\t\tthis._updateTableHeight();\n\t\t\t\t}.bind(this), 33);\n\t\t\t}.bind(this);\n\t\t\t// set the resize listener\n\t\t\twindow.addEventListener('resize', updateTableHeightDebounced);\n\t\t\t// add to the listeners array so it can be removed on `.destroy`\n\t\t\tthis._listeners.push({ element: window, updateTableHeightDebounced, type: 'resize' });\n\t\t\t// set a flag so the listener isn't set again, without having to\n\t\t\t// loop through `this._listeners`.\n\t\t\tthis._updateTableHeightListenerSet = true;\n\t\t}\n\t}\n\n\t/**\n\t * Get the table height, accounting for \"hidden\" rows.\n\t * @return {Number|Null}\n\t */\n\t_getTableHeight() {\n\t\tconst tableHeight = this.rootEl.getBoundingClientRect().height;\n\t\tconst filteredRowsHeight = this._rowsToHide.reduce((accumulatedHeight, row) => {\n\t\t\treturn accumulatedHeight + row.getBoundingClientRect().height;\n\t\t}, 0);\n\n\t\treturn tableHeight - filteredRowsHeight;\n\t}\n\n\t/**\n\t* Update the \"aria-hidden\" attribute of all hidden table rows.\n\t* Rows may be hidden for a number of reasons, including being filtered.\n\t*/\n\t_updateRowAriaHidden() {\n\t\tif (this._updateRowAriaHiddenScheduled) {\n\t\t\twindow.cancelAnimationFrame(this._updateRowAriaHiddenScheduled);\n\t\t}\n\n\t\tconst rowsToHide = this._rowsToHide || [];\n\t\tthis._updateRowAriaHiddenScheduled = window.requestAnimationFrame(function () {\n\t\t\tthis.tableRows.forEach((row) => {\n\t\t\t\trow.setAttribute('aria-hidden', rowsToHide.indexOf(row) !== -1);\n\t\t\t});\n\t\t}.bind(this));\n\t}\n\n\t/**\n\t * Hide filtered rows by updating the \"data-o-table-filtered\" attribute.\n\t * Filtered rows are removed from the table using CSS so column width is\n\t * not recalculated.\n\t */\n\t_hideFilteredRows() {\n\t\tif (this._hideFilteredRowsScheduled) {\n\t\t\twindow.cancelAnimationFrame(this._hideFilteredRowsScheduled);\n\t\t}\n\n\t\tconst filteredRows = this._filteredTableRows || [];\n\t\tthis._hideFilteredRowsScheduled = window.requestAnimationFrame(function () {\n\t\t\tthis.tableRows.forEach((row) => {\n\t\t\t\trow.setAttribute('data-o-table-filtered', filteredRows.indexOf(row) !== -1);\n\t\t\t});\n\t\t}.bind(this));\n\t}\n\n\t/**\n\t* Updates the order of table rows in the DOM. This is required upon sort,\n\t* but also on filter as hidden rows must be at the bottom of the table.\n\t* Otherwise the stripped pattern of the stripped table is not maintained.\n\t*/\n\t_updateRowOrder() {\n\t\tif (this._updateRowOrderScheduled) {\n\t\t\twindow.cancelAnimationFrame(this._updateRowOrderScheduled);\n\t\t}\n\t\tif (this._updateRowOrderFilrtedBatchScheduled) {\n\t\t\twindow.cancelAnimationFrame(this._updateRowOrderFilrtedBatchScheduled);\n\t\t}\n\n\t\tif (!this._currentSort && !this._currentFilter) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst nonFilteredRows = this.tableRows.filter(row => this._filteredTableRows.indexOf(row) === -1);\n\t\tthis._updateRowOrderScheduled = window.requestAnimationFrame(function () {\n\t\t\t// Move all non-filtered rows to the top, with current sort order.\n\t\t\tprepend(this.tbody, nonFilteredRows);\n\t\t\tthis._updateRowOrderFilrtedBatchScheduled = window.requestAnimationFrame(function () {\n\t\t\t\t// Move all filtered rows to the bottom, with current sort order.\n\t\t\t\tappend(this.tbody, this._filteredTableRows);\n\t\t\t}.bind(this));\n\t\t}.bind(this));\n\t}\n\n\t/**\n\t * Filter the table and render the result.\n\t *\n\t * @access public\n\t * @param {Number} headerIndex - The index of the table column to filter.\n\t * @param {String|Function} filter - How to filter the column (either a string to match or a callback function).\n\t * @returns {undefined}\n\t */\n\tfilter(headerIndex, filter) {\n\t\tthis._filterRowsByColumn(headerIndex, filter);\n\t\tthis.renderRowUpdates();\n\t}\n\n\t/**\n\t * Filters the table rows by a given column and filter.\n\t * This does not render the result to the DOM.\n\t *\n\t * @access private\n\t * @param {Number} columnIndex - The index of the table column to filter.\n\t * @param {String|Function} filter - How to filter the column (either a string to match or a callback function).\n\t * @returns {undefined}\n\t */\n\t_filterRowsByColumn(columnIndex, filter) {\n\t\tthis._currentFilter = {\n\t\t\tcolumnIndex,\n\t\t\tfilter\n\t\t};\n\n\t\tif (typeof filter !== 'string' && typeof filter !== 'function') {\n\t\t\tthrow new Error(`Could not filter table column \"${columnIndex}\". Expected the filter to a string or function.`, this);\n\t\t}\n\n\t\t// Filter column headings.\n\t\tthis._filteredTableRows = [];\n\t\tthis.tableRows.forEach(row => {\n\t\t\tconst cell = row.querySelector(`td:nth-of-type(${columnIndex + 1})`);\n\t\t\tif (cell) {\n\t\t\t\tconst hideRow = BaseTable._filterMatch(cell, filter);\n\t\t\t\tif (hideRow) {\n\t\t\t\t\tthis._filteredTableRows.push(row);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Check if a given table cell matches the table filter.\n\t *\n\t * @access private\n\t * @param {Element} cell - The table cell to test the filter function against.\n\t * @param {String|Function} filter - The filter, either a string or callback function.\n\t * @returns {Boolean}\n\t */\n\tstatic _filterMatch(cell, filter) {\n\t\t// If the filter is a string create a filter function which:\n\t\t// - Always matches an emtpy string (no filter).\n\t\t// - Matches against only alpha numeric characters and \".\".\n\t\t// - Case insentivie.\n\t\t// - Whitespace insentivie.\n\t\tif (typeof filter === 'string') {\n\t\t\tconst filterValue = filter.replace(/[^\\w\\.]+/g, '').toLowerCase();\n\t\t\tfilter = (cell) => {\n\t\t\t\tconst cellValue = cell.textContent.replace(/[^\\w\\.]+/g, '').toLowerCase();\n\t\t\t\treturn filterValue ? cellValue.indexOf(filterValue) > -1 : true;\n\t\t\t};\n\t\t}\n\n\t\t// Check if the filter matches the given table cell.\n\t\treturn filter(cell) !== true;\n\t}\n\n\t/**\n\t * Which rows are hidden, e.g. by a filter.\n\t * @returns {Array[Node]}\n\t */\n\tget _rowsToHide() {\n\t\treturn this._filteredTableRows;\n\t}\n\n\t/**\n\t * Gets a table header for a given column index.\n\t *\n\t * @access public\n\t * @param {Number} columnIndex - The index of the table column to get the header for.\n\t * @throws When no header is not found.\n\t * @returns {HTMLElement}\n\t */\n\tgetTableHeader(columnIndex) {\n\t\tconst th = this.tableHeaders[columnIndex];\n\t\tif (!th) {\n\t\t\tthrow new Error(`Could not find header for column index \"${columnIndex}\".`);\n\t\t}\n\t\treturn th;\n\t}\n\n\t/**\n\t * Sort the table.\n\t *\n\t * @access public\n\t * @param {Number} columnIndex - The index of the table column to sort.\n\t * @param {Number} sortOrder - How to sort the column, \"ascending\" or \"descending\"\n\t * @returns {undefined}\n\t */\n\tsortRowsByColumn(columnIndex, sortOrder) {\n\t\t/**\n\t\t * Fires an \"oTable.sorting\" event. The sorting event can be cancelled to\n\t\t * provide a totally custom method of sorting the table.\n\t\t * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/dispatchEvent\n\t\t */\n\t\tconst defaultSort = this._dispatchEvent('sorting', {\n\t\t\tsort: sortOrder,\n\t\t\tcolumnIndex\n\t\t}, { cancelable: true });\n\n\t\tif (defaultSort) {\n\t\t\tthis._sorter.sortRowsByColumn(this, columnIndex, sortOrder);\n\t\t}\n\t}\n\n\t/**\n\t * Add sort buttons to the DOM within the table header.\n\t * @returns {undefined}\n\t */\n\taddSortButtons() {\n\t\tif (!this._opts.sortable) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Create buttons for each table header.\n\t\tconst tableHeaderButtons = this.tableHeaders.map((th) => {\n\t\t\t// Don't add sort buttons to unsortable columns.\n\t\t\tif (th.hasAttribute('data-o-table-heading-disable-sort')) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t// Don't add sort buttons to columns with no headings.\n\t\t\tif (!th.hasChildNodes()) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t// Move heading text into button.\n\t\t\tconst headingNodes = Array.from(th.childNodes);\n\t\t\tconst headingHTML = headingNodes.reduce((html, node) => {\n\t\t\t\t// Maintain child elements of the heading which make sense in a button.\n\t\t\t\tconst maintainedElements = ['ABBR', 'B', 'BDI', 'BDO', 'BR', 'CODE', 'CITE', 'DATA', 'DFN', 'DEL', 'EM', 'I', 'S', 'SMALL', 'SPAN', 'STRONG', 'SUB', 'SUP', 'TIME', 'U', 'VAR', 'WBR'];\n\t\t\t\tif (node.nodeType === Node.ELEMENT_NODE && maintainedElements.indexOf(node.nodeName) !== -1) {\n\t\t\t\t\treturn html + node.outerHTML;\n\t\t\t\t}\n\t\t\t\t// Otherwise return text content.\n\t\t\t\tif (node.nodeType === Node.ELEMENT_NODE) {\n\t\t\t\t\tconsole.warn(`o-table has removed the element \"${node.nodeName}\" from the table heading to add a sort button on the column. Please remove this element from your table heading, disable sort on this column, or contact the Origami team for help.`, th);\n\t\t\t\t}\n\t\t\t\treturn html + node.textContent;\n\t\t\t}, '');\n\n\t\t\tconst sortButton = document.createElement('button');\n\t\t\tsortButton.innerHTML = headingHTML;\n\t\t\tsortButton.classList.add('o-table__sort');\n\t\t\t// In VoiceOver, button `aria-label` is repeated when moving from one column of tds to the next.\n\t\t\t// Using `title` avoids this, but risks not being announced by other screen readers.\n\t\t\tconst nextSort = this._getNextSortOrder(th);\n\t\t\tsortButton.setAttribute('title', `sort table by \"${th.textContent}\" ${nextSort}`);\n\t\t\treturn sortButton;\n\t\t});\n\n\t\t// Add sort buttons to table headers.\n\t\twindow.requestAnimationFrame(function (){\n\t\t\tthis.rootEl.classList.add('o-table--sortable');\n\t\t\tthis.tableHeaders.forEach((th, index) => {\n\t\t\t\tif (tableHeaderButtons[index]) {\n\t\t\t\t\tth.innerHTML = '';\n\t\t\t\t\tth.appendChild(tableHeaderButtons[index]);\n\t\t\t\t}\n\t\t\t});\n\t\t}.bind(this));\n\n\t\t// Add click event to buttons.\n\t\tconst listener = this._sortButtonHandler.bind(this);\n\t\tthis._rootElDomDelegate = this._rootElDomDelegate || new Delegate(this.rootEl);\n\t\tthis._rootElDomDelegate.on('click', '.o-table__sort', listener);\n\t}\n\n\t/**\n\t * Indicate that the table has been sorted after intercepting the sorting event.\n\t *\n\t * @access public\n\t * @param {Object} sortDetails - Details of the current sort state.\n\t * @param {Number|Null} sortDetails.columnIndex - The index of the currently sorted column.\n\t * @param {String|Null} sortDetails.sortOrder - The type of sort, \"ascending\" or \"descending\"\n\t */\n\tsorted({ columnIndex, sortOrder }) {\n\t\tif (isNaN(columnIndex)) {\n\t\t\tthrow new Error(`Expected a numerical column index but received \"${columnIndex}\".`);\n\t\t}\n\t\tif (!sortOrder) {\n\t\t\tthrow new Error(`Expected a sort order e.g. \"ascending\" or \"descending\".`);\n\t\t}\n\t\tthis._currentSort = {\n\t\t\tsortOrder,\n\t\t\tcolumnIndex\n\t\t};\n\n\t\t// Update the button title to reflect the new sort.\n\t\tconst th = this.getTableHeader(columnIndex);\n\t\tconst sortButton = th.querySelector('button');\n\t\tif (sortButton) {\n\t\t\tlet buttonTitle = sortButton.getAttribute('title');\n\t\t\tbuttonTitle = sortOrder === 'ascending' ?\n\t\t\t\tbuttonTitle.replace('ascending', 'descending') :\n\t\t\t\tbuttonTitle.replace('descending', 'ascending');\n\t\t\tsortButton.setAttribute('title', buttonTitle);\n\t\t}\n\n\t\tthis._dispatchEvent('sorted', this._currentSort);\n\t}\n\n\t/**\n\t * Gets the instance ready for deletion.\n\t * Removes event listeners that were added during instatiation of the component.\n\t * @access public\n\t * @returns {undefined}\n\t */\n\tdestroy() {\n\t\tif (this._rootElDomDelegate) {\n\t\t\tthis._rootElDomDelegate.destroy();\n\t\t}\n\t\tthis._listeners.forEach(({ type, listener, element }) => {\n\t\t\telement.removeEventListener(type, listener);\n\t\t});\n\n\t\t// Remove DOM references.\n\t\tdelete this.thead;\n\t\tdelete this.tbody;\n\t\tdelete this.tableHeaders;\n\t\tdelete this.tableRows;\n\t\tdelete this._filteredTableRows;\n\t\tdelete this.wrapper;\n\t\tdelete this.container;\n\t\tdelete this.overlayWrapper;\n\t\tdelete this.filterContainer;\n\t}\n\n\t/**\n\t * Indicate that the table has been constructed successfully.\n\t * @returns {undefined}\n\t */\n\t_ready() {\n\t\tthis._dispatchEvent('ready');\n\t}\n\n\t/**\n\t * Column sort orders are toggled. For a given column heading, return\n\t * the next sort order which should be applied.\n\t * @param {Element} th - The heading for the column to be sorted.\n\t * @returns {String} - What the next sort order for the heading should be, 'ascending' or 'descending'.\n\t */\n\t_getNextSortOrder(th) {\n\t\t// Get the current table sort. Use the `aria-sort` attribute\n\t\t// which may have been applied by a client or server side sort.\n\t\tconst currentSort = th.getAttribute('aria-sort');\n\t\t// If there is no existing sort use a descending sort if that has been\n\t\t// configured as a preferred sort order for the given heading.\n\t\tconst noExistingSort = [null, 'none'].indexOf(currentSort) !== -1;\n\t\tif (noExistingSort && this._opts.preferredSortOrder === 'descending') {\n\t\t\treturn 'descending';\n\t\t}\n\t\t// Otherwise the next sort will be ascending by default, or descending\n\t\t// if the column is already sorted ascending.\n\t\treturn currentSort !== 'ascending' ? 'ascending' : 'descending';\n\t}\n\n\t/**\n\t * Handles a sort button click event. Toggles column sort.\n\t * @param {MouseEvent} event - The click event.\n\t * @returns {undefined}\n\t */\n\t_sortButtonHandler(event) {\n\t\tconst sortButton = event.target;\n\t\tconst th = sortButton.closest('th');\n\t\tconst columnIndex = this.tableHeaders.indexOf(th);\n\t\tif (th && !isNaN(columnIndex)) {\n\t\t\tconst sortOrder = this._getNextSortOrder(th);\n\t\t\tthis.sortRowsByColumn(columnIndex, sortOrder);\n\t\t}\n\t}\n\n\t/**\n\t * Helper function to dispatch namespaced events.\n\t *\n\t * @param {String} event - The event name within `oTable` e.g. \"sorted\".\n\t * @param {Object} data={} - Event data. `instance` is added automatically.\n\t * @param {Object} opts={} - [Event options]{@link https://developer.mozilla.org/en-US/docs/Web/API/Event/Event#Values} (o-table events bubble by default).\n\t */\n\t_dispatchEvent(event, data = {}, opts = {}) {\n\t\tObject.assign(data , {\n\t\t\tinstance: this\n\t\t});\n\t\treturn this.rootEl.dispatchEvent(new CustomEvent(`oTable.${event}`, Object.assign({\n\t\t\tdetail: data,\n\t\t\tbubbles: true\n\t\t}, opts)));\n\t}\n}\n\nexport default BaseTable;\n","module.exports = require(\"regenerator-runtime\");\n","'use strict';\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar xtend = require('xtend');\nvar unified = require('unified');\nvar parse = require('remark-parse');\nvar PropTypes = require('prop-types');\nvar addListMetadata = require('mdast-add-list-metadata');\nvar naiveHtml = require('./plugins/naive-html');\nvar disallowNode = require('./plugins/disallow-node');\nvar astToReact = require('./ast-to-react');\nvar wrapTableRows = require('./wrap-table-rows');\nvar getDefinitions = require('./get-definitions');\nvar uriTransformer = require('./uriTransformer');\nvar defaultRenderers = require('./renderers');\n\nvar allTypes = Object.keys(defaultRenderers);\n\nvar ReactMarkdown = function ReactMarkdown(props) {\n  var src = props.source || props.children || '';\n\n  if (props.allowedTypes && props.disallowedTypes) {\n    throw new Error('Only one of `allowedTypes` and `disallowedTypes` should be defined');\n  }\n\n  var renderers = xtend(defaultRenderers, props.renderers);\n\n  var plugins = [parse].concat(props.plugins || []);\n  var parser = plugins.reduce(applyParserPlugin, unified());\n\n  var rawAst = parser.parse(src);\n  var renderProps = xtend(props, {\n    renderers: renderers,\n    definitions: getDefinitions(rawAst)\n  });\n\n  var astPlugins = determineAstPlugins(props);\n  var ast = astPlugins.reduce(function (node, plugin) {\n    return plugin(node, renderProps);\n  }, rawAst);\n\n  return astToReact(ast, renderProps);\n};\n\nfunction applyParserPlugin(parser, plugin) {\n  return Array.isArray(plugin) ? parser.use.apply(parser, _toConsumableArray(plugin)) : parser.use(plugin);\n}\n\nfunction determineAstPlugins(props) {\n  var plugins = [wrapTableRows, addListMetadata()];\n\n  var disallowedTypes = props.disallowedTypes;\n  if (props.allowedTypes) {\n    disallowedTypes = allTypes.filter(function (type) {\n      return type !== 'root' && props.allowedTypes.indexOf(type) === -1;\n    });\n  }\n\n  var removalMethod = props.unwrapDisallowed ? 'unwrap' : 'remove';\n  if (disallowedTypes && disallowedTypes.length > 0) {\n    plugins.push(disallowNode.ofType(disallowedTypes, removalMethod));\n  }\n\n  if (props.allowNode) {\n    plugins.push(disallowNode.ifNotMatch(props.allowNode, removalMethod));\n  }\n\n  var renderHtml = !props.escapeHtml && !props.skipHtml;\n  if (renderHtml) {\n    plugins.push(naiveHtml);\n  }\n\n  return props.astPlugins ? plugins.concat(props.astPlugins) : plugins;\n}\n\nReactMarkdown.defaultProps = {\n  renderers: {},\n  escapeHtml: true,\n  skipHtml: false,\n  sourcePos: false,\n  rawSourcePos: false,\n  transformLinkUri: uriTransformer,\n  astPlugins: [],\n  plugins: []\n};\n\nReactMarkdown.propTypes = {\n  className: PropTypes.string,\n  source: PropTypes.string,\n  children: PropTypes.string,\n  sourcePos: PropTypes.bool,\n  rawSourcePos: PropTypes.bool,\n  escapeHtml: PropTypes.bool,\n  skipHtml: PropTypes.bool,\n  allowNode: PropTypes.func,\n  allowedTypes: PropTypes.arrayOf(PropTypes.oneOf(allTypes)),\n  disallowedTypes: PropTypes.arrayOf(PropTypes.oneOf(allTypes)),\n  transformLinkUri: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n  linkTarget: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n  transformImageUri: PropTypes.func,\n  astPlugins: PropTypes.arrayOf(PropTypes.func),\n  unwrapDisallowed: PropTypes.bool,\n  renderers: PropTypes.object,\n  plugins: PropTypes.array\n};\n\nReactMarkdown.types = allTypes;\nReactMarkdown.renderers = defaultRenderers;\nReactMarkdown.uriTransformer = uriTransformer;\n\nmodule.exports = ReactMarkdown;","\nexports = module.exports = trim;\n\nfunction trim(str){\n  return str.replace(/^\\s*|\\s*$/g, '');\n}\n\nexports.left = function(str){\n  return str.replace(/^\\s*/, '');\n};\n\nexports.right = function(str){\n  return str.replace(/\\s*$/, '');\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.destroy = destroy;\nexports.get = exports.set = exports.default = void 0;\nvar settings = {};\n/**\n * Very basic implementation of deep clone, and only supports simple POJO objects and\n * native arrays.\n * @param  {*} value Any value\n * @return {*}       Copy of value\n * @private\n */\n\nfunction clone(value) {\n  if (value === undefined) {\n    return value;\n  }\n\n  switch (Object.prototype.toString.call(value)) {\n    case '[object Object]':\n      return JSON.parse(JSON.stringify(value));\n\n    case '[object Array]':\n      return [].slice.call(value);\n\n    default:\n      return value;\n  }\n}\n/**\n * Saves a value. Stores a copy rather than a reference, to avoid mutations leaking.\n *\n * @param {string} key - The key to use to store the object\n * @param {*} value - The value\n * @return {undefined}\n */\n\n\nfunction setValue(key, value) {\n  settings[key] = clone(value);\n}\n/**\n * Retrieves a value from the settings object. Returns a copy rather than reference, to\n * avoid mutations leaking.\n *\n * @param {string} key - The key to get\n * @return {*} - The setting.\n */\n\n\nfunction getValue(key) {\n  return clone(settings[key]);\n}\n/**\n * Deletes a value\n *\n * @param  {string} key - The key to delete\n * @return {undefined}\n */\n\n\nfunction destroy(key) {\n  delete settings[key];\n}\n\nvar set = setValue;\nexports.set = set;\nvar get = getValue;\nexports.get = get;\nvar _default = {\n  set,\n  get,\n  destroy\n};\nexports.default = _default;","function _extends() {\n  module.exports = _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  module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n  return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.setRootID = setRootID;\nexports.getRootID = getRootID;\nexports.track = track;\nexports.default = void 0;\n\nvar _send = _interopRequireDefault(require(\"./core/send\"));\n\nvar _user = _interopRequireDefault(require(\"./core/user\"));\n\nvar _session = _interopRequireDefault(require(\"./core/session\"));\n\nvar _settings = _interopRequireDefault(require(\"./core/settings\"));\n\nvar _utils = _interopRequireDefault(require(\"./utils\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar rootID;\n/**\n * Generate and store a new rootID, used to mark a new root event that\n * subsequent events will be linked to.\n * @return {string|*} The rootID.\n */\n\nfunction setRootID() {\n  rootID = _utils.default.guid();\n  return rootID;\n}\n/**\n * Get the current rootID.\n * @return {string|*} The rootID.\n */\n\n\nfunction getRootID() {\n  if (!rootID) {\n    setRootID();\n  }\n\n  return rootID;\n}\n/**\n * Make a tracking request.\n *\n * @param {Object} config - Should be passed an object containing a format and the values for that format\n * @param {function} callback - Fired when the request has been made.\n *\n * @return {Object} request\n */\n\n\nfunction track(config, callback) {\n  if (_utils.default.isUndefined(callback)) {\n    callback = function callback() {};\n  }\n\n  var session = _session.default.session(); // Set up the base request object with some values which should always be sent.\n\n\n  var request = {\n    async: true,\n    callback: callback || function () {},\n    context: {\n      id: config.id || _utils.default.guid(),\n      // Use a supplied id or generate one for this request\n      root_id: getRootID()\n    },\n    user: {\n      passport_id: _utils.default.getValueFromCookie(/USERID=([0-9]+):/) || _utils.default.getValueFromCookie(/PID=([0-9]+)\\_/),\n      ft_session: _utils.default.getValueFromCookie(/FTSession=([^;]+)/),\n      ft_session_s: _utils.default.getValueFromCookie(/FTSession_s=([^;]+)/)\n    },\n    device: {\n      spoor_session: session.id,\n      spoor_session_is_new: session.isNew,\n      spoor_id: _user.default.userID()\n    }\n  }; // Override any context, user, and device values with object-wide settings\n\n  var settingsConfig = _settings.default.get('config') || {};\n\n  if (settingsConfig.context) {\n    _utils.default.merge(request.context, settingsConfig.context);\n  }\n\n  if (settingsConfig.user) {\n    _utils.default.merge(request.user, settingsConfig.user);\n  }\n\n  if (settingsConfig.device) {\n    _utils.default.merge(request.device, settingsConfig.device);\n  } // Update the base config with the parameter-supplied config\n\n\n  _utils.default.merge(request, config);\n\n  _utils.default.log('Core.Track', request); // Send it.\n\n\n  _send.default.addAndRun(request);\n\n  return request;\n}\n\nvar _default = {\n  setRootID,\n  getRootID,\n  track\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.clear = exports.init = exports.default = void 0;\n\nvar _index = _interopRequireDefault(require(\"./utils/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n//TODO remove all ft.com specific stuff so we can remove this as a global\n// currently all FT specific stuff is wrapped in an if window.FT\n\n/**\n * @fileOverview\n * Third party library for use with google publisher tags.\n *\n * @author Robin Marr, robin.marr@ft.com\n */\n\n/**\n * The FT.ads.config object holds the confiuration properties for an FT.ads.gpt instance.\n * There are four tiers of configuration; cookie level config, default config (set within the constructor), metatag config and global (env) config.\n * Global config, (set in the page FT.env ojbect) takes priority over meta followed by default config with cookie config having the least priority.\n * The FT.ads.config() function acts as an accessor method for the config; allowing getting and setting of configuration values.\n * Calling config() with no parameters returns the entire configuration object.\n * Calling config passing a valid property key will envoke the 'getter' and return the value for that property key.\n * Calling config passing a valid property key and a value will envoke the setter and set the value of the key to the new value.\n * Calling config passing an object of keys and values will envoke a setter that extends the store with the object provided.\n * @name config\n * @memberof FT.ads\n * @function\n*/\n\n/**\n* Default configuration set in the constructor.\n*/\nvar defaults = {\n  formats: {\n    MediumRectangle: {\n      sizes: [300, 250]\n    },\n    Rectangle: {\n      sizes: [180, 50]\n    },\n    WideSkyscraper: {\n      sizes: [160, 600]\n    },\n    Leaderboard: {\n      sizes: [728, 90]\n    },\n    SuperLeaderboard: {\n      sizes: [[970, 90], [970, 66]]\n    },\n    HalfPage: {\n      sizes: [300, 600]\n    },\n    Billboard: {\n      sizes: [970, 250]\n    },\n    Portrait: {\n      sizes: [300, 1050]\n    },\n    AdhesionBanner: {\n      sizes: [320, 50]\n    },\n    MicroBar: {\n      sizes: [88, 31]\n    },\n    Button2: {\n      sizes: [120, 60]\n    },\n    Responsive: {\n      sizes: [2, 2]\n    }\n  },\n  responsive: {\n    extra: [1025, 0],\n    //Reasonable width to show a Billboard (desktop)\n    large: [1000, 0],\n    //reasonable width to show SuperLeaderboard (tablet landscape)\n    medium: [760, 0],\n    //reasonable width to show a leaderboard (tablet portrait)\n    small: [0, 0] //Mobile\n\n  },\n  flags: {\n    refresh: true,\n    inview: true\n  },\n  displayLabelWithBorders: false\n};\n\nfunction fetchDeclaritiveConfig() {\n  var results = {};\n  var scripts = Array.from(document.querySelectorAll('script[data-o-ads-config]'));\n  scripts.forEach(script => {\n    results = window.JSON ? _index.default.extend(results, JSON.parse(script.innerHTML)) : 'UNSUPPORTED';\n  });\n  return results;\n}\n/**\n* @private\n* @function\n* fetchCanonicalURL Grabs the canonical URL from the page meta if it exists.\n*/\n\n\nfunction fetchCanonicalURL() {\n  var canonical;\n  var canonicalTag = document.querySelector('link[rel=\"canonical\"]');\n\n  if (canonicalTag) {\n    canonical = canonicalTag.href;\n  }\n\n  return {\n    canonical: canonical\n  };\n}\n/**\n* Defines a store for configuration information and returns a getter/setter method for access.\n* @class\n* @constructor\n*/\n\n\nfunction Config() {\n  this.store = {};\n}\n\nConfig.prototype.access = function (k, v) {\n  var result;\n\n  if (_index.default.isPlainObject(k)) {\n    _index.default.extend(true, this.store, k);\n\n    result = this.store;\n  } else if (typeof v === 'undefined') {\n    if (typeof k === 'undefined') {\n      result = this.store;\n    } else {\n      result = this.store[k];\n    }\n  } else {\n    this.store[k] = v;\n    result = v;\n  }\n\n  return result;\n};\n\nConfig.prototype.clear = function (key) {\n  if (key) {\n    delete this.store[key];\n  } else {\n    this.store = {};\n  }\n};\n\nConfig.prototype.init = function () {\n  this.store = _index.default.extend(true, {}, defaults, fetchCanonicalURL(), fetchDeclaritiveConfig());\n  return this.store;\n};\n\nvar config = new Config();\n\nvar _default = config.access.bind(config);\n\nexports.default = _default;\nvar init = config.init.bind(config);\nexports.init = init;\nvar clear = config.clear.bind(config);\nexports.clear = clear;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\n/**\n * DOM event delegator\n *\n * The delegator will listen\n * for events that bubble up\n * to the root node.\n *\n * @constructor\n * @param {Node|string} [root] The root node or a selector string matching the root node\n */\nfunction Delegate(root) {\n  /**\n   * Maintain a map of listener\n   * lists, keyed by event name.\n   *\n   * @type Object\n   */\n  this.listenerMap = [{}, {}];\n\n  if (root) {\n    this.root(root);\n  }\n  /** @type function() */\n\n\n  this.handle = Delegate.prototype.handle.bind(this); // Cache of event listeners removed during an event cycle\n\n  this._removedListeners = [];\n}\n/**\n * Start listening for events\n * on the provided DOM element\n *\n * @param  {Node|string} [root] The root node or a selector string matching the root node\n * @returns {Delegate} This method is chainable\n */\n\n\nDelegate.prototype.root = function (root) {\n  var listenerMap = this.listenerMap;\n  var eventType; // Remove master event listeners\n\n  if (this.rootElement) {\n    for (eventType in listenerMap[1]) {\n      if (listenerMap[1].hasOwnProperty(eventType)) {\n        this.rootElement.removeEventListener(eventType, this.handle, true);\n      }\n    }\n\n    for (eventType in listenerMap[0]) {\n      if (listenerMap[0].hasOwnProperty(eventType)) {\n        this.rootElement.removeEventListener(eventType, this.handle, false);\n      }\n    }\n  } // If no root or root is not\n  // a dom node, then remove internal\n  // root reference and exit here\n\n\n  if (!root || !root.addEventListener) {\n    if (this.rootElement) {\n      delete this.rootElement;\n    }\n\n    return this;\n  }\n  /**\n   * The root node at which\n   * listeners are attached.\n   *\n   * @type Node\n   */\n\n\n  this.rootElement = root; // Set up master event listeners\n\n  for (eventType in listenerMap[1]) {\n    if (listenerMap[1].hasOwnProperty(eventType)) {\n      this.rootElement.addEventListener(eventType, this.handle, true);\n    }\n  }\n\n  for (eventType in listenerMap[0]) {\n    if (listenerMap[0].hasOwnProperty(eventType)) {\n      this.rootElement.addEventListener(eventType, this.handle, false);\n    }\n  }\n\n  return this;\n};\n/**\n * @param {string} eventType\n * @returns boolean\n */\n\n\nDelegate.prototype.captureForType = function (eventType) {\n  return ['blur', 'error', 'focus', 'load', 'resize', 'scroll'].indexOf(eventType) !== -1;\n};\n/**\n * Attach a handler to one\n * event for all elements\n * that match the selector,\n * now or in the future\n *\n * The handler function receives\n * three arguments: the DOM event\n * object, the node that matched\n * the selector while the event\n * was bubbling and a reference\n * to itself. Within the handler,\n * 'this' is equal to the second\n * argument.\n *\n * The node that actually received\n * the event can be accessed via\n * 'event.target'.\n *\n * @param {string} eventType Listen for these events\n * @param {string|undefined} selector Only handle events on elements matching this selector, if undefined match root element\n * @param {function()} handler Handler function - event data passed here will be in event.data\n * @param {boolean} [useCapture] see 'useCapture' in <https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener>\n * @returns {Delegate} This method is chainable\n */\n\n\nDelegate.prototype.on = function (eventType, selector, handler, useCapture) {\n  var root;\n  var listenerMap;\n  var matcher;\n  var matcherParam;\n\n  if (!eventType) {\n    throw new TypeError('Invalid event type: ' + eventType);\n  } // handler can be passed as\n  // the second or third argument\n\n\n  if (typeof selector === 'function') {\n    useCapture = handler;\n    handler = selector;\n    selector = null;\n  } // Fallback to sensible defaults\n  // if useCapture not set\n\n\n  if (useCapture === undefined) {\n    useCapture = this.captureForType(eventType);\n  }\n\n  if (typeof handler !== 'function') {\n    throw new TypeError('Handler must be a type of Function');\n  }\n\n  root = this.rootElement;\n  listenerMap = this.listenerMap[useCapture ? 1 : 0]; // Add master handler for type if not created yet\n\n  if (!listenerMap[eventType]) {\n    if (root) {\n      root.addEventListener(eventType, this.handle, useCapture);\n    }\n\n    listenerMap[eventType] = [];\n  }\n\n  if (!selector) {\n    matcherParam = null; // COMPLEX - matchesRoot needs to have access to\n    // this.rootElement, so bind the function to this.\n\n    matcher = matchesRoot.bind(this); // Compile a matcher for the given selector\n  } else if (/^[a-z]+$/i.test(selector)) {\n    matcherParam = selector;\n    matcher = matchesTag;\n  } else if (/^#[a-z0-9\\-_]+$/i.test(selector)) {\n    matcherParam = selector.slice(1);\n    matcher = matchesId;\n  } else {\n    matcherParam = selector;\n    matcher = Element.prototype.matches;\n  } // Add to the list of listeners\n\n\n  listenerMap[eventType].push({\n    selector: selector,\n    handler: handler,\n    matcher: matcher,\n    matcherParam: matcherParam\n  });\n  return this;\n};\n/**\n * Remove an event handler\n * for elements that match\n * the selector, forever\n *\n * @param {string} [eventType] Remove handlers for events matching this type, considering the other parameters\n * @param {string} [selector] If this parameter is omitted, only handlers which match the other two will be removed\n * @param {function()} [handler] If this parameter is omitted, only handlers which match the previous two will be removed\n * @returns {Delegate} This method is chainable\n */\n\n\nDelegate.prototype.off = function (eventType, selector, handler, useCapture) {\n  var i;\n  var listener;\n  var listenerMap;\n  var listenerList;\n  var singleEventType; // Handler can be passed as\n  // the second or third argument\n\n  if (typeof selector === 'function') {\n    useCapture = handler;\n    handler = selector;\n    selector = null;\n  } // If useCapture not set, remove\n  // all event listeners\n\n\n  if (useCapture === undefined) {\n    this.off(eventType, selector, handler, true);\n    this.off(eventType, selector, handler, false);\n    return this;\n  }\n\n  listenerMap = this.listenerMap[useCapture ? 1 : 0];\n\n  if (!eventType) {\n    for (singleEventType in listenerMap) {\n      if (listenerMap.hasOwnProperty(singleEventType)) {\n        this.off(singleEventType, selector, handler);\n      }\n    }\n\n    return this;\n  }\n\n  listenerList = listenerMap[eventType];\n\n  if (!listenerList || !listenerList.length) {\n    return this;\n  } // Remove only parameter matches\n  // if specified\n\n\n  for (i = listenerList.length - 1; i >= 0; i--) {\n    listener = listenerList[i];\n\n    if ((!selector || selector === listener.selector) && (!handler || handler === listener.handler)) {\n      this._removedListeners.push(listener);\n\n      listenerList.splice(i, 1);\n    }\n  } // All listeners removed\n\n\n  if (!listenerList.length) {\n    delete listenerMap[eventType]; // Remove the main handler\n\n    if (this.rootElement) {\n      this.rootElement.removeEventListener(eventType, this.handle, useCapture);\n    }\n  }\n\n  return this;\n};\n/**\n * Handle an arbitrary event.\n *\n * @param {Event} event\n */\n\n\nDelegate.prototype.handle = function (event) {\n  var i;\n  var l;\n  var type = event.type;\n  var root;\n  var phase;\n  var listener;\n  var returned;\n  var listenerList = [];\n  var target;\n  var eventIgnore = 'ftLabsDelegateIgnore';\n\n  if (event[eventIgnore] === true) {\n    return;\n  }\n\n  target = event.target; // Hardcode value of Node.TEXT_NODE\n  // as not defined in IE8\n\n  if (target.nodeType === 3) {\n    target = target.parentNode;\n  } // Handle SVG <use> elements in IE\n\n\n  if (target.correspondingUseElement) {\n    target = target.correspondingUseElement;\n  }\n\n  root = this.rootElement;\n  phase = event.eventPhase || (event.target !== event.currentTarget ? 3 : 2); // eslint-disable-next-line default-case\n\n  switch (phase) {\n    case 1:\n      //Event.CAPTURING_PHASE:\n      listenerList = this.listenerMap[1][type];\n      break;\n\n    case 2:\n      //Event.AT_TARGET:\n      if (this.listenerMap[0] && this.listenerMap[0][type]) {\n        listenerList = listenerList.concat(this.listenerMap[0][type]);\n      }\n\n      if (this.listenerMap[1] && this.listenerMap[1][type]) {\n        listenerList = listenerList.concat(this.listenerMap[1][type]);\n      }\n\n      break;\n\n    case 3:\n      //Event.BUBBLING_PHASE:\n      listenerList = this.listenerMap[0][type];\n      break;\n  }\n\n  var toFire = []; // Need to continuously check\n  // that the specific list is\n  // still populated in case one\n  // of the callbacks actually\n  // causes the list to be destroyed.\n\n  l = listenerList.length;\n\n  while (target && l) {\n    for (i = 0; i < l; i++) {\n      listener = listenerList[i]; // Bail from this loop if\n      // the length changed and\n      // no more listeners are\n      // defined between i and l.\n\n      if (!listener) {\n        break;\n      }\n\n      if (target.tagName && [\"button\", \"input\", \"select\", \"textarea\"].indexOf(target.tagName.toLowerCase()) > -1 && target.hasAttribute(\"disabled\")) {\n        // Remove things that have previously fired\n        toFire = [];\n      } // Check for match and fire\n      // the event if there's one\n      //\n      // TODO:MCG:20120117: Need a way\n      // to check if event#stopImmediatePropagation\n      // was called. If so, break both loops.\n      else if (listener.matcher.call(target, listener.matcherParam, target)) {\n          toFire.push([event, target, listener]);\n        }\n    } // TODO:MCG:20120117: Need a way to\n    // check if event#stopPropagation\n    // was called. If so, break looping\n    // through the DOM. Stop if the\n    // delegation root has been reached\n\n\n    if (target === root) {\n      break;\n    }\n\n    l = listenerList.length; // Fall back to parentNode since SVG children have no parentElement in IE\n\n    target = target.parentElement || target.parentNode; // Do not traverse up to document root when using parentNode, though\n\n    if (target instanceof HTMLDocument) {\n      break;\n    }\n  }\n\n  var ret;\n\n  for (i = 0; i < toFire.length; i++) {\n    // Has it been removed during while the event function was fired\n    if (this._removedListeners.indexOf(toFire[i][2]) > -1) {\n      continue;\n    }\n\n    returned = this.fire.apply(this, toFire[i]); // Stop propagation to subsequent\n    // callbacks if the callback returned\n    // false\n\n    if (returned === false) {\n      toFire[i][0][eventIgnore] = true;\n      toFire[i][0].preventDefault();\n      ret = false;\n      break;\n    }\n  }\n\n  return ret;\n};\n/**\n * Fire a listener on a target.\n *\n * @param {Event} event\n * @param {Node} target\n * @param {Object} listener\n * @returns {boolean}\n */\n\n\nDelegate.prototype.fire = function (event, target, listener) {\n  return listener.handler.call(target, event, target);\n};\n/**\n * Check whether an element\n * matches a tag selector.\n *\n * Tags are NOT case-sensitive,\n * except in XML (and XML-based\n * languages such as XHTML).\n *\n * @param {string} tagName The tag name to test against\n * @param {Element} element The element to test with\n * @returns boolean\n */\n\n\nfunction matchesTag(tagName, element) {\n  return tagName.toLowerCase() === element.tagName.toLowerCase();\n}\n/**\n * Check whether an element\n * matches the root.\n *\n * @param {?String} selector In this case this is always passed through as null and not used\n * @param {Element} element The element to test with\n * @returns boolean\n */\n\n\nfunction matchesRoot(selector, element) {\n  if (this.rootElement === window) {\n    return (// Match the outer document (dispatched from document)\n      element === document || // The <html> element (dispatched from document.body or document.documentElement)\n      element === document.documentElement || // Or the window itself (dispatched from window)\n      element === window\n    );\n  }\n\n  return this.rootElement === element;\n}\n/**\n * Check whether the ID of\n * the element in 'this'\n * matches the given ID.\n *\n * IDs are case-sensitive.\n *\n * @param {string} id The ID to test against\n * @param {Element} element The element to test with\n * @returns boolean\n */\n\n\nfunction matchesId(id, element) {\n  return id === element.id;\n}\n/**\n * Short hand for off()\n * and root(), ie both\n * with no parameters\n *\n * @return void\n */\n\n\nDelegate.prototype.destroy = function () {\n  this.off();\n  this.root();\n};\n\nvar _default = Delegate;\nexports.default = _default;\nmodule.exports = exports.default;","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n  try {\n    var info = gen[key](arg);\n    var value = info.value;\n  } catch (error) {\n    reject(error);\n    return;\n  }\n\n  if (info.done) {\n    resolve(value);\n  } else {\n    Promise.resolve(value).then(_next, _throw);\n  }\n}\n\nfunction _asyncToGenerator(fn) {\n  return function () {\n    var self = this,\n        args = arguments;\n    return new Promise(function (resolve, reject) {\n      var gen = fn.apply(self, args);\n\n      function _next(value) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n      }\n\n      function _throw(err) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n      }\n\n      _next(undefined);\n    });\n  };\n}\n\nmodule.exports = _asyncToGenerator;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","/**\n * @file\n * Sundry hooks that have multiple use-cases\n */\n\nimport { useRef, useEffect, useState } from 'react';\nimport OAds from '@financial-times/o-ads';\nimport { isElement, registerLayoutChangeEvents, unregisterLayoutChangeEvents } from './helpers';\n\n/**\n * @function\n * Provides a standardised way of creating the container DOM elements for portals\n * Usage:\n  ```\n  const SomeComponent = () => {\n    const target = usePortal();\n    return createPortal(<div>my modal</div>, target);\n  }\n  ```\n *\n * Modified from: https://www.jayfreestone.com/writing/react-portals-with-hooks/\n */\nexport const usePortal = (parent) => {\n  const rootRef = useRef(null);\n\n  useEffect(() => {\n    if (!rootRef.current) {\n      const rootEl = document.createElement('div');\n      rootEl.classList.add('g-portal');\n      rootRef.current = rootEl;\n    }\n    /* eslint-disable no-nested-ternary */\n    const parentEl = isElement(parent)\n      ? parent\n      : typeof parent === 'string'\n      ? document.querySelector(parent) || document.createElement('div')\n      : document.createElement('div');\n    /* eslint-enable no-nested-ternary */\n\n    // Unmounted\n    if (!parentEl.parentElement) {\n      parentEl.classList.add('g-portal-parent');\n      document.body.insertBefore(parentEl, document.body.firstElementChild);\n    }\n\n    parentEl.appendChild(rootRef.current);\n\n    return () => {\n      rootRef.current.remove();\n      // Remove parent element if empty.\n      if (parentEl.childNodes.length === 0) parentEl.remove();\n    };\n  }, [parent]);\n\n  return rootRef.current;\n};\n\n/**\n * @function\n * Initialises o-ads\n */\nexport const useAds = (config, enabled = true) => {\n  useEffect(() => {\n    // Async side-effects should be in an IIFE in useEffect; don't make the CB async!\n    (async () => {\n      try {\n        if (enabled) {\n          const initialised = await OAds.init({\n            gpt: {\n              network: 5887,\n              site: config.gptSite || 'ft.com',\n              zone: config.gptZone || 'unclassified',\n            },\n            targeting: config.targeting,\n            lazyLoad: true,\n          });\n\n          const slots = Array.from(document.querySelectorAll('.o-ads, [data-o-ads-name]'));\n          slots.forEach(initialised.slots.initSlot.bind(initialised.slots));\n        }\n      } catch (e) {\n        if (!global.STORYBOOK_ENV) console.error(e); // eslint-disable-line no-console\n      }\n    })();\n  }, [config, enabled]);\n};\n\n/**\n * @function\n * Initialises o-grid's layout change events on first call;\n * then returns the current breakpoint.\n */\nexport const useLayoutChangeEvents = () => {\n  const [breakpoint, setBreakpoint] = useState('default');\n\n  const listenersRef = useRef();\n\n  const update = ({ detail }) => {\n    setBreakpoint({ breakpoint: detail });\n  };\n\n  useEffect(() => {\n    try {\n      window.addEventListener('o-grid.layoutChange', update);\n      listenersRef.current = registerLayoutChangeEvents();\n\n      return () => {\n        unregisterLayoutChangeEvents(listenersRef.current);\n        window.removeEventListener('o-grid.layoutChange', update);\n      };\n    } catch (e) {\n      // Suppress errors in Jest\n      if (!global.STORYBOOK_ENV) console.error(e); // eslint-disable-line no-console\n    }\n  }, []);\n\n  return breakpoint;\n};\n\n/**\n * @file\n * Sets up global keyboard shortcuts\n */\nexport const useKeyboardShortcuts = (shortcuts) => {\n  const handlers = useRef(null);\n  useEffect(() => {\n    handlers.current = shortcuts;\n  }, [shortcuts]);\n  useEffect(() => {\n    const listener = ({ keyCode, target }) => {\n      if (target === document.body && handlers.current[keyCode]) {\n        handlers.current[keyCode]();\n      }\n    };\n\n    document.addEventListener('keydown', listener);\n    return () => {\n      window.removeEventListener('keydown', listener);\n    };\n  }, []);\n\n  // Returns synthetic event listeners\n  return Object.entries(shortcuts).reduce(\n    (a, [k, v]) => ({\n      ...a,\n      [k]: ({ keyPress }) => keyPress === k && v(),\n    }),\n    {},\n  );\n};\n\nexport default {\n  usePortal,\n  useAds,\n  useLayoutChangeEvents,\n  useKeyboardShortcuts,\n};\n","'use strict'\n\nmodule.exports = decimal\n\n// Check if the given character code, or the character code at the first\n// character, is decimal.\nfunction decimal(character) {\n  var code = typeof character === 'string' ? character.charCodeAt(0) : character\n\n  return code >= 48 && code <= 57 /* 0-9 */\n}\n","'use strict'\n\nmodule.exports = visit\n\nvar visitParents = require('unist-util-visit-parents')\n\nvar CONTINUE = visitParents.CONTINUE\nvar SKIP = visitParents.SKIP\nvar EXIT = visitParents.EXIT\n\nvisit.CONTINUE = CONTINUE\nvisit.SKIP = SKIP\nvisit.EXIT = EXIT\n\nfunction visit(tree, test, visitor, reverse) {\n  if (typeof test === 'function' && typeof visitor !== 'function') {\n    reverse = visitor\n    visitor = test\n    test = null\n  }\n\n  visitParents(tree, test, overload, reverse)\n\n  function overload(node, parents) {\n    var parent = parents[parents.length - 1]\n    var index = parent ? parent.children.indexOf(node) : null\n    return visitor(node, index, parent)\n  }\n}\n","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;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.getCurrentLayout = getCurrentLayout;\nexports.getCurrentGutter = getCurrentGutter;\nexports.getGridBreakpoints = getGridBreakpoints;\nexports.enableLayoutChangeEvents = enableLayoutChangeEvents;\nexports.default = void 0;\nvar missingDataMessage = 'Could not find layout information. ' + 'You may need to include o-grid css. See the README (https://registry.origami.ft.com/components/o-grid/readme) ' + 'for more information.';\n/**\n * Grab grid properties\n * @return {Object} layout names and gutter widths\n */\n\nfunction getGridProperties() {\n  var properties = getGridFromDoc('after');\n\n  if (Object.keys(properties).length === 0) {\n    console.warn(missingDataMessage);\n  }\n\n  return properties;\n}\n/**\n * Get all layout sizes.\n * CSS must be included so JavaScript can retrieve layout information.\n * See the README for more information.\n * @return {Object} layout names and sizes\n */\n\n\nfunction getGridBreakpoints() {\n  var breakpoints = getGridFromDoc('before');\n\n  if (Object.keys(breakpoints).length === 0) {\n    console.warn(missingDataMessage);\n  }\n\n  return breakpoints;\n}\n/**\n * Grab grid properties surfaced in html:after and html:before's content\n * @param {String} position Whether to get all properties in :before, or current properties in :after\n * @return {Object} layout names and gutter widths\n */\n\n\nfunction getGridFromDoc(position) {\n  // Contained in a try/catch as it should not error if o-grid styles are not (deliberately or accidentally) loaded\n  // e.g. o-tracking will always try to read this property, but the page is not obliged to use o-grid for layout\n  try {\n    var gridProperties = window.getComputedStyle(document.documentElement, ':' + position).getPropertyValue('content'); // Firefox computes: \"{\\\"foo\\\": \\\"bar\\\"}\"\n    // We want readable JSON: {\"foo\": \"bar\"}\n\n    gridProperties = gridProperties.replace(/'/g, '').replace(/\\\\/g, '').replace(/^\"/, '').replace(/\"$/, '');\n    return JSON.parse(gridProperties);\n  } catch (e) {\n    return {};\n  }\n}\n/**\n * Grab the current layout.\n * CSS must be included so JavaScript can retrieve layout information.\n * See the README for more information.\n * @return {String} Layout name\n */\n\n\nfunction getCurrentLayout() {\n  return getGridProperties().layout;\n}\n/**\n * Grab the current space between columns.\n * CSS must be included so JavaScript can retrieve layout information.\n * See the README for more information.\n * @return {String} Gutter width in pixels\n */\n\n\nfunction getCurrentGutter() {\n  return getGridProperties().gutter;\n}\n/**\n * This sets MediaQueryListeners on all the o-grid breakpoints\n * and fires a `o-grid.layoutChange` event on layout change.\n * CSS must be included so JavaScript can retrieve layout information.\n * See the README for more information.\n */\n\n\nfunction enableLayoutChangeEvents() {\n  // Create a map containing all breakpoints exposed via html:before\n  var gridLayouts = getGridBreakpoints();\n\n  if (gridLayouts.hasOwnProperty('layouts')) {\n    var layouts = gridLayouts.layouts;\n    var breakpoints = [...Object.entries(layouts), ['default', '240px']].sort((a, b) => parseFloat(a[1]) - parseFloat(b[1]));\n\n    var setupQuery = (query, size) => {\n      // matchMedia listener handler: Dispatch `o-grid.layoutChange` event if a match\n      var handleMQChange = mql => {\n        if (mql.matches) {\n          window.dispatchEvent(new CustomEvent('o-grid.layoutChange', {\n            detail: {\n              layout: size\n            }\n          }));\n        }\n      };\n\n      var mql = window.matchMedia(query);\n      mql.addListener(handleMQChange);\n      handleMQChange(mql);\n    }; // Generate media queries for each\n\n\n    var decr1 = val => \"\".concat(Number(val.replace('px', '') - 1), \"px\");\n\n    for (var index = 0; index < breakpoints.length; index++) {\n      var [layoutName, layoutWidth] = breakpoints[index];\n      var isLast = index === breakpoints.length - 1;\n\n      if (isLast) {\n        setupQuery(\"(min-width: \".concat(layoutWidth, \")\"), layoutName);\n        continue;\n      }\n\n      var [, nextLayoutWidth] = breakpoints[index + 1];\n      setupQuery(\"(min-width: \".concat(layoutWidth, \") and (max-width: \").concat(decr1(nextLayoutWidth), \")\"), layoutName);\n    }\n  } else {\n    console.error('Could not enable grid layout change events. Include o-grid css. See the README (https://registry.origami.ft.com/components/o-grid/readme) for more details.');\n  }\n}\n\nvar _default = {\n  getCurrentLayout,\n  getCurrentGutter,\n  getGridBreakpoints,\n  enableLayoutChangeEvents\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _date = _interopRequireDefault(require(\"./dist/js/date.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar constructAll = function constructAll() {\n  _date.default.init();\n\n  document.removeEventListener('o.DOMContentLoaded', constructAll);\n};\n\ndocument.addEventListener('o.DOMContentLoaded', constructAll);\nvar _default = _date.default;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.updateConfig = exports.event = exports.page = exports.init = exports.link = exports.tracking = exports.default = void 0;\n\nvar _settings = _interopRequireDefault(require(\"./dist/javascript/core/settings\"));\n\nvar _user = _interopRequireDefault(require(\"./dist/javascript/core/user\"));\n\nvar _session = _interopRequireDefault(require(\"./dist/javascript/core/session\"));\n\nvar _send = _interopRequireDefault(require(\"./dist/javascript/core/send\"));\n\nvar _custom = _interopRequireDefault(require(\"./dist/javascript/events/custom\"));\n\nvar _pageView = _interopRequireDefault(require(\"./dist/javascript/events/page-view\"));\n\nvar _click = _interopRequireDefault(require(\"./dist/javascript/events/click\"));\n\nvar _utils = _interopRequireDefault(require(\"./dist/javascript/utils\"));\n\nvar _core = _interopRequireDefault(require(\"./dist/javascript/core\"));\n\nvar _componentView = _interopRequireDefault(require(\"./dist/javascript/events/component-view\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * The version of the tracking module.\n * @type {string}\n */\nvar version = '2.0.0';\n/**\n * The source of this event.\n * @type {string}\n */\n\nvar source = 'o-tracking';\n/**\n * The API key.\n * @type {string}\n */\n\nvar api_key = 'qUb9maKfKbtpRsdp0p2J7uWxRPGJEP';\n/**\n * @class Tracking\n */\n\nfunction Tracking() {\n  this.version = version;\n  this.source = source;\n  this.api_key = api_key;\n  /**\n   * The initialised state of the object.\n   * @type {boolean}\n   */\n\n  this.initialised = false;\n}\n/**\n * Turn on/off developer mode. (Can also be activated on init.)\n * @param {boolean} level - Turn on or off, defaults to false if omitted.\n * @return {undefined}\n */\n\n\nTracking.prototype.developer = function (level) {\n  if (level) {\n    _settings.default.set('developer', true);\n  } else {\n    _settings.default.destroy('developer', null);\n\n    _settings.default.destroy('no_send', null);\n  }\n};\n/**\n * Clean up the tracking module.\n * @return {undefined}\n */\n\n\nTracking.prototype.destroy = function () {\n  this.developer(false);\n  this.initialised = false;\n\n  _settings.default.destroy('config');\n\n  _settings.default.destroy('page_sent');\n};\n/**\n * Overload toString method to show the version.\n * @return {string} The module's version.\n */\n\n\nTracking.prototype.toString = function () {\n  return 'oTracking version ' + version;\n};\n/**\n * Track a custom event.\n * @see {@link event}\n */\n\n\nTracking.prototype.event = _custom.default;\n/**\n * Make the page tracking request.\n * @see {@link page}\n */\n\nTracking.prototype.page = _pageView.default;\n/**\n* To initalise view events for components/elements.\n* @see {@link view#init}\n*/\n\nTracking.prototype.view = _componentView.default;\n/**\n * To initalise click events.\n * @see {@link click#init}\n */\n\nTracking.prototype.click = _click.default;\n/**\n * Previously, the click handler was initialised as \"link\".\n * @deprecated Use {@link Tracking#click} instead.\n */\n\nTracking.prototype.link = {\n  init: _ => Tracking.prototype.click.init('link')\n}; // eslint-disable-line no-unused-vars\n\n/**\n * Tracking utilities.\n * @see {@link utils}\n */\n\nTracking.prototype.utils = _utils.default;\n/**\n * Get the rootID.\n * @see {@link utils}\n */\n\nTracking.prototype.getRootID = _core.default.getRootID;\n/**\n * Initialises the Tracking object.\n *\n * All options are optional, if a configuration option is missing, the module\n * will try to initialise using any configuration found in the DOM using the\n * script config tag.\n *\n * @example\n * <!-- DOM configuration settings -->\n * <script type='application/json' data-o-tracking-config>\n * page: {\n * \t product: 'desktop'\n * },\n * user: {\n *   user_id: '023ur9jfokwenvcklwnfiwhfoi324'\n * }\n * </script>\n *\n * @param {Object} config \t\t\t\t\t- See {@link Tracking} for the configuration options.\n * @param {boolean} config.developer        - Optional, if `true`, logs certain actions.\n * @param {boolean} config.noSend           - Optional, if `true`, won't send events.\n * @param {string} config.configId          - Optional\n * @param {string} config.session           - Optional\n *\n * @return {Tracking} - Returns the tracking object\n */\n\nTracking.prototype.init = function (config) {\n  if (this.initialised) {\n    return this;\n  }\n\n  var hasDeclarativeConfig = Boolean(this._getDeclarativeConfigElement());\n  config = config || {};\n\n  if (hasDeclarativeConfig) {\n    config = this._getDeclarativeConfig(config);\n  } // If there's no config, there is no point initialising!\n  // http://stackoverflow.com/a/32108184\n\n\n  if (Object.keys(config).length === 0 && config.constructor === Object) {\n    return null;\n  }\n\n  _settings.default.set('version', this.version);\n\n  _settings.default.set('source', this.source);\n\n  _settings.default.set('api_key', this.api_key);\n\n  _settings.default.set('page_sent', false);\n\n  var cookieDomain = config ? config.cookieDomain : false; // Set up the user from stored - may later be updated by config\n\n  _user.default.init(false, cookieDomain);\n\n  this.updateConfig(config); // Session\n\n  _session.default.init(config.session); // Initialize the sending queue.\n\n\n  _send.default.init();\n\n  this.event.init();\n  this.page.init();\n  this.initialised = true;\n  return this;\n};\n/**\n * Update the tracking configuration with any state changes. The supplied\n * config is merged with any existing config; to unset a value, set it as\n * null or undefined.\n *\n * @param {Object} newConfig The configuration object to merge in - see init()\n * @return {void}\n */\n\n\nTracking.prototype.updateConfig = function (newConfig) {\n  var config = _settings.default.get('config') || {};\n  config = this.utils.merge(config, newConfig);\n\n  _settings.default.set('config', config); // Developer mode\n\n\n  if (config.developer) {\n    this.developer(config.developer);\n\n    if (config.noSend) {\n      _settings.default.set('no_send', true);\n    }\n  }\n\n  if (config.user && config.user.user_id) {\n    _user.default.setUser(config.user.user_id);\n  }\n\n  _send.default.setDomain();\n};\n/**\n * Checks if the <script type='application/json' data-o-tracking-config> element is in the DOM\n * @private\n * @return {HTMLElement} - Returns the <script> element if found\n */\n\n\nTracking.prototype._getDeclarativeConfigElement = function () {\n  return document.querySelector('script[data-o-tracking-config]');\n};\n/**\n * Initialises additional data using the <script type='application/json' data-o-tracking-config> element in the DOM.\n * @private\n * @param {Object} options - A partially, or fully filled options object.  If\n *                           an option is missing, this method will attempt to\n *                           initialise it from the DOM.\n * @return {Object} - The options modified to include the options gathered from the DOM\n */\n\n\nTracking.prototype._getDeclarativeConfig = function (options) {\n  var configEl = this._getDeclarativeConfigElement();\n\n  var declarativeConfigString;\n\n  if (configEl) {\n    declarativeConfigString = configEl.textContent || configEl.innerText || configEl.innerHTML;\n  } else {\n    return false;\n  }\n\n  var declarativeOptions;\n\n  try {\n    declarativeOptions = JSON.parse(declarativeConfigString);\n  } catch (e) {\n    var configError = new Error('Invalid JSON configuration syntax, check validity for o-tracking configuration: \"' + e.message + '\"');\n    this.utils.broadcast('oErrors', 'log', {\n      error: configError.message,\n      info: {\n        module: 'o-tracking'\n      }\n    });\n    throw configError;\n  }\n\n  for (var property in declarativeOptions) {\n    if (declarativeOptions.hasOwnProperty(property)) {\n      options[property] = options[property] || declarativeOptions[property];\n    }\n  }\n\n  return options;\n};\n\nvar tracking = new Tracking();\nexports.tracking = tracking;\nvar link = tracking.link;\nexports.link = link;\nvar boundInit = tracking.init.bind(tracking);\nexports.init = boundInit;\nvar boundPage = tracking.page.bind(tracking);\nexports.page = boundPage;\nvar boundEvent = tracking.event.bind(tracking);\nexports.event = boundEvent;\nvar boundUpdateConfig = tracking.updateConfig.bind(tracking);\nexports.updateConfig = boundUpdateConfig;\n\nfunction initialise() {\n  tracking.init();\n  document.removeEventListener('o.DOMContentLoaded', initialise);\n} // Try and initialise on o.DOMContentLoaded. If it fails, defer to the\n// consumer of the library.\n\n\ndocument.addEventListener('o.DOMContentLoaded', initialise);\n/**\n * A constructed object, this module is a Singleton as we only want one\n * instance sending events. See {@link Tracking} for the publicly available\n * interface.\n * @type {Tracking}\n */\n\nvar _default = tracking;\nexports.default = _default;","// shim for using process in browser\nvar process = module.exports = {};\n\n// 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}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\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    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\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\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\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\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\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    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\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) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","'use strict'\n\nvar legacy = require('character-entities-legacy')\nvar invalid = require('character-reference-invalid')\nvar decimal = require('is-decimal')\nvar hexadecimal = require('is-hexadecimal')\nvar alphanumerical = require('is-alphanumerical')\nvar decodeEntity = require('./decode-entity')\n\nmodule.exports = parseEntities\n\nvar own = {}.hasOwnProperty\nvar fromCharCode = String.fromCharCode\nvar noop = Function.prototype\n\n// Default settings.\nvar defaults = {\n  warning: null,\n  reference: null,\n  text: null,\n  warningContext: null,\n  referenceContext: null,\n  textContext: null,\n  position: {},\n  additional: null,\n  attribute: false,\n  nonTerminated: true\n}\n\n// Characters.\nvar tab = 9 // '\\t'\nvar lineFeed = 10 // '\\n'\nvar formFeed = 12 //  '\\f'\nvar space = 32 // ' '\nvar ampersand = 38 //  '&'\nvar semicolon = 59 //  ';'\nvar lessThan = 60 //  '<'\nvar equalsTo = 61 //  '='\nvar numberSign = 35 //  '#'\nvar uppercaseX = 88 //  'X'\nvar lowercaseX = 120 //  'x'\nvar replacementCharacter = 65533 // '�'\n\n// Reference types.\nvar name = 'named'\nvar hexa = 'hexadecimal'\nvar deci = 'decimal'\n\n// Map of bases.\nvar bases = {}\n\nbases[hexa] = 16\nbases[deci] = 10\n\n// Map of types to tests.\n// Each type of character reference accepts different characters.\n// This test is used to detect whether a reference has ended (as the semicolon\n// is not strictly needed).\nvar tests = {}\n\ntests[name] = alphanumerical\ntests[deci] = decimal\ntests[hexa] = hexadecimal\n\n// Warning types.\nvar namedNotTerminated = 1\nvar numericNotTerminated = 2\nvar namedEmpty = 3\nvar numericEmpty = 4\nvar namedUnknown = 5\nvar numericDisallowed = 6\nvar numericProhibited = 7\n\n// Warning messages.\nvar messages = {}\n\nmessages[namedNotTerminated] =\n  'Named character references must be terminated by a semicolon'\nmessages[numericNotTerminated] =\n  'Numeric character references must be terminated by a semicolon'\nmessages[namedEmpty] = 'Named character references cannot be empty'\nmessages[numericEmpty] = 'Numeric character references cannot be empty'\nmessages[namedUnknown] = 'Named character references must be known'\nmessages[numericDisallowed] =\n  'Numeric character references cannot be disallowed'\nmessages[numericProhibited] =\n  'Numeric character references cannot be outside the permissible Unicode range'\n\n// Wrap to ensure clean parameters are given to `parse`.\nfunction parseEntities(value, options) {\n  var settings = {}\n  var option\n  var key\n\n  if (!options) {\n    options = {}\n  }\n\n  for (key in defaults) {\n    option = options[key]\n    settings[key] =\n      option === null || option === undefined ? defaults[key] : option\n  }\n\n  if (settings.position.indent || settings.position.start) {\n    settings.indent = settings.position.indent || []\n    settings.position = settings.position.start\n  }\n\n  return parse(value, settings)\n}\n\n// Parse entities.\n// eslint-disable-next-line complexity\nfunction parse(value, settings) {\n  var additional = settings.additional\n  var nonTerminated = settings.nonTerminated\n  var handleText = settings.text\n  var handleReference = settings.reference\n  var handleWarning = settings.warning\n  var textContext = settings.textContext\n  var referenceContext = settings.referenceContext\n  var warningContext = settings.warningContext\n  var pos = settings.position\n  var indent = settings.indent || []\n  var length = value.length\n  var index = 0\n  var lines = -1\n  var column = pos.column || 1\n  var line = pos.line || 1\n  var queue = ''\n  var result = []\n  var entityCharacters\n  var namedEntity\n  var terminated\n  var characters\n  var character\n  var reference\n  var following\n  var warning\n  var reason\n  var output\n  var entity\n  var begin\n  var start\n  var type\n  var test\n  var prev\n  var next\n  var diff\n  var end\n\n  if (typeof additional === 'string') {\n    additional = additional.charCodeAt(0)\n  }\n\n  // Cache the current point.\n  prev = now()\n\n  // Wrap `handleWarning`.\n  warning = handleWarning ? parseError : noop\n\n  // Ensure the algorithm walks over the first character and the end (inclusive).\n  index--\n  length++\n\n  while (++index < length) {\n    // If the previous character was a newline.\n    if (character === lineFeed) {\n      column = indent[lines] || 1\n    }\n\n    character = value.charCodeAt(index)\n\n    if (character === ampersand) {\n      following = value.charCodeAt(index + 1)\n\n      // The behaviour depends on the identity of the next character.\n      if (\n        following === tab ||\n        following === lineFeed ||\n        following === formFeed ||\n        following === space ||\n        following === ampersand ||\n        following === lessThan ||\n        following !== following ||\n        (additional && following === additional)\n      ) {\n        // Not a character reference.\n        // No characters are consumed, and nothing is returned.\n        // This is not an error, either.\n        queue += fromCharCode(character)\n        column++\n\n        continue\n      }\n\n      start = index + 1\n      begin = start\n      end = start\n\n      if (following === numberSign) {\n        // Numerical entity.\n        end = ++begin\n\n        // The behaviour further depends on the next character.\n        following = value.charCodeAt(end)\n\n        if (following === uppercaseX || following === lowercaseX) {\n          // ASCII hex digits.\n          type = hexa\n          end = ++begin\n        } else {\n          // ASCII digits.\n          type = deci\n        }\n      } else {\n        // Named entity.\n        type = name\n      }\n\n      entityCharacters = ''\n      entity = ''\n      characters = ''\n      test = tests[type]\n      end--\n\n      while (++end < length) {\n        following = value.charCodeAt(end)\n\n        if (!test(following)) {\n          break\n        }\n\n        characters += fromCharCode(following)\n\n        // Check if we can match a legacy named reference.\n        // If so, we cache that as the last viable named reference.\n        // This ensures we do not need to walk backwards later.\n        if (type === name && own.call(legacy, characters)) {\n          entityCharacters = characters\n          entity = legacy[characters]\n        }\n      }\n\n      terminated = value.charCodeAt(end) === semicolon\n\n      if (terminated) {\n        end++\n\n        namedEntity = type === name ? decodeEntity(characters) : false\n\n        if (namedEntity) {\n          entityCharacters = characters\n          entity = namedEntity\n        }\n      }\n\n      diff = 1 + end - start\n\n      if (!terminated && !nonTerminated) {\n        // Empty.\n      } else if (!characters) {\n        // An empty (possible) entity is valid, unless it’s numeric (thus an\n        // ampersand followed by an octothorp).\n        if (type !== name) {\n          warning(numericEmpty, diff)\n        }\n      } else if (type === name) {\n        // An ampersand followed by anything unknown, and not terminated, is\n        // invalid.\n        if (terminated && !entity) {\n          warning(namedUnknown, 1)\n        } else {\n          // If theres something after an entity name which is not known, cap\n          // the reference.\n          if (entityCharacters !== characters) {\n            end = begin + entityCharacters.length\n            diff = 1 + end - begin\n            terminated = false\n          }\n\n          // If the reference is not terminated, warn.\n          if (!terminated) {\n            reason = entityCharacters ? namedNotTerminated : namedEmpty\n\n            if (settings.attribute) {\n              following = value.charCodeAt(end)\n\n              if (following === equalsTo) {\n                warning(reason, diff)\n                entity = null\n              } else if (alphanumerical(following)) {\n                entity = null\n              } else {\n                warning(reason, diff)\n              }\n            } else {\n              warning(reason, diff)\n            }\n          }\n        }\n\n        reference = entity\n      } else {\n        if (!terminated) {\n          // All non-terminated numeric entities are not rendered, and trigger a\n          // warning.\n          warning(numericNotTerminated, diff)\n        }\n\n        // When terminated and number, parse as either hexadecimal or decimal.\n        reference = parseInt(characters, bases[type])\n\n        // Trigger a warning when the parsed number is prohibited, and replace\n        // with replacement character.\n        if (prohibited(reference)) {\n          warning(numericProhibited, diff)\n          reference = fromCharCode(replacementCharacter)\n        } else if (reference in invalid) {\n          // Trigger a warning when the parsed number is disallowed, and replace\n          // by an alternative.\n          warning(numericDisallowed, diff)\n          reference = invalid[reference]\n        } else {\n          // Parse the number.\n          output = ''\n\n          // Trigger a warning when the parsed number should not be used.\n          if (disallowed(reference)) {\n            warning(numericDisallowed, diff)\n          }\n\n          // Stringify the number.\n          if (reference > 0xffff) {\n            reference -= 0x10000\n            output += fromCharCode((reference >>> (10 & 0x3ff)) | 0xd800)\n            reference = 0xdc00 | (reference & 0x3ff)\n          }\n\n          reference = output + fromCharCode(reference)\n        }\n      }\n\n      // Found it!\n      // First eat the queued characters as normal text, then eat an entity.\n      if (reference) {\n        flush()\n\n        prev = now()\n        index = end - 1\n        column += end - start + 1\n        result.push(reference)\n        next = now()\n        next.offset++\n\n        if (handleReference) {\n          handleReference.call(\n            referenceContext,\n            reference,\n            {start: prev, end: next},\n            value.slice(start - 1, end)\n          )\n        }\n\n        prev = next\n      } else {\n        // If we could not find a reference, queue the checked characters (as\n        // normal characters), and move the pointer to their end.\n        // This is possible because we can be certain neither newlines nor\n        // ampersands are included.\n        characters = value.slice(start - 1, end)\n        queue += characters\n        column += characters.length\n        index = end - 1\n      }\n    } else {\n      // Handle anything other than an ampersand, including newlines and EOF.\n      if (\n        character === 10 // Line feed\n      ) {\n        line++\n        lines++\n        column = 0\n      }\n\n      if (character === character) {\n        queue += fromCharCode(character)\n        column++\n      } else {\n        flush()\n      }\n    }\n  }\n\n  // Return the reduced nodes, and any possible warnings.\n  return result.join('')\n\n  // Get current position.\n  function now() {\n    return {\n      line: line,\n      column: column,\n      offset: index + (pos.offset || 0)\n    }\n  }\n\n  // “Throw” a parse-error: a warning.\n  function parseError(code, offset) {\n    var position = now()\n\n    position.column += offset\n    position.offset += offset\n\n    handleWarning.call(warningContext, messages[code], position, code)\n  }\n\n  // Flush `queue` (normal text).\n  // Macro invoked before each entity and at the end of `value`.\n  // Does nothing when `queue` is empty.\n  function flush() {\n    if (queue) {\n      result.push(queue)\n\n      if (handleText) {\n        handleText.call(textContext, queue, {start: prev, end: now()})\n      }\n\n      queue = ''\n    }\n  }\n}\n\n// Check if `character` is outside the permissible unicode range.\nfunction prohibited(code) {\n  return (code >= 0xd800 && code <= 0xdfff) || code > 0x10ffff\n}\n\n// Check if `character` is disallowed.\nfunction disallowed(code) {\n  return (\n    (code >= 0x0001 && code <= 0x0008) ||\n    code === 0x000b ||\n    (code >= 0x000d && code <= 0x001f) ||\n    (code >= 0x007f && code <= 0x009f) ||\n    (code >= 0xfdd0 && code <= 0xfdef) ||\n    (code & 0xffff) === 0xffff ||\n    (code & 0xffff) === 0xfffe\n  )\n}\n","/*!\n * repeat-string <https://github.com/jonschlinkert/repeat-string>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\n/**\n * Results cache\n */\n\nvar res = '';\nvar cache;\n\n/**\n * Expose `repeat`\n */\n\nmodule.exports = repeat;\n\n/**\n * Repeat the given `string` the specified `number`\n * of times.\n *\n * **Example:**\n *\n * ```js\n * var repeat = require('repeat-string');\n * repeat('A', 5);\n * //=> AAAAA\n * ```\n *\n * @param {String} `string` The string to repeat\n * @param {Number} `number` The number of times to repeat the string\n * @return {String} Repeated string\n * @api public\n */\n\nfunction repeat(str, num) {\n  if (typeof str !== 'string') {\n    throw new TypeError('expected a string');\n  }\n\n  // cover common, quick use cases\n  if (num === 1) return str;\n  if (num === 2) return str + str;\n\n  var max = str.length * num;\n  if (cache !== str || typeof cache === 'undefined') {\n    cache = str;\n    res = '';\n  } else if (res.length >= max) {\n    return res.substr(0, max);\n  }\n\n  while (max > res.length && num > 1) {\n    if (num & 1) {\n      res += str;\n    }\n\n    num >>= 1;\n    str += str;\n  }\n\n  res += str;\n  res = res.substr(0, max);\n  return res;\n}\n","'use strict'\n\nmodule.exports = trimTrailingLines\n\n// Remove final newline characters from `value`.\nfunction trimTrailingLines(value) {\n  return String(value).replace(/\\n+$/, '')\n}\n","'use strict';\n\nmodule.exports = interrupt;\n\nfunction interrupt(interruptors, tokenizers, ctx, params) {\n  var bools = ['pedantic', 'commonmark'];\n  var count = bools.length;\n  var length = interruptors.length;\n  var index = -1;\n  var interruptor;\n  var config;\n  var fn;\n  var offset;\n  var bool;\n  var ignore;\n\n  while (++index < length) {\n    interruptor = interruptors[index];\n    config = interruptor[1] || {};\n    fn = interruptor[0];\n    offset = -1;\n    ignore = false;\n\n    while (++offset < count) {\n      bool = bools[offset];\n\n      if (config[bool] !== undefined && config[bool] !== ctx.options[bool]) {\n        ignore = true;\n        break;\n      }\n    }\n\n    if (ignore) {\n      continue;\n    }\n\n    if (tokenizers[fn].apply(ctx, params)) {\n      return true;\n    }\n  }\n\n  return false;\n}\n","'use strict';\n\nvar collapseWhiteSpace = require('collapse-white-space');\n\nmodule.exports = normalize;\n\n/* Normalize an identifier.  Collapses multiple white space\n * characters into a single space, and removes casing. */\nfunction normalize(value) {\n  return collapseWhiteSpace(value).toLowerCase();\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _toggle = _interopRequireDefault(require(\"./dist/js/toggle.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar constructAll = () => {\n  _toggle.default.init();\n\n  document.removeEventListener('o.DOMContentLoaded', constructAll);\n};\n\ndocument.addEventListener('o.DOMContentLoaded', constructAll);\nvar _default = _toggle.default;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.debounce = debounce;\nexports.throttle = throttle;\n\n/**\n*\n* Debounces function so it is only called after n milliseconds\n* without it not being called\n*\n* @example\n* Utils.debounce(myFunction() {}, 100);\n*\n* @param {Function} func - Function to be debounced\n* @param {number} wait - Time in miliseconds\n*\n* @returns {Function} - Debounced function\n*/\nfunction debounce(func, wait) {\n  var timeout;\n  return function () {\n    var args = arguments;\n\n    var later = () => {\n      timeout = null;\n      func.apply(this, args);\n    };\n\n    clearTimeout(timeout);\n    timeout = setTimeout(later, wait);\n  };\n}\n/**\n*\n* Throttle function so it is only called once every n milliseconds\n*\n* @example\n* Utils.throttle(myFunction() {}, 100);\n*\n* @param {Function} func - Function to be throttled\n* @param {number} wait - Time in miliseconds\n*\n* @returns {Function} - Throttled function\n*/\n\n\nfunction throttle(func, wait) {\n  var timeout;\n  return function () {\n    if (timeout) {\n      return;\n    }\n\n    var args = arguments;\n\n    var later = () => {\n      timeout = null;\n      func.apply(this, args);\n    };\n\n    timeout = setTimeout(later, wait);\n  };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Store = exports.default = void 0;\n\nvar _utils = _interopRequireDefault(require(\"../utils\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Class for storing data\n * Will choose the 'best' storage method available. Can also specify a type of storage.\n *\n * @class  Store\n * @param {string} name - The name of the store\n * @param {Object} config - Optional, config object for extra configuration\n */\nvar Store = function Store(name, config) {\n  /**\n   * Internal Storage key prefix.\n   */\n  var keyPrefix = 'o-tracking';\n  /**\n   * Temporary var containing data from a previously saved store.\n   * @property loadStore\n   */\n\n  var loadStore;\n\n  if (_utils.default.isUndefined(name)) {\n    var undefinedName = new Error('You must specify a name for the store.');\n\n    _utils.default.broadcast('oErrors', 'log', {\n      error: undefinedName.message,\n      info: {\n        module: 'o-tracking'\n      }\n    });\n\n    throw undefinedName;\n  }\n\n  this.config = _utils.default.merge({\n    storage: 'best',\n    expires: 10 * 365 * 24 * 60 * 60 * 1000\n  }, config);\n  /**\n   * Store data.\n   */\n\n  this.data = null;\n  /**\n   * The key/name of this store.\n   */\n\n  this.storageKey = this.config.hasOwnProperty('nameOverride') ? this.config.nameOverride : [keyPrefix, name].join('_');\n  /**\n   * The storage method to use. Determines best storage method.\n   *\n   * @type {Object}\n   */\n\n  this.storage = function (config, window) {\n    var test_key = keyPrefix + '_InternalTest'; // If cookie has been manually specified, don't bother with local storage.\n\n    if (config.storage !== 'cookie') {\n      try {\n        if (window.localStorage) {\n          window.localStorage.setItem(test_key, 'TEST');\n\n          if (window.localStorage.getItem(test_key) === 'TEST') {\n            window.localStorage.removeItem(test_key);\n            return {\n              _type: 'localStorage',\n              load: function load(name) {\n                return window.localStorage.getItem(name);\n              },\n              save: function save(name, value) {\n                return window.localStorage.setItem(name, value);\n              },\n              remove: function remove(name) {\n                return window.localStorage.removeItem(name);\n              }\n            };\n          }\n        }\n      } catch (error) {\n        _utils.default.broadcast('oErrors', 'log', {\n          error: error.message,\n          info: {\n            module: 'o-tracking'\n          }\n        });\n      }\n    }\n\n    function cookieLoad(name) {\n      name = name + '=';\n      var cookies = window.document.cookie.split(';');\n      var i;\n      var cookie;\n\n      for (i = 0; i < cookies.length; i = i + 1) {\n        cookie = cookies[i].replace(/^\\s+|\\s+$/g, '');\n\n        if (cookie.indexOf(name) === 0) {\n          return _utils.default.decode(cookie.substring(name.length, cookie.length));\n        }\n      }\n\n      return null;\n    }\n\n    function cookieSave(name, value, expiry) {\n      var d;\n      var expires = '';\n      var cookie;\n\n      if (_utils.default.is(expiry, 'number')) {\n        d = new Date();\n        d.setTime(d.getTime() + expiry);\n        expires = 'expires=' + d.toGMTString() + ';';\n      }\n\n      cookie = _utils.default.encode(name) + '=' + _utils.default.encode(value) + ';' + expires + 'path=/;' + (config.domain ? 'domain=.' + config.domain + ';' : '');\n      window.document.cookie = cookie;\n    }\n\n    function cookieRemove(name) {\n      cookieSave(name, '', -1);\n    }\n\n    cookieSave(test_key, 'TEST');\n\n    if (cookieLoad(test_key) === 'TEST') {\n      cookieRemove(test_key);\n      return {\n        _type: 'cookie',\n        load: cookieLoad,\n        save: cookieSave,\n        remove: cookieRemove\n      };\n    }\n\n    return {\n      _type: 'none',\n      load: function load() {},\n      save: function save() {},\n      remove: function remove() {}\n    };\n  }(this.config, window); // Retrieve any previous store with the same name.\n\n\n  loadStore = this.storage.load(this.storageKey);\n\n  if (loadStore) {\n    try {\n      this.data = JSON.parse(loadStore);\n    } catch (error) {\n      _utils.default.broadcast('oErrors', 'log', {\n        error: error.message,\n        module: 'o-tracking'\n      });\n\n      this.data = loadStore;\n    }\n  }\n\n  return this;\n};\n/**\n * Get/Read the current data.\n *\n * @return {Object} Returns the data from the store.\n */\n\n\nexports.Store = Store;\n\nStore.prototype.read = function () {\n  return this.data;\n};\n/**\n * Write the supplied data to the store.\n *\n * @param {String} data - The data to write.\n * @return {Store} - The instance of the store\n */\n\n\nStore.prototype.write = function (data) {\n  // Set this.data, in-case we're on a file:// domain and can't set cookies.\n  this.data = data;\n  this.storage.save(this.storageKey, typeof this.data === 'string' ? this.data : JSON.stringify(this.data), this.config.expires);\n  return this;\n};\n/**\n * Delete the current data.\n * @return {Store} - The instance of the store\n */\n\n\nStore.prototype.destroy = function () {\n  this.data = null;\n  this.storage.remove(this.storageKey);\n  return this;\n};\n\nvar _default = Store;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _utils = _interopRequireDefault(require(\"./dist/utils.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar throttle = _utils.default.throttle;\nvar debounce = _utils.default.debounce;\nvar listeners = {};\nvar intervals = {\n  resize: 100,\n  orientation: 100,\n  visibility: 100,\n  scroll: 100\n};\n/**\n *\n * @param {string} eventType - The type of event to throttle for this duration.\n * @param {number} interval - The duration to throttle in ms.\n * @example\n * \t   // throttle for different events at different durations\n *     setThrottleInterval('scroll', 100)\n *     setThrottleInterval('resize', 300)\n *     setThrottleInterval('orientation', 30)\n *     setThrottleInterval('visibility', 30)\n * \t\t// throttle all events at 30ms\n *     setThrottleInterval(30);\n */\n\nfunction setThrottleInterval(eventType, interval) {\n  if (typeof arguments[0] === 'number') {\n    setThrottleInterval('scroll', arguments[0]);\n    setThrottleInterval('resize', arguments[1]);\n    setThrottleInterval('orientation', arguments[2]);\n    setThrottleInterval('visibility', arguments[3]);\n  } else if (interval) {\n    intervals[eventType] = interval;\n  }\n}\n/**\n * @access private\n */\n\n\nfunction listenToResize() {\n  if (listeners.resize) {\n    return;\n  }\n\n  var eventType = 'resize';\n  var handler = debounce(function (ev) {\n    _utils.default.broadcast('resize', {\n      viewport: _utils.default.getSize(),\n      originalEvent: ev\n    });\n  }, intervals.resize);\n  window.addEventListener(eventType, handler);\n  listeners.resize = {\n    eventType: eventType,\n    handler: handler\n  };\n}\n/**\n * @access private\n */\n\n\nfunction listenToOrientation() {\n  if (listeners.orientation) {\n    return;\n  }\n\n  var eventType = 'orientationchange';\n  var handler = debounce(function (ev) {\n    _utils.default.broadcast('orientation', {\n      viewport: _utils.default.getSize(),\n      orientation: _utils.default.getOrientation(),\n      originalEvent: ev\n    });\n  }, intervals.orientation);\n  window.addEventListener(eventType, handler);\n  listeners.orientation = {\n    eventType: eventType,\n    handler: handler\n  };\n}\n/**\n * @access private\n */\n\n\nfunction listenToVisibility() {\n  if (listeners.visibility) {\n    return;\n  }\n\n  var eventType = 'visibilitychange';\n  var handler = debounce(function (ev) {\n    _utils.default.broadcast('visibility', {\n      hidden: _utils.default.getVisibility(),\n      originalEvent: ev\n    });\n  }, intervals.visibility);\n  window.addEventListener(eventType, handler);\n  listeners.visibility = {\n    eventType: eventType,\n    handler: handler\n  };\n}\n/**\n * @access private\n */\n\n\nfunction listenToScroll() {\n  if (listeners.scroll) {\n    return;\n  }\n\n  var eventType = 'scroll';\n  var handler = throttle(function (ev) {\n    var scrollPos = _utils.default.getScrollPosition();\n\n    _utils.default.broadcast('scroll', {\n      viewport: _utils.default.getSize(),\n      scrollHeight: scrollPos.height,\n      scrollLeft: scrollPos.left,\n      scrollTop: scrollPos.top,\n      scrollWidth: scrollPos.width,\n      originalEvent: ev\n    });\n  }, intervals.scroll);\n  window.addEventListener(eventType, handler);\n  listeners.scroll = {\n    eventType: eventType,\n    handler: handler\n  };\n}\n/**\n * Start listening for an event(s).\n * @param {string} eventType - The event to start listening for. One of `resize`, `scroll`, `orientation`, `visibility` or `all`.\n * @example\n * \t\t// Start listening for all events.\n * \t\toViewport.listenTo('all');\n *\n * \t\t// It is now possible to listen for debounce o-viewport events such as `oViewport.orientation`.\n *      document.body.addEventListener('oViewport.orientation', function(event) {\n *      \tconsole.log(event.type); // oViewport.orientation\n *      });\n */\n\n\nfunction listenTo(eventType) {\n  if (eventType === 'resize' || eventType === 'all') {\n    listenToResize();\n  }\n\n  if (eventType === 'scroll' || eventType === 'all') {\n    listenToScroll();\n  }\n\n  if (eventType === 'orientation' || eventType === 'all') {\n    listenToOrientation();\n  }\n\n  if (eventType === 'visibility' || eventType === 'all') {\n    listenToVisibility();\n  }\n}\n/**\n * Stop listening for an event(s).\n * @param {string} eventType - The event to stop listening for. One of `resize`, `scroll`, `orientation`, `visibility` or `all`.\n * @example\n * \t\t// Start listening for all events.\n * \t\toViewport.listenTo('all');\n * \t\t// We're done. Stop listening for all events.\n * \t\toViewport.stopListeningTo('all');\n */\n\n\nfunction stopListeningTo(eventType) {\n  if (eventType === 'all') {\n    Object.keys(listeners).forEach(stopListeningTo);\n  } else if (listeners[eventType]) {\n    window.removeEventListener(listeners[eventType].eventType, listeners[eventType].handler);\n    delete listeners[eventType];\n  }\n}\n\nvar _default = {\n  debug: function debug() {\n    _utils.default.debug();\n  },\n  listenTo,\n  stopListeningTo,\n  setThrottleInterval,\n  getOrientation: _utils.default.getOrientation,\n  getSize: _utils.default.getSize,\n  getScrollPosition: _utils.default.getScrollPosition,\n  getVisibility: _utils.default.getVisibility\n};\nexports.default = _default;\nmodule.exports = exports.default;","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n  'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n  if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n    headers['Content-Type'] = value;\n  }\n}\n\nfunction getDefaultAdapter() {\n  var adapter;\n  if (typeof XMLHttpRequest !== 'undefined') {\n    // For browsers use XHR adapter\n    adapter = require('./adapters/xhr');\n  } else if (typeof process !== 'undefined') {\n    // For node use HTTP adapter\n    adapter = require('./adapters/http');\n  }\n  return adapter;\n}\n\nvar defaults = {\n  adapter: getDefaultAdapter(),\n\n  transformRequest: [function transformRequest(data, headers) {\n    normalizeHeaderName(headers, 'Content-Type');\n    if (utils.isFormData(data) ||\n      utils.isArrayBuffer(data) ||\n      utils.isBuffer(data) ||\n      utils.isStream(data) ||\n      utils.isFile(data) ||\n      utils.isBlob(data)\n    ) {\n      return data;\n    }\n    if (utils.isArrayBufferView(data)) {\n      return data.buffer;\n    }\n    if (utils.isURLSearchParams(data)) {\n      setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n      return data.toString();\n    }\n    if (utils.isObject(data)) {\n      setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n      return JSON.stringify(data);\n    }\n    return data;\n  }],\n\n  transformResponse: [function transformResponse(data) {\n    /*eslint no-param-reassign:0*/\n    if (typeof data === 'string') {\n      try {\n        data = JSON.parse(data);\n      } catch (e) { /* Ignore */ }\n    }\n    return data;\n  }],\n\n  /**\n   * A timeout in milliseconds to abort a request. If set to 0 (default) a\n   * timeout is not created.\n   */\n  timeout: 0,\n\n  xsrfCookieName: 'XSRF-TOKEN',\n  xsrfHeaderName: 'X-XSRF-TOKEN',\n\n  maxContentLength: -1,\n\n  validateStatus: function validateStatus(status) {\n    return status >= 200 && status < 300;\n  }\n};\n\ndefaults.headers = {\n  common: {\n    'Accept': 'application/json, text/plain, */*'\n  }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n  defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","const months = '[\"' + 'January,February,March,April,May,June,July,August,September,October,November,December'.split(',').join('\",\"') + '\"]';\nconst days = '[\"' + 'Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday'.split(',').join('\",\"') + '\"]';\nconst formats = {\n\tdatetime: 'MMMM d yyyy h:mm a',\n\tdate: 'MMMM d yyyy'\n};\n\nconst compiledTemplates = {};\n\n/**\n * See http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html for formatting conventions used\n *\n *Comments indicate the value returned for 3.05 pm on Tuesday 4th February 2014\n */\nconst formatReplacementsMap = {\n\tMMMM: 'months[date.getMonth()]', // e.g. February\n\tMMM: 'months[date.getMonth()].substr(0,3)', // Feb\n\tMM: 'pad2(date.getMonth() + 1, 2)', // 02\n\tM: '(date.getMonth() + 1)', // 2\n\tyyyy: 'date.getFullYear()', // 2014\n\tyy: '(\"\"+date.getFullYear()).substr(-2, 2)', // 14\n\tEEEE: 'days[date.getDay()]', // Tuesday\n\tEEE: 'days[date.getDay()].substr(0,3)', // Tue\n\td: 'date.getDate()', // 4\n\tdd: 'pad2(date.getDate())', // 04\n\tdo: 'ordinal(date.getDate())', // 4th\n\tm: 'date.getMinutes()', // 5\n\tmm: 'pad2(date.getMinutes())', // 05\n\th: '(((date.getHours() + 11) % 12) + 1)', // 3\n\thh: 'pad2(((date.getHours() + 11) % 12) + 1)', // 03\n\tH: 'date.getHours()', // 15\n\tHH: 'pad2(date.getHours())', // 15\n\ta: '(date.getHours() >= 12 ? \"pm\" : \"am\")' // pm\n};\n\nconst inSeconds = {\n\tminute: 60,\n\thour: 60 * 60,\n\tday: 24 * 60 * 60,\n\tweek: 7 * 24 * 60 * 60,\n\tmonth: 60 * 60 * 24 * 30,\n\tyear: 365 * 24 * 60 * 60\n};\n\nfunction compile(format) {\n\tconst tpl = formats[format] || format;\n\n\tlet funcString = 'var months= ' + months + ', days= ' + days + ';';\n\tfuncString += 'function pad2 (number) {return (\"0\" + number).slice(-2)}';\n\tfuncString += `function ordinal(number) {\n\t\tconst suffixes = [\"th\", \"st\", \"nd\", \"rd\"];\n\t\tconst v = number % 100;\n\t\treturn number + (suffixes[(v - 20) % 10] || suffixes[v] || suffixes[0]);\n\t}`;\n\tfuncString += 'return \"' + tpl.replace(/\\\\?[a-z]+/ig, function (match) {\n\t\tif (match.charAt(0) === '\\\\') {\n\t\t\treturn match.substr(1);\n\t\t}\n\t\tconst replacer = formatReplacementsMap[match];\n\n\t\treturn replacer ? '\" + ' + replacer + ' + \"' : match;\n\t}) + '\"';\n\n\treturn (compiledTemplates[format] = new Function('date', funcString)); // eslint-disable-line no-new-func\n}\n\nconst ftDateFormat = {\n\ttoDate: function (date) {\n\t\tdate = date instanceof Date ? date : new Date(date);\n\t\tif (date.toString() !== 'Invalid Date') {\n\t\t\treturn date;\n\t\t}\n\t},\n\tasTodayOrYesterdayOrNothing: function (date) {\n\n\t\tif (!date) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst now = new Date();\n\t\tconst interval = ftDateFormat.getSecondsBetween(now, date);\n\n\t\tlet dateString;\n\n\t\t// If this was less than a day ago\n\t\tif (ftDateFormat.isToday(date, now, interval)) {\n\t\t\tdateString = 'today';\n\t\t} else if (ftDateFormat.isYesterday(date, now, interval)) {\n\t\t\tdateString = 'yesterday';\n\t\t} else {\n\t\t\tdateString = '';\n\t\t}\n\n\t\treturn dateString;\n\t},\n\tformat: function (date, dateFormat) {\n\t\tdateFormat = dateFormat || 'datetime';\n\t\tconst tpl = compiledTemplates[dateFormat] || compile(dateFormat);\n\t\tdate = ftDateFormat.toDate(date);\n\t\treturn date && tpl(date);\n\t},\n\ttimeAgo: function (date, interval, options) {\n\n\t\tdate = ftDateFormat.toDate(date);\n\t\tif (!date) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Accept an interval argument for backwards compatibility\n\t\tif (arguments.length === 2 && typeof interval === 'object') {\n\t\t\toptions = interval;\n\t\t\tinterval = options.interval;\n\t\t}\n\n\t\t// Default the interval option to the time since the given date\n\t\tif (!interval) {\n\t\t\tinterval = ftDateFormat.getSecondsBetween(new Date(), date);\n\t\t}\n\n\t\t// If a limit has been supplied and the interval is longer ago than that limit\n\t\tif (options && options.limit > 0 && (!interval || interval > options.limit)) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst abbreviated = options ? options.abbreviated : false;\n\n\t\tlet suffix = interval < 0 ? \"from now\" : \"ago\";\n\n\t\tinterval = Math.abs(interval);\n\n\t\tif (interval < inSeconds.minute) {\n\t\t\treturn `${abbreviated ? interval + 's' : interval + ' seconds'} ${suffix}`;\n\t\t} else if (interval < (1.5 * inSeconds.minute)) {\n\t\t\treturn `${abbreviated ? '1m' : 'a minute'} ${suffix}`;\n\t\t} else if (interval < (59 * inSeconds.minute)) {\n\t\t\treturn `${Math.round(interval / inSeconds.minute)}${abbreviated ? 'm' : ' minutes'} ${suffix}`;\n\t\t} else if (interval < (1.5 * inSeconds.hour)) {\n\t\t\treturn `${abbreviated ? '1h' : 'an hour'} ${suffix}`;\n\t\t} else if (interval < 22 * inSeconds.hour) {\n\t\t\treturn `${Math.round(interval / inSeconds.hour)}${abbreviated ? 'h' : ' hours'} ${suffix}`;\n\t\t} else if (interval < (1.5 * inSeconds.day)) {\n\t\t\treturn `${abbreviated ? '1d' : 'a day'} ${suffix}`;\n\t\t} else if (interval < 25 * inSeconds.day) {\n\t\t\treturn `${Math.round(interval / inSeconds.day)}${abbreviated ? 'd' : ' days'} ${suffix}`;\n\t\t} else if (interval < (45 * inSeconds.day)) {\n\t\t\treturn `${abbreviated ? '1mth' : 'a month'} ${suffix}`;\n\t\t} else if (interval < 345 * inSeconds.day) {\n\t\t\treturn `${Math.round(interval / inSeconds.month)}${abbreviated ? 'mth' : ' months'} ${suffix}`;\n\t\t} else if (interval < (547 * inSeconds.day)) {\n\t\t\treturn `${abbreviated ? '1y' : 'a year'} ${suffix}`;\n\t\t} else {\n\t\t\treturn `${ Math.max(2, Math.floor(interval / inSeconds.year))}${abbreviated ? 'y' : ' years'} ${suffix}`;\n\t\t}\n\t},\n\ttimeAgoNoSeconds: function (date) {\n\n\t\tif (!date) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst now = new Date();\n\t\tconst interval = ftDateFormat.getSecondsBetween(now, date);\n\n\t\t// If this was less than a minute ago\n\t\tif (interval < 60) {\n\t\t\treturn 'Less than a minute ago';\n\t\t}\n\t\treturn ftDateFormat.timeAgo(date);\n\t},\n\tftTime: function (dateObj) {\n\t\tconst now = new Date();\n\t\tconst interval = ftDateFormat.getSecondsBetween(now, dateObj);\n\t\tlet dateString;\n\n\t\t// If the date will occur in the next 5 minutes. This check is to allow for\n\t\t// reasonably differences in machine clocks.\n\t\tif (ftDateFormat.isNearFuture(interval)) {\n\t\t\tdateString = 'just now';\n\n\t\t\t// If it's beyond 5 minutes, fall back to printing the whole date, the machine\n\t\t\t// clock could be way out.\n\t\t} else if (ftDateFormat.isFarFuture(interval)) {\n\t\t\tdateString = ftDateFormat.format(dateObj, 'date');\n\n\t\t\t// Relative times for today or within the last 4 hours\n\t\t} else if (ftDateFormat.isToday(dateObj, now, interval) || (interval < (4 * inSeconds.hour))) {\n\t\t\tdateString = ftDateFormat.timeAgo(dateObj, interval);\n\n\t\t\t// 'Yesterday' for dates that occurred yesterday\n\t\t} else if (ftDateFormat.isYesterday(dateObj, now, interval)) {\n\t\t\tdateString = 'yesterday';\n\n\t\t\t// Else print the date\n\t\t} else {\n\t\t\tdateString = ftDateFormat.format(dateObj, 'date');\n\t\t}\n\n\t\treturn dateString;\n\t},\n\tgetSecondsBetween: function (time, otherTime) {\n\t\treturn Math.round((time - otherTime) / 1000);\n\t},\n\tisNearFuture: function (interval) {\n\t\t// If the interval within the next 5 minutes\n\t\treturn (interval < 0 && interval > -(5 * inSeconds.minute));\n\t},\n\tisFarFuture: function (interval) {\n\t\t// If the interval is further in the future than 5 minutes\n\t\treturn interval < -(5 * inSeconds.minute);\n\t},\n\tisToday: function (date, now, interval) {\n\t\tconst within24Hours = interval < inSeconds.day;\n\t\tconst sameDayOfWeek = now.getDay() === date.getDay();\n\t\treturn (within24Hours && sameDayOfWeek);\n\t},\n\tisYesterday: function (date, now, interval) {\n\t\tconst within48Hours = interval < 2 * inSeconds.day;\n\t\tconst consecutiveDaysOfTheWeek = now.getDay() === date.getDay() + 1;\n\t\treturn (within48Hours && consecutiveDaysOfTheWeek);\n\t},\n\tinSeconds\n};\n\nmodule.exports = ftDateFormat;\n","/**\n * @file\n * An o-grid child component\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nexport const GridChild = ({ children, colspan, ...props }) => {\n  switch (typeof colspan) {\n    case 'number':\n    case 'string':\n      return (\n        <div data-o-grid-colspan={colspan} {...props}>\n          {children}\n        </div>\n      );\n    default:\n      break;\n  }\n  return (\n    <div\n      data-o-grid-colspan={Object.entries(colspan)\n        .map(([breakpoint, size]) => `${breakpoint.toUpperCase()}${size}`)\n        .join(' ')}\n      {...props}\n    >\n      {children}\n    </div>\n  );\n};\n\nGridChild.displayName = 'GGridChild';\n\nGridChild.propTypes = {\n  children: PropTypes.node.isRequired,\n  colspan: PropTypes.oneOfType([\n    PropTypes.string,\n    PropTypes.number,\n    PropTypes.shape({\n      default: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n      s: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n      m: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n      l: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n      xl: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n      S: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n      M: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n      L: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n      XL: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n    }),\n  ]),\n};\n\nGridChild.defaultProps = {\n  colspan: 'full-width',\n};\n\nexport default GridChild;\n","/**\n * @file\n * An o-grid row component\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\n\nexport const GridRow = ({ compact, children, ...props }) => (\n  <div className={classnames('o-grid-row', compact && 'o-grid-row--compact')} {...props}>\n    {children}\n  </div>\n);\n\nGridRow.displayName = 'GGridRow';\n\nGridRow.propTypes = {\n  compact: PropTypes.bool,\n  children: PropTypes.node.isRequired,\n};\n\nGridRow.defaultProps = {\n  compact: false,\n};\n\nexport default GridRow;\n","/**\n * @file\n * An o-grid container component\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\n\nexport const GridContainer = ({ bleed, snappy, children, className, ...props }) => (\n  <div\n    className={classnames(\n      className,\n      'o-grid-container',\n      bleed && ' o-grid-container--bleed',\n      snappy && 'o-grid-container--snappy',\n    )}\n    {...props}\n  >\n    {children}\n  </div>\n);\n\nGridContainer.displayName = 'GGridContainer';\n\nGridContainer.propTypes = {\n  bleed: PropTypes.bool,\n  snappy: PropTypes.bool,\n  children: PropTypes.node.isRequired,\n};\n\nGridContainer.defaultProps = {\n  bleed: false,\n  snappy: false,\n};\n\nexport default GridContainer;\n","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}\n","/* eslint-disable no-nested-ternary */\nimport React, { useEffect, useState } from 'react';\nimport ReactMarkdown from 'react-markdown';\nimport { hot } from 'react-hot-loader/root';\nimport Layout from '@financial-times/g-components/article-layout';\nimport StoryTopper from '@financial-times/g-components/story-topper';\nimport Epilogue from '@financial-times/g-components/epilogue';\nimport Expander from '@financial-times/g-components/expander';\nimport { GridChild, GridRow, GridContainer } from '@financial-times/g-components/grid';\nimport LastUpdated from '@financial-times/g-components/last-updated';\nimport Card from '@financial-times/g-components/card';\nimport DataTable from './components/data-table';\nimport methodology from './copy/methodology.md';\nimport byline from './copy/byline.md';\nimport intro from './copy/intro.md';\nimport footnote from './copy/footnote.md';\nimport mainCopy from './copy/main-copy.md';\nimport { useData } from './util/hooks';\n\nconst App = () => {\n  const [context, setContext] = useState(null);\n\n  useEffect(() => {\n    (async () => {\n      setContext({\n        ...(await (await fetch('./context.json')).json()),\n        buildTime: window.BUILD_TIME,\n      });\n    })();\n  }, []);\n\n  const medalsData = useData(\n    'https://bertha.ig.ft.com/view/publish/gss/12n2dL8Mw2uNjyHb5t05h2A5IliHnI6IpO5mg67XOiuE/medals_2020'\n  );\n\n  // Table to be ordered in three sections\n  // Top of the table shows countries that have either won a medal or were predicted to win a medal by now, ordered by difference\n  // Tie break decided by total medals won, then golds, silvers, bronzes, total medals predicted and finally alphabetically by country name\n  const topData = medalsData?.data\n    .filter(x => x.medalspredictedlive > 0 || x.totalactual > 0)\n    .sort((a, b) => {\n      return b.livediff === a.livediff\n        ? b.totalactual === a.totalactual\n          ? b.goldactual === a.goldactual\n            ? b.silveractual === a.silveractual\n              ? b.bronzeactual === a.bronzeactual\n                ? b.medalspredictedtotal === a.medalspredictedtotal\n                  ? a.country.toUpperCase() < b.country.toUpperCase()\n                    ? -1\n                    : 1\n                  : b.medalspredictedtotal - a.medalspredictedtotal\n                : b.bronzeactual - a.bronzeactual\n              : b.silveractual - a.silveractual\n            : b.goldactual - a.goldactual\n          : b.totalactual - a.totalactual\n        : b.livediff - a.livediff;\n    });\n\n  // Middle of the table shows countries expected to win medals in The Games, but not yet\n  // Ordered by total medals predicted, tie break decided by country name alphabetically\n  const middleData = medalsData?.data\n    .filter(x => !x.medalspredictedlive && !x.totalactual && x.medalspredictedtotal)\n    .sort((a, b) => {\n      return b.medalspredictedtotal === a.medalspredictedtotal\n        ? a.country.toUpperCase() < b.country.toUpperCase()\n          ? -1\n          : 1\n        : b.medalspredictedtotal - a.medalspredictedtotal;\n    });\n\n  // Bottom of the table shows countries not expected to win medals, ordered alphabetically\n  // These rows are given a class to fade them out (opacity)\n  const bottomData = medalsData?.data\n    .filter(x => !x.medalspredictedlive && !x.totalactual && !x.medalspredictedtotal)\n    .sort((a, b) => (a.country.toUpperCase() < b.country.toUpperCase() ? -1 : 1))\n    .map(d => {\n      const fadedClass = {\n        classname: 'faded',\n      };\n      return Object.assign(d, fadedClass);\n    });\n\n  const allData = topData?.concat(middleData, bottomData).map(d => {\n    const newProps = {\n      livediff: d.livediff > 0 ? `+${parseInt(d.livediff, 10)}` : d.livediff,\n      name: { flag: d.flag, country: d.country },\n    };\n\n    return Object.assign(d, newProps);\n  });\n\n  const lastModifiedDate = medalsData?.updated && new Date(medalsData?.updated).toISOString();\n\n  const headersTop = [\n    {},\n    {\n      contents: 'Medals won',\n      columnSpan: 4,\n    },\n    {\n      contents: 'Medals predicted',\n      columnSpan: 2,\n    },\n    {},\n  ];\n  const headers = [\n    {\n      contents: 'Country',\n      columnType: 'object',\n      columnName: 'name',\n      columnIsSortable: true,\n      columnSortField: 'country',\n    },\n    {\n      contents: '🥇',\n      columnType: 'number',\n      columnName: 'goldactual',\n      columnIsSortable: true,\n      columnSortField: 'goldactual',\n      defaultSortIcon: 'descending',\n    },\n    {\n      contents: '🥈',\n      columnType: 'number',\n      columnName: 'silveractual',\n      columnIsSortable: true,\n      columnSortField: 'silveractual',\n      defaultSortIcon: 'descending',\n    },\n    {\n      contents: '🥉',\n      columnType: 'number',\n      columnName: 'bronzeactual',\n      columnIsSortable: true,\n      columnSortField: 'bronzeactual',\n      defaultSortIcon: 'descending',\n    },\n    {\n      contents: 'Total',\n      columnType: 'number',\n      columnName: 'totalactual',\n      columnIsSortable: true,\n      columnSortField: 'totalactual',\n      defaultSortIcon: 'descending',\n    },\n    {\n      contents: 'To date',\n      columnType: 'number',\n      columnName: 'medalspredictedlive',\n      columnIsSortable: true,\n      columnSortField: 'medalspredictedlive',\n      defaultSortIcon: 'descending',\n    },\n    {\n      contents: 'Total',\n      columnType: 'number',\n      columnName: 'medalspredictedtotal',\n      columnIsSortable: true,\n      columnSortField: 'medalspredictedtotal',\n      defaultSortIcon: 'descending',\n    },\n    {\n      contents: 'Difference (to date)',\n      columnType: 'number',\n      columnName: 'livediff',\n      columnIsSortable: true,\n      columnSortField: 'livediff',\n      defaultSortIcon: 'descending',\n    },\n  ];\n\n  return context && allData ? (\n    <Layout {...context}>\n      <main key=\"main\" role=\"main\">\n        <article className=\"article\" itemScope itemType=\"http://schema.org/Article\">\n          <GridContainer className=\"article-head\">\n            <GridRow>\n              <GridChild colspan=\"12 S11 Scenter M9 L8 XL7\">\n                <StoryTopper {...context} />\n                <LastUpdated dot date={new Date(lastModifiedDate)} />\n              </GridChild>\n            </GridRow>\n          </GridContainer>\n          <div className=\"article-body o-editorial-typography-body\" itemProp=\"articleBody\">\n            <GridContainer>\n              <GridRow>\n                <GridChild colspan=\"12 S11 Scenter M9 L8 XL7\">\n                  <div className=\"o-editorial-layout-wrapper\">\n                    <section id=\"intro\" className=\"intro-paragraph\">\n                      <ReactMarkdown source={intro} />\n                    </section>\n                    <DataTable\n                      headers={headers}\n                      headersTop={headersTop}\n                      rows={allData}\n                      responsive=\"overflow\"\n                      truncation={5}\n                      isLinedHorizontal\n                    />\n                    {footnote.trim().length > 0 && (\n                      <div className=\"o-table-footnote\">\n                        <ReactMarkdown source={footnote} />\n                      </div>\n                    )}\n                    <section id=\"main-text\" className=\"main-text\">\n                      <ReactMarkdown source={mainCopy} />\n                    </section>\n                    <section id=\"methodology\">\n                      <Card className=\"g-basic-card\">\n                        <ReactMarkdown\n                          source={methodology}\n                          renderers={{\n                            // eslint-disable-next-line react/prop-types\n                            code: ({ value }) => (\n                              <Expander>\n                                <ReactMarkdown source={value} />\n                              </Expander>\n                            ),\n                          }}\n                        />\n                      </Card>\n                    </section>\n                    <section id=\"credits\" className=\"credits\">\n                      <ReactMarkdown source={byline} />\n                    </section>\n                  </div>\n                </GridChild>\n              </GridRow>\n            </GridContainer>\n          </div>\n          <Epilogue />\n        </article>\n      </main>\n    </Layout>\n  ) : null;\n};\n\nexport default hot(App);\n","/**\n * @file\n * o-date, wrapped as a React component\n */\nimport React, { useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport ODate from '@financial-times/o-date';\nimport ftDateFormat from '@financial-times/ft-date-format';\n\nconst DateTime = ({ datestamp }) => {\n  const elRef = useRef(null);\n  const dateRef = useRef(null);\n  useEffect(() => {\n    dateRef.current = ODate.init(elRef.current);\n\n    return () => dateRef.current.destroy();\n  }, [datestamp]);\n  return (\n    <time\n      ref={elRef}\n      data-o-component=\"o-date\"\n      className=\"o-date\"\n      dateTime={datestamp.toISOString()}\n    >\n      {ftDateFormat.ftTime(datestamp)}\n    </time>\n  );\n};\n\nDateTime.propTypes = {\n  datestamp: PropTypes.instanceOf(Date),\n};\n\nDateTime.defaultProps = {\n  datestamp: new Date(),\n};\n\nexport default DateTime;\n","import FlatTable from './Tables/FlatTable.js';\nimport ScrollTable from './Tables/ScrollTable.js';\nimport OverflowTable from './Tables/OverflowTable.js';\nimport BasicTable from './Tables/BasicTable.js';\n\nimport TableSorter from './Sort/TableSorter.js';\nconst sorter = new TableSorter();\n\n\nclass OTable {\n\n\t/**\n\t * Table options.\n\t * @typedef {Object} OTable~opts - Table options.\n\t * @property {Bool} sortable [true] - Disable the table's sort feature.\n\t * @property {Undefined | Bool} expanded [Undefined] - Allow the \"OverflowTable\" to hide results behind a \"show more\" button. The table is expanded by default when \"true\", contracted when \"false\", or not expandable if not set.\n\t * @property {Number} minimumRowCount [20] - When the `expanded` option is set, the number of rows to show when the table is not expanded.\n\t */\n\n\t/**\n\t * Constructs an o-table component.\n\t *\n\t * @param {HTMLElement} - An o-table element.\n\t * @param {...OTable~opts} opts - A table options object.\n\t * @returns {FlatTable | ScrollTable | OverflowTable | BasicTable} - A table instance.\n\t */\n\tconstructor(rootEl, opts = {}) {\n\t\tconst tableType = rootEl.getAttribute('data-o-table-responsive');\n\t\tlet Table;\n\t\tswitch (tableType) {\n\t\t\tcase 'flat':\n\t\t\t\tTable = FlatTable;\n\t\t\t\tbreak;\n\t\t\tcase 'scroll':\n\t\t\t\tTable = ScrollTable;\n\t\t\t\tbreak;\n\t\t\tcase 'overflow':\n\t\t\t\tTable = OverflowTable;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tTable = BasicTable;\n\t\t\t\tbreak;\n\t\t}\n\t\treturn new Table(rootEl, sorter, opts);\n\t}\n\n\t/**\n\t * Constructs all o-table components inside the element passed as the first parameter.\n\t *\n\t * @access public\n\t * @param {(HTMLElement|string)} [el=document.body] - Element where to search for o-table components. You can pass an HTMLElement or a selector string.\n\t * @param {...OTable~opts} opts - A table options object.\n\t * @returns {Array<FlatTable | ScrollTable | OverflowTable | BasicTable> | FlatTable | ScrollTable | OverflowTable | BasicTable} - A table instance or array of table instances.\n\t */\n\tstatic init(el = document.body, opts = {}) {\n\t\tif (!(el instanceof HTMLElement)) {\n\t\t\tel = document.querySelector(el);\n\t\t}\n\t\tif (/\\bo-table\\b/.test(el.getAttribute('data-o-component'))) {\n\t\t\treturn new OTable(el, opts);\n\t\t}\n\t\tconst tableEls = Array.from(el.querySelectorAll('[data-o-component~=\"o-table\"]'));\n\t\treturn tableEls.map(el => {\n\t\t\treturn new OTable(el, opts);\n\t\t});\n\t}\n\n\n\t/**\n\t * The custom formatter accepts a table cell and returns a sort value for that cell.\n\t * This could be used to define a custom sort order for an unsupported format, such as emoji's, or a new date format.\n\t *\n\t * @callback formatFunction\n\t * @param {HTMLElement} cell\n\t */\n\n\t/**\n\t * Set a custom sort formatter for a given data type.\n\t *\n\t * @example <caption>Mapping table cells which contain emojis to a numerical sort value.</caption>\n\t *\timport OTable from 'o-table';\n\t *\t// Set a filter for custom data type \"emoji-time\".\n\t *\t// The return value may be a string or number.\n\t *\tOTable.setSortFormatterForType('emoji-time', (cell) => {\n\t *\t\tconst text = cell.textContent.trim();\n\t *\t\tif (text === '🌑') {\n\t *\t\t\treturn 1;\n\t *\t\t}\n\t *\t\tif (text === '🌤️️') {\n\t *\t\t\treturn 2;\n\t *\t\t}\n\t *\t\treturn 0;\n\t *\t});\n\t *\tOTable.init();\n\t *\n\t * @param {String} type - The data type to apply the filter function to.\n\t * @param {formatFunction} formatFunction\n\t * @access public\n\t */\n\tstatic setSortFormatterForType(type, formatFunction) {\n\t\tsorter.setCellFormatterForType(type, formatFunction);\n\t}\n}\n\nexport default OTable;\n","module.exports = \"\\n\"","/**\n * @file\n * Sundry hooks\n */\n\nimport Axios from 'axios';\nimport { useState, useEffect, useRef } from 'react';\n\nconst noop = () => {};\n// Modified from https://github.com/Hermanya/use-interval/blob/master/src/index.tsx\nexport function useInterval(callback, delay, immediate, deps = []) {\n  const savedCallback = useRef(noop);\n  // Remember the latest callback.\n  useEffect(() => {\n    savedCallback.current = callback;\n  }, [callback, ...deps]);\n\n  // Execute callback if immediate is set.\n  useEffect(() => {\n    if (!immediate) return;\n    if (delay === null || delay === false) return;\n    savedCallback.current();\n  }, [immediate, ...deps]);\n\n  // Set up the interval.\n  useEffect(() => {\n    if (delay === null || delay === false) return undefined;\n    const tick = () => savedCallback.current();\n    const id = setInterval(tick, delay);\n    return () => clearInterval(id);\n  }, [delay]);\n}\n\n/**\n * @function\n * This will long-poll a data endpoint, returning\n * new data when it updates\n */\nexport const useData = (endpoint, pollingInterval = 10000) => {\n  const [data, setData] = useState(null);\n  const updateData = async url => {\n    const { data: newData, headers } = await Axios.get(url);\n\n    setData({\n      data: newData,\n      etag: headers.etag,\n      updated: headers['last-modified'] || headers.date,\n    });\n  };\n\n  useInterval(\n    () => {\n      (async () => {\n        if (endpoint) {\n          // console.log('interval');\n          if (data && data.etag) {\n            // Do an OPTIONS request first to see whether anything's changed\n            const { headers } = await Axios.head(endpoint);\n            // console.log(data.etag !== headers.etag);\n            // Compare ETag; if different, do full fetch.\n            if (data.etag !== headers.etag) {\n              updateData(endpoint);\n            }\n          } else {\n            updateData(endpoint);\n          }\n        }\n      })();\n    },\n    pollingInterval,\n    true,\n    [endpoint]\n  );\n\n  return data;\n};\n\nexport default null;\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;","module.exports = require('./lib/axios');","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\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;","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;","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\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\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n  // if the path tries to go above the root, `up` ends up > 0\n  var up = 0;\n  for (var i = parts.length - 1; i >= 0; i--) {\n    var last = parts[i];\n    if (last === '.') {\n      parts.splice(i, 1);\n    } else if (last === '..') {\n      parts.splice(i, 1);\n      up++;\n    } else if (up) {\n      parts.splice(i, 1);\n      up--;\n    }\n  }\n\n  // if the path is allowed to go above the root, restore leading ..s\n  if (allowAboveRoot) {\n    for (; up--; up) {\n      parts.unshift('..');\n    }\n  }\n\n  return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n  var resolvedPath = '',\n      resolvedAbsolute = false;\n\n  for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n    var path = (i >= 0) ? arguments[i] : process.cwd();\n\n    // Skip empty and invalid entries\n    if (typeof path !== 'string') {\n      throw new TypeError('Arguments to path.resolve must be strings');\n    } else if (!path) {\n      continue;\n    }\n\n    resolvedPath = path + '/' + resolvedPath;\n    resolvedAbsolute = path.charAt(0) === '/';\n  }\n\n  // At this point the path should be resolved to a full absolute path, but\n  // handle relative paths to be safe (might happen when process.cwd() fails)\n\n  // Normalize the path\n  resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n    return !!p;\n  }), !resolvedAbsolute).join('/');\n\n  return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n  var isAbsolute = exports.isAbsolute(path),\n      trailingSlash = substr(path, -1) === '/';\n\n  // Normalize the path\n  path = normalizeArray(filter(path.split('/'), function(p) {\n    return !!p;\n  }), !isAbsolute).join('/');\n\n  if (!path && !isAbsolute) {\n    path = '.';\n  }\n  if (path && trailingSlash) {\n    path += '/';\n  }\n\n  return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n  return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n  var paths = Array.prototype.slice.call(arguments, 0);\n  return exports.normalize(filter(paths, function(p, index) {\n    if (typeof p !== 'string') {\n      throw new TypeError('Arguments to path.join must be strings');\n    }\n    return p;\n  }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n  from = exports.resolve(from).substr(1);\n  to = exports.resolve(to).substr(1);\n\n  function trim(arr) {\n    var start = 0;\n    for (; start < arr.length; start++) {\n      if (arr[start] !== '') break;\n    }\n\n    var end = arr.length - 1;\n    for (; end >= 0; end--) {\n      if (arr[end] !== '') break;\n    }\n\n    if (start > end) return [];\n    return arr.slice(start, end - start + 1);\n  }\n\n  var fromParts = trim(from.split('/'));\n  var toParts = trim(to.split('/'));\n\n  var length = Math.min(fromParts.length, toParts.length);\n  var samePartsLength = length;\n  for (var i = 0; i < length; i++) {\n    if (fromParts[i] !== toParts[i]) {\n      samePartsLength = i;\n      break;\n    }\n  }\n\n  var outputParts = [];\n  for (var i = samePartsLength; i < fromParts.length; i++) {\n    outputParts.push('..');\n  }\n\n  outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n  return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n  if (typeof path !== 'string') path = path + '';\n  if (path.length === 0) return '.';\n  var code = path.charCodeAt(0);\n  var hasRoot = code === 47 /*/*/;\n  var end = -1;\n  var matchedSlash = true;\n  for (var i = path.length - 1; i >= 1; --i) {\n    code = path.charCodeAt(i);\n    if (code === 47 /*/*/) {\n        if (!matchedSlash) {\n          end = i;\n          break;\n        }\n      } else {\n      // We saw the first non-path separator\n      matchedSlash = false;\n    }\n  }\n\n  if (end === -1) return hasRoot ? '/' : '.';\n  if (hasRoot && end === 1) {\n    // return '//';\n    // Backwards-compat fix:\n    return '/';\n  }\n  return path.slice(0, end);\n};\n\nfunction basename(path) {\n  if (typeof path !== 'string') path = path + '';\n\n  var start = 0;\n  var end = -1;\n  var matchedSlash = true;\n  var i;\n\n  for (i = path.length - 1; i >= 0; --i) {\n    if (path.charCodeAt(i) === 47 /*/*/) {\n        // If we reached a path separator that was not part of a set of path\n        // separators at the end of the string, stop now\n        if (!matchedSlash) {\n          start = i + 1;\n          break;\n        }\n      } else if (end === -1) {\n      // We saw the first non-path separator, mark this as the end of our\n      // path component\n      matchedSlash = false;\n      end = i + 1;\n    }\n  }\n\n  if (end === -1) return '';\n  return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n  var f = basename(path);\n  if (ext && f.substr(-1 * ext.length) === ext) {\n    f = f.substr(0, f.length - ext.length);\n  }\n  return f;\n};\n\nexports.extname = function (path) {\n  if (typeof path !== 'string') path = path + '';\n  var startDot = -1;\n  var startPart = 0;\n  var end = -1;\n  var matchedSlash = true;\n  // Track the state of characters (if any) we see before our first dot and\n  // after any path separator we find\n  var preDotState = 0;\n  for (var i = path.length - 1; i >= 0; --i) {\n    var code = path.charCodeAt(i);\n    if (code === 47 /*/*/) {\n        // If we reached a path separator that was not part of a set of path\n        // separators at the end of the string, stop now\n        if (!matchedSlash) {\n          startPart = i + 1;\n          break;\n        }\n        continue;\n      }\n    if (end === -1) {\n      // We saw the first non-path separator, mark this as the end of our\n      // extension\n      matchedSlash = false;\n      end = i + 1;\n    }\n    if (code === 46 /*.*/) {\n        // If this is our first dot, mark it as the start of our extension\n        if (startDot === -1)\n          startDot = i;\n        else if (preDotState !== 1)\n          preDotState = 1;\n    } else if (startDot !== -1) {\n      // We saw a non-dot and non-path separator before our dot, so we should\n      // have a good chance at having a non-empty extension\n      preDotState = -1;\n    }\n  }\n\n  if (startDot === -1 || end === -1 ||\n      // We saw a non-dot character immediately before the dot\n      preDotState === 0 ||\n      // The (right-most) trimmed path component is exactly '..'\n      preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n    return '';\n  }\n  return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n    if (xs.filter) return xs.filter(f);\n    var res = [];\n    for (var i = 0; i < xs.length; i++) {\n        if (f(xs[i], i, xs)) res.push(xs[i]);\n    }\n    return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n    ? function (str, start, len) { return str.substr(start, len) }\n    : function (str, start, len) {\n        if (start < 0) start = str.length + start;\n        return str.substr(start, len);\n    }\n;\n","'use strict'\n\nmodule.exports = alphabetical\n\n// Check if the given character code, or the character code at the first\n// character, is alphabetical.\nfunction alphabetical(character) {\n  var code = typeof character === 'string' ? character.charCodeAt(0) : character\n\n  return (\n    (code >= 97 && code <= 122) /* a-z */ ||\n    (code >= 65 && code <= 90) /* A-Z */\n  )\n}\n","'use strict';\n\nmodule.exports = {\n  position: true,\n  gfm: true,\n  commonmark: false,\n  footnotes: false,\n  pedantic: false,\n  blocks: require('./block-elements.json')\n};\n","'use strict';\n\nmodule.exports = indentation;\n\n/* Map of characters, and their column length,\n * which can be used as indentation. */\nvar characters = {' ': 1, '\\t': 4};\n\n/* Gets indentation information for a line. */\nfunction indentation(value) {\n  var index = 0;\n  var indent = 0;\n  var character = value.charAt(index);\n  var stops = {};\n  var size;\n\n  while (character in characters) {\n    size = characters[character];\n\n    indent += size;\n\n    if (size > 1) {\n      indent = Math.floor(indent / size) * size;\n    }\n\n    stops[indent] = index;\n\n    character = value.charAt(++index);\n  }\n\n  return {indent: indent, stops: stops};\n}\n","'use strict';\n\nvar attributeName = '[a-zA-Z_:][a-zA-Z0-9:._-]*';\nvar unquoted = '[^\"\\'=<>`\\\\u0000-\\\\u0020]+';\nvar singleQuoted = '\\'[^\\']*\\'';\nvar doubleQuoted = '\"[^\"]*\"';\nvar attributeValue = '(?:' + unquoted + '|' + singleQuoted + '|' + doubleQuoted + ')';\nvar attribute = '(?:\\\\s+' + attributeName + '(?:\\\\s*=\\\\s*' + attributeValue + ')?)';\nvar openTag = '<[A-Za-z][A-Za-z0-9\\\\-]*' + attribute + '*\\\\s*\\\\/?>';\nvar closeTag = '<\\\\/[A-Za-z][A-Za-z0-9\\\\-]*\\\\s*>';\nvar comment = '<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->';\nvar processing = '<[?].*?[?]>';\nvar declaration = '<![A-Za-z]+\\\\s+[^>]*>';\nvar cdata = '<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>';\n\nexports.openCloseTag = new RegExp('^(?:' + openTag + '|' + closeTag + ')');\n\nexports.tag = new RegExp('^(?:' +\n  openTag + '|' +\n  closeTag + '|' +\n  comment + '|' +\n  processing + '|' +\n  declaration + '|' +\n  cdata +\n')');\n","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n  return value.indexOf('<', fromIndex);\n}\n","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n  var link = value.indexOf('[', fromIndex);\n  var image = value.indexOf('![', fromIndex);\n\n  if (image === -1) {\n    return link;\n  }\n\n  /* Link can never be `-1` if an image is found, so we don’t need\n   * to check for that :) */\n  return link < image ? link : image;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.init = init;\nexports.setUser = setUser;\nexports.userID = id;\nexports.destroy = destroy;\nexports.default = void 0;\n\nvar _utils = _interopRequireDefault(require(\"../utils\"));\n\nvar _store = _interopRequireDefault(require(\"./store\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar userID;\nvar store;\n/**\n * Init\n *\n * @param {String} value The value of a userID to use if one is not stored\n * @param {String} cookieDomain The domain that should be used to cookie te user\n * @return {String} - The user ID if present, or a generated UID if not\n */\n\nfunction init(value, cookieDomain) {\n  var defaultUserConfig = {\n    storage: 'cookie',\n    name: 'spoor-id',\n    nameOverride: 'spoor-id',\n    value: null,\n    // Set the store cookie domain to .ft.com for ft.com and all its subdomains\n    domain: location.hostname.match(/^(?:.+\\.)?ft\\.com$/) ? 'ft.com' : null\n  };\n\n  if (cookieDomain) {\n    defaultUserConfig.domain = cookieDomain;\n  }\n\n  store = new _store.default(defaultUserConfig.name, defaultUserConfig);\n  var id = store.read();\n\n  if (!id) {\n    id = value;\n  }\n\n  return setUser(id); // Refresh cookies and update state\n}\n/**\n * setUser\n *\n * @param {String} id The userID to set.\n * @return {String} - The user ID if present, or a generated UID if not\n */\n\n\nfunction setUser(id) {\n  userID = id;\n\n  if (!userID) {\n    userID = _utils.default.guid();\n  }\n\n  store.write(userID); // Refreshes the cookie...\n\n  return userID;\n}\n/**\n * Delete the current user data.\n * @return {void}\n */\n\n\nfunction destroy() {\n  store.destroy();\n}\n\nfunction id() {\n  return userID;\n}\n\nvar _default = {\n  init,\n  setUser,\n  userID: id,\n  destroy\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.session = getSession;\nexports.init = init;\nexports.default = void 0;\n\nvar _utils = _interopRequireDefault(require(\"../utils\"));\n\nvar _store = _interopRequireDefault(require(\"./store\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar store;\nvar defaultSessionConfig = {\n  storage: 'best',\n  name: 'session',\n  expires: 30 * 60 * 1000 // 30 minutes\n\n};\n/**\n * Set the session in the store.\n *\n * @param {String} session - The session to be stored.\n * @return {undefined}\n */\n\nfunction setSession(session) {\n  var d = new Date();\n  d.setTime(d.getTime() + store.config.expires);\n  store.write({\n    value: session,\n    expiry: d.valueOf()\n  });\n}\n/**\n * Get the session from the store. Expiry and gen of a new session are handled here.\n *\n * @return {Object} the current session\n */\n\n\nfunction getSession() {\n  var s = store.read();\n  var session;\n  var isNew = false;\n\n  if (s) {\n    var d = new Date().valueOf();\n    var exp = parseInt(s.expiry, 10); // If current session is active.\n\n    if (exp >= d) {\n      session = s.value;\n    }\n  } // No active session, gen a new one.\n\n\n  if (!session) {\n    session = _utils.default.guid();\n    isNew = true;\n  } // Refreshes the cookie...\n\n\n  setSession(session);\n  return {\n    id: session,\n    isNew: isNew\n  };\n}\n/**\n * Init\n *\n * @param {String|Object} config The name used to store the session or configuration object.\n * @return {Session} - The session\n */\n\n\nfunction init(config) {\n  if (_utils.default.is(config, 'string')) {\n    config = {\n      name: config\n    };\n  }\n\n  if (_utils.default.isUndefined(config)) {\n    config = {};\n  }\n\n  var c = _utils.default.merge(defaultSessionConfig, config); // config.name is important here, means the user has specifically asked for a cookie name.\n\n\n  if (c.storage === 'cookie' && config.name) {\n    c.nameOverride = c.name;\n  }\n\n  store = new _store.default(c.name, c);\n  return getSession();\n}\n\nvar _default = {\n  init,\n  session: getSession\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.init = init;\nexports.setDomain = setDomain;\nexports.getDomain = getDomain;\nexports.add = add;\nexports.run = run;\nexports.addAndRun = addAndRun;\nexports.default = void 0;\n\nvar _settings = _interopRequireDefault(require(\"./settings\"));\n\nvar _utils = _interopRequireDefault(require(\"../utils\"));\n\nvar _queue = _interopRequireDefault(require(\"./queue\"));\n\nvar _transports = _interopRequireDefault(require(\"./transports\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar isIe11 = function isIe11() {\n  return Boolean(window.MSInputMethodContext) && Boolean(document.documentMode);\n};\n/**\n * Default collection server.\n */\n\n\nvar domain = 'https://spoor-api.ft.com/px.gif';\n/**\n * Queue queue.\n *\n * @type {Queue}\n */\n\nvar queue;\n/**\n * Consistent check to see if we should use sendBeacon or not.\n *\n * @return {boolean} Should we use sendBeacon?\n */\n\nfunction should_use_sendBeacon() {\n  return navigator.sendBeacon && Promise && (_settings.default.get('config') || {}).useSendBeacon;\n}\n/**\n * Attempts to send a tracking request.\n *\n * @param {Object} request The request to be sent.\n * @param {Function} callback Callback to fire the next item in the queue.\n * @return {undefined}\n */\n\n\nfunction sendRequest(request, callback) {\n  var queueTime = request.queueTime;\n  var offlineLag = new Date().getTime() - queueTime;\n  var transport = should_use_sendBeacon() ? _transports.default.get('sendBeacon')() : window.XMLHttpRequest && 'withCredentials' in new window.XMLHttpRequest() ? _transports.default.get('xhr')() : _transports.default.get('image')();\n  var user_callback = request.callback;\n  var core_system = _settings.default.get('config') && _settings.default.get('config').system || {};\n\n  var system = _utils.default.merge(core_system, {\n    api_key: _settings.default.get('api_key'),\n    // String - API key - Make sure the request is from a valid client (idea nicked from Keen.io) useful if a page gets copied onto a Russian website and creates noise\n    version: _settings.default.get('version'),\n    // Version of the tracking client e.g. '1.2'\n    source: _settings.default.get('source'),\n    // Source of the tracking client e.g. 'o-tracking'\n    transport: transport.name // The transport method used.\n\n  });\n\n  request = _utils.default.merge({\n    system: system\n  }, request); // Only bothered about offlineLag if it's longer than a second, but less than 12 months. (Especially as Date can be dodgy)\n\n  if (offlineLag > 1000 && offlineLag < 12 * 30 * 24 * 60 * 60 * 1000) {\n    request.time = request.time || {};\n    request.time.offset = offlineLag;\n  }\n\n  delete request.callback;\n  delete request.async;\n  delete request.type;\n  delete request.queueTime;\n\n  _utils.default.log('user_callback', user_callback);\n\n  _utils.default.log('PreSend', request);\n\n  var stringifiedData = JSON.stringify(request);\n  transport.complete(function (error) {\n    if (_utils.default.is(user_callback, 'function')) {\n      user_callback.call(request);\n\n      _utils.default.log('calling user_callback');\n    }\n\n    if (error) {\n      // If IE11 XHR error, try using image method\n      if (isIe11() && transport.name === 'xhr') {\n        var image_method = _transports.default.get('image')(); // Append image label to transport value so that we know it tried xhr first\n\n\n        request.system.transport = [request.system.transport, image_method.name].join('-');\n        image_method.send(url, JSON.stringify(request));\n        image_method.complete(function () {\n          if (callback) {\n            callback();\n          }\n        });\n      } else {\n        // Re-add to the queue if it failed.\n        // Re-apply queueTime here\n        request.queueTime = queueTime;\n        queue.add(request).save();\n\n        _utils.default.broadcast('oErrors', 'log', {\n          error: error.message,\n          info: {\n            module: 'o-tracking'\n          }\n        });\n      }\n    } else if (callback) {\n      callback();\n    }\n  });\n  var url = domain;\n\n  if (request && request.category && request.action) {\n    var type = \"type=\".concat(request.category, \":\").concat(request.action);\n    url = url.indexOf('?') > -1 ? \"\".concat(url, \"&\").concat(type) : \"\".concat(url, \"?\").concat(type);\n  } // Both developer and noSend flags have to be set to stop the request sending.\n\n\n  if (!(_settings.default.get('developer') && _settings.default.get('no_send'))) {\n    transport.send(url, stringifiedData);\n  }\n}\n/**\n * Adds a new request to the list of pending requests\n *\n * @param {Tracking} request The request to queue\n * @return {undefined}\n */\n\n\nfunction add(request) {\n  request.queueTime = new Date().getTime();\n\n  if (should_use_sendBeacon()) {\n    sendRequest(request);\n  } else {\n    queue.add(request).save();\n  }\n\n  _utils.default.log('AddedToQueue', queue);\n}\n/**\n * If there are any requests queued, attempts to send the next one\n * Otherwise, does nothing\n * @param {Function} callback - Optional callback\n * @return {undefined}\n */\n\n\nfunction run(callback) {\n  if (_utils.default.isUndefined(callback)) {\n    callback = function callback() {};\n  } // Investigate queue lengths bug\n  // https://jira.ft.com/browse/DTP-330\n\n\n  var all_events = queue.all();\n\n  if (all_events.length > 200) {\n    var counts = {};\n    all_events.forEach(function (event) {\n      var label = [event.category, event.action].join(':');\n\n      if (!counts.hasOwnProperty(label)) {\n        counts[label] = 0;\n      }\n\n      counts[label] += 1;\n    });\n    queue.replace([]);\n    queue.add({\n      category: 'o-tracking',\n      action: 'queue-bug',\n      context: {\n        url: document.url,\n        queue_length: all_events.length,\n        counts: counts,\n        storage: queue.storage.storage._type\n      }\n    });\n  }\n\n  var next = function next() {\n    run();\n    callback();\n  };\n\n  var nextRequest = queue.shift(); // Cancel if we've run out of requests.\n\n  if (!nextRequest) {\n    return callback();\n  } // Send this request, then try run again.\n\n\n  return sendRequest(nextRequest, next);\n}\n/**\n * Convenience function to add and run a request all in one go.\n *\n * @param {Object} request The request to queue and run.\n * @return {undefined}\n */\n\n\nfunction addAndRun(request) {\n  add(request);\n  run();\n}\n\nfunction setDomain() {\n  if (_settings.default.get('config') && _settings.default.get('config').server) {\n    domain = _settings.default.get('config').server;\n  }\n}\n/**\n * Init the queue and send any leftover events.\n * @return {undefined}\n */\n\n\nfunction init() {\n  queue = new _queue.default('requests');\n  setDomain(); // If any tracking calls are made whilst offline, try sending them the next time the device comes online\n\n  _utils.default.addEvent(window, 'online', function () {\n    run();\n  }); // On startup, try sending any requests queued from a previous session.\n\n\n  run();\n  return queue;\n}\n\nfunction getDomain() {\n  return domain;\n}\n\nvar _default = {\n  init,\n  setDomain,\n  getDomain,\n  add,\n  run,\n  addAndRun\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Queue = exports.default = void 0;\n\nvar _utils = _interopRequireDefault(require(\"../utils\"));\n\nvar _store = _interopRequireDefault(require(\"./store\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Class for handling a queue backed up by a store.\n * @class Queue\n *\n * @param {String} name - The name of the queue.\n * @return {Queue} - Returns the instance of the queue.\n */\nvar Queue = function Queue(name) {\n  if (_utils.default.isUndefined(name)) {\n    var undefinedName = new Error('You must specify a name for the queue.');\n\n    _utils.default.broadcast('oErrors', 'log', {\n      error: undefinedName.message,\n      info: {\n        module: 'o-tracking'\n      }\n    });\n\n    throw undefinedName;\n  }\n  /**\n   * Queue data.\n   * @type {Array}\n   */\n\n\n  this.queue = [];\n  /**\n   * The storage method to use. Determines best storage method.\n   * @type {Object}\n   */\n\n  this.storage = new _store.default(name); // Retrieve any previous store with the same name.\n\n  if (this.storage.read()) {\n    this.queue = this.storage.read();\n  }\n\n  return this;\n};\n/**\n * Gets the contents of the store.\n *\n * @return {Array} The array of items.\n */\n\n\nexports.Queue = Queue;\n\nQueue.prototype.all = function () {\n  if (this.queue.length === 0) {\n    return [];\n  }\n\n  var items = [];\n\n  for (var i = 0; i < this.queue.length; i = i + 1) {\n    items.push(this.queue[i].item);\n  }\n\n  return items;\n};\n/**\n * Gets the first item in the store.\n *\n * @return {Object} Returns the item.\n */\n\n\nQueue.prototype.first = function () {\n  if (this.queue.length === 0) {\n    return null;\n  }\n\n  return this.queue[0].item;\n};\n/**\n * Gets the last item in the store.\n *\n * @return {Object} Returns the item.\n */\n\n\nQueue.prototype.last = function () {\n  if (this.queue.length === 0) {\n    return null;\n  }\n\n  return this.queue.slice(-1)[0].item;\n};\n/**\n * Add data to the store.\n *\n * @param {Object} item - An item or an array of items.\n *\n * @return {Queue} - Returns the instance of the queue.\n */\n\n\nQueue.prototype.add = function (item) {\n  // I was trying to turn this whole add function into a little module, to stop doAdd function being created everytime, but couldn't work out how to get to 'this' from within the module.\n  var self = this;\n  var i;\n\n  function doAdd(item) {\n    self.queue.push({\n      created_at: new Date().valueOf(),\n      item: item\n    });\n  }\n\n  if (_utils.default.is(item, 'object') && item.constructor.toString().match(/array/i)) {\n    for (i = 0; i < item.length; i = i + 1) {\n      doAdd(item[i]);\n    }\n  } else {\n    doAdd(item);\n  }\n\n  return self;\n};\n/**\n * Overwrite the store with something completely new.\n *\n * @param {Array} items The new array of data.\n *\n * @return {Queue} - Returns the instance of the queue.\n */\n\n\nQueue.prototype.replace = function (items) {\n  if (_utils.default.is(items, 'object') && items.constructor.toString().match(/array/i)) {\n    this.queue = [];\n    this.add(items).save();\n    return this;\n  }\n\n  var invalidArg = new Error('Argument invalid, must be an array.');\n\n  _utils.default.broadcast('oErrors', 'log', {\n    error: invalidArg.message,\n    info: {\n      module: 'o-tracking'\n    }\n  });\n\n  throw invalidArg;\n};\n/**\n * Pop the first item from the queue.\n *\n * @return {Object} The item.\n */\n\n\nQueue.prototype.shift = function () {\n  if (this.queue.length === 0) {\n    return null;\n  }\n\n  var item = this.queue.shift().item;\n  this.save();\n  return item;\n};\n/**\n * Save the current store to localStorage so that old requests can still be sent after a page refresh.\n *\n * @return {Queue} - Returns the instance of the queue.\n */\n\n\nQueue.prototype.save = function () {\n  this.storage.write(this.queue);\n  return this;\n};\n\nvar _default = Queue;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _utils = _interopRequireDefault(require(\"../javascript/utils\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Trace the element and all of its parents, collecting properties as we go\nvar elementPropertiesToCollect = [\"nodeName\", \"className\", \"id\", \"href\", \"text\", \"role\"]; // For a given container element, get the number of elements that match the\n// original element (siblings); and the index of the original element (position).\n\nvar getSiblingsAndPosition = (el, originalEl, selector) => {\n  var siblings = Array.from(el.querySelectorAll(selector));\n  var position = siblings.findIndex(item => item === originalEl);\n\n  if (position === -1) {\n    return;\n  }\n\n  return {\n    siblings: siblings.length,\n    position\n  };\n}; // Get all (sanitised) properties of a given element.\n\n\nvar getAllElementProperties = el => {\n  return elementPropertiesToCollect.reduce((returnObject, property) => {\n    if (el[property]) {\n      returnObject[property] = _utils.default.sanitise(el[property]);\n    } else if (el.getAttribute(property)) {\n      returnObject[property] = _utils.default.sanitise(el.getAttribute(property));\n    } else if (el.hasAttribute(property)) {\n      returnObject[property] = el.hasAttribute(property);\n    }\n\n    return returnObject;\n  }, {});\n}; // Get some properties of a given element.\n\n\nvar getDomPathProps = (attrs, props) => {\n  // Collect any attribute that matches given strings.\n  attrs.filter(attribute => attribute.name.match(/^data-trackable|^data-o-|^aria-/i)).forEach(attribute => {\n    props[attribute.name] = attribute.value;\n  });\n  return props;\n}; // Get only the custom data-trackable-context-? properties of a given element\n\n\nvar getContextProps = (attrs, props, isOriginalEl) => {\n  var customProps = {}; // for the original element collect properties like className, nodeName\n\n  if (isOriginalEl) {\n    elementPropertiesToCollect.forEach(name => {\n      if (typeof props[name] !== 'undefined' && name !== 'id') {\n        customProps[name] = props[name];\n      }\n    });\n  } // Collect any attribute that matches given strings.\n\n\n  attrs.filter(attribute => attribute.name.match(/^data-trackable-context-/i)).forEach(attribute => {\n    customProps[attribute.name.replace('data-trackable-context-', '')] = attribute.value;\n  });\n  return customProps;\n};\n\nfunction getTrace(el) {\n  var rootEl = document;\n  var originalEl = el;\n  var selector = originalEl.getAttribute('data-trackable') ? \"[data-trackable=\\\"\".concat(originalEl.getAttribute('data-trackable'), \"\\\"]\") : originalEl.nodeName;\n  var trace = [];\n  var customContext = {};\n\n  while (el && el !== rootEl) {\n    var props = getAllElementProperties(el);\n    var attrs = Array.from(el.attributes);\n    var domPathProps = getDomPathProps(attrs, props); // If the element happens to have a data-trackable attribute, get the siblings\n    // and position of the element (relative to the current element).\n\n    if (domPathProps[\"data-trackable\"]) {\n      domPathProps = Object.assign(domPathProps, getSiblingsAndPosition(el, originalEl, selector));\n    }\n\n    trace.push(domPathProps);\n    var contextProps = getContextProps(attrs, props, el === originalEl);\n\n    _utils.default.assignIfUndefined(contextProps, customContext);\n\n    el = el.parentNode;\n  }\n\n  return {\n    trace,\n    customContext\n  };\n}\n\nvar _default = getTrace;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _config = _interopRequireDefault(require(\"./config.js\"));\n\nvar _index = _interopRequireDefault(require(\"./utils/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar parameters = {};\n\nfunction Targeting() {} //eslint-disable-line no-empty-function\n\n\nTargeting.prototype.get = function () {\n  var methods = {\n    socialReferrer: this.getSocialReferrer,\n    timestamp: this.timestamp,\n    responsive: this.responsive\n  };\n\n  _index.default.extend(parameters, this.socialFlow(), this.getVersion());\n\n  for (var item in methods) {\n    /* istanbul ignore else  */\n    if (methods.hasOwnProperty(item)) {\n      _index.default.extend(parameters, methods[item]());\n    }\n  }\n\n  return parameters;\n};\n\nTargeting.prototype.add = function (obj) {\n  /* istanbul ignore else  */\n  if (_index.default.isPlainObject(obj)) {\n    _index.default.extend(parameters, obj);\n  }\n};\n\nTargeting.prototype.remove = function (key) {\n  /* istanbul ignore else */\n  if (parameters[key]) {\n    delete parameters[key];\n  }\n};\n\nTargeting.prototype.clear = function () {\n  parameters = {};\n};\n\nTargeting.prototype.getVersion = function () {\n  if ((0, _config.default)('passOAdsVersion')) {\n    return {\n      OADS_VERSION: _index.default.getVersion()\n    };\n  }\n};\n/**\n * If there is a query parameter called socialflow=xxx, we need to add it\n * as a tag\n */\n\n\nTargeting.prototype.socialFlow = function () {\n  var sf = _index.default.getQueryParamByName('socialflow');\n\n  if (sf) {\n    return {\n      socialflow: sf\n    };\n  }\n};\n\nTargeting.prototype.getSocialReferrer = function () {\n  var codedValue;\n\n  var referrer = _index.default.getReferrer(); // TODO: add on.ft.com\n\n\n  var lookup = {\n    't.co': 'twi',\n    'facebook.com': 'fac',\n    'linkedin.com': 'lin',\n    'drudgereport.com': 'dru',\n    'dianomi.com': 'dia',\n    google: 'goo'\n  };\n  Object.keys(lookup).forEach(url => {\n    var refererRegex = new RegExp(\"^http(|s)://(www.)*(\".concat(url, \")\"));\n    /* istanbul ignore else  */\n\n    if (refererRegex.test(referrer)) {\n      codedValue = lookup[url];\n    }\n  });\n  return codedValue && {\n    socref: codedValue\n  } || {};\n};\n\nTargeting.prototype.searchTerm = function () {\n  var qs = _index.default.hash(_index.default.getQueryString(), /&|;/, '=');\n\n  var keywords = qs.q || qs.s || qs.query || qs.queryText || qs.searchField || undefined;\n  /* istanbul ignore else\t*/\n\n  if (keywords && keywords !== '') {\n    keywords = unescape(keywords).toLowerCase().replace(/[';^+]/g, ' ').replace(/\\s+/g, ' ').trim();\n  }\n\n  return {\n    kw: keywords\n  };\n};\n\nTargeting.prototype.timestamp = function () {\n  return {\n    ts: _index.default.getTimestamp()\n  };\n};\n\nTargeting.prototype.responsive = function () {\n  return (0, _config.default)('responsive') ? {\n    res: _index.default.responsive.getCurrent()\n  } : {};\n};\n\nTargeting.prototype.debug = function () {\n  var log = _index.default.log;\n  var parameters = this.get();\n  /* istanbul ignore else  */\n\n  if (Object.keys(parameters).length !== 0) {\n    log.start('Targeting');\n    log.attributeTable(this.get());\n    log.end();\n  }\n};\n\nvar _default = new Targeting();\n\nexports.default = _default;\nmodule.exports = exports.default;","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n  return function wrap() {\n    var args = new Array(arguments.length);\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i];\n    }\n    return fn.apply(thisArg, args);\n  };\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar buildURL = require('./../helpers/buildURL');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n  return new Promise(function dispatchXhrRequest(resolve, reject) {\n    var requestData = config.data;\n    var requestHeaders = config.headers;\n\n    if (utils.isFormData(requestData)) {\n      delete requestHeaders['Content-Type']; // Let the browser set it\n    }\n\n    var request = new XMLHttpRequest();\n\n    // HTTP basic authentication\n    if (config.auth) {\n      var username = config.auth.username || '';\n      var password = config.auth.password || '';\n      requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n    }\n\n    request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);\n\n    // Set the request timeout in MS\n    request.timeout = config.timeout;\n\n    // Listen for ready state\n    request.onreadystatechange = function handleLoad() {\n      if (!request || request.readyState !== 4) {\n        return;\n      }\n\n      // The request errored out and we didn't get a response, this will be\n      // handled by onerror instead\n      // With one exception: request that using file: protocol, most browsers\n      // will return status as 0 even though it's a successful request\n      if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n        return;\n      }\n\n      // Prepare the response\n      var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n      var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n      var response = {\n        data: responseData,\n        status: request.status,\n        statusText: request.statusText,\n        headers: responseHeaders,\n        config: config,\n        request: request\n      };\n\n      settle(resolve, reject, response);\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle low level network errors\n    request.onerror = function handleError() {\n      // Real errors are hidden from us by the browser\n      // onerror should only fire if it's a network error\n      reject(createError('Network Error', config, null, request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle timeout\n    request.ontimeout = function handleTimeout() {\n      reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED',\n        request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Add xsrf header\n    // This is only done if running in a standard browser environment.\n    // Specifically not if we're in a web worker, or react-native.\n    if (utils.isStandardBrowserEnv()) {\n      var cookies = require('./../helpers/cookies');\n\n      // Add xsrf header\n      var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ?\n          cookies.read(config.xsrfCookieName) :\n          undefined;\n\n      if (xsrfValue) {\n        requestHeaders[config.xsrfHeaderName] = xsrfValue;\n      }\n    }\n\n    // Add headers to the request\n    if ('setRequestHeader' in request) {\n      utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n        if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n          // Remove Content-Type if data is undefined\n          delete requestHeaders[key];\n        } else {\n          // Otherwise add header to the request\n          request.setRequestHeader(key, val);\n        }\n      });\n    }\n\n    // Add withCredentials to request if needed\n    if (config.withCredentials) {\n      request.withCredentials = true;\n    }\n\n    // Add responseType to request if needed\n    if (config.responseType) {\n      try {\n        request.responseType = config.responseType;\n      } catch (e) {\n        // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n        // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n        if (config.responseType !== 'json') {\n          throw e;\n        }\n      }\n    }\n\n    // Handle progress if needed\n    if (typeof config.onDownloadProgress === 'function') {\n      request.addEventListener('progress', config.onDownloadProgress);\n    }\n\n    // Not all browsers support upload events\n    if (typeof config.onUploadProgress === 'function' && request.upload) {\n      request.upload.addEventListener('progress', config.onUploadProgress);\n    }\n\n    if (config.cancelToken) {\n      // Handle cancellation\n      config.cancelToken.promise.then(function onCanceled(cancel) {\n        if (!request) {\n          return;\n        }\n\n        request.abort();\n        reject(cancel);\n        // Clean up request\n        request = null;\n      });\n    }\n\n    if (requestData === undefined) {\n      requestData = null;\n    }\n\n    // Send the request\n    request.send(requestData);\n  });\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n  var error = new Error(message);\n  return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n  return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n  this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n  return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","function _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\nmodule.exports = _defineProperty;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","/**\n * @file\n * Article layout\n */\n\nimport React, { createContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { flagsPropType, StringBoolPropType } from '../shared/proptypes';\nimport Header from '../header';\nimport Analytics from '../analytics';\nimport { TopAd } from '../ads';\nimport OnwardJourney from '../onwardjourney';\nimport Comments from '../comments';\nimport Footer from '../footer';\nimport './styles.scss';\nimport { useAds, useLayoutChangeEvents } from '../shared/hooks';\n\nexport const Context = createContext({});\n\nconst ArticleLayout = ({ flags, ads, children, ...props }) => {\n  const breakpoint = useLayoutChangeEvents();\n  useAds(ads, flags.ads);\n\n  return (\n    <Context.Provider\n      value={{\n        flags,\n        ads,\n        breakpoint,\n        ...props,\n      }}\n    >\n      {flags.analytics && <Analytics {...{ ...props, flags, breakpoint }} />}\n      {flags.ads && <TopAd />}\n      {flags.header && <Header key=\"header\" {...{ ...props, flags, breakpoint }} />}\n      {children}\n      {flags.onwardjourney && <OnwardJourney key=\"oj\" {...{ ...props, breakpoint }} />}\n      {flags.comments && <Comments key=\"comments\" {...{ ...props, flags, breakpoint }} />}\n      {flags.footer && <Footer key=\"footer\" {...{ ...props, flags, breakpoint }} />}\n    </Context.Provider>\n  );\n};\n\nArticleLayout.displayName = 'GArticleLayout';\n\nArticleLayout.propTypes = {\n  flags: flagsPropType.isRequired,\n  ads: PropTypes.exact({\n    gptSite: PropTypes.string.isRequired,\n    gptZone: StringBoolPropType.isRequired,\n    targeting: StringBoolPropType.isRequired,\n  }),\n  children: PropTypes.oneOfType([PropTypes.node, PropTypes.arrayOf(PropTypes.node)]).isRequired,\n};\n\nArticleLayout.defaultProps = {\n  ads: {\n    gptSite: 'test.5887.origami', // Ad unit hierarchy makes ads more granular.\n    gptZone: false, // Start with ft.com and /companies /markets /world as appropriate to your story\n    targeting: false, // granular targeting is optional and will be specified by the ads team\n  },\n};\n\nexport default ArticleLayout;\n","/**\n * @file\n * Header component\n */\n\nimport React, { useEffect, useRef } from 'react';\nimport OHeader from '@financial-times/o-header';\nimport './styles.scss';\nimport { flagsPropType } from '../shared/proptypes';\n\nconst Header = ({ flags, ...props }) => {\n  const ref = useRef();\n\n  const { dark } = flags;\n\n  const headerClasses = ['o-header', 'o-header--simple', dark && 'o-header--transparent']\n    .filter((i) => i)\n    .join(' ');\n\n  useEffect(() => {\n    (async () => {\n      try {\n        new OHeader(ref.current);\n      } catch (e) {\n        console.error(e);\n      }\n    })();\n  }, []);\n\n  return (\n    <header ref={ref} className={headerClasses} data-o-component=\"o-header\" data-o-header--no-js=\"\">\n      <div className=\"o-header__row o-header__top\">\n        <div className=\"o-header__container\">\n          <div className=\"o-header__top-wrapper\">\n            <div className=\"o-header__top-column o-header__top-column--center\">\n              <a\n                className=\"o-header__top-logo\"\n                href=\"https://www.ft.com/\"\n                title=\"Go to Financial Times homepage\"\n              >\n                <span className=\"o-header__visually-hidden\">Financial Times</span>\n              </a>\n            </div>\n          </div>\n        </div>\n      </div>\n    </header>\n  );\n};\n\nHeader.displayName = 'GHeader';\n\nHeader.propTypes = {\n  flags: flagsPropType,\n};\n\nHeader.defaultProps = {\n  flags: {\n    dark: false,\n  },\n};\n\nexport default Header;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _header = _interopRequireDefault(require(\"./dist/js/header.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar constructAll = () => {\n  _header.default.init();\n\n  document.removeEventListener('o.DOMContentLoaded', constructAll);\n};\n\ndocument.addEventListener('o.DOMContentLoaded', constructAll);\nvar _default = _header.default;\nexports.default = _default;\nmodule.exports = exports.default;","/**\n * @file\n * Analytics code\n */\n\nimport React, { Fragment, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport OTracking from '@financial-times/o-tracking';\nimport { flagsPropType } from '../shared/proptypes';\nimport { spoorTrackingPixel } from '../shared/helpers';\n\n// Disables warning for dangerouslySetInnerHTML because we kiiiiinda need it here.\n/* eslint-disable react/no-danger */\n\nconst Analytics = ({ id, tracking, flags }) => {\n  useEffect(() => {\n    (async () => {\n      try {\n        if (!window.cutsTheMustard) return;\n        const pageData = {\n          content: { asset_type: 'interactive' },\n        };\n\n        const properties = [].reduce.call(\n          document.querySelectorAll('head meta[property^=\"ft.track:\"]') || [],\n          (o, el) => {\n            if (!el) return o;\n\n            const attName = el.getAttribute('property').replace('ft.track:', '');\n            o[attName] = el.getAttribute('content'); // eslint-disable-line no-param-reassign\n            return o;\n          },\n          {},\n        );\n\n        const contentId = id || document.documentElement.getAttribute('data-content-id');\n\n        if (contentId) {\n          pageData.content.uuid = contentId;\n        }\n\n        if (properties.microsite_name) {\n          pageData.microsite_name = properties.microsite_name;\n        }\n\n        // Setup\n        OTracking.init({\n          server: 'https://spoor-api.ft.com/px.gif',\n          system: {\n            is_live:\n              typeof properties.is_live === 'string' ? properties.is_live.toLowerCase() : false,\n          },\n          context: { product: properties.product || 'IG' },\n        });\n\n        // Page\n        OTracking.page(pageData);\n\n        // Links\n        OTracking.link.init();\n      } catch (e) {\n        console.error(e);\n      }\n    })();\n  }, [id]);\n\n  return (\n    <Fragment>\n      {/* Add fallback if browsers don't cut the mustard */}\n      {spoorTrackingPixel({\n        action: 'view',\n        category: 'page',\n        context: {\n          content: {\n            asset_type: 'interactive',\n            uuid: id,\n          },\n          product: 'IG',\n          microsite_name: tracking.micrositeName,\n        },\n        system: {\n          is_live: flags.prod,\n          apiKey: 'qUb9maKfKbtpRsdp0p2J7uWxRPGJEP',\n          source: 'o-tracking-ns',\n          version: '1.0.0',\n        },\n      })}\n      {flags.googleAnalytics && (\n        <script\n          dangerouslySetInnerHTML={{\n            __html: `\n        (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n        (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n        m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n        })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n        ga('create', 'UA-35229645-1', 'auto');\n        ga('require','displayfeatures');\n        ga('send', 'pageview');\n        `,\n          }}\n        />\n      )}\n      {/* Floodlight tracking pixel */}\n      <script\n        dangerouslySetInnerHTML={{\n          __html: `\n        var spoorId = /spoor-id=([^;]+)/.exec(document.cookie)[1] || 'cj5y2utdx00003i5z6l6po8c1';\n        var endpoint = 'https://4235225.fls.doubleclick.net/activityi;src=4235225;type=homeo886;cat=ft-ne000;u10=' + spoorId + ';dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=' + Date.now() + ';num=1';\n        var img = document.createElement('img');\n        img.setAttribute('width', 1);\n        img.setAttribute('height', 1);\n        img.setAttribute('src', endpoint);\n        img.style.position = 'absolute';\n        document.body.insertBefore(img, document.body.firstElementChild);\n        `,\n        }}\n      />\n    </Fragment>\n  );\n};\n\nAnalytics.displayName = 'GAnalytics';\n\nAnalytics.displayName = 'GAnalytics';\n\nAnalytics.propTypes = {\n  id: PropTypes.string.isRequired,\n  flags: flagsPropType.isRequired,\n  tracking: PropTypes.shape({\n    micrositeName: PropTypes.string,\n  }),\n};\n\nAnalytics.defaultProps = {\n  tracking: {\n    micrositeName: undefined,\n  },\n};\n\nexport default Analytics;\n","module.exports = function(md, options) {\n  options = options || {};\n  options.listUnicodeChar = options.hasOwnProperty('listUnicodeChar') ? options.listUnicodeChar : false;\n  options.stripListLeaders = options.hasOwnProperty('stripListLeaders') ? options.stripListLeaders : true;\n  options.gfm = options.hasOwnProperty('gfm') ? options.gfm : true;\n  options.useImgAltText = options.hasOwnProperty('useImgAltText') ? options.useImgAltText : true;\n\n  var output = md || '';\n\n  // Remove horizontal rules (stripListHeaders conflict with this rule, which is why it has been moved to the top)\n  output = output.replace(/^(-\\s*?|\\*\\s*?|_\\s*?){3,}\\s*$/gm, '');\n\n  try {\n    if (options.stripListLeaders) {\n      if (options.listUnicodeChar)\n        output = output.replace(/^([\\s\\t]*)([\\*\\-\\+]|\\d+\\.)\\s+/gm, options.listUnicodeChar + ' $1');\n      else\n        output = output.replace(/^([\\s\\t]*)([\\*\\-\\+]|\\d+\\.)\\s+/gm, '$1');\n    }\n    if (options.gfm) {\n      output = output\n        // Header\n        .replace(/\\n={2,}/g, '\\n')\n        // Fenced codeblocks\n        .replace(/~{3}.*\\n/g, '')\n        // Strikethrough\n        .replace(/~~/g, '')\n        // Fenced codeblocks\n        .replace(/`{3}.*\\n/g, '');\n    }\n    output = output\n      // Remove HTML tags\n      .replace(/<[^>]*>/g, '')\n      // Remove setext-style headers\n      .replace(/^[=\\-]{2,}\\s*$/g, '')\n      // Remove footnotes?\n      .replace(/\\[\\^.+?\\](\\: .*?$)?/g, '')\n      .replace(/\\s{0,2}\\[.*?\\]: .*?$/g, '')\n      // Remove images\n      .replace(/\\!\\[(.*?)\\][\\[\\(].*?[\\]\\)]/g, options.useImgAltText ? '$1' : '')\n      // Remove inline links\n      .replace(/\\[(.*?)\\][\\[\\(].*?[\\]\\)]/g, '$1')\n      // Remove blockquotes\n      .replace(/^\\s{0,3}>\\s?/g, '')\n      // Remove reference-style links?\n      .replace(/^\\s{1,2}\\[(.*?)\\]: (\\S+)( \".*?\")?\\s*$/g, '')\n      // Remove atx-style headers\n      .replace(/^(\\n)?\\s{0,}#{1,6}\\s+| {0,}(\\n)?\\s{0,}#{0,} {0,}(\\n)?\\s{0,}$/gm, '$1$2$3')\n      // Remove emphasis (repeat the line to remove double emphasis)\n      .replace(/([\\*_]{1,3})(\\S.*?\\S{0,1})\\1/g, '$2')\n      .replace(/([\\*_]{1,3})(\\S.*?\\S{0,1})\\1/g, '$2')\n      // Remove code blocks\n      .replace(/(`{3,})(.*?)\\1/gm, '$2')\n      // Remove inline code\n      .replace(/`(.+?)`/g, '$1')\n      // Replace two or more newlines with exactly two? Not entirely sure this belongs here...\n      .replace(/\\n{2,}/g, '\\n\\n');\n  } catch(e) {\n    console.error(e);\n    return md;\n  }\n  return output;\n};\n","/**\n * @file\n * Various ad sizes\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport './styles.scss';\n\nexport const Ad = ({\n  name,\n  targeting,\n  background,\n  reserve,\n  showAdsLabel,\n  defaultFormat,\n  smallFormat,\n  mediumFormat,\n  largeFormat,\n  extraFormat,\n}) => {\n  return (\n    <div\n      className={`o-ads o-ads--center o-ads--${\n        background === 'slate' ? 'slate-' : ''\n      }background o-ads--reserve-${reserve} ${showAdsLabel ? 'o-ads--label-left' : ''}`}\n      data-o-ads-name={name}\n      data-o-ads-targeting={targeting}\n      data-o-ads-formats-default={defaultFormat}\n      data-o-ads-formats-small={smallFormat}\n      data-o-ads-formats-medium={mediumFormat}\n      data-o-ads-formats-large={largeFormat}\n      data-o-ads-formats-extra={extraFormat}\n      aria-hidden=\"true\"\n    />\n  );\n};\n\nAd.displayName = 'GAd';\n\nexport const TopAd = () => (\n  <Ad\n    name=\"top-ad\"\n    targeting=\"pos=top;\"\n    reserve=\"90\"\n    defaultFormat={false}\n    smallFormat={false}\n    mediumFormat=\"Leaderboard,Responsive\"\n    largeFormat=\"SuperLeaderboard,Leaderboard,Responsive\"\n    extraFormat=\"Billboard,SuperLeaderboard,Leaderboard,Responsive\"\n  />\n);\n\nTopAd.displayName = 'GTopAd';\n\nexport const MiddleAd = () => (\n  <Ad\n    name=\"mid-ad\"\n    targeting=\"pos=mid;\"\n    reserve=\"250\"\n    showAdsLabel\n    defaultFormat=\"Responsive\"\n    smallFormat=\"MediumRectangle,Responsive\"\n    mediumFormat=\"MediumRectangle,Responsive\"\n    largeFormat=\"MediumRectangle,Responsive\"\n    extraFormat=\"MediumRectangle,Responsive\"\n  />\n);\n\nMiddleAd.displayName = 'GMiddleAd';\n\nAd.propTypes = {\n  name: PropTypes.string,\n  targeting: PropTypes.string,\n  background: PropTypes.oneOf(['default', 'slate']),\n  reserve: PropTypes.oneOf(['90', '250']), // creates placeholder of height to prevent page from jumping when ad loads\n  showAdsLabel: PropTypes.bool,\n  defaultFormat: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n  smallFormat: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n  mediumFormat: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n  largeFormat: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n  extraFormat: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n};\n\n// defaults to top ad configuration\nAd.defaultProps = {\n  name: 'top-ad',\n  targeting: 'pos=top',\n  background: 'default',\n  reserve: '90',\n  showAdsLabel: false,\n  defaultFormat: false,\n  smallFormat: false,\n  mediumFormat: 'Leaderboard,Responsive',\n  largeFormat: 'SuperLeaderboard,Leaderboard,Responsive',\n  extraFormat: 'Billboard,SuperLeaderboard,Leaderboard,Responsive',\n};\n","/**\n * @file\n * OnwardJourney component\n */\n\nimport React, { useEffect, useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeCancelable } from '../shared/helpers';\nimport './styles.scss';\n\nconst OnwardJourney = ({ urlBase, layout, relatedContent }) => {\n  const [sections, setSections] = useState([]);\n  const sectionP = useRef();\n\n  useEffect(() => {\n    (async () => {\n      sectionP.current = makeCancelable(\n        Promise.all(\n          relatedContent.map(({ list, rows = 1 }) => {\n            const limit = rows * 4;\n            const url = `${urlBase}${list}/html/${layout}?limit=${limit}`;\n            return fetch(url).then(res => res.text());\n          }),\n        ),\n      );\n\n      try {\n        const sections = await sectionP.current.promise;\n        setSections(sections);\n      } catch (e) {\n        if (e.isCanceled) return;\n        console.error(e); // eslint-disable-line no-console\n      }\n    })();\n\n    // Cleanup\n    return () => {\n      sectionP.current.cancel();\n    };\n  }, [layout, relatedContent, urlBase]);\n\n  return sections.map((section, idx) => (\n    <section\n      key={idx} // eslint-disable-line react/no-array-index-key\n      className=\"onward-journey__section\"\n      data-g-component=\"onward-journey\"\n      dangerouslySetInnerHTML={{ __html: section }} // eslint-disable-line react/no-danger\n    />\n  ));\n};\n\nOnwardJourney.displayName = 'GOnwardJourney';\n\nOnwardJourney.propTypes = {\n  relatedContent: PropTypes.arrayOf(\n    PropTypes.shape({\n      rows: PropTypes.number.isRequired,\n      list: PropTypes.string,\n    }),\n  ),\n  urlBase: PropTypes.string,\n  layout: PropTypes.string,\n};\n\nOnwardJourney.defaultProps = {\n  relatedContent: [],\n  urlBase: 'https://ig.ft.com/onwardjourney/v3/',\n  layout: '',\n};\n\nexport default OnwardJourney;\n","/**\n * @file\n * Comments component\n */\n\nimport React, { useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport OComments from '@financial-times/o-comments';\nimport { flagsPropType } from '../shared/proptypes';\nimport './styles.scss';\n\nconst Comments = ({ id, url, linkPageUrl, flags }) => {\n  const ref = useRef();\n\n  const { dark } = flags;\n\n  useEffect(() => {\n    if ((id && linkPageUrl) || (id && url)) {\n      new OComments(ref.current, {\n        // eslint-disable-line no-new\n        articleUrl: linkPageUrl || url,\n        articleId: id,\n      });\n    }\n  }, [id, url, linkPageUrl]);\n\n  const comments = (\n    <div className=\"o-grid-container\">\n      <div className=\"o-grid-row\">\n        <div data-o-grid-colspan=\"12 S11 Scenter M9 L8 XL7\">\n          <div ref={ref} data-o-component=\"o-comments\" id=\"comments\">\n            <div className=\"o--if-no-js\">\n              To participate in this chat, you need to upgrade to a newer web browser.{' '}\n              <a href=\"https://help.ft.com/tools-services/browser-compatibility/\">Learn more.</a>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n\n  if (dark) {\n    return <div className=\"pink\">{comments}</div>;\n  }\n\n  return comments;\n};\n\nComments.displayName = 'GComments';\n\nComments.propTypes = {\n  title: PropTypes.string,\n  id: PropTypes.string.isRequired,\n  url: PropTypes.string.isRequired,\n  flags: flagsPropType,\n};\n\nComments.defaultProps = {\n  title: 'Comments',\n  flags: {\n    dark: false,\n  },\n};\n\nexport default Comments;\nComments.displayName = 'GComments';\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _comments = _interopRequireDefault(require(\"./dist/js/comments.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar constructAll = function constructAll() {\n  _comments.default.init();\n\n  document.removeEventListener('o.DOMContentLoaded', constructAll);\n};\n\ndocument.addEventListener('o.DOMContentLoaded', constructAll);\nvar _default = _comments.default;\nexports.default = _default;\nmodule.exports = exports.default;","/**\n * @file\n * Footer component\n */\nimport React, { useEffect, useRef } from 'react';\nimport OFooter from '@financial-times/o-footer';\nimport './styles.scss';\n\nconst Footer = () => {\n  const ref = useRef();\n\n  useEffect(() => {\n    (async () => {\n      try {\n        new OFooter(ref.current);\n      } catch (e) {\n        console.error(e);\n      }\n    })();\n  }, []);\n\n  return (\n    <footer\n      ref={ref}\n      data-o-footer--no-js=\"\"\n      className=\"o-footer o-footer--theme-dark\"\n      data-o-component=\"o-footer\"\n    >\n      <div className=\"o-footer__container\">\n        <div className=\"o-footer__row\">\n          <nav className=\"o-footer__matrix\" role=\"navigation\" aria-label=\"Useful links\">\n            <div className=\"o-footer__matrix-group o-footer__matrix-group--1\">\n              <h3 className=\"o-footer__matrix-title\">Support</h3>\n              <div className=\"o-footer__matrix-content\" id=\"o-footer-section-0\">\n                <div className=\"o-footer__matrix-column\">\n                  <a className=\"o-footer__matrix-link\" href=\"/tour\" data-trackable=\"View Site Tips\">\n                    View Site Tips\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://help.ft.com\"\n                    data-trackable=\"Help Centre\"\n                  >\n                    Help Centre\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.ft.com/aboutus\"\n                    data-trackable=\"About Us\"\n                  >\n                    About Us\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.ft.com/accessibility\"\n                    data-trackable=\"Accessibility\"\n                  >\n                    Accessibility\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.ft.com/tour/myft\"\n                    data-trackable=\"myFT Tour\"\n                  >\n                    myFT Tour\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://aboutus.ft.com/en-gb/careers/\"\n                    data-trackable=\"Careers\"\n                  >\n                    Careers\n                  </a>\n                </div>\n              </div>\n            </div>\n            <div className=\"o-footer__matrix-group o-footer__matrix-group--1\">\n              <h3 className=\"o-footer__matrix-title\">Legal &amp; Privacy</h3>\n              <div className=\"o-footer__matrix-content\" id=\"o-footer-section-1\">\n                <div className=\"o-footer__matrix-column\">\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://help.ft.com/help/legal-privacy/terms-conditions/\"\n                    data-trackable=\"Terms &amp; Conditions\"\n                  >\n                    Terms &amp; Conditions\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://help.ft.com/help/legal-privacy/privacy/\"\n                    data-trackable=\"Privacy\"\n                  >\n                    Privacy\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://help.ft.com/help/legal-privacy/cookies/\"\n                    data-trackable=\"Cookies\"\n                  >\n                    Cookies\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://help.ft.com/help/legal-privacy/copyright/copyright-policy/\"\n                    data-trackable=\"Copyright\"\n                  >\n                    Copyright\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://help.ft.com/help/legal/slavery-statement/\"\n                    data-trackable=\"Slavery Statement &amp; Policies\"\n                  >\n                    Slavery Statement &amp; Policies\n                  </a>\n                </div>\n              </div>\n            </div>\n            <div className=\"o-footer__matrix-group o-footer__matrix-group--2\">\n              <h3 className=\"o-footer__matrix-title\" aria-controls=\"o-footer-section-2\">\n                Services\n              </h3>\n              <div className=\"o-footer__matrix-content\" id=\"o-footer-section-2\">\n                <div className=\"o-footer__matrix-column\">\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://live.ft.com/\"\n                    data-trackable=\"FT Live\"\n                  >\n                    FT Live\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.ft.com/securedrop\"\n                    data-trackable=\"Share News Tips Securely\"\n                    data-o-tracking-do-not-track=\"true\"\n                  >\n                    Share News Tips Securely\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.ft.com/products\"\n                    data-trackable=\"Individual Subscriptions\"\n                  >\n                    Individual Subscriptions\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://enterprise.ft.com/en-gb/services/group-subscriptions/group-contact-us/?segmentId=383c7f63-abf4-b62d-cb33-4c278e6fdf61&amp;cpccampaign=B2B_link_ft.com_footer\"\n                    data-trackable=\"Group Subscriptions\"\n                  >\n                    Group Subscriptions\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://enterprise.ft.com/en-gb/services/republishing/\"\n                    data-trackable=\"Republishing\"\n                  >\n                    Republishing\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.businessesforsale.com/ft2/notices\"\n                    data-trackable=\"Contracts &amp; Tenders\"\n                  >\n                    Contracts &amp; Tenders\n                  </a>\n                </div>\n                <div className=\"o-footer__matrix-column\">\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.exec-appointments.com/\"\n                    data-trackable=\"Executive Job Search\"\n                  >\n                    Executive Job Search\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://fttoolkit.co.uk/\"\n                    data-trackable=\"Advertise with the FT\"\n                  >\n                    Advertise with the FT\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://twitter.com/financialtimes\"\n                    data-trackable=\"Follow the FT on Twitter\"\n                  >\n                    Follow the FT on Twitter\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://transact.ft.com/en-gb/\"\n                    data-trackable=\"FT Transact\"\n                  >\n                    FT Transact\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://enterprise.ft.com/en-gb/services/group-subscriptions/education/\"\n                    data-trackable=\"Secondary Schools\"\n                  >\n                    Secondary Schools\n                  </a>\n                </div>\n              </div>\n            </div>\n            <div className=\"o-footer__matrix-group o-footer__matrix-group--2\">\n              <h3 className=\"o-footer__matrix-title\" aria-controls=\"o-footer-section-3\">\n                Tools\n              </h3>\n              <div className=\"o-footer__matrix-content\" id=\"o-footer-section-3\">\n                <div className=\"o-footer__matrix-column\">\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://markets.ft.com/data/portfolio/dashboard\"\n                    data-trackable=\"Portfolio\"\n                  >\n                    Portfolio\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.ft.com/todaysnewspaper\"\n                    data-trackable=\"Today's Newspaper (ePaper)\"\n                  >\n                    Today's Newspaper (ePaper)\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://markets.ft.com/data/alerts/\"\n                    data-trackable=\"Alerts Hub\"\n                  >\n                    Alerts Hub\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://rankings.ft.com/businessschoolrankings/global-mba-ranking-2019\"\n                    data-trackable=\"MBA Rankings\"\n                  >\n                    MBA Rankings\n                  </a>\n                </div>\n                <div className=\"o-footer__matrix-column\">\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://kat.ft.com/\"\n                    data-trackable=\"Enterprise Tools\"\n                  >\n                    Enterprise Tools\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.ft.com/news-feed\"\n                    data-trackable=\"News feed\"\n                  >\n                    News feed\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.ft.com/newsletters\"\n                    data-trackable=\"Newsletters\"\n                  >\n                    Newsletters\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://markets.ft.com/research/Markets/Currencies?segid=70113\"\n                    data-trackable=\"Currency Converter\"\n                  >\n                    Currency Converter\n                  </a>\n                </div>\n              </div>\n            </div>\n          </nav>\n          <div className=\"o-footer__external-link o-footer__matrix-title\">\n            <a\n              className=\"o-footer__more-from-ft o-footer__matrix-title\"\n              href=\"https://www.ft.com/more-from-ft-group\"\n            >\n              More from the FT Group\n            </a>\n          </div>\n        </div>\n        <div className=\"o-footer__copyright\" role=\"contentinfo\">\n          <small>\n            Markets data delayed by at least 15 minutes. &#xA9; THE FINANCIAL TIMES LTD{' '}\n            {new Date().getFullYear()}\n            {'. '}\n            <abbr title=\"Financial Times\" aria-label=\"F T\">\n              FT\n            </abbr>{' '}\n            and &#x2018;Financial Times&#x2019; are trademarks of The Financial Times Ltd.\n            <br />\n            The Financial Times and its journalism are subject to a self-regulation regime under the{' '}\n            <a\n              href=\"https://aboutus.ft.com/en-gb/ft-editorial-code/\"\n              aria-label=\"F T Editorial Code of Practice\"\n            >\n              FT Editorial Code of Practice\n            </a>\n            .\n          </small>\n        </div>\n      </div>\n      <div className=\"o-footer__brand\">\n        <div className=\"o-footer__container\">\n          <div className=\"o-footer__brand-logo\" />\n        </div>\n      </div>\n    </footer>\n  );\n};\n\nFooter.displayName = 'GFooter';\n\nexport default Footer;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _footer = _interopRequireDefault(require(\"./dist/js/footer.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar constructAll = () => {\n  _footer.default.init();\n\n  document.removeEventListener('o.DOMContentLoaded', constructAll);\n};\n\ndocument.addEventListener('o.DOMContentLoaded', constructAll);\nvar _default = _footer.default;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _config = _interopRequireWildcard(require(\"./dist/js/config.js\"));\n\nvar _slots = _interopRequireDefault(require(\"./dist/js/slots.js\"));\n\nvar _gpt = _interopRequireDefault(require(\"./dist/js/ad-servers/gpt.js\"));\n\nvar _targeting = _interopRequireDefault(require(\"./dist/js/targeting.js\"));\n\nvar _index = _interopRequireDefault(require(\"./dist/js/utils/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\n/* eslint valid-jsdoc: 0 */\nfunction Ads() {\n  addDOMEventListener();\n\n  if (window && !window.oAds) {\n    window.oAds = this;\n  }\n}\n\n_config.default.init = _config.init;\n_config.default.clear = _config.clear; // bung all our modules on the protoype\n\nAds.prototype.config = _config.default;\nAds.prototype.slots = _slots.default;\nAds.prototype.gpt = _gpt.default;\nAds.prototype.targeting = _targeting.default;\nAds.prototype.utils = _index.default;\n/**\n* Initialises the ads library and all sub modules\n* @param options {object} a JSON object containing configuration for the current page\n*/\n\nAds.prototype.init = function (options) {\n  options = options || {};\n  this.config.init();\n  var configOptions = Object.assign(options, {\n    nonPersonalized: !options.disableConsentCookie\n  });\n  this.config(configOptions);\n\n  if (options.disableConsentCookie) {\n    this.consents = {\n      behavioral: true\n    };\n  } else {\n    this.consents = getConsents();\n  }\n\n  if (this.consents.behavioral) {\n    this.utils.broadcast('consentBehavioral');\n  }\n\n  if (this.consents.programmatic) {\n    this.utils.broadcast('consentProgrammatic');\n  }\n\n  this.utils.broadcast('initialising');\n  this.targeting.add(this.config().targeting);\n  return Promise.resolve(this.initLibrary());\n};\n/**\n * Update page level targeting data in o-ads and GPT\n */\n\n\nAds.prototype.updateTargeting = function (data) {\n  this.targeting.add(data);\n  this.gpt.updatePageTargeting(this.targeting.get());\n};\n\nAds.prototype.initLibrary = function () {\n  this.slots.init();\n\n  if (this.consents.programmatic) {\n    this.config({\n      'nonPersonalized': false\n    });\n    this.targeting.add({\n      \"cc\": \"y\"\n    });\n  }\n\n  this.gpt.init();\n  this.utils.on('debug', this.debug.bind(this));\n  this.isInitialised = true;\n  this.utils.broadcast('initialised', this);\n  removeDOMEventListener();\n  return this;\n};\n\nAds.prototype.debug = function () {\n  var remove = true;\n\n  if (localStorage.getItem('oAds')) {\n    remove = false;\n  } else {\n    localStorage.setItem('oAds', true);\n  }\n\n  this.gpt.debug();\n  this.slots.debug();\n  this.targeting.debug();\n\n  if (remove) {\n    localStorage.removeItem('oAds');\n  }\n};\n\nAds.prototype.version = function () {\n  this.utils.log.warn('DEPRECATION NOTICE: Ads.version() will be deprecated in favour of Ads.getVersion()');\n  this.utils.log(\"o-ads version: \".concat(this.utils.getVersion()));\n};\n\nAds.prototype.getVersion = function () {\n  return this.utils.getVersion();\n};\n\nvar initAll = function initAll() {\n  return ads.init().then(() => {\n    var slots = Array.from(document.querySelectorAll('.o-ads, [data-o-ads-name]'));\n    slots.forEach(ads.slots.initSlot.bind(ads.slots));\n  });\n};\n\nAds.prototype.initAll = initAll;\n\nfunction getConsents() {\n  // derive consent options from ft consent cookie\n  var re = /FTConsent=([^;]+)/;\n  var match = document.cookie.match(re);\n\n  if (!match) {\n    // cookie stasis or no consent cookie found\n    return {\n      behavioral: false,\n      programmatic: false\n    };\n  }\n\n  var consentCookie = decodeURIComponent(match[1]);\n  return {\n    behavioral: consentCookie.indexOf('behaviouraladsOnsite:on') !== -1,\n    programmatic: consentCookie.indexOf('programmaticadsOnsite:on') !== -1\n  };\n}\n\nfunction addDOMEventListener() {\n  document.addEventListener('o.DOMContentLoaded', initAll);\n}\n\nfunction removeDOMEventListener() {\n  document.removeEventListener('o.DOMContentLoaded', initAll);\n}\n\nvar ads = new Ads();\nvar _default = ads;\nexports.default = _default;\nmodule.exports = exports.default;","/**\n * @file\n * Top of a story\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport Share from '../share';\nimport Bylines from '../bylines';\nimport { getMainImage } from '../shared/helpers';\nimport {\n  mainImagePropType,\n  bylinesPropType,\n  topicPropType,\n  flagsPropType,\n} from '../shared/proptypes';\nimport './styles.scss';\n\nconst StoryTopper = ({\n  url,\n  topic,\n  headline,\n  summary,\n  relatedArticle,\n  mainImage,\n  bylines,\n  socialHeadline,\n  twitterHeadline,\n  facebookHeadline,\n  tweetText,\n  flags,\n  ...props\n}) => {\n  // These really mess with Storyshots' snapshot testing\n  const buildTime = props.buildTime || new Date().toISOString(); // eslint-disable-line\n  const publishedDate = props.publishedDate || new Date().toISOString(); // eslint-disable-line\n\n  return (\n    <div className=\"story-topper\">\n      {topic && (\n        <div className=\"topic\">\n          <a href={topic.url} className=\"o-editorial-typography-topic\">\n            {topic.name}\n          </a>\n        </div>\n      )}\n\n      <h1 className=\"o-editorial-layout-heading-1\" itemProp=\"headline\">\n        {headline}\n      </h1>\n\n      {summary && (\n        <p className=\"o-editorial-typography-standfirst\">\n          {summary}{' '}\n          {relatedArticle && (\n            <a href={relatedArticle.url} className=\"o-typography-link\">\n              {relatedArticle.text}\n            </a>\n          )}\n        </p>\n      )}\n\n      <meta itemProp=\"dateModified\" content={buildTime} suppressHydrationWarning />\n\n      {flags.mainImage && (mainImage.url || mainImage.uuid) && (\n        <figure className=\"graphic graphic-b-1 graphic-pad-1\">\n          <img alt={mainImage.description} src={getMainImage(mainImage)} />\n          <figcaption className=\"o-typography-caption\">\n            {mainImage.description}\n            {mainImage.description && mainImage.credit && ' '}\n            {mainImage.credit}\n          </figcaption>\n        </figure>\n      )}\n\n      {flags.shareButtons && (\n        <Share\n          url={url}\n          text={socialHeadline || headline}\n          textTwitter={tweetText || twitterHeadline}\n          textFacebook={facebookHeadline}\n          dark={flags.dark}\n        />\n      )}\n\n      {flags.bylines && bylines && <Bylines names={bylines} date={publishedDate} />}\n    </div>\n  );\n};\n\nStoryTopper.propTypes = {\n  url: PropTypes.string.isRequired,\n  topic: topicPropType,\n  headline: PropTypes.string.isRequired,\n  summary: PropTypes.string,\n  relatedArticle: PropTypes.exact({\n    url: PropTypes.string.isRequired,\n    text: PropTypes.string.isRequired,\n  }),\n  mainImage: mainImagePropType,\n  bylines: bylinesPropType,\n  socialHeadline: PropTypes.string,\n  twitterHeadline: PropTypes.string,\n  facebookHeadline: PropTypes.string,\n  tweetText: PropTypes.string,\n  flags: flagsPropType.isRequired,\n  publishedDate: PropTypes.string.isRequired,\n  buildTime: PropTypes.string.isRequired,\n};\n\nStoryTopper.displayName = 'GStoryTopper';\n\nexport default StoryTopper;\n","/**\n * @file\n * Sharing buttons\n */\n\nimport React, { useEffect, useRef } from 'react';\nimport OShare from '@financial-times/o-share';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport './styles.scss';\n\nconst Share = ({\n  url,\n  text,\n  textTwitter,\n  textFacebook,\n  textLinkedIn,\n  textWhatsApp,\n  separated,\n  dark,\n  size,\n}) => {\n  const ref = useRef();\n\n  useEffect(() => {\n    (async () => {\n      new OShare(ref.current); // eslint-disable-line no-new\n    })();\n  }, []);\n\n  const services = [\n    {\n      name: 'Twitter',\n      link:\n        'https://twitter.com/intent/tweet' +\n        `?url=${url}` +\n        `&text=${textTwitter || text}` +\n        '&via=FinancialTimes',\n    },\n    {\n      name: 'Facebook',\n      link: 'https://www.facebook.com/sharer.php' + `?u=${url}` + `&t=${textFacebook || text}`,\n    },\n    {\n      name: 'LinkedIn',\n      link:\n        'https://www.linkedin.com/shareArticle' +\n        '?mini=true' +\n        `&url=${url}` +\n        `&title=${textLinkedIn || text}` +\n        `&source=Financial+Times`,\n    },\n    {\n      name: 'WhatsApp',\n      link: `whatsapp://send?text=${textWhatsApp || text} - ${url}`,\n    },\n  ];\n\n  return (\n    <div className={classnames('g-share', separated && 'g-share--separated', `g-share--${size}`)}>\n      <div className={classnames('o-share', dark && 'o-share--inverse')} data-o-component=\"o-share\">\n        <ul>\n          {services.map(({ name, link }) => (\n            <li key={name} className=\"o-share__action\">\n              <a\n                className={`o-share__icon o-share__icon--${name.toLowerCase()}`}\n                href={link}\n                rel=\"noopener\"\n              >\n                <span className=\"o-share__text\">Share on {name}. Opens in a new window.</span>\n              </a>\n            </li>\n          ))}\n        </ul>\n      </div>\n    </div>\n  );\n};\n\nShare.propTypes = {\n  url: PropTypes.string.isRequired,\n  text: PropTypes.string.isRequired,\n  textTwitter: PropTypes.string,\n  textFacebook: PropTypes.string,\n  textLinkedIn: PropTypes.string,\n  textWhatsApp: PropTypes.string,\n  separated: PropTypes.bool,\n  dark: PropTypes.bool,\n  size: PropTypes.oneOf(['default', 'small']),\n};\n\nShare.displayName = 'GShare';\n\nexport default Share;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _share = _interopRequireDefault(require(\"./dist/js/share.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar constructAll = function constructAll() {\n  _share.default.init();\n\n  document.removeEventListener('o.DOMContentLoaded', constructAll);\n};\n\ndocument.addEventListener('o.DOMContentLoaded', constructAll);\nvar _default = _share.default;\nexports.default = _default;\nmodule.exports = exports.default;","/**\n * @file\n * Bylines component\n */\n\nimport React, { Fragment, useRef, useEffect, forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nimport ODate from '@financial-times/o-date';\nimport { bylinesPropType } from '../shared/proptypes';\nimport './styles.scss';\n\nconst NamesElement = ({ namesList }) => {\n  return namesList.reduce((a, name, i) => {\n    /* eslint-disable no-nested-ternary */\n    const separator = i === 0 ? '' : i === namesList.length - 1 ? ' and ' : ', ';\n    const author = name.url ? (\n      <Fragment key={`author-${name.name}`}>\n        <a href={name.url} className=\"o-editorial-typography-author\">\n          {name.name}\n        </a>\n        {name.location && ` in ${name.location}`}\n      </Fragment>\n    ) : (\n      <Fragment key={`author-${name.name}`}>\n        <span>{name.name}</span>\n        {name.location && ` in ${name.location}`}\n      </Fragment>\n    );\n    return a.concat(separator, author);\n  }, []);\n};\n\nconst DateElement = forwardRef(({ date }, ref) => {\n  const format = new Intl.DateTimeFormat('en', {\n    month: 'long',\n    day: 'numeric',\n    year: 'numeric',\n  });\n  const [month, , day, , year] = format.formatToParts(new Date(date));\n  const dateFormatted = `${month.value} ${day.value} ${year.value}`;\n  return (\n    <Fragment>\n      {' '}\n      <time\n        ref={ref}\n        data-o-component=\"o-date\"\n        className=\"o-date o-editorial-typography-byline-timestamp\"\n        dateTime={date}\n        suppressHydrationWarning\n      >\n        {dateFormatted}\n      </time>\n    </Fragment>\n  );\n});\n\nconst Bylines = ({ prefix, names, date, dateFirst }) => {\n  const dateElRef = useRef();\n  const oDateRef = useRef();\n\n  useEffect(() => {\n    if (oDateRef.current || !dateElRef.current) return;\n\n    (async () => {\n      try {\n        oDateRef.current = new ODate(dateElRef.current);\n      } catch (e) {\n        console.error(e); // eslint disable-line no-console\n      }\n    })();\n  });\n\n  if (!names && !date) return null;\n\n  const namesList = Array.isArray(names) ? names : [{ name: names }];\n\n  return (\n    <div className=\"bylines\">\n      {prefix && `${prefix} `}\n      {dateFirst && date && <DateElement ref={dateElRef} date={date} />}\n      {dateFirst && ' by '}\n      {names && <NamesElement namesList={namesList} />}\n      {!dateFirst && date && <DateElement ref={dateElRef} date={date} />}\n    </div>\n  );\n};\n\nBylines.propTypes = {\n  prefix: PropTypes.string,\n  names: bylinesPropType,\n  date: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n  dateFirst: PropTypes.bool,\n};\n\nBylines.defaultProps = {\n  names: 'FT Staff',\n  prefix: '',\n  date: false,\n  dateFirst: false,\n};\n\nBylines.displayName = 'GBylines';\n\nexport default Bylines;\n","/**\n * @file\n * Epilogue component\n */\n\nimport React from 'react';\nimport { GridContainer, GridRow, GridChild } from '../grid';\nimport './styles.scss';\n\nconst Epilogue = () => {\n  const year = new Date().getFullYear();\n  return (\n    <GridContainer>\n      <GridRow>\n        <GridChild colspan=\"12 S11 Scenter M10 L9 XL8\">\n          <footer className=\"g-epilogue-copyright\">\n            <a href=\"https://help.ft.com/help/legal-privacy/copyright/copyright-policy/\" data-trackable=\"link-copyright\">Copyright</a> The Financial Times Limited {year}. All rights reserved.\n          </footer>\n        </GridChild>\n      </GridRow>\n    </GridContainer>\n  );\n};\n\nEpilogue.displayName = 'GEpilogue';\n\nexport default Epilogue;\n","/**\n * @file\n * A wrapper component for showing or hiding child content\n */\n\nimport React, { Children, useState } from 'react';\nimport classnames from 'classnames';\nimport PropTypes from 'prop-types';\nimport './styles.scss';\n\nexport const Expander = ({\n  children,\n  showLabel,\n  itemsToShow,\n  showLessText,\n  showMoreText,\n  tagName,\n  hasNote,\n}) => {\n  const [expanded, setExpanded] = useState(false);\n  const Tag =\n    tagName === 'tr'\n      ? ({ children: tagChildren, className, style }) => (\n          <tr className={className} style={style}>\n            <td colSpan=\"1000\">{tagChildren}</td>\n          </tr>\n        )\n      : tagName;\n  const childArray = Children.toArray(children);\n  return (\n    <React.Fragment>\n      {(expanded && children) ||\n        (!expanded &&\n          Children.count(children) > 1 && [\n            ...childArray.slice(0, itemsToShow),\n            hasNote ? childArray[childArray.length - 1] : null,\n          ])}\n      <Tag className=\"g-expander__header\" colSpan={tagName === 'td' ? 1000 : undefined}>\n        {\n          <button\n            className={classnames(\n              'g-expander__expand-button',\n              expanded && 'g-expander__expand-button--open',\n            )}\n            type=\"button\"\n            onClick={() => setExpanded(!expanded)}\n          >\n            {showLabel && <span>{expanded ? showLessText : showMoreText}</span>}\n            <i />\n          </button>\n        }\n      </Tag>\n    </React.Fragment>\n  );\n};\n\nExpander.propTypes = {\n  showLabel: PropTypes.bool,\n  children: PropTypes.oneOfType([PropTypes.node, PropTypes.arrayOf(PropTypes.node)]).isRequired,\n  itemsToShow: PropTypes.number,\n  showLessText: PropTypes.string,\n  showMoreText: PropTypes.string,\n  tagName: PropTypes.string,\n  hasNote: PropTypes.bool,\n};\n\nExpander.defaultProps = {\n  showLabel: true,\n  itemsToShow: 3,\n  showLessText: 'Show less',\n  showMoreText: 'Show more',\n  tagName: 'div',\n  hasNote: false,\n};\n\nExpander.displayName = 'GExpander';\n\nexport default Expander;\n","/**\n * @file\n * Last updated component\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport DateTime from '../datetime';\nimport './styles.scss';\n\nconst LastUpdated = ({ live, dot, date }) => (\n  <div className={`last-updated${live ? ' last-updated--live' : ''}`}>\n    {live ? (\n      <div className=\"o-teaser o-teaser--small\" data-o-component=\"o-teaser\">\n        <div className=\"o-teaser__content\">\n          {dot && (\n            <div\n              className=\"o-teaser__timestamp o-teaser__timestamp--inprogress\"\n              style={{ display: 'inline-block' }}\n            >\n              <span className=\"o-teaser__timestamp-prefix\" />\n            </div>\n          )}\n          {date ? (\n            <React.Fragment>\n              Last updated <DateTime datestamp={date} />\n            </React.Fragment>\n          ) : (\n            'Live'\n          )}\n        </div>\n      </div>\n    ) : (\n      <div>\n        {dot && (\n          <div\n            className=\"o-teaser__timestamp\"\n            style={{ display: 'inline-block' }}\n          >\n            <span className=\"o-teaser__timestamp-prefix\" />\n          </div>\n        )}\n        {date && (\n          <span>Last updated <DateTime datestamp={date} /></span>\n        )}\n      </div>\n    )}\n  </div>\n);\n\nLastUpdated.propTypes = {\n  live: PropTypes.bool,\n  dot: PropTypes.bool,\n  date: PropTypes.instanceOf(Date),\n};\n\nLastUpdated.defaultProps = {\n  live: false,\n  dot: false,\n  date: false,\n};\n\nexport default LastUpdated;\n","/**\n * @file\n * Basic card component\n */\n\nimport React from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport './styles.scss';\n\nconst Card = ({ children, className, ...props }) =>\n  children && <div className={classNames(className, 'g-card')}>{children}</div>;\n\nCard.propTypes = {\n  children: PropTypes.node.isRequired,\n  className: PropTypes.string,\n};\n\nCard.defaultProps = {\n  className: null,\n};\n\nexport default Card;\n","/**\n * @file\n * Data table component\n */\n\nimport React, { useRef, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport OTable from '@financial-times/o-table';\nimport './styles.scss';\n\nconst headerAttributes = (header, isSortable) => {\n  const classes = header.columnType === 'number' ? 'o-table__cell--numeric' : '';\n  const attributes = [\n    classes ? { className: classes } : {},\n    header.columnType === 'number' ? { 'data-o-table-data-type': 'numeric' } : {},\n    isSortable === false || header.columnIsSortable === false\n      ? { 'data-o-table-heading-disable-sort': '' }\n      : {},\n    { scope: 'col', role: 'columnheader' },\n    header.columnSpan ? { colSpan: header.columnSpan } : {},\n    header.defaultSortIcon && isSortable ? { 'aria-sort': header.defaultSortIcon } : {},\n  ];\n  return Object.assign(...attributes);\n};\n\nconst cellAttributes = (header, row) => {\n  const className = classnames(\n    row.classname,\n    header.columnType === 'number' && 'o-table__cell--numeric',\n    header.columnIsVerticallyCentred && 'o-table__cell--vertically-center'\n  );\n  const attributes = [\n    className ? { className } : {},\n    header.columnType === 'number' ? { 'data-o-table-data-type': 'numeric' } : {},\n    header.columnSortField ? { 'data-o-table-sort-value': row[header.columnSortField] } : {},\n  ];\n  return Object.assign(...attributes);\n};\n\nconst footerAttributes = header => {\n  const classes = header.columnType === 'number' ? 'o-table__cell--numeric' : '';\n  const attributes = [\n    classes ? { className: classes } : {},\n    header.columnType === 'number' ? { 'data-o-table-data-type': 'numeric' } : {},\n  ];\n  return Object.assign(...attributes);\n};\n\nconst tableAttributes = (\n  responsive,\n  truncation,\n  isStriped,\n  isLinedHorizontal,\n  isCompact,\n  isSortable\n) => {\n  const className = classnames(\n    'o-table',\n    responsive === 'scroll' && 'o-table--responsive-scroll',\n    responsive === 'flat' && 'o-table--responsive-flat',\n    responsive === 'overflow' && 'o-table--responsive-overflow',\n    isStriped && 'o-table--row-stripes',\n    isLinedHorizontal && 'o-table--horizontal-lines',\n    isCompact && 'o-table--compact'\n  );\n  const attributes = [\n    { className },\n    { 'data-o-component': 'o-table' },\n    !isSortable ? { 'data-o-table-sortable': false } : {},\n    responsive !== 'none' ? { 'data-o-table-responsive': responsive } : {},\n    truncation\n      ? { 'data-o-table-minimum-row-count': truncation, 'data-o-table-expanded': 'false' }\n      : {},\n  ];\n  return Object.assign(...attributes);\n};\n\nconst HeadTop = ({ headers }) => (\n  <tr>\n    {headers.map((header, i) => {\n      const attributes = headerAttributes(header, false);\n      return (\n        <th key={i} {...attributes} style={header.columnSpan ? { textAlign: 'center' } : {}}>\n          {header.contents}\n        </th>\n      );\n    })}\n  </tr>\n);\n\nconst Head = ({ headers, isSortable, headersTop }) => (\n  <thead>\n    {headersTop && <HeadTop headers={headersTop} />}\n    <tr>\n      {headers.map((header, i) => {\n        const attributes = headerAttributes(header, isSortable);\n        if (header.secondary) {\n          const secondary = (\n            <span className=\"o-table__cell--content-secondary\">{header.secondary}</span>\n          );\n          return (\n            <th {...attributes}>\n              {header.contents} {secondary}\n            </th>\n          );\n        }\n        return (\n          <th key={i} {...attributes}>\n            {header.contents}\n          </th>\n        );\n      })}\n    </tr>\n  </thead>\n);\n\nconst Body = ({ rows, headers }) => (\n  <tbody>\n    {rows.map((row, i1) => (\n      <tr key={i1}>\n        {headers.map((header, i2) => {\n          const attributes = cellAttributes(header, row);\n          const valueFormat =\n            typeof row[header.columnName] === 'number'\n              ? value => value.toLocaleString()\n              : value => value;\n          const value = valueFormat(\n            row[header.columnName] === 0 ? 0 : row[header.columnName] || ''\n          );\n          if (header.columnIsHeader) {\n            return (\n              <th key={`${i1}-${i2}`} {...attributes}>\n                {value}\n              </th>\n            );\n          }\n          return (\n            <td key={`${i1}-${i2}`} {...attributes}>\n              {header.columnType === 'object' ? (\n                <React.Fragment>\n                  <span aria-hidden=\"true\">{value.flag}</span> {value.country}\n                </React.Fragment>\n              ) : (\n                value\n              )}\n            </td>\n          );\n        })}\n      </tr>\n    ))}\n  </tbody>\n);\n\nconst Foot = ({ footers, headers }) => (\n  <tfoot>\n    <tr>\n      {headers.map((header, i) => {\n        const attributes = footerAttributes(header);\n        const footer = footers[i];\n        if (!footer) return <th {...attributes} />;\n        if (footer.secondary) {\n          const secondary = (\n            <span className=\"o-table__cell--content-secondary\">{footer.secondary}</span>\n          );\n          return (\n            <th {...attributes}>\n              {footer.contents} {secondary}\n            </th>\n          );\n        }\n        return <th {...attributes}>{header.contents}</th>;\n      })}\n    </tr>\n  </tfoot>\n);\n\nconst Footnote = ({ footnote, headers }) => (\n  <tfoot>\n    <tr>\n      <td colSpan={headers.length} className=\"o-table-footnote\">\n        {footnote}\n      </td>\n    </tr>\n  </tfoot>\n);\n\nconst TableContainer = ({ responsive, className, children }) =>\n  responsive ? (\n    <div className=\"o-table-container\">\n      <div className=\"o-table-overlay-wrapper\">\n        <div className={className}>{children}</div>\n      </div>\n    </div>\n  ) : (\n    <div className={className}>{children}</div>\n  );\n\nconst DataTable = ({\n  className,\n  captionTop,\n  captionBottom,\n  headers,\n  headersTop,\n  rows,\n  footers,\n  responsive,\n  truncation,\n  isHeaderHidden,\n  isSortable,\n  isStriped,\n  isLinedHorizontal,\n  isCompact,\n}) => {\n  const tableRef = useRef();\n  const tableOrigami = useRef();\n\n  useEffect(() => {\n    tableOrigami.current = OTable.init(tableRef.current);\n  }, []);\n\n  useEffect(() => {\n    tableOrigami.current.updateRows();\n  }, [rows]);\n\n  // @TODO fix this; private method OTable.prototype._duplicateHeaders\n  // useEffect(() => {\n  //   if (tableOrigami.current) {\n  //     const tableRows = Array.from(tableRef.current.querySelectorAll('tr')).filter(\n  //       row => Array.from(row.querySelectorAll('th')).length === 0,\n  //     );\n  //     const tableHeaders = Array.from(tableRef.current.querySelectorAll('thead th'));\n\n  //     // if (responsive === 'flat') {\n  //     //   tableOrigami.current._duplicateHeaders(tableRows, tableHeaders); // so it deals with data changing\n  //     // }\n  //   }\n  // }, [rows, headers]);\n\n  const attributes = tableAttributes(\n    responsive,\n    truncation,\n    isStriped,\n    isLinedHorizontal,\n    isCompact,\n    isSortable\n  );\n\n  const namedClass = classnames(className, 'g-data-table', 'o-table-scroll-wrapper');\n\n  return (\n    <TableContainer className={namedClass} responsive={responsive !== 'none'}>\n      <table {...attributes} ref={tableRef}>\n        {captionTop && (\n          <caption className=\"o-table__caption\">\n            <h2 className=\"o-typography-heading-level-2\">{captionTop}</h2>\n          </caption>\n        )}\n        {captionBottom && <Footnote footnote={captionBottom} headers={headers} />}\n        {!isHeaderHidden && (\n          <Head headers={headers} headersTop={headersTop} isSortable={isSortable} />\n        )}\n        <Body rows={rows} headers={headers} />\n        {footers.length !== 0 && <Foot footers={footers} headers={headers} />}\n      </table>\n    </TableContainer>\n  );\n};\n\nDataTable.displayName = 'GDataTable';\n\nDataTable.propTypes = {\n  className: PropTypes.string,\n  captionTop: PropTypes.string,\n  captionBottom: PropTypes.string,\n  headers: PropTypes.arrayOf(\n    PropTypes.exact({\n      contents: PropTypes.node.isRequired,\n      secondary: PropTypes.node,\n      columnName: PropTypes.string.isRequired,\n      columnType: PropTypes.oneOf(['string', 'number', 'object']),\n      columnSortField: PropTypes.string,\n      columnIsHeader: PropTypes.bool,\n      columnIsSortable: PropTypes.bool,\n      columnIsVerticallyCentred: PropTypes.bool,\n      defaultSortIcon: PropTypes.oneOf(['ascending', 'descending']),\n    })\n  ).isRequired,\n  headersTop: PropTypes.arrayOf(\n    PropTypes.exact({\n      contents: PropTypes.node.isRequired,\n      columnSpan: PropTypes.number,\n    })\n  ),\n  rows: PropTypes.arrayOf(PropTypes.object),\n  footers: PropTypes.arrayOf(\n    PropTypes.exact({\n      contents: PropTypes.node.isRequired,\n      secondary: PropTypes.node,\n    })\n  ),\n  responsive: PropTypes.oneOf(['none', 'scroll', 'flat', 'overflow']),\n  truncation: PropTypes.number,\n  isHeaderHidden: PropTypes.bool,\n  isSortable: PropTypes.bool,\n  isStriped: PropTypes.bool,\n  isLinedHorizontal: PropTypes.bool,\n  isCompact: PropTypes.bool,\n};\n\nDataTable.defaultProps = {\n  className: null,\n  captionTop: null,\n  captionBottom: null,\n  rows: [],\n  footers: [],\n  responsive: 'none',\n  truncation: null,\n  isHeaderHidden: false,\n  isSortable: true,\n  isStriped: false,\n  isLinedHorizontal: false,\n  isCompact: false,\n  headersTop: null,\n};\n\nexport default DataTable;\n","import oTable from './src/js/oTable.js';\n\nconst constructAll = function() {\n\toTable.init();\n\tdocument.removeEventListener('o.DOMContentLoaded', constructAll);\n};\n\ndocument.addEventListener('o.DOMContentLoaded', constructAll);\n\nexport default oTable;\n","import BaseTable from './BaseTable.js';\n\nclass FlatTable extends BaseTable {\n\n\t/**\n\t * Initialises an `o-table` component with \"flat\" responsive behaviour.\n\t *\n\t * @access public\n\t * @param {HTMLElement} rootEl - The `o-table` element.\n\t * @param {TableSorter} sorter\n\t * @param {Object} opts [{}]\n\t * @param {Bool} opts.sortable [true]\n\t * @returns {FlatTable}\n\t */\n\tconstructor(rootEl, sorter, opts = {}) {\n\t\tsuper(rootEl, sorter, opts);\n\t\t// Duplicate row headings before adding sort buttons.\n\t\tthis._tableHeadersWithoutSort = this.tableHeaders.map(header => header.cloneNode(true));\n\t\t// Flat table can only work given headers.\n\t\tif (this.tableHeaders.length <= 0) {\n\t\t\tconsole.warn('Could not create a \"flat\" table as no headers were found. Ensure table headers are placed within \"<thead>\". Removing class \"o-table--responsive-flat\".', rootEl);\n\t\t\trootEl.classList.remove('o-table--responsive-flat');\n\t\t} else {\n\t\t\tthis._createFlatTableStructure();\n\t\t}\n\t\t// Defer other tasks.\n\t\twindow.setTimeout(this.addSortButtons.bind(this), 0);\n\t\twindow.setTimeout(this._ready.bind(this), 0);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Update the o-table instance with rows added dynamically to the table.\n\t *\n\t * @returns {undefined}\n\t */\n\tupdateRows() {\n\t\t// Update new rows to support the flat structure.\n\t\tconst latestRows = this._getLatestRowNodes();\n\t\tthis._createFlatTableStructure(latestRows);\n\t\t// Update row visibility, sort, etc.\n\t\tsuper.updateRows();\n\t}\n\n\t/**\n\t * Get all the table body's current row nodes, without nodes duplicated for\n\t * the responsive \"flat\" style\n\t *\n\t * @returns {Array<Node>}\n\t * @access private\n\t */\n\t_getLatestRowNodes() {\n\t\treturn this.tbody ? Array.from(this.tbody.querySelectorAll('tr:not(.o-table__duplicate-row)')) : [];\n\t}\n\n\t/**\n\t * Duplicate table headers for each data item.\n\t * I.e. Each row is shown as a single item with its own headings.\n\t *\n\t * @access private\n\t */\n\t_createFlatTableStructure(rows = this.tableRows) {\n\t\trows\n\t\t\t.filter(row => !row.hasAttribute('data-o-table-flat-headings')) // only process rows once\n\t\t\t.forEach(row => {\n\t\t\t\tconst data = Array.from(row.getElementsByTagName('td'));\n\t\t\t\trow.setAttribute('data-o-table-flat-headings', true);\n\t\t\t\twindow.requestAnimationFrame(() => {\n\t\t\t\t\t// Create a new table body for every row.\n\t\t\t\t\tconst newGroupBody = document.createElement('tbody');\n\t\t\t\t\tnewGroupBody.classList.add('o-table__responsive-body');\n\t\t\t\t\t// Append all the other rows as heading / value pairs.\n\t\t\t\t\tthis._tableHeadersWithoutSort.forEach((header, index) => {\n\t\t\t\t\t\t// Create the row.\n\t\t\t\t\t\tconst newRow = document.createElement('tr');\n\t\t\t\t\t\tnewRow.classList.add('o-table__duplicate-row');\n\t\t\t\t\t\t// Duplicate the original heading cell.\n\t\t\t\t\t\tconst clonedHeader = header.cloneNode(true);\n\t\t\t\t\t\tclonedHeader.classList.add('o-table__duplicate-heading');\n\t\t\t\t\t\tclonedHeader.setAttribute('scope', 'row');\n\t\t\t\t\t\tclonedHeader.setAttribute('role', 'rowheader');\n\t\t\t\t\t\t// Duplicate the original data cell.\n\t\t\t\t\t\tconst clonedTd = data[index].cloneNode(true);\n\t\t\t\t\t\t// Append the header and data cell to the row.\n\t\t\t\t\t\tnewRow.appendChild(clonedHeader);\n\t\t\t\t\t\tnewRow.appendChild(clonedTd);\n\t\t\t\t\t\t// Append the row to the body.\n\t\t\t\t\t\tnewGroupBody.appendChild(newRow);\n\t\t\t\t\t});\n\n\t\t\t\t\t// Append the new bodies, which represent each row on\n\t\t\t\t\t// desktop, to the root element.\n\t\t\t\t\tthis.rootEl.appendChild(newGroupBody);\n\t\t\t\t});\n\t\t\t});\n\t}\n}\n\nexport default FlatTable;\n","import BaseTable from './BaseTable.js';\n\nclass ScrollTable extends BaseTable {\n\t/**\n\t * Initialises an `o-table` component with \"scroll\" responsive behaviour.\n\t *\n\t * @access public\n\t * @param {HTMLElement} rootEl - The `o-table` element.\n\t * @param {TableSorter} sorter\n\t * @param {Object} opts [{}]\n\t * @param {Bool} opts.sortable [true]\n\t * @returns {ScrollTable}\n\t */\n\tconstructor(rootEl, sorter, opts = {}) {\n\t\tsuper(rootEl, sorter, opts);\n\t\t// Duplicate row headings before adding sort buttons.\n\t\tthis._tableHeadersWithoutSort = this.tableHeaders.map(header => header.cloneNode(true));\n\t\t// Create scrollable layout for devices with small viewports.\n\t\tthis._createScrollTableStructure();\n\t\t// Defer other tasks.\n\t\twindow.setTimeout(this.addSortButtons.bind(this), 0);\n\t\twindow.setTimeout(this._ready.bind(this), 0);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Filter the table.\n\t *\n\t * @access public\n\t * @param {Number} headerIndex - The index of the table column to filter.\n\t * @param {String|Function} filter - How to filter the column (either a string to match or a callback function).\n\t * @returns {undefined}\n\t */\n\tfilter(headerIndex, filter) {\n\t\t// Filter rows by columns (desktop view).\n\t\tthis._filterRowsByColumn(headerIndex, filter);\n\t\t// Render filtered table (desktop view).\n\t\tthis.renderRowUpdates();\n\t\t// Recreate scrollable table with filtered rows (mobile view).\n\t\tthis._createScrollTableStructure();\n\t}\n\n\t/**\n\t * Update the o-table instance with rows added dynamically to the table.\n\t *\n\t * @returns {undefined}\n\t */\n\tupdateRows() {\n\t\t// Update row visibility, sort, etc.\n\t\tsuper.updateRows();\n\t\t// Recreate scrollable table with updated rows.\n\t\tthis._createScrollTableStructure();\n\t}\n\n\t/**\n\t * Get all the table body's current row nodes, without nodes duplicated for\n\t * the responsive \"scroll\" style\n\t *\n\t * @returns {Array<Node>}\n\t * @access private\n\t */\n\t_getLatestRowNodes() {\n\t\treturn this.tbody ? Array.from(this.tbody.querySelectorAll('tr:not(.o-table__duplicate-row)')) : [];\n\t}\n\n\t/**\n\t * Duplicate table headers and rows to create a table which has row headings\n\t * rather than column headings. I.e. The table is consumed left to right,\n\t * rather than top to bottom.\n\t *\n\t * @access private\n\t * @returns {undefined}\n\t */\n\t_createScrollTableStructure() {\n\t\t// Clone headings and data into new rows.\n\t\tconst clonedRows = this._tableHeadersWithoutSort.map((header, index) => {\n\t\t\tconst headerRow = document.createElement('tr');\n\t\t\theaderRow.classList.add('o-table__duplicate-row');\n\t\t\t// Clone column heading and turn into a row heading.\n\t\t\tconst clonedHeader = header.cloneNode(true);\n\t\t\tclonedHeader.setAttribute('scope', 'row');\n\t\t\tclonedHeader.setAttribute('role', 'rowheader');\n\t\t\theaderRow.appendChild(clonedHeader);\n\t\t\t// Clone data for the column into the new row.\n\t\t\tthis.tableRows.forEach(row => {\n\t\t\t\tconst cell = row.querySelectorAll('td')[index];\n\t\t\t\tif (cell) {\n\t\t\t\t\tconst cellClone = cell.cloneNode(true);\n\t\t\t\t\tconst filteredData = this._filteredTableRows.indexOf(row) !== -1;\n\t\t\t\t\tcellClone.setAttribute('data-o-table-filtered', filteredData);\n\t\t\t\t\tcellClone.setAttribute('aria-hidden', filteredData);\n\t\t\t\t\theaderRow.appendChild(cellClone);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn headerRow;\n\t\t});\n\n\t\t// Add new rows to the table body.\n\t\twindow.requestAnimationFrame(function () {\n\t\t\tconst rowHeadingRows = Array.from(this.tbody.querySelectorAll('.o-table__duplicate-row'));\n\t\t\trowHeadingRows.forEach(row => this.tbody.removeChild(row));\n\t\t\tif (this.tbody.prepend) {\n\t\t\t\tthis.tbody.prepend(...clonedRows);\n\t\t\t} else {\n\t\t\t\tclonedRows.reverse().forEach(row => {\n\t\t\t\t\tthis.tbody.insertBefore(row, this.tbody.firstChild);\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis._updateTableHeight();\n\t\t}.bind(this));\n\t}\n}\n\nexport default ScrollTable;\n","import BaseTable from './BaseTable.js';\n\nclass OverflowTable extends BaseTable {\n\n\t/**\n\t * Initialises an `o-table` component with \"overflow\" responsive behaviour.\n\t *\n\t * @param {HTMLElement} rootEl - The `o-table` element.\n\t * @param {TableSorter} sorter\n\t * @param {Object} opts [{}]\n\t * @param {Bool} opts.sortable [true]\n\t * @param {Undefined | Bool} opts.expanded\n\t * @param {Number} opts.minimumRowCount [20]\n\t * @access public\n\t * @returns {OverflowTable}\n\t */\n\tconstructor(rootEl, sorter, opts = {}) {\n\t\tsuper(rootEl, sorter, opts);\n\t\tthis._opts = Object.assign({\n\t\t\texpanded: this.rootEl.hasAttribute('data-o-table-expanded') ? this.rootEl.getAttribute('data-o-table-expanded') !== 'false' : null,\n\t\t\tminimumRowCount: this.rootEl.getAttribute('data-o-table-minimum-row-count')\n\t\t}, this._opts);\n\t\t// Add scroll and expander controls immediately.\n\t\tthis._addControlsToDom();\n\t\t// Defer other tasks.\n\t\twindow.setTimeout(this.addSortButtons.bind(this), 0);\n\t\twindow.setTimeout(this._setupScroll.bind(this), 0);\n\t\twindow.setTimeout(this._setupExpander.bind(this), 0);\n\t\tthis._ready();\n\t\treturn this;\n\t}\n\n\t/**\n\t * Filter the table.\n\t *\n\t * @access public\n\t * @param {Number} headerIndex - The index of the table column to filter.\n\t * @param {String|Function} filter - How to filter the column (either a string to match or a callback function).\n\t * @returns {undefined}\n\t */\n\tfilter(headerIndex, filter) {\n\t\tthis._filterRowsByColumn(headerIndex, filter);\n\t\tthis.renderRowUpdates();\n\t}\n\n\t/**\n\t * Check if the table is expanded (true) or collapsed (false).\n\t * @access public\n\t * @returns {Bool}\n\t */\n\tisExpanded() {\n\t\tconst expand = this._expand === undefined ? Boolean(this._opts.expanded) : Boolean(this._expand);\n\t\treturn this.canExpand() && expand;\n\t}\n\n\t/**\n\t * Check if the table is collapsed (true) or expanded (false).\n\t * @access public\n\t * @returns {Bool}\n\t */\n\tisContracted() {\n\t\tconst expand = this._expand === undefined ? Boolean(this._opts.expanded) : Boolean(this._expand);\n\t\treturn this.canExpand() && !expand;\n\t}\n\n\t/**\n\t * Check if the table supports the expand/contract feature.\n\t * @access public\n\t * @returns {Bool}\n\t */\n\tcanExpand() {\n\t\treturn typeof this._opts.expanded === 'boolean' && this._minimumRowCount < this.tableRows.length - this._filteredTableRows.length;\n\t}\n\n\t/**\n\t * Updates the dom to account for row updates.\n\t *\n\t * @returns {undefined}\n\t */\n\trenderRowUpdates() {\n\t\tthis._updateExpander();\n\t\tthis._updateRowAriaHidden();\n\t\tthis._hideFilteredRows();\n\t\tthis._updateTableHeight();\n\t\tthis._updateRowOrder();\n\t}\n\n\t_updateExpander() {\n\t\tif (typeof this._opts.expanded !== 'boolean' || !this.controls) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._expanderUpdateScheduled) {\n\t\t\twindow.cancelAnimationFrame(this._expanderUpdateScheduled);\n\t\t}\n\n\t\tconst expand = this.isExpanded();\n\t\tconst contract = this.isContracted();\n\t\tconst canExpand = expand || contract;\n\t\tconst expanderButtonContainer = this.controls.expanderButton;\n\t\tconst expanderButton = expanderButtonContainer.querySelector('button');\n\n\t\tthis._updateTableHeight();\n\t\tthis._updateRowAriaHidden();\n\t\tthis._updateControls();\n\n\t\tthis._expanderUpdateScheduled = window.requestAnimationFrame(function () {\n\t\t\tthis.rootEl.setAttribute('data-o-table-expanded', Boolean(expand));\n\t\t\tthis.container.classList.toggle('o-table-container--expanded', expand);\n\t\t\tthis.container.classList.toggle('o-table-container--contracted', contract);\n\t\t\texpanderButton.style.display = canExpand ? '' : 'none';\n\n\t\t\tif (!canExpand) {\n\t\t\t\tthis.rootEl.removeAttribute('aria-expanded');\n\t\t\t}\n\n\t\t\tif (expand) {\n\t\t\t\texpanderButton.textContent = 'Show fewer';\n\t\t\t\tthis.rootEl.setAttribute('aria-expanded', true);\n\t\t\t}\n\n\t\t\tif (contract) {\n\t\t\t\texpanderButton.textContent = 'Show more';\n\t\t\t\tthis.rootEl.setAttribute('aria-expanded', false);\n\t\t\t}\n\t\t}.bind(this));\n\t}\n\n\t/**\n\t * Hides table rows if the table can be expanded.\n\t * @access public\n\t * @returns undefined\n\t */\n\tcontractTable() {\n\t\tif (!this.canExpand()) {\n\t\t\treturn;\n\t\t}\n\t\tthis._expand = false;\n\t\tthis._updateExpander();\n\t}\n\n\t/**\n\t * Expands the table, revealing hidden table rows, if it can be expanded and has been contracted.\n\t * @access public\n\t * @returns undefined\n\t */\n\texpandTable() {\n\t\tif (!this.canExpand()) {\n\t\t\treturn;\n\t\t}\n\t\tthis._expand = true;\n\t\tthis._updateExpander();\n\t}\n\n\t/**\n\t * Get the table height, accounting for \"hidden\" rows.\n\t * @return {Number|Null}\n\t */\n\t_getTableHeight() {\n\t\tif (this.isContracted()) {\n\t\t\tconst maxTableHeight = super._getTableHeight();\n\t\t\tif (!this._contractedWrapperHeight || this._contractedWrapperHeight > maxTableHeight) {\n\t\t\t\tconst rowsToHide = this._rowsToHide;\n\t\t\t\tconst buttonHeight = this.controls.expanderButton.getBoundingClientRect().height;\n\t\t\t\tconst extraHeight = rowsToHide ? rowsToHide[0].getBoundingClientRect().height / 2 : 0;\n\t\t\t\tthis._contractedWrapperHeight = maxTableHeight + buttonHeight + extraHeight;\n\t\t\t}\n\t\t\treturn this._contractedWrapperHeight;\n\t\t}\n\n\t\tif (this.isExpanded()) {\n\t\t\tconst buttonHeight = this.controls.expanderButton.getBoundingClientRect().height;\n\t\t\treturn super._getTableHeight() + buttonHeight;\n\t\t}\n\n\t\treturn super._getTableHeight();\n\t}\n\n\t/**\n\t * Add controls such as the back, forward, \"show more\" buttons to DOM,\n\t * plus wrappers needed for them to function.\n\t * @returns {undefined}\n\t */\n\t_addControlsToDom() {\n\t\tif (this.overlayWrapper && !this.controls) {\n\t\t\tconst supportsArrows = OverflowTable._supportsArrows();\n\t\t\tconst overlayWrapperHtml = `\n\t\t\t\t${this.wrapper ? `\n\t\t\t\t\t<div class=\"o-table-overflow-fade-overlay\"></div>\n\t\t\t\t` : ''}\n\t\t\t\t<div class=\"o-table-overflow-control-overlay\">\n\t\t\t\t\t${this.wrapper && supportsArrows ? `\n\t\t\t\t\t\t<div class=\"o-table-control o-table-control--back o-table-control--hide\">\n\t\t\t\t\t\t\t<button aria-label=\"visually scroll table back\" disabled=\"true\" class=\"o-buttons o-buttons--primary o-buttons--big o-buttons-icon o-buttons-icon--icon-only o-buttons-icon--arrow-left\"></button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t` : ''}\n\n\t\t\t\t\t${this.wrapper && supportsArrows ? `\n\t\t\t\t\t\t<div class=\"o-table-control o-table-control--forward o-table-control--hide\">\n\t\t\t\t\t\t\t<button aria-label=\"visually scroll table forward\" disabled=\"true\" class=\"o-buttons o-buttons--primary o-buttons--big o-buttons-icon o-buttons-icon--icon-only o-buttons-icon--arrow-right\"></button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t` : ''}\n\n\t\t\t\t\t${typeof this._opts.expanded === 'boolean' ? `\n\t\t\t\t\t\t<div class=\"o-table-control o-table-control--expander\">\n\t\t\t\t\t\t\t<button class=\"o-buttons o-buttons--primary o-buttons--big\">Show fewer</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t` : ''}\n\t\t\t\t</div>\n\t\t\t`;\n\n\t\t\tconst range = document.createRange();\n\t\t\trange.selectNode(this.overlayWrapper);\n\t\t\tconst overlayFragment = range.createContextualFragment(overlayWrapperHtml);\n\n\t\t\tthis.controls = {\n\t\t\t\tcontrolsOverlay: overlayFragment.querySelector('.o-table-overflow-control-overlay'),\n\t\t\t\tfadeOverlay: overlayFragment.querySelector('.o-table-overflow-fade-overlay'),\n\t\t\t\texpanderButton: overlayFragment.querySelector('.o-table-control--expander'),\n\t\t\t\tforwardButton: overlayFragment.querySelector('.o-table-control--forward'),\n\t\t\t\tbackButton: overlayFragment.querySelector('.o-table-control--back')\n\t\t\t};\n\n\t\t\t// Add controls to the dom.\n\t\t\tthis._updateControlOverlayPosition();\n\t\t\twindow.requestAnimationFrame(function() {\n\t\t\t\tthis.overlayWrapper.appendChild(overlayFragment);\n\t\t\t}.bind(this));\n\t\t}\n\t}\n\n\t_updateControlOverlayPosition() {\n\t\tconst theadHeight = this.thead ? this.thead.getBoundingClientRect().height : 0;\n\t\tconst captionHeight = this.tableCaption ? this.tableCaption.getBoundingClientRect().height : 0;\n\t\twindow.requestAnimationFrame(function () {\n\t\t\tthis.controls.controlsOverlay.style['top'] = `${theadHeight + captionHeight}px`;\n\t\t}.bind(this));\n\t}\n\n\t/**\n\t * Add functionality to improve the experience when scrolling a table,\n\t * such as showing forward/back buttons to indicate that scroll is possible.\n\t * @returns {undefined}\n\t */\n\t_setupScroll() {\n\t\t// Does not warn of a missing wrapper: assumes no overflow is desired.\n\t\tif (this.container && this.overlayWrapper && !this.wrapper) {\n\t\t\tconsole.warn(\n\t\t\t\t'Controls to scroll table left/right could not be added to \"o-table\" as it is missing markup. ' +\n\t\t\t\t'Please add the container and wrapper elements according to the documentation https://registry.origami.ft.com/components/o-table.',\n\t\t\t\t{ table: this.rootEl }\n\t\t\t);\n\t\t}\n\n\t\t// Can not add controls without a container or wrapper.\n\t\tif (!this.container || !this.overlayWrapper || !this.wrapper) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Add table controls (e.g. left/right button).\n\t\tif (!this.controls) {\n\t\t\tthis._addControlsToDom();\n\t\t}\n\n\t\t// Add forward button behaviour.\n\t\tif (this.controls.forwardButton) {\n\t\t\tconst scrollForward = function () {\n\t\t\t\tthis.wrapper.scrollBy({\n\t\t\t\t\tleft: document.body.clientWidth / 2,\n\t\t\t\t\tbehavior: 'smooth'\n\t\t\t\t});\n\t\t\t}.bind(this);\n\t\t\tthis.controls.forwardButton.addEventListener('click', scrollForward);\n\t\t\tthis._listeners.push({\n\t\t\t\telement: this.controls.forwardButton,\n\t\t\t\tscrollForward,\n\t\t\t\ttype: 'click'\n\t\t\t});\n\t\t}\n\n\t\t// Add back button behaviour.\n\t\tif (this.controls.backButton) {\n\t\t\tconst scrollBackward = function () {\n\t\t\t\tthis.wrapper.scrollBy({\n\t\t\t\t\tleft: -(document.body.clientWidth / 2),\n\t\t\t\t\tbehavior: 'smooth'\n\t\t\t\t});\n\t\t\t}.bind(this);\n\t\t\tthis.controls.backButton.addEventListener('click', scrollBackward);\n\t\t\tthis._listeners.push({\n\t\t\t\telement: this.controls.backButton,\n\t\t\t\tscrollBackward,\n\t\t\t\ttype: 'click'\n\t\t\t});\n\t\t}\n\n\t\t// Set scroll position and update controls.\n\t\tconst updateScroll = function () {\n\t\t\tif (!this._controlUpdateScheduled) {\n\t\t\t\tthis._controlUpdateScheduled = true;\n\t\t\t\twindow.setTimeout(function () {\n\t\t\t\t\tthis._controlUpdateScheduled = false;\n\t\t\t\t\tthis._fromEnd = this.wrapper.scrollWidth - this.wrapper.clientWidth - this.wrapper.scrollLeft;\n\t\t\t\t\tthis._fromStart = this.wrapper.scrollLeft;\n\t\t\t\t\tthis._updateControls();\n\t\t\t\t}.bind(this), 33);\n\t\t\t}\n\t\t}.bind(this);\n\n\t\tupdateScroll();\n\n\t\t// Observe controls scrolling beyond table and update.\n\t\tif (this.controls.controlsOverlay && window.IntersectionObserver) {\n\t\t\t// Fade forward/back buttons at start and end of table.\n\t\t\tconst arrowFadeObserverConfig = {\n\t\t\t\troot: this.controls.controlsOverlay,\n\t\t\t\tthreshold: 1.0,\n\t\t\t\trootMargin: `-20px 0px ${this.canExpand() ? '0px' : '-20px'} 0px`\n\t\t\t};\n\t\t\tconst arrowFadeObserver = new IntersectionObserver(function(entries) {\n\t\t\t\tentries.forEach(function(entry) {\n\t\t\t\t\tentry.target.setAttribute('data-o-table-intersection', entry.intersectionRatio !== 1);\n\t\t\t\t\tupdateScroll();\n\t\t\t\t});\n\t\t\t}, arrowFadeObserverConfig);\n\t\t\tif (this.controls.backButton) {\n\t\t\t\tarrowFadeObserver.observe(this.controls.backButton);\n\t\t\t}\n\t\t\tif (this.controls.forwardButton) {\n\t\t\t\tarrowFadeObserver.observe(this.controls.forwardButton);\n\t\t\t}\n\t\t}\n\n\t\t// Add other event listeners to update controls.\n\t\tthis.wrapper.addEventListener('scroll', updateScroll);\n\t\twindow.addEventListener('resize', updateScroll);\n\t\twindow.addEventListener('load', updateScroll);\n\t\tthis._listeners.push({ element: this.wrapper, updateScroll, type: 'scroll' });\n\t\tthis._listeners.push({element: window, updateScroll, type: 'resize'});\n\t\tthis._listeners.push({element: window, updateScroll, type: 'load'});\n\t}\n\n\t/**\n\t * Add hide/show functionality for long tables.\n\t * @returns {undefined}\n\t */\n\t_setupExpander() {\n\t\tif (typeof this._opts.expanded !== 'boolean') {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.container || !this.overlayWrapper || !this.wrapper) {\n\t\t\tthrow new Error(\n\t\t\t\t'Controls to expand/contract the table could not be added to \"o-table\" as it is missing markup.' +\n\t\t\t\t'Please add the container and wrapper element according to the documentation https://registry.origami.ft.com/components/o-table.'\n\t\t\t);\n\t\t}\n\n\t\t// Add table controls (e.g. \"more\" button).\n\t\tif (!this.controls) {\n\t\t\tthis._addControlsToDom();\n\t\t}\n\n\t\tif (this.controls.expanderButton) {\n\t\t\tconst toggleExpanded = function () {\n\t\t\t\tif (this.isExpanded()) {\n\t\t\t\t\tconst expanderButtonContainer = this.controls.expanderButton;\n\t\t\t\t\tconst buttonOffset = expanderButtonContainer.getBoundingClientRect().top;\n\t\t\t\t\tthis.contractTable();\n\t\t\t\t\twindow.requestAnimationFrame(() => {\n\t\t\t\t\t\tconst top = window.pageYOffset + expanderButtonContainer.getBoundingClientRect().top - buttonOffset;\n\t\t\t\t\t\twindow.scroll(null, top);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tthis.expandTable();\n\t\t\t\t}\n\t\t\t}.bind(this);\n\t\t\tthis.controls.expanderButton.addEventListener('click', toggleExpanded);\n\t\t\tthis._listeners.push({element: this.controls.expanderButton, toggleExpanded, type: 'click'});\n\t\t}\n\n\t\tthis._updateExpander();\n\t}\n\n\t/**\n\t * Update all controls and their overlays,\n\t * e.g. forward/back arrow visibility, visibility of arrow dock, overlay fade.\n\t * @returns {undefined}\n\t */\n\t_updateControls() {\n\t\tif (!this.controls) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Toggle fade.\n\t\tconst canScrollTable = this._canScrollTable;\n\t\twindow.requestAnimationFrame(function () {\n\t\t\tthis.controls.fadeOverlay.classList.toggle('o-table-overflow-fade-overlay--scroll', canScrollTable);\n\t\t\tthis.controls.fadeOverlay.style.setProperty('--o-table-fade-from-end', `${Math.min(this._fromEnd, 10)}px`);\n\t\t\tthis.controls.fadeOverlay.style.setProperty('--o-table-fade-from-start', `${Math.min(this._fromStart, 10)}px`);\n\t\t}.bind(this));\n\n\t\t// Toggle arrow dock.\n\t\tconst showArrowDock = this._showArrowDock;\n\t\twindow.requestAnimationFrame(function () {\n\t\t\tthis.controls.controlsOverlay.classList.toggle('o-table-overflow-control-overlay--arrow-dock', showArrowDock);\n\t\t}.bind(this));\n\n\n\t\t// Update forward/back scroll controls.\n\t\tif (OverflowTable._supportsArrows()) {\n\t\t\tthis._updateScrollControl(this.controls.forwardButton);\n\t\t\tthis._updateScrollControl(this.controls.backButton);\n\t\t}\n\n\t\t// Update controls overlay to cover the body.\n\t\tthis._updateControlOverlayPosition();\n\t}\n\n\t/**\n\t * Update the visibility of a scroll forward/back button.\n\t * @param {HTMLElement} element - The button wrapper.\n\t * @returns {undefined}\n\t */\n\t_updateScrollControl(element) {\n\t\tconst showStickyArrows = this._stickyArrows;\n\t\tconst canScrollTable = this._canScrollTable;\n\t\tconst arrowsDocked = this._showArrowDock && !showStickyArrows;\n\t\tconst scrolledToBoundary = this._fromEnd <= 0 && element === this.controls.forwardButton || this._fromStart <= 0 && element === this.controls.backButton;\n\t\tconst hideAtBoundary = !arrowsDocked && (!this._stickyArrows || this._stickyArrows && !this._canScrollPastTable);\n\t\tconst outsideTable = element.getAttribute('data-o-table-intersection') === 'true';\n\t\tconst elementButton = element.querySelector('button');\n\t\twindow.requestAnimationFrame(() => {\n\t\t\t// Show scroll control if the table does not fit within the viewport.\n\t\t\telement.style.display = canScrollTable ? '': 'none';\n\t\t\t// Make arrows sticky if table is tall and can be scrolled past.\n\t\t\telement.classList.toggle('o-table-control--sticky', showStickyArrows);\n\t\t\t// Place the arrows in the dock if they are not sticky.\n\t\t\telement.classList.toggle('o-table-control--dock', arrowsDocked);\n\t\t\t// Hide scroll control if they are outside the table boundry.\n\t\t\t// E.g. the table has been scrolled past.\n\t\t\tif (outsideTable) {\n\t\t\t\telementButton.setAttribute('disabled', true);\n\t\t\t\telement.classList.add('o-table-control--hide');\n\t\t\t}\n\t\t\t// Show scroll control if they are inside the table and the table is scrollable.\n\t\t\tif (!scrolledToBoundary && !outsideTable) {\n\t\t\t\telementButton.removeAttribute('disabled');\n\t\t\t\telement.classList.remove('o-table-control--hide');\n\t\t\t}\n\t\t\t// Disable scroll control if it is inside the table but scrolled to the end horizontally.\n\t\t\tif (scrolledToBoundary && !outsideTable) {\n\t\t\t\telementButton.setAttribute('disabled', true);\n\t\t\t\telement.classList.toggle('o-table-control--hide', hideAtBoundary);\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * The number of rows to display if the table is collapsed.\n\t * @returns {Number}\n\t */\n\tget _minimumRowCount() {\n\t\tconst minimumRowCount = this._opts.minimumRowCount;\n\t\treturn isNaN(parseInt(minimumRowCount, 10)) ? 20 : parseInt(minimumRowCount, 10);\n\t}\n\n\t/**\n\t * Which rows are hidden, either by a filter or by the expander.\n\t * @returns {Array[Node]}\n\t */\n\tget _rowsToHide() {\n\t\treturn [...this._filteredTableRows, ...this._rowsHiddenByExpander];\n\t}\n\n\t/**\n\t * The rows which will be hidden if the table is collapsed.\n\t * @returns {Array[Node]}\n\t */\n\tget _rowsHiddenByExpander() {\n\t\tconst visibleRowCount = Math.min(this.tableRows.length, this._minimumRowCount);\n\t\tconst nonFilteredRows = this.tableRows.filter(row => this._filteredTableRows.indexOf(row) === -1);\n\t\treturn this.isContracted() ? nonFilteredRows.slice(visibleRowCount, nonFilteredRows.length) : [];\n\t}\n\n\t/**\n\t * Check if the table can be scrolled.\n\t * @returns {Boolean}\n\t */\n\tget _canScrollTable() {\n\t\treturn this._fromEnd > 0 || this._fromStart > 0;\n\t}\n\n\t/**\n\t * Check if the table can fit within the viewport vertically.\n\t * @returns {Boolean}\n\t */\n\tget _tableTallerThanViewport() {\n\t\treturn this.container.getBoundingClientRect().height > document.documentElement.clientHeight;\n\t}\n\n\t/**\n\t * Check if the document is long enough to scroll beyond the table enough for sticky arrows to dock at the bottom.\n\t * I.e. Scroll past the table by at least 50% of the viewport.\n\t * @returns {Boolean}\n\t */\n\tget _canScrollPastTable() {\n\t\treturn this.container.getBoundingClientRect().bottom + document.documentElement.clientHeight / 2 < document.documentElement.getBoundingClientRect().bottom;\n\t}\n\n\t/**\n\t * Check if the \"dock\" at the bottom of the table should be shown.\n\t * After scrolling past the table, sticky arrows sit within the dock at the bottom of the table.\n\t * @returns {Boolean}\n\t */\n\tget _showArrowDock() {\n\t\treturn OverflowTable._supportsArrows() && this._canScrollTable && this._canScrollPastTable && this.canExpand();\n\t}\n\n\t/**\n\t * Check if left/right controls should be sticky.\n\t * @returns {Boolean}\n\t */\n\tget _stickyArrows() {\n\t\treturn OverflowTable._supportsArrows() && this._tableTallerThanViewport;\n\t}\n\n\t/**\n\t * Check if sticky buttons are supported.\n\t * @returns {Boolean}\n\t */\n\tstatic _supportsArrows() {\n\t\treturn typeof CSS !== 'undefined' && (CSS.supports(\"position\", \"sticky\") || CSS.supports('position', '-webkit-sticky'));\n\t}\n}\n\nexport default OverflowTable;\n","import BaseTable from './BaseTable.js';\n\nclass BasicTable extends BaseTable {\n\n\t/**\n\t * Initialises an `o-table` component without responsive behaviour.\n\t *\n\t * @access public\n\t * @param {HTMLElement} rootEl - The `o-table` element.\n\t * @param {TableSorter} sorter\n\t * @param {Object} opts [{}]\n\t * @param {Bool} opts.sortable [true]\n\t * @returns {BasicTable}\n\t */\n\tconstructor(rootEl, sorter, opts = {}) {\n\t\tsuper(rootEl, sorter, opts);\n\t\twindow.setTimeout(this.addSortButtons.bind(this), 0);\n\t\tthis._ready();\n\t\treturn this;\n\t}\n}\n\nexport default BasicTable;\n","import CellFormatter from \"./CellFormatter.js\";\n\n/**\n * Construct Intl.Collator if supported.\n *\n * @access private\n * @returns {Intl.Collator | Undefined}\n */\nfunction getIntlCollator() {\n\tif (typeof Intl !== 'undefined' && {}.hasOwnProperty.call(Intl, 'Collator')) {\n\t\treturn new Intl.Collator();\n\t}\n}\n\n/**\n * An ascending [compare function]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#Parameters}.\n *\n * @access private\n * @param {String|Number} a\n * @param {String|Number} b\n * @param {Intl.Collator} intlCollator\n * @returns {Number}\n */\nfunction ascendingSort(a, b, intlCollator) {\n\tif ((typeof a === 'string' || a instanceof String) && (typeof b === 'string' || b instanceof String)) {\n\t\treturn intlCollator ? intlCollator.compare(a, b) : a.localeCompare(b);\n\t} else if (!isNaN(b) && isNaN(a) || a < b) {\n\t\treturn -1;\n\t} else if (!isNaN(a) && isNaN(b) || b < a) {\n\t\treturn 1;\n\t} else {\n\t\treturn 0;\n\t}\n}\n\n/**\n * A descending [compare function]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#Parameters}.\n *\n * @access private\n * @param {String|Number} a\n * @param {String|Number} b\n * @param {Intl.Collator} intlCollator\n * @returns {Number}\n */\nfunction descendingSort(...args) {\n\treturn 0 - ascendingSort.apply(this, args);\n}\n\n/**\n * Provides methods to sort table instances.\n */\nclass TableSorter {\n\n\tconstructor() {\n\t\tthis._cellFormatter = new CellFormatter();\n\t}\n\n\t/**\n\t * Sort the given table.\n\t *\n\t * @access public\n\t * @param {BaseTable} table - The table instance to sort.\n\t * @param {Number} columnIndex - The index of the table column to sort.\n\t * @param {String} sortOrder - How to sort the column, \"ascending\" or \"descending\"\n\t * @param {Number} batch [100] - Deprecated. No longer used. How many rows to render at once when sorting.\n\t * @returns {undefined}\n\t */\n\tsortRowsByColumn(table, columnIndex, sortOrder, batch) {\n\t\tconst tableHeaderElement = table.getTableHeader(columnIndex);\n\n\t\tif (batch) {\n\t\t\tconsole.warn('o-table: The \"batch\" argument is deprecated and no longer used.');\n\t\t}\n\n\t\tif (['ascending', 'descending'].indexOf(sortOrder) === -1) {\n\t\t\tthrow new Error(`Sort order \"${sortOrder}\" is not supported. Must be \"ascending\" or \"descending\".`);\n\t\t}\n\n\t\tconst intlCollator = getIntlCollator();\n\t\tconst cellFormatter = this._cellFormatter;\n\t\tconst type = tableHeaderElement.getAttribute('data-o-table-data-type') || undefined;\n\t\ttable.tableRows.sort((a, b) => {\n\t\t\tlet aCol = a.querySelectorAll('td,th:not(.o-table__duplicate-heading)')[columnIndex];\n\t\t\tlet bCol = b.querySelectorAll('td,th:not(.o-table__duplicate-heading)')[columnIndex];\n\t\t\taCol = cellFormatter.formatCell({ cell: aCol, type });\n\t\t\tbCol = cellFormatter.formatCell({ cell: bCol, type });\n\t\t\tif (sortOrder === 'ascending') {\n\t\t\t\treturn ascendingSort(aCol, bCol, intlCollator);\n\t\t\t} else {\n\t\t\t\treturn descendingSort(aCol, bCol, intlCollator);\n\t\t\t}\n\t\t});\n\n\t\t// Table sorted.\n\t\ttable.sorted({\n\t\t\tcolumnIndex,\n\t\t\tsortOrder\n\t\t});\n\n\t\t// Render sorted table rows.\n\t\ttable.renderRowUpdates();\n\n\t\t// Update table headings.\n\t\twindow.requestAnimationFrame(() => {\n\t\t\ttable.tableHeaders.forEach((header) => {\n\t\t\t\tconst headerSort = header === tableHeaderElement ? sortOrder : 'none';\n\t\t\t\theader.setAttribute('aria-sort', headerSort);\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Set a custom cell formatter for a given data type.\n\t *\n\t * @param {String} type - The data type to apply the filter function to.\n\t * @param {formatFunction} formatFunction - Callback to format a table cell to a sort value.\n\t * @see {@link CellFormatter~setFormatter} for `formatFunction` details.\n\t * @access public\n\t */\n\tsetCellFormatterForType(type, formatFunction) {\n\t\tthis._cellFormatter.setFormatter(type, formatFunction);\n\t}\n}\n\nexport default TableSorter;\n","/**\n * Extracts the contents of img alt text.\n * @example String argument for example purposes only, to represent a HTMLElement.\n * \textractAltFromImages('<img alt=\"text\">'); // text\n * @param {HTMLElement} cell The DOM node to operate on, possibly a <td>\n * @access private\n * @returns {HTMLElement} the parameter\n */\nfunction extractAltFromImages(cell){\n\tconst images = Array.from(cell.getElementsByTagName('img'));\n\timages.forEach(image => {\n\t\tconst contents = image.getAttribute('alt');\n\t\timage.insertAdjacentHTML('beforebegin', contents);\n\t\timage.remove();\n\t});\n\n\treturn cell;\n}\n\n/**\n * Returns the text represantation of an HTML node.\n * If a node contains no `dateTime` attribute, content, `aria-label` or `title` attributes of <a>, <span>, or <i> child nodes are used.\n * @example String argument for example purposes only, to represent a HTMLElement.\n * \textractText('<i class=\"o-icons-icon o-icons-icon--mail\"><a href=\"mailto:example@ft.com\" title=\"Email Example at example@ft.com\"></a>'); //Email Example at example@ft.com\n * \textractText('<span class=\"o-icons-icon o-icons-icon--tick\">Correct</span>'); //Correct\n * \textractText('<span class=\"o-icons-icon o-icons-icon--tick\" title=\"Correct\"></span>'); //Correct\n * \textractText('<span class=\"o-icons-icon o-icons-icon--tick\" aria-label=\"Correct\"></span>'); //Correct\n * \textractText('<time class=\"o-date\" data-o-component=\"o-date\" datetime=\"2020-06-19T07:56:18Z\">2 hours ago</time>'); //Correct\n * @param {HTMLElement} cell The DOM node to operate on, possibly a <td>\n * @access private\n * @returns {HTMLElement} text representation of the HTML node\n */\nfunction extractText(cell){\n\tconst time = cell.querySelector('time');\n\tif (time && time.dateTime) {\n\t\tconst date = new Date(time.dateTime);\n\t\tif (!isNaN(date.getTime())){\n\t\t\treturn date.getTime() + '';\n\t\t}\n\t}\n\tlet text = cell.textContent.trim();\n\t// No text found, check aria labels and titles.\n\t// Useful for icon-only cells.\n\tif (text === '') {\n\t\tconst nodes = cell.querySelectorAll('a, span, i');\n\t\ttext = Array.from(nodes).reduce((accumulator, node) => {\n\t\t\tconst nodeText = node.getAttribute('aria-label') || node.getAttribute('title');\n\t\t\treturn nodeText ? `${accumulator} ${nodeText}` : accumulator;\n\t\t}, '');\n\t}\n\treturn text.trim();\n}\n\n/**\n * Returns the text with abbreviations expanded.\n * Supports million 'm', billion 'bn' (1,000 million), and trillion 'tn' (1,000 billion).\n * @example\n *  expandAbbreviations('1m') //1000000\n *  expandAbbreviations('1.2bn') //2200000000\n *  expandAbbreviations('1tn') //1000000000000\n *  expandAbbreviations('5m-10m') //5000000-10000000\n * @param {String} text The string to operate on\n * @access private\n * @returns {String} Text with any supported abbreviations expanded\n */\nfunction expandAbbreviations(text) {\n\ttext = text.replace(/([\\d,.]+)([a-zA-Z]+)/g, (match, digit, abbreviation) => {\n\t\tconst zeros = {\n\t\t\t'm': 6,\n\t\t\t'bn': 9,\n\t\t\t'tn': 12\n\t\t};\n\t\treturn `${digit * Math.pow(10, zeros[abbreviation] || 0)}`;\n\t});\n\treturn text;\n}\n\n/**\n * Returns the text with digit group separators removed.\n * @example\n *  removeDigitGroupSeparator('1,000') //1000\n *  removeDigitGroupSeparator('40') //40\n *  removeDigitGroupSeparator('4,000,000') //4000000\n * @param {String} text The string to operate on\n * @access private\n * @returns {String} Text with digit group separators (commas) removed.\n */\nfunction removeDigitGroupSeparators(text) {\n\treturn text.replace(/,/g, '');\n}\n\n/**\n * Returns the text with non-number characters removed (e.g. currency symbols).\n * Does not effect range characters e.g. \"–\" will be maintained.\n * If no digits were found to remove, returns the text unchanged.\n * @example\n *  extractDigitsIfFound('Rmb100') //100\n *  extractDigitsIfFound('CFA Fr830') //830\n *  extractDigitsIfFound('HK$12') //12\n *  extractDigitsIfFound('HK$12-HK$20') //12–20\n *  extractDigitsIfFound('1534956593-1534956620') //1534956593–1534956620\n *  extractDigitsIfFound('Some text') //Some text\n *  extractDigitsIfFound('Some text 123') //123\n * @param {String} text The string to operate on\n * @access private\n * @returns {String} Text with digits characters only.\n */\nfunction extractDigitsIfFound(text) {\n\tconst digitsAndRange = text.replace(/([^\\d.,\\-\\–]+)/g, '');\n\tif (digitsAndRange === '') {\n\t\treturn text;\n\t}\n\treturn digitsAndRange;\n}\n\n/**\n * Returns a number from a range\n * @example\n *  removeRange('1534956593–1534956620') //1534956593\n *  removeRange('123–345') //123\n *  removeRange('123') //123\n *  removeRange('No numbers') //No numbers\n * @param {String} text The string to operate on\n * @access private\n * @returns {Number}\n */\nfunction extractNumberFromRange(text) {\n\tconst number = parseFloat(text);\n\treturn isNaN(number) ? text : number;\n}\n\n/**\n * Parses FT style date and time and formats as a number for sorting.\n * FT date or date and time returns a UNIX epoch (UTC).\n * FT time returns a positive float for pm, negative for am.\n * @example\n *  ftDateTimeToNumber('August 17') //UNIX epoch, assumes current year\n *  ftDateTimeToNumber('September 12 2012') //UNIX epoch\n *  ftDateTimeToNumber('January 2012') //UNIX epoch, first of month\n *  ftDateTimeToNumber('March 12 2015 1am') //UNIX epoch including time\n *  ftDateTimeToNumber('April 20 2014 1.30pm') //UNIX epoch including time\n *  ftDateTimeToNumber('1am') //1\n *  ftDateTimeToNumber('1.30am') //1.3\n *  ftDateTimeToNumber('1.40pm') //13.4\n *  ftDateTimeToNumber('3pm') //15\n *  ftDateTimeToNumber('Not a known date') //Note a known date\n * @param {String} text The string to operate on\n * @access private\n * @returns {Number} Number representation of date and/or time for sorting.\n */\nfunction ftDateTimeToNumber(text) {\n\tconst monthNames = ['January','February','March','April','May','June','July','August','September','October','November','December'];\n\t// FT style for writing dates: is June 23 2016 (no commas, month date year)\n\tconst date = text.match(/^([A-Za-z]{3,})(?:[\\s])(?=[\\d])((?:\\d{1,2})?(?![\\d]))?(?:\\s)?(\\d{4})?/);\n\t// FT style for writing time:\n\t// The 12 hour clock should be used: 1am, 9.30pm\n\tconst time = text.match(/(?:\\s|^)(\\d{1,2}(?:[.](\\d{2}))?)(pm|am)$/);\n\t// Get date.\n\tconst month = date && date[1] ? date[1] : null;\n\t// Get index of the month name from a given month e.g. 'January' for 'Jan'.\n\tlet monthIndex = null;\n\tif (month) {\n\t\tfor (let index = 0; index < monthNames.length; index++) {\n\t\t\tconst name = monthNames[index];\n\t\t\tif (name.startsWith(month)) {\n\t\t\t\tmonthIndex = index;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tconst day = date && date[2] ? parseInt(date[2], 10) : null;\n\tlet year = date && date[3] ? parseInt(date[3], 10) : null;\n\tif (month && !year) {\n\t\t// For sorting purposes, assume a month is for this year if not otherwise specified.\n\t\tyear = new Date().getFullYear();\n\t}\n\t// Get time.\n\tconst hour = time && time[1] ? parseInt(time[1], 10) : null;\n\tconst minute = time && time[2] ? parseInt(time[2], 10) : null;\n\tconst period = time ? time[3] : null;\n\tconst twentyFourHour = hour && period === 'pm' ? hour + 12 : hour;\n\t// Sort number for FT formated time.\n\tif (hour && !(year && monthIndex)) {\n\t\treturn parseFloat(`${twentyFourHour}.${minute}`);\n\t}\n\n\tif (year !== null || monthIndex !== null || day !== null || twentyFourHour !== null || minute !== null) {\n\t\t// Unix epoch to sort FT formated date.\n\t\tconst dateObj = new Date(Date.UTC(year, monthIndex, day, twentyFourHour, minute));\n\t\treturn isNaN(dateObj.getTime()) ? text : dateObj.getTime();\n\t} else {\n\t\treturn text;\n\t}\n}\n\n/**\n * Removes and number of asterisk's which are at the end of the line.\n * @example\n *  removeRefereneAsterisk('Durian*') //Durian\n *  removeRefereneAsterisk('1,439,165.43**') //1,439,165.43\n * @param {String} text The string to operate on\n * @access private\n * @returns {String} Text without source/reference asterisk.\n */\nfunction removeRefereneAsterisk(text) {\n\treturn text.replace(/\\*+$/, '');\n}\n\n/**\n * Removes indicators of an empty cell.\n * @example\n *  removeEmptyCellIndicators('n/a'); //\n *  removeEmptyCellIndicators('-'); //\n *  removeEmptyCellIndicators('Cell-content'); //Cell-content\n * @param {String} text The string to operate on\n * @access private\n * @returns {String} An empty string or the original text.\n */\nfunction removeEmptyCellIndicators(text) {\n\t// Remove n/a\n\ttext = text.replace(/^n[./]a[.]?$/i, '');\n\t// Remove -\n\treturn text === '-' ? '' : text;\n}\n\n/**\n * Group of filters to extract text from a cell.\n * @param {HTMLElement} cell The node to extract sortable text from.\n * @access private\n * @returns {String} The node content to sort on.\n */\nfunction extractNodeContent(cell) {\n\tconst steps = [extractAltFromImages, extractText, removeRefereneAsterisk, removeEmptyCellIndicators];\n\tlet text = cell;\n\tsteps.forEach(step => { text = step(text); });\n\treturn typeof text === 'string' ? text : '';\n}\n\n/**\n * Group of filters to extract a number for sorting.\n * @param {String} text The string to operate on\n * @access private\n * @returns {Number|String} A number if one could a extracted, string otherwise.\n */\nfunction extractNumber(text) {\n\tconst steps = [removeDigitGroupSeparators, expandAbbreviations, extractDigitsIfFound, extractNumberFromRange];\n\tsteps.forEach(step => { text = step(text); });\n\treturn text;\n}\n\n/**\n * Methods to format table cells for sorting.\n * @access public\n */\nclass CellFormatter {\n\n\tconstructor () {\n\t\t// This object is used to keep the running order of filter methods\n\t\tthis.filters = {\n\t\t\ttext: [extractNodeContent],\n\t\t\tnumber: [extractNodeContent, extractNumber],\n\t\t\tpercent: [extractNodeContent, extractNumber],\n\t\t\tcurrency: [extractNodeContent, extractNumber],\n\t\t\tnumeric: [extractNodeContent, extractNumber],\n\t\t\tdate: [extractNodeContent, ftDateTimeToNumber]\n\t\t};\n\t}\n\n\t/**\n\t * The `formatFunction` take the table cell HTMLElement,\n\t * and converts it to a String or Number of sorting.\n\t *\n\t * @callback formatFunction\n\t * @param {HTMLElement} cell\n\t * @return {String|Object}\n\t */\n\n\t/**\n\t * @param {String} type The data type of the cell to apply the filter function to.\n\t * @param {formatFunction} formatFunction The function to take the cell and return a sortable value (string/number).\n\t * @example\n\t *  mySortFormatter.setFormatter('emoji-time', (cell) => {\n\t *  \tconst text = cell.textContent.trim();\n\t *  \tif (text === '🌑') {\n\t *  \t\treturn 1;\n\t *  \t}\n\t *  \tif (text === '🌤️️') {\n\t *  \t\treturn 2;\n\t *  \t}\n\t *  \treturn 0;\n\t *  });\n\t * @access public\n\t */\n\tsetFormatter(type, formatFunction) {\n\t\tthis.filters[type] = [formatFunction];\n\t}\n\n\t/**\n\t * @param {HTMLElement} cell\n\t * @param {String} type The data type of the cell, e.g. date, number, currency. Custom types are supported.\n\t * @see {@link setFormatter} to support add support for a custom type.\n\t * @access public\n\t * @return {String|Number} A representation of cell which can be used for sorting.\n\t */\n\tformatCell({ cell, type = 'text' }) {\n\t\ttype = type || 'text';\n\t\tlet sortValue = cell.getAttribute('data-o-table-sort-value');\n\t\tif (sortValue === null) {\n\t\t\tif (this.filters[type]) {\n\t\t\t\tconst cellClone = cell.cloneNode({ deep: true });\n\t\t\t\tsortValue = cellClone;\n\t\t\t\tthis.filters[type].forEach(fn => { sortValue = fn(sortValue); });\n\t\t\t}\n\t\t\tcell.setAttribute('data-o-table-sort-value', sortValue);\n\t\t}\n\t\tconst sortValueIsNumber = sortValue !== '' && !isNaN(sortValue);\n\t\treturn sortValueIsNumber ? parseFloat(sortValue) : sortValue;\n\t}\n}\n\nexport default CellFormatter;\n","module.exports = \"**Methodology**\\n\\nTo predict the baseline total number of medals each country might be expected to win in any given summer Olympics, we updated a [linear regression model](https://rss.onlinelibrary.wiley.com/doi/full/10.1111/j.1740-9713.2016.00915.x) produced by Julia Bredtmann, Carsten J Crede and Sebastian Otten ahead of the Rio Olympics.\\n\\nMimicking the original work by Bredtmann, Crede and Otten, we built the same model and fitted it on data for each Summer Olympic year between 1992 and 2008, and then used it to predict the medals table at London 2012. The full model outperforms a naive model that uses only the number of medals a country won and the year of the Games.\\n\\nWe then fitted the same model on data up to and including the 2016 Rio Games, and used this to predict medal counts for Tokyo 2020 (using the latest available data for each input, i.e forecasts for GDP per capita and population in 2021).\\n\\n```js\\nThis gave us a value for each participating country’s expected medal tally in Tokyo, which we rounded to the nearest whole number greater than or equal to zero, and then scaled up so that the sum came to 1,017, the total number of medals that will be awarded this year.\\n\\nThis predicted medals table is only useful for seeing where countries might rank before the start of the Games, or for assessing the complete results after the closing ceremony. It is less useful for comparing live tallies during the Games, After a few days of competition, when some countries have racked up medals in early events while but others are still waiting for their strongest sports to begin, it is not useful to compare live tallies with the predicted final outcome.\\n\\nTo make the over/under-performance metric useful during the Games, we built an additional layer on top of the academics’ model, breaking down each country’s predicted medal count into the different sports being contested at the Games. This allows us, allowing us to gradually increase each country’s expectedpredicted medals as the real medals are awarded over the Games’ two weeks.\\n\\nTo do this, we distributed each country’s predicted total medal count in proportion to the share of medals it won in each sport at the most recent Olympics it competed in. In the case of ROC (the official name of the Russian team, who are not permitted to use their country’s name due to a banongoing sanctions handed out by the World Anti- Doping Agency), we used the 2012 Games for its typical event-medal distribution, since it had sent a greatly depleted team to Rio in 2016 due to doping sanctions.\\n\\nFinally we had to account for the Russian team being limited to 10 entrants into athletics competitions in Tokyo, down from a typical athletics team size of 100. To do this, we took away 90 per cent of Russia’s predicted medals in athletics and gave them to countries that have been historically strong performers in track and field.\\n\\nThis gave us our final dataset: for each country participating in Tokyo, we have a total number of predicted medals, broken down by sport. When each event’s medals are awarded, we randomly add three expected medals to countries that have won medals at that event in past Olympics. For example, all nine of Jamaica’s predicted medals are expected in athletics events in which that country has won all of its medals since 1992. Jamaica’s expected total will therefore remain at zero at least until the first athletics medals are awarded, and will then gradually increase following each completed athletics event.\\n```\\n\"","module.exports = \"_Development by [Emma Lewis](https://www.ft.com/emma-lewis)._\\n\\n_Data and analysis by [John Burn-Murdoch](https://www.ft.com/john-burn-murdoch), [Martin Stabe](https://www.ft.com/martin-stabe) and [Kazuhiro Kida](https://twitter.com/kazuhiro_kida)._\\n\"","module.exports = \"Even before a single race was run in Tokyo, one thing was almost certain: by the end of the Olympic Games the US will top the medals table, followed by China and other large or wealthy countries. But how should we measure that success?\\n\\nThe conventional Olympic medals table tends to reflect certain underlying factors, such as population size, economic might and past performance. Large and rich countries typically lead the pack, while nations that take home a modest number of medals but punch well above their weight receive little attention.\\n\\nWith that in mind, the Financial Times’ alternative medal table ranks countries not by their total medal haul but by the difference to the tally they are expected to achieve, according to an economic model that takes into account their economic, social and political characteristics. _A [full description of the method used](#methodology) is at the foot of this story._\\n\"","module.exports = \"We will be updating this table throughout the Tokyo Games to track each country’s performance against what would have been expected from it at that stage of the competition, based on the events that have been completed and an updated version of an economic [model produced by a team of labour economists](https://rss.onlinelibrary.wiley.com/doi/full/10.1111/j.1740-9713.2016.00915.x) ahead of the 2016 Games in Rio de Janeiro.\\n\\nThe research, by Julia Bredtmann, Carsten J Crede and Sebastian Otten, found that factors including medal hauls in past Games, population size and GDP per capita could explain roughly 95 per cent of the difference between countries’ final medal tallies, essentially creating a benchmark for assessing whether a country met, beat or fell short of expectations.\\n\\nPrevious research has also repeatedly shown that host nations — and countries preparing to hold subsequent Olympics — tend to out-perform those of similar size and wealth, as do nations with a recent history of having a planned economy. Conversely, majority-Muslim countries have underperformed.\\n\\n“Countries in which women have more equal economic opportunities send more female athletes to the Games, and more athletes mean more chances to win medals,” said Bredtmann, one of the authors of the original study.\\n\"","if (process.env.NODE_ENV !== 'production') {\n  var hot = require('./index').hot;\n  if (module.hot) {\n    var cache = require.cache;\n\n    if (!module.parents || module.parents.length === 0) {\n      throw new Error(\n        'React-Hot-Loader: `react-hot-loader/root` is not supported on your system. ' +\n        'Please use `import {hot} from \"react-hot-loader\"` instead'\n      );\n    }\n    // access parent\n    var parent = cache[module.parents[0]];\n    if (!parent) {\n      throw new Error(\n        'React-Hot-Loader: `react-hot-loader/root` is not supported on your system. ' +\n        'Please use `import {hot} from \"react-hot-loader\"` instead'\n      );\n    }\n\n    // remove self from a cache\n    delete cache[module.id];\n\n    // setup hot for caller\n    exports.hot = hot(parent);\n  } else {\n    fallbackHot();\n  }\n} else {\n  // prod mode\n  fallbackHot();\n}\n\nfunction fallbackHot() {\n  exports.hot = function (a) {\n    return a;\n  };\n}\n","'use strict';\n\nif (!module.hot || process.env.NODE_ENV === 'production') {\n  module.exports = require('./dist/react-hot-loader.production.min.js');\n} else {\n  module.exports = require('./dist/react-hot-loader.development.js');\n}\n","\"use strict\";function _interopDefault(e){return e&&\"object\"==typeof e&&\"default\"in e?e.default:e}Object.defineProperty(exports,\"__esModule\",{value:!0});var React=_interopDefault(require(\"react\"));function AppContainer(e){return AppContainer.warnAboutHMRDisabled&&(AppContainer.warnAboutHMRDisabled=!0,console.error(\"React-Hot-Loader: misconfiguration detected, using production version in non-production environment.\"),console.error(\"React-Hot-Loader: Hot Module Replacement is not enabled.\")),React.Children.only(e.children)}AppContainer.warnAboutHMRDisabled=!1;var hot=function e(){return e.shouldWrapWithAppContainer?function(e){return function(n){return React.createElement(AppContainer,null,React.createElement(e,n))}}:function(e){return e}};hot.shouldWrapWithAppContainer=!1;var areComponentsEqual=function(e,n){return e===n},setConfig=function(){},cold=function(e){return e},configureComponent=function(){};exports.AppContainer=AppContainer,exports.hot=hot,exports.areComponentsEqual=areComponentsEqual,exports.setConfig=setConfig,exports.cold=cold,exports.configureComponent=configureComponent;\n","/** @license React v16.14.0\n * react.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\n'use strict';var l=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.forward_ref\"):60112,y=n?Symbol.for(\"react.suspense\"):60113,z=n?Symbol.for(\"react.memo\"):60115,A=n?Symbol.for(\"react.lazy\"):\n60116,B=\"function\"===typeof Symbol&&Symbol.iterator;function C(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar D={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},E={};function F(a,b,c){this.props=a;this.context=b;this.refs=E;this.updater=c||D}F.prototype.isReactComponent={};F.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(C(85));this.updater.enqueueSetState(this,a,b,\"setState\")};F.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};\nfunction G(){}G.prototype=F.prototype;function H(a,b,c){this.props=a;this.context=b;this.refs=E;this.updater=c||D}var I=H.prototype=new G;I.constructor=H;l(I,F.prototype);I.isPureReactComponent=!0;var J={current:null},K=Object.prototype.hasOwnProperty,L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,c){var e,d={},g=null,k=null;if(null!=b)for(e in void 0!==b.ref&&(k=b.ref),void 0!==b.key&&(g=\"\"+b.key),b)K.call(b,e)&&!L.hasOwnProperty(e)&&(d[e]=b[e]);var f=arguments.length-2;if(1===f)d.children=c;else if(1<f){for(var h=Array(f),m=0;m<f;m++)h[m]=arguments[m+2];d.children=h}if(a&&a.defaultProps)for(e in f=a.defaultProps,f)void 0===d[e]&&(d[e]=f[e]);return{$$typeof:p,type:a,key:g,ref:k,props:d,_owner:J.current}}\nfunction N(a,b){return{$$typeof:p,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===p}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+(\"\"+a).replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g,Q=[];function R(a,b,c,e){if(Q.length){var d=Q.pop();d.result=a;d.keyPrefix=b;d.func=c;d.context=e;d.count=0;return d}return{result:a,keyPrefix:b,func:c,context:e,count:0}}\nfunction S(a){a.result=null;a.keyPrefix=null;a.func=null;a.context=null;a.count=0;10>Q.length&&Q.push(a)}\nfunction T(a,b,c,e){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return c(e,a,\"\"===b?\".\"+U(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var k=0;k<a.length;k++){d=a[k];var f=b+U(d,k);g+=T(d,f,c,e)}else if(null===a||\"object\"!==typeof a?f=null:(f=B&&a[B]||a[\"@@iterator\"],f=\"function\"===typeof f?f:null),\"function\"===typeof f)for(a=f.call(a),k=\n0;!(d=a.next()).done;)d=d.value,f=b+U(d,k++),g+=T(d,f,c,e);else if(\"object\"===d)throw c=\"\"+a,Error(C(31,\"[object Object]\"===c?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":c,\"\"));return g}function V(a,b,c){return null==a?0:T(a,\"\",b,c)}function U(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(a.key):b.toString(36)}function W(a,b){a.func.call(a.context,b,a.count++)}\nfunction aa(a,b,c){var e=a.result,d=a.keyPrefix;a=a.func.call(a.context,b,a.count++);Array.isArray(a)?X(a,e,c,function(a){return a}):null!=a&&(O(a)&&(a=N(a,d+(!a.key||b&&b.key===a.key?\"\":(\"\"+a.key).replace(P,\"$&/\")+\"/\")+c)),e.push(a))}function X(a,b,c,e,d){var g=\"\";null!=c&&(g=(\"\"+c).replace(P,\"$&/\")+\"/\");b=R(b,g,e,d);V(a,aa,b);S(b)}var Y={current:null};function Z(){var a=Y.current;if(null===a)throw Error(C(321));return a}\nvar ba={ReactCurrentDispatcher:Y,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:J,IsSomeRendererActing:{current:!1},assign:l};exports.Children={map:function(a,b,c){if(null==a)return a;var e=[];X(a,e,null,b,c);return e},forEach:function(a,b,c){if(null==a)return a;b=R(null,null,b,c);V(a,W,b);S(b)},count:function(a){return V(a,function(){return null},null)},toArray:function(a){var b=[];X(a,b,null,function(a){return a});return b},only:function(a){if(!O(a))throw Error(C(143));return a}};\nexports.Component=F;exports.Fragment=r;exports.Profiler=u;exports.PureComponent=H;exports.StrictMode=t;exports.Suspense=y;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=ba;\nexports.cloneElement=function(a,b,c){if(null===a||void 0===a)throw Error(C(267,a));var e=l({},a.props),d=a.key,g=a.ref,k=a._owner;if(null!=b){void 0!==b.ref&&(g=b.ref,k=J.current);void 0!==b.key&&(d=\"\"+b.key);if(a.type&&a.type.defaultProps)var f=a.type.defaultProps;for(h in b)K.call(b,h)&&!L.hasOwnProperty(h)&&(e[h]=void 0===b[h]&&void 0!==f?f[h]:b[h])}var h=arguments.length-2;if(1===h)e.children=c;else if(1<h){f=Array(h);for(var m=0;m<h;m++)f[m]=arguments[m+2];e.children=f}return{$$typeof:p,type:a.type,\nkey:d,ref:g,props:e,_owner:k}};exports.createContext=function(a,b){void 0===b&&(b=null);a={$$typeof:w,_calculateChangedBits:b,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:v,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};exports.forwardRef=function(a){return{$$typeof:x,render:a}};exports.isValidElement=O;\nexports.lazy=function(a){return{$$typeof:A,_ctor:a,_status:-1,_result:null}};exports.memo=function(a,b){return{$$typeof:z,type:a,compare:void 0===b?null:b}};exports.useCallback=function(a,b){return Z().useCallback(a,b)};exports.useContext=function(a,b){return Z().useContext(a,b)};exports.useDebugValue=function(){};exports.useEffect=function(a,b){return Z().useEffect(a,b)};exports.useImperativeHandle=function(a,b,c){return Z().useImperativeHandle(a,b,c)};\nexports.useLayoutEffect=function(a,b){return Z().useLayoutEffect(a,b)};exports.useMemo=function(a,b){return Z().useMemo(a,b)};exports.useReducer=function(a,b,c){return Z().useReducer(a,b,c)};exports.useRef=function(a){return Z().useRef(a)};exports.useState=function(a){return Z().useState(a)};exports.version=\"16.14.0\";\n","/**\n * @file\n * Main client/SSR entry point.\n *\n * You probably don't want to touch anything in here unless you know what\n * you're doing. #justsayin\n */\n\nimport React from 'react';\nimport { hydrate, render } from 'react-dom';\nimport App from './app';\nimport '@financial-times/g-components/shared/critical-path.scss';\nimport './styles.scss';\n\nconst rootElement = document.getElementById('root');\n\nif (rootElement.hasChildNodes()) {\n  hydrate(<App />, rootElement);\n} else {\n  render(<App />, rootElement);\n}\n","/** @license React v16.14.0\n * react-dom.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\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),n=require(\"object-assign\"),r=require(\"scheduler\");function u(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}if(!aa)throw Error(u(227));\nfunction ba(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var da=!1,ea=null,fa=!1,ha=null,ia={onError:function(a){da=!0;ea=a}};function ja(a,b,c,d,e,f,g,h,k){da=!1;ea=null;ba.apply(ia,arguments)}function ka(a,b,c,d,e,f,g,h,k){ja.apply(this,arguments);if(da){if(da){var l=ea;da=!1;ea=null}else throw Error(u(198));fa||(fa=!0,ha=l)}}var la=null,ma=null,na=null;\nfunction oa(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=na(c);ka(d,b,void 0,a);a.currentTarget=null}var pa=null,qa={};\nfunction ra(){if(pa)for(var a in qa){var b=qa[a],c=pa.indexOf(a);if(!(-1<c))throw Error(u(96,a));if(!sa[c]){if(!b.extractEvents)throw Error(u(97,a));sa[c]=b;c=b.eventTypes;for(var d in c){var e=void 0;var f=c[d],g=b,h=d;if(ta.hasOwnProperty(h))throw Error(u(99,h));ta[h]=f;var k=f.phasedRegistrationNames;if(k){for(e in k)k.hasOwnProperty(e)&&ua(k[e],g,h);e=!0}else f.registrationName?(ua(f.registrationName,g,h),e=!0):e=!1;if(!e)throw Error(u(98,d,a));}}}}\nfunction ua(a,b,c){if(va[a])throw Error(u(100,a));va[a]=b;wa[a]=b.eventTypes[c].dependencies}var sa=[],ta={},va={},wa={};function xa(a){var b=!1,c;for(c in a)if(a.hasOwnProperty(c)){var d=a[c];if(!qa.hasOwnProperty(c)||qa[c]!==d){if(qa[c])throw Error(u(102,c));qa[c]=d;b=!0}}b&&ra()}var ya=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),za=null,Aa=null,Ba=null;\nfunction Ca(a){if(a=ma(a)){if(\"function\"!==typeof za)throw Error(u(280));var b=a.stateNode;b&&(b=la(b),za(a.stateNode,a.type,b))}}function Da(a){Aa?Ba?Ba.push(a):Ba=[a]:Aa=a}function Ea(){if(Aa){var a=Aa,b=Ba;Ba=Aa=null;Ca(a);if(b)for(a=0;a<b.length;a++)Ca(b[a])}}function Fa(a,b){return a(b)}function Ga(a,b,c,d,e){return a(b,c,d,e)}function Ha(){}var Ia=Fa,Ja=!1,Ka=!1;function La(){if(null!==Aa||null!==Ba)Ha(),Ea()}\nfunction Ma(a,b,c){if(Ka)return a(b,c);Ka=!0;try{return Ia(a,b,c)}finally{Ka=!1,La()}}var Na=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,Oa=Object.prototype.hasOwnProperty,Pa={},Qa={};\nfunction Ra(a){if(Oa.call(Qa,a))return!0;if(Oa.call(Pa,a))return!1;if(Na.test(a))return Qa[a]=!0;Pa[a]=!0;return!1}function Sa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction Ta(a,b,c,d){if(null===b||\"undefined\"===typeof b||Sa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f}var C={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){C[a]=new v(a,0,!1,a,null,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];C[b]=new v(b,1,!1,a[1],null,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){C[a]=new v(a,2,!1,a.toLowerCase(),null,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){C[a]=new v(a,2,!1,a,null,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){C[a]=new v(a,3,!1,a.toLowerCase(),null,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){C[a]=new v(a,3,!0,a,null,!1)});[\"capture\",\"download\"].forEach(function(a){C[a]=new v(a,4,!1,a,null,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){C[a]=new v(a,6,!1,a,null,!1)});[\"rowSpan\",\"start\"].forEach(function(a){C[a]=new v(a,5,!1,a.toLowerCase(),null,!1)});var Ua=/[\\-:]([a-z])/g;function Va(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(Ua,\nVa);C[b]=new v(b,1,!1,a,null,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!1)});\nC.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!0)});var Wa=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;Wa.hasOwnProperty(\"ReactCurrentDispatcher\")||(Wa.ReactCurrentDispatcher={current:null});Wa.hasOwnProperty(\"ReactCurrentBatchConfig\")||(Wa.ReactCurrentBatchConfig={suspense:null});\nfunction Xa(a,b,c,d){var e=C.hasOwnProperty(b)?C[b]:null;var f=null!==e?0===e.type:d?!1:!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1]?!1:!0;f||(Ta(b,c,e,d)&&(c=null),d||null===e?Ra(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c))))}\nvar Ya=/^(.*)[\\\\\\/]/,E=\"function\"===typeof Symbol&&Symbol.for,Za=E?Symbol.for(\"react.element\"):60103,$a=E?Symbol.for(\"react.portal\"):60106,ab=E?Symbol.for(\"react.fragment\"):60107,bb=E?Symbol.for(\"react.strict_mode\"):60108,cb=E?Symbol.for(\"react.profiler\"):60114,db=E?Symbol.for(\"react.provider\"):60109,eb=E?Symbol.for(\"react.context\"):60110,fb=E?Symbol.for(\"react.concurrent_mode\"):60111,gb=E?Symbol.for(\"react.forward_ref\"):60112,hb=E?Symbol.for(\"react.suspense\"):60113,ib=E?Symbol.for(\"react.suspense_list\"):\n60120,jb=E?Symbol.for(\"react.memo\"):60115,kb=E?Symbol.for(\"react.lazy\"):60116,lb=E?Symbol.for(\"react.block\"):60121,mb=\"function\"===typeof Symbol&&Symbol.iterator;function nb(a){if(null===a||\"object\"!==typeof a)return null;a=mb&&a[mb]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function ob(a){if(-1===a._status){a._status=0;var b=a._ctor;b=b();a._result=b;b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)})}}\nfunction pb(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ab:return\"Fragment\";case $a:return\"Portal\";case cb:return\"Profiler\";case bb:return\"StrictMode\";case hb:return\"Suspense\";case ib:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case eb:return\"Context.Consumer\";case db:return\"Context.Provider\";case gb:var b=a.render;b=b.displayName||b.name||\"\";return a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\n\"ForwardRef\");case jb:return pb(a.type);case lb:return pb(a.render);case kb:if(a=1===a._status?a._result:null)return pb(a)}return null}function qb(a){var b=\"\";do{a:switch(a.tag){case 3:case 4:case 6:case 7:case 10:case 9:var c=\"\";break a;default:var d=a._debugOwner,e=a._debugSource,f=pb(a.type);c=null;d&&(c=pb(d.type));d=f;f=\"\";e?f=\" (at \"+e.fileName.replace(Ya,\"\")+\":\"+e.lineNumber+\")\":c&&(f=\" (created by \"+c+\")\");c=\"\\n    in \"+(d||\"Unknown\")+f}b+=c;a=a.return}while(a);return b}\nfunction rb(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function sb(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction tb(a){var b=sb(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function xb(a){a._valueTracker||(a._valueTracker=tb(a))}function yb(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=sb(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function zb(a,b){var c=b.checked;return n({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}\nfunction Ab(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=rb(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function Bb(a,b){b=b.checked;null!=b&&Xa(a,\"checked\",b,!1)}\nfunction Cb(a,b){Bb(a,b);var c=rb(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?Db(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&Db(a,b.type,rb(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction Eb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction Db(a,b,c){if(\"number\"!==b||a.ownerDocument.activeElement!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function Fb(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function Gb(a,b){a=n({children:void 0},b);if(b=Fb(b.children))a.children=b;return a}\nfunction Hb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+rb(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction Ib(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(u(91));return n({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function Jb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(u(92));if(Array.isArray(c)){if(!(1>=c.length))throw Error(u(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:rb(c)}}\nfunction Kb(a,b){var c=rb(b.value),d=rb(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function Lb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var Mb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction Nb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function Ob(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?Nb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar Pb,Qb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==Mb.svg||\"innerHTML\"in a)a.innerHTML=b;else{Pb=Pb||document.createElement(\"div\");Pb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=Pb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction Rb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}function Sb(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Tb={animationend:Sb(\"Animation\",\"AnimationEnd\"),animationiteration:Sb(\"Animation\",\"AnimationIteration\"),animationstart:Sb(\"Animation\",\"AnimationStart\"),transitionend:Sb(\"Transition\",\"TransitionEnd\")},Ub={},Vb={};\nya&&(Vb=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Tb.animationend.animation,delete Tb.animationiteration.animation,delete Tb.animationstart.animation),\"TransitionEvent\"in window||delete Tb.transitionend.transition);function Wb(a){if(Ub[a])return Ub[a];if(!Tb[a])return a;var b=Tb[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Vb)return Ub[a]=b[c];return a}\nvar Xb=Wb(\"animationend\"),Yb=Wb(\"animationiteration\"),Zb=Wb(\"animationstart\"),$b=Wb(\"transitionend\"),ac=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),bc=new (\"function\"===typeof WeakMap?WeakMap:Map);function cc(a){var b=bc.get(a);void 0===b&&(b=new Map,bc.set(a,b));return b}\nfunction dc(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.effectTag&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function ec(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function fc(a){if(dc(a)!==a)throw Error(u(188));}\nfunction gc(a){var b=a.alternate;if(!b){b=dc(a);if(null===b)throw Error(u(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return fc(e),a;if(f===d)return fc(e),b;f=f.sibling}throw Error(u(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(u(189));}}if(c.alternate!==d)throw Error(u(190));}if(3!==c.tag)throw Error(u(188));return c.stateNode.current===c?a:b}function hc(a){a=gc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nfunction ic(a,b){if(null==b)throw Error(u(30));if(null==a)return b;if(Array.isArray(a)){if(Array.isArray(b))return a.push.apply(a,b),a;a.push(b);return a}return Array.isArray(b)?[a].concat(b):[a,b]}function jc(a,b,c){Array.isArray(a)?a.forEach(b,c):a&&b.call(c,a)}var kc=null;\nfunction lc(a){if(a){var b=a._dispatchListeners,c=a._dispatchInstances;if(Array.isArray(b))for(var d=0;d<b.length&&!a.isPropagationStopped();d++)oa(a,b[d],c[d]);else b&&oa(a,b,c);a._dispatchListeners=null;a._dispatchInstances=null;a.isPersistent()||a.constructor.release(a)}}function mc(a){null!==a&&(kc=ic(kc,a));a=kc;kc=null;if(a){jc(a,lc);if(kc)throw Error(u(95));if(fa)throw a=ha,fa=!1,ha=null,a;}}\nfunction nc(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}function oc(a){if(!ya)return!1;a=\"on\"+a;var b=a in document;b||(b=document.createElement(\"div\"),b.setAttribute(a,\"return;\"),b=\"function\"===typeof b[a]);return b}var pc=[];function qc(a){a.topLevelType=null;a.nativeEvent=null;a.targetInst=null;a.ancestors.length=0;10>pc.length&&pc.push(a)}\nfunction rc(a,b,c,d){if(pc.length){var e=pc.pop();e.topLevelType=a;e.eventSystemFlags=d;e.nativeEvent=b;e.targetInst=c;return e}return{topLevelType:a,eventSystemFlags:d,nativeEvent:b,targetInst:c,ancestors:[]}}\nfunction sc(a){var b=a.targetInst,c=b;do{if(!c){a.ancestors.push(c);break}var d=c;if(3===d.tag)d=d.stateNode.containerInfo;else{for(;d.return;)d=d.return;d=3!==d.tag?null:d.stateNode.containerInfo}if(!d)break;b=c.tag;5!==b&&6!==b||a.ancestors.push(c);c=tc(d)}while(c);for(c=0;c<a.ancestors.length;c++){b=a.ancestors[c];var e=nc(a.nativeEvent);d=a.topLevelType;var f=a.nativeEvent,g=a.eventSystemFlags;0===c&&(g|=64);for(var h=null,k=0;k<sa.length;k++){var l=sa[k];l&&(l=l.extractEvents(d,b,f,e,g))&&(h=\nic(h,l))}mc(h)}}function uc(a,b,c){if(!c.has(a)){switch(a){case \"scroll\":vc(b,\"scroll\",!0);break;case \"focus\":case \"blur\":vc(b,\"focus\",!0);vc(b,\"blur\",!0);c.set(\"blur\",null);c.set(\"focus\",null);break;case \"cancel\":case \"close\":oc(a)&&vc(b,a,!0);break;case \"invalid\":case \"submit\":case \"reset\":break;default:-1===ac.indexOf(a)&&F(a,b)}c.set(a,null)}}\nvar wc,xc,yc,zc=!1,Ac=[],Bc=null,Cc=null,Dc=null,Ec=new Map,Fc=new Map,Gc=[],Hc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput close cancel copy cut paste click change contextmenu reset submit\".split(\" \"),Ic=\"focus blur dragenter dragleave mouseover mouseout pointerover pointerout gotpointercapture lostpointercapture\".split(\" \");\nfunction Jc(a,b){var c=cc(b);Hc.forEach(function(a){uc(a,b,c)});Ic.forEach(function(a){uc(a,b,c)})}function Kc(a,b,c,d,e){return{blockedOn:a,topLevelType:b,eventSystemFlags:c|32,nativeEvent:e,container:d}}\nfunction Lc(a,b){switch(a){case \"focus\":case \"blur\":Bc=null;break;case \"dragenter\":case \"dragleave\":Cc=null;break;case \"mouseover\":case \"mouseout\":Dc=null;break;case \"pointerover\":case \"pointerout\":Ec.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Fc.delete(b.pointerId)}}function Mc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a=Kc(b,c,d,e,f),null!==b&&(b=Nc(b),null!==b&&xc(b)),a;a.eventSystemFlags|=d;return a}\nfunction Oc(a,b,c,d,e){switch(b){case \"focus\":return Bc=Mc(Bc,a,b,c,d,e),!0;case \"dragenter\":return Cc=Mc(Cc,a,b,c,d,e),!0;case \"mouseover\":return Dc=Mc(Dc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Ec.set(f,Mc(Ec.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Fc.set(f,Mc(Fc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Pc(a){var b=tc(a.target);if(null!==b){var c=dc(b);if(null!==c)if(b=c.tag,13===b){if(b=ec(c),null!==b){a.blockedOn=b;r.unstable_runWithPriority(a.priority,function(){yc(c)});return}}else if(3===b&&c.stateNode.hydrate){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}function Qc(a){if(null!==a.blockedOn)return!1;var b=Rc(a.topLevelType,a.eventSystemFlags,a.container,a.nativeEvent);if(null!==b){var c=Nc(b);null!==c&&xc(c);a.blockedOn=b;return!1}return!0}\nfunction Sc(a,b,c){Qc(a)&&c.delete(b)}function Tc(){for(zc=!1;0<Ac.length;){var a=Ac[0];if(null!==a.blockedOn){a=Nc(a.blockedOn);null!==a&&wc(a);break}var b=Rc(a.topLevelType,a.eventSystemFlags,a.container,a.nativeEvent);null!==b?a.blockedOn=b:Ac.shift()}null!==Bc&&Qc(Bc)&&(Bc=null);null!==Cc&&Qc(Cc)&&(Cc=null);null!==Dc&&Qc(Dc)&&(Dc=null);Ec.forEach(Sc);Fc.forEach(Sc)}function Uc(a,b){a.blockedOn===b&&(a.blockedOn=null,zc||(zc=!0,r.unstable_scheduleCallback(r.unstable_NormalPriority,Tc)))}\nfunction Vc(a){function b(b){return Uc(b,a)}if(0<Ac.length){Uc(Ac[0],a);for(var c=1;c<Ac.length;c++){var d=Ac[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Bc&&Uc(Bc,a);null!==Cc&&Uc(Cc,a);null!==Dc&&Uc(Dc,a);Ec.forEach(b);Fc.forEach(b);for(c=0;c<Gc.length;c++)d=Gc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Gc.length&&(c=Gc[0],null===c.blockedOn);)Pc(c),null===c.blockedOn&&Gc.shift()}\nvar Wc={},Yc=new Map,Zc=new Map,$c=[\"abort\",\"abort\",Xb,\"animationEnd\",Yb,\"animationIteration\",Zb,\"animationStart\",\"canplay\",\"canPlay\",\"canplaythrough\",\"canPlayThrough\",\"durationchange\",\"durationChange\",\"emptied\",\"emptied\",\"encrypted\",\"encrypted\",\"ended\",\"ended\",\"error\",\"error\",\"gotpointercapture\",\"gotPointerCapture\",\"load\",\"load\",\"loadeddata\",\"loadedData\",\"loadedmetadata\",\"loadedMetadata\",\"loadstart\",\"loadStart\",\"lostpointercapture\",\"lostPointerCapture\",\"playing\",\"playing\",\"progress\",\"progress\",\"seeking\",\n\"seeking\",\"stalled\",\"stalled\",\"suspend\",\"suspend\",\"timeupdate\",\"timeUpdate\",$b,\"transitionEnd\",\"waiting\",\"waiting\"];function ad(a,b){for(var c=0;c<a.length;c+=2){var d=a[c],e=a[c+1],f=\"on\"+(e[0].toUpperCase()+e.slice(1));f={phasedRegistrationNames:{bubbled:f,captured:f+\"Capture\"},dependencies:[d],eventPriority:b};Zc.set(d,b);Yc.set(d,f);Wc[e]=f}}\nad(\"blur blur cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focus focus input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange\".split(\" \"),0);\nad(\"drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel\".split(\" \"),1);ad($c,2);for(var bd=\"change selectionchange textInput compositionstart compositionend compositionupdate\".split(\" \"),cd=0;cd<bd.length;cd++)Zc.set(bd[cd],0);\nvar dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function F(a,b){vc(b,a,!1)}function vc(a,b,c){var d=Zc.get(b);switch(void 0===d?2:d){case 0:d=gd.bind(null,b,1,a);break;case 1:d=hd.bind(null,b,1,a);break;default:d=id.bind(null,b,1,a)}c?a.addEventListener(b,d,!0):a.addEventListener(b,d,!1)}function gd(a,b,c,d){Ja||Ha();var e=id,f=Ja;Ja=!0;try{Ga(e,a,b,c,d)}finally{(Ja=f)||La()}}function hd(a,b,c,d){ed(dd,id.bind(null,a,b,c,d))}\nfunction id(a,b,c,d){if(fd)if(0<Ac.length&&-1<Hc.indexOf(a))a=Kc(null,a,b,c,d),Ac.push(a);else{var e=Rc(a,b,c,d);if(null===e)Lc(a,d);else if(-1<Hc.indexOf(a))a=Kc(e,a,b,c,d),Ac.push(a);else if(!Oc(e,a,b,c,d)){Lc(a,d);a=rc(a,d,null,b);try{Ma(sc,a)}finally{qc(a)}}}}\nfunction Rc(a,b,c,d){c=nc(d);c=tc(c);if(null!==c){var e=dc(c);if(null===e)c=null;else{var f=e.tag;if(13===f){c=ec(e);if(null!==c)return c;c=null}else if(3===f){if(e.stateNode.hydrate)return 3===e.tag?e.stateNode.containerInfo:null;c=null}else e!==c&&(c=null)}}a=rc(a,d,c,b);try{Ma(sc,a)}finally{qc(a)}return null}\nvar jd={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},kd=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(jd).forEach(function(a){kd.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);jd[b]=jd[a]})});function ld(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||jd.hasOwnProperty(a)&&jd[a]?(\"\"+b).trim():b+\"px\"}\nfunction md(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=ld(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var nd=n({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction od(a,b){if(b){if(nd[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(u(137,a,\"\"));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(u(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(u(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(u(62,\"\"));}}\nfunction pd(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var qd=Mb.html;function rd(a,b){a=9===a.nodeType||11===a.nodeType?a:a.ownerDocument;var c=cc(a);b=wa[b];for(var d=0;d<b.length;d++)uc(b[d],a,c)}function sd(){}\nfunction td(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}function ud(a){for(;a&&a.firstChild;)a=a.firstChild;return a}function vd(a,b){var c=ud(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=ud(c)}}\nfunction wd(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?wd(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}function xd(){for(var a=window,b=td();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=td(a.document)}return b}\nfunction yd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}var zd=\"$\",Ad=\"/$\",Bd=\"$?\",Cd=\"$!\",Dd=null,Ed=null;function Fd(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction Gd(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var Hd=\"function\"===typeof setTimeout?setTimeout:void 0,Id=\"function\"===typeof clearTimeout?clearTimeout:void 0;function Jd(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}\nfunction Kd(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(c===zd||c===Cd||c===Bd){if(0===b)return a;b--}else c===Ad&&b++}a=a.previousSibling}return null}var Ld=Math.random().toString(36).slice(2),Md=\"__reactInternalInstance$\"+Ld,Nd=\"__reactEventHandlers$\"+Ld,Od=\"__reactContainere$\"+Ld;\nfunction tc(a){var b=a[Md];if(b)return b;for(var c=a.parentNode;c;){if(b=c[Od]||c[Md]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Kd(a);null!==a;){if(c=a[Md])return c;a=Kd(a)}return b}a=c;c=a.parentNode}return null}function Nc(a){a=a[Md]||a[Od];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function Pd(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(u(33));}function Qd(a){return a[Nd]||null}\nfunction Rd(a){do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction Sd(a,b){var c=a.stateNode;if(!c)return null;var d=la(c);if(!d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==typeof c)throw Error(u(231,\nb,typeof c));return c}function Td(a,b,c){if(b=Sd(a,c.dispatchConfig.phasedRegistrationNames[b]))c._dispatchListeners=ic(c._dispatchListeners,b),c._dispatchInstances=ic(c._dispatchInstances,a)}function Ud(a){if(a&&a.dispatchConfig.phasedRegistrationNames){for(var b=a._targetInst,c=[];b;)c.push(b),b=Rd(b);for(b=c.length;0<b--;)Td(c[b],\"captured\",a);for(b=0;b<c.length;b++)Td(c[b],\"bubbled\",a)}}\nfunction Vd(a,b,c){a&&c&&c.dispatchConfig.registrationName&&(b=Sd(a,c.dispatchConfig.registrationName))&&(c._dispatchListeners=ic(c._dispatchListeners,b),c._dispatchInstances=ic(c._dispatchInstances,a))}function Wd(a){a&&a.dispatchConfig.registrationName&&Vd(a._targetInst,null,a)}function Xd(a){jc(a,Ud)}var Yd=null,Zd=null,$d=null;\nfunction ae(){if($d)return $d;var a,b=Zd,c=b.length,d,e=\"value\"in Yd?Yd.value:Yd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return $d=e.slice(a,1<d?1-d:void 0)}function be(){return!0}function ce(){return!1}\nfunction G(a,b,c,d){this.dispatchConfig=a;this._targetInst=b;this.nativeEvent=c;a=this.constructor.Interface;for(var e in a)a.hasOwnProperty(e)&&((b=a[e])?this[e]=b(c):\"target\"===e?this.target=d:this[e]=c[e]);this.isDefaultPrevented=(null!=c.defaultPrevented?c.defaultPrevented:!1===c.returnValue)?be:ce;this.isPropagationStopped=ce;return this}\nn(G.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&(a.returnValue=!1),this.isDefaultPrevented=be)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=be)},persist:function(){this.isPersistent=be},isPersistent:ce,destructor:function(){var a=this.constructor.Interface,\nb;for(b in a)this[b]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null;this.isPropagationStopped=this.isDefaultPrevented=ce;this._dispatchInstances=this._dispatchListeners=null}});G.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null};\nG.extend=function(a){function b(){}function c(){return d.apply(this,arguments)}var d=this;b.prototype=d.prototype;var e=new b;n(e,c.prototype);c.prototype=e;c.prototype.constructor=c;c.Interface=n({},d.Interface,a);c.extend=d.extend;de(c);return c};de(G);function ee(a,b,c,d){if(this.eventPool.length){var e=this.eventPool.pop();this.call(e,a,b,c,d);return e}return new this(a,b,c,d)}\nfunction fe(a){if(!(a instanceof this))throw Error(u(279));a.destructor();10>this.eventPool.length&&this.eventPool.push(a)}function de(a){a.eventPool=[];a.getPooled=ee;a.release=fe}var ge=G.extend({data:null}),he=G.extend({data:null}),ie=[9,13,27,32],je=ya&&\"CompositionEvent\"in window,ke=null;ya&&\"documentMode\"in document&&(ke=document.documentMode);\nvar le=ya&&\"TextEvent\"in window&&!ke,me=ya&&(!je||ke&&8<ke&&11>=ke),ne=String.fromCharCode(32),oe={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},pe=!1;\nfunction qe(a,b){switch(a){case \"keyup\":return-1!==ie.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"blur\":return!0;default:return!1}}function re(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var se=!1;function te(a,b){switch(a){case \"compositionend\":return re(b);case \"keypress\":if(32!==b.which)return null;pe=!0;return ne;case \"textInput\":return a=b.data,a===ne&&pe?null:a;default:return null}}\nfunction ue(a,b){if(se)return\"compositionend\"===a||!je&&qe(a,b)?(a=ae(),$d=Zd=Yd=null,se=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return me&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar ve={eventTypes:oe,extractEvents:function(a,b,c,d){var e;if(je)b:{switch(a){case \"compositionstart\":var f=oe.compositionStart;break b;case \"compositionend\":f=oe.compositionEnd;break b;case \"compositionupdate\":f=oe.compositionUpdate;break b}f=void 0}else se?qe(a,c)&&(f=oe.compositionEnd):\"keydown\"===a&&229===c.keyCode&&(f=oe.compositionStart);f?(me&&\"ko\"!==c.locale&&(se||f!==oe.compositionStart?f===oe.compositionEnd&&se&&(e=ae()):(Yd=d,Zd=\"value\"in Yd?Yd.value:Yd.textContent,se=!0)),f=ge.getPooled(f,\nb,c,d),e?f.data=e:(e=re(c),null!==e&&(f.data=e)),Xd(f),e=f):e=null;(a=le?te(a,c):ue(a,c))?(b=he.getPooled(oe.beforeInput,b,c,d),b.data=a,Xd(b)):b=null;return null===e?b:null===b?e:[e,b]}},we={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function xe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!we[a.type]:\"textarea\"===b?!0:!1}\nvar ye={change:{phasedRegistrationNames:{bubbled:\"onChange\",captured:\"onChangeCapture\"},dependencies:\"blur change click focus input keydown keyup selectionchange\".split(\" \")}};function ze(a,b,c){a=G.getPooled(ye.change,a,b,c);a.type=\"change\";Da(c);Xd(a);return a}var Ae=null,Be=null;function Ce(a){mc(a)}function De(a){var b=Pd(a);if(yb(b))return a}function Ee(a,b){if(\"change\"===a)return b}var Fe=!1;ya&&(Fe=oc(\"input\")&&(!document.documentMode||9<document.documentMode));\nfunction Ge(){Ae&&(Ae.detachEvent(\"onpropertychange\",He),Be=Ae=null)}function He(a){if(\"value\"===a.propertyName&&De(Be))if(a=ze(Be,a,nc(a)),Ja)mc(a);else{Ja=!0;try{Fa(Ce,a)}finally{Ja=!1,La()}}}function Ie(a,b,c){\"focus\"===a?(Ge(),Ae=b,Be=c,Ae.attachEvent(\"onpropertychange\",He)):\"blur\"===a&&Ge()}function Je(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return De(Be)}function Ke(a,b){if(\"click\"===a)return De(b)}function Le(a,b){if(\"input\"===a||\"change\"===a)return De(b)}\nvar Me={eventTypes:ye,_isInputEventSupported:Fe,extractEvents:function(a,b,c,d){var e=b?Pd(b):window,f=e.nodeName&&e.nodeName.toLowerCase();if(\"select\"===f||\"input\"===f&&\"file\"===e.type)var g=Ee;else if(xe(e))if(Fe)g=Le;else{g=Je;var h=Ie}else(f=e.nodeName)&&\"input\"===f.toLowerCase()&&(\"checkbox\"===e.type||\"radio\"===e.type)&&(g=Ke);if(g&&(g=g(a,b)))return ze(g,c,d);h&&h(a,e,b);\"blur\"===a&&(a=e._wrapperState)&&a.controlled&&\"number\"===e.type&&Db(e,\"number\",e.value)}},Ne=G.extend({view:null,detail:null}),\nOe={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pe(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Oe[a])?!!b[a]:!1}function Qe(){return Pe}\nvar Re=0,Se=0,Te=!1,Ue=!1,Ve=Ne.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:Qe,button:null,buttons:null,relatedTarget:function(a){return a.relatedTarget||(a.fromElement===a.srcElement?a.toElement:a.fromElement)},movementX:function(a){if(\"movementX\"in a)return a.movementX;var b=Re;Re=a.screenX;return Te?\"mousemove\"===a.type?a.screenX-b:0:(Te=!0,0)},movementY:function(a){if(\"movementY\"in a)return a.movementY;\nvar b=Se;Se=a.screenY;return Ue?\"mousemove\"===a.type?a.screenY-b:0:(Ue=!0,0)}}),We=Ve.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),Xe={mouseEnter:{registrationName:\"onMouseEnter\",dependencies:[\"mouseout\",\"mouseover\"]},mouseLeave:{registrationName:\"onMouseLeave\",dependencies:[\"mouseout\",\"mouseover\"]},pointerEnter:{registrationName:\"onPointerEnter\",dependencies:[\"pointerout\",\"pointerover\"]},pointerLeave:{registrationName:\"onPointerLeave\",\ndependencies:[\"pointerout\",\"pointerover\"]}},Ye={eventTypes:Xe,extractEvents:function(a,b,c,d,e){var f=\"mouseover\"===a||\"pointerover\"===a,g=\"mouseout\"===a||\"pointerout\"===a;if(f&&0===(e&32)&&(c.relatedTarget||c.fromElement)||!g&&!f)return null;f=d.window===d?d:(f=d.ownerDocument)?f.defaultView||f.parentWindow:window;if(g){if(g=b,b=(b=c.relatedTarget||c.toElement)?tc(b):null,null!==b){var h=dc(b);if(b!==h||5!==b.tag&&6!==b.tag)b=null}}else g=null;if(g===b)return null;if(\"mouseout\"===a||\"mouseover\"===\na){var k=Ve;var l=Xe.mouseLeave;var m=Xe.mouseEnter;var p=\"mouse\"}else if(\"pointerout\"===a||\"pointerover\"===a)k=We,l=Xe.pointerLeave,m=Xe.pointerEnter,p=\"pointer\";a=null==g?f:Pd(g);f=null==b?f:Pd(b);l=k.getPooled(l,g,c,d);l.type=p+\"leave\";l.target=a;l.relatedTarget=f;c=k.getPooled(m,b,c,d);c.type=p+\"enter\";c.target=f;c.relatedTarget=a;d=g;p=b;if(d&&p)a:{k=d;m=p;g=0;for(a=k;a;a=Rd(a))g++;a=0;for(b=m;b;b=Rd(b))a++;for(;0<g-a;)k=Rd(k),g--;for(;0<a-g;)m=Rd(m),a--;for(;g--;){if(k===m||k===m.alternate)break a;\nk=Rd(k);m=Rd(m)}k=null}else k=null;m=k;for(k=[];d&&d!==m;){g=d.alternate;if(null!==g&&g===m)break;k.push(d);d=Rd(d)}for(d=[];p&&p!==m;){g=p.alternate;if(null!==g&&g===m)break;d.push(p);p=Rd(p)}for(p=0;p<k.length;p++)Vd(k[p],\"bubbled\",l);for(p=d.length;0<p--;)Vd(d[p],\"captured\",c);return 0===(e&64)?[l]:[l,c]}};function Ze(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var $e=\"function\"===typeof Object.is?Object.is:Ze,af=Object.prototype.hasOwnProperty;\nfunction bf(a,b){if($e(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++)if(!af.call(b,c[d])||!$e(a[c[d]],b[c[d]]))return!1;return!0}\nvar cf=ya&&\"documentMode\"in document&&11>=document.documentMode,df={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},ef=null,ff=null,gf=null,hf=!1;\nfunction jf(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(hf||null==ef||ef!==td(c))return null;c=ef;\"selectionStart\"in c&&yd(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return gf&&bf(gf,c)?null:(gf=c,a=G.getPooled(df.select,ff,a,b),a.type=\"select\",a.target=ef,Xd(a),a)}\nvar kf={eventTypes:df,extractEvents:function(a,b,c,d,e,f){e=f||(d.window===d?d.document:9===d.nodeType?d:d.ownerDocument);if(!(f=!e)){a:{e=cc(e);f=wa.onSelect;for(var g=0;g<f.length;g++)if(!e.has(f[g])){e=!1;break a}e=!0}f=!e}if(f)return null;e=b?Pd(b):window;switch(a){case \"focus\":if(xe(e)||\"true\"===e.contentEditable)ef=e,ff=b,gf=null;break;case \"blur\":gf=ff=ef=null;break;case \"mousedown\":hf=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":return hf=!1,jf(c,d);case \"selectionchange\":if(cf)break;\ncase \"keydown\":case \"keyup\":return jf(c,d)}return null}},lf=G.extend({animationName:null,elapsedTime:null,pseudoElement:null}),mf=G.extend({clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),nf=Ne.extend({relatedTarget:null});function of(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}\nvar pf={Esc:\"Escape\",Spacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},qf={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",\n116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},rf=Ne.extend({key:function(a){if(a.key){var b=pf[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=of(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?qf[a.keyCode]||\"Unidentified\":\"\"},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:Qe,charCode:function(a){return\"keypress\"===\na.type?of(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===a.type?of(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),sf=Ve.extend({dataTransfer:null}),tf=Ne.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:Qe}),uf=G.extend({propertyName:null,elapsedTime:null,pseudoElement:null}),vf=Ve.extend({deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in\na?-a.wheelDeltaX:0},deltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:null,deltaMode:null}),wf={eventTypes:Wc,extractEvents:function(a,b,c,d){var e=Yc.get(a);if(!e)return null;switch(a){case \"keypress\":if(0===of(c))return null;case \"keydown\":case \"keyup\":a=rf;break;case \"blur\":case \"focus\":a=nf;break;case \"click\":if(2===c.button)return null;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":a=\nVe;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":a=sf;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":a=tf;break;case Xb:case Yb:case Zb:a=lf;break;case $b:a=uf;break;case \"scroll\":a=Ne;break;case \"wheel\":a=vf;break;case \"copy\":case \"cut\":case \"paste\":a=mf;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":a=\nWe;break;default:a=G}b=a.getPooled(e,b,c,d);Xd(b);return b}};if(pa)throw Error(u(101));pa=Array.prototype.slice.call(\"ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin\".split(\" \"));ra();var xf=Nc;la=Qd;ma=xf;na=Pd;xa({SimpleEventPlugin:wf,EnterLeaveEventPlugin:Ye,ChangeEventPlugin:Me,SelectEventPlugin:kf,BeforeInputEventPlugin:ve});var yf=[],zf=-1;function H(a){0>zf||(a.current=yf[zf],yf[zf]=null,zf--)}\nfunction I(a,b){zf++;yf[zf]=a.current;a.current=b}var Af={},J={current:Af},K={current:!1},Bf=Af;function Cf(a,b){var c=a.type.contextTypes;if(!c)return Af;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function L(a){a=a.childContextTypes;return null!==a&&void 0!==a}\nfunction Df(){H(K);H(J)}function Ef(a,b,c){if(J.current!==Af)throw Error(u(168));I(J,b);I(K,c)}function Ff(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(u(108,pb(b)||\"Unknown\",e));return n({},c,{},d)}function Gf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Af;Bf=J.current;I(J,a);I(K,K.current);return!0}\nfunction Hf(a,b,c){var d=a.stateNode;if(!d)throw Error(u(169));c?(a=Ff(a,b,Bf),d.__reactInternalMemoizedMergedChildContext=a,H(K),H(J),I(J,a)):H(K);I(K,c)}\nvar If=r.unstable_runWithPriority,Jf=r.unstable_scheduleCallback,Kf=r.unstable_cancelCallback,Lf=r.unstable_requestPaint,Mf=r.unstable_now,Nf=r.unstable_getCurrentPriorityLevel,Of=r.unstable_ImmediatePriority,Pf=r.unstable_UserBlockingPriority,Qf=r.unstable_NormalPriority,Rf=r.unstable_LowPriority,Sf=r.unstable_IdlePriority,Tf={},Uf=r.unstable_shouldYield,Vf=void 0!==Lf?Lf:function(){},Wf=null,Xf=null,Yf=!1,Zf=Mf(),$f=1E4>Zf?Mf:function(){return Mf()-Zf};\nfunction ag(){switch(Nf()){case Of:return 99;case Pf:return 98;case Qf:return 97;case Rf:return 96;case Sf:return 95;default:throw Error(u(332));}}function bg(a){switch(a){case 99:return Of;case 98:return Pf;case 97:return Qf;case 96:return Rf;case 95:return Sf;default:throw Error(u(332));}}function cg(a,b){a=bg(a);return If(a,b)}function dg(a,b,c){a=bg(a);return Jf(a,b,c)}function eg(a){null===Wf?(Wf=[a],Xf=Jf(Of,fg)):Wf.push(a);return Tf}function gg(){if(null!==Xf){var a=Xf;Xf=null;Kf(a)}fg()}\nfunction fg(){if(!Yf&&null!==Wf){Yf=!0;var a=0;try{var b=Wf;cg(99,function(){for(;a<b.length;a++){var c=b[a];do c=c(!0);while(null!==c)}});Wf=null}catch(c){throw null!==Wf&&(Wf=Wf.slice(a+1)),Jf(Of,gg),c;}finally{Yf=!1}}}function hg(a,b,c){c/=10;return 1073741821-(((1073741821-a+b/10)/c|0)+1)*c}function ig(a,b){if(a&&a.defaultProps){b=n({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c])}return b}var jg={current:null},kg=null,lg=null,mg=null;function ng(){mg=lg=kg=null}\nfunction og(a){var b=jg.current;H(jg);a.type._context._currentValue=b}function pg(a,b){for(;null!==a;){var c=a.alternate;if(a.childExpirationTime<b)a.childExpirationTime=b,null!==c&&c.childExpirationTime<b&&(c.childExpirationTime=b);else if(null!==c&&c.childExpirationTime<b)c.childExpirationTime=b;else break;a=a.return}}function qg(a,b){kg=a;mg=lg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(a.expirationTime>=b&&(rg=!0),a.firstContext=null)}\nfunction sg(a,b){if(mg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)mg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===lg){if(null===kg)throw Error(u(308));lg=b;kg.dependencies={expirationTime:0,firstContext:b,responders:null}}else lg=lg.next=b}return a._currentValue}var tg=!1;function ug(a){a.updateQueue={baseState:a.memoizedState,baseQueue:null,shared:{pending:null},effects:null}}\nfunction vg(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,baseQueue:a.baseQueue,shared:a.shared,effects:a.effects})}function wg(a,b){a={expirationTime:a,suspenseConfig:b,tag:0,payload:null,callback:null,next:null};return a.next=a}function xg(a,b){a=a.updateQueue;if(null!==a){a=a.shared;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}}\nfunction yg(a,b){var c=a.alternate;null!==c&&vg(c,a);a=a.updateQueue;c=a.baseQueue;null===c?(a.baseQueue=b.next=b,b.next=b):(b.next=c.next,c.next=b)}\nfunction zg(a,b,c,d){var e=a.updateQueue;tg=!1;var f=e.baseQueue,g=e.shared.pending;if(null!==g){if(null!==f){var h=f.next;f.next=g.next;g.next=h}f=g;e.shared.pending=null;h=a.alternate;null!==h&&(h=h.updateQueue,null!==h&&(h.baseQueue=g))}if(null!==f){h=f.next;var k=e.baseState,l=0,m=null,p=null,x=null;if(null!==h){var z=h;do{g=z.expirationTime;if(g<d){var ca={expirationTime:z.expirationTime,suspenseConfig:z.suspenseConfig,tag:z.tag,payload:z.payload,callback:z.callback,next:null};null===x?(p=x=\nca,m=k):x=x.next=ca;g>l&&(l=g)}else{null!==x&&(x=x.next={expirationTime:1073741823,suspenseConfig:z.suspenseConfig,tag:z.tag,payload:z.payload,callback:z.callback,next:null});Ag(g,z.suspenseConfig);a:{var D=a,t=z;g=b;ca=c;switch(t.tag){case 1:D=t.payload;if(\"function\"===typeof D){k=D.call(ca,k,g);break a}k=D;break a;case 3:D.effectTag=D.effectTag&-4097|64;case 0:D=t.payload;g=\"function\"===typeof D?D.call(ca,k,g):D;if(null===g||void 0===g)break a;k=n({},k,g);break a;case 2:tg=!0}}null!==z.callback&&\n(a.effectTag|=32,g=e.effects,null===g?e.effects=[z]:g.push(z))}z=z.next;if(null===z||z===h)if(g=e.shared.pending,null===g)break;else z=f.next=g.next,g.next=h,e.baseQueue=f=g,e.shared.pending=null}while(1)}null===x?m=k:x.next=p;e.baseState=m;e.baseQueue=x;Bg(l);a.expirationTime=l;a.memoizedState=k}}\nfunction Cg(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=e;e=c;if(\"function\"!==typeof d)throw Error(u(191,d));d.call(e)}}}var Dg=Wa.ReactCurrentBatchConfig,Eg=(new aa.Component).refs;function Fg(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:n({},b,c);a.memoizedState=c;0===a.expirationTime&&(a.updateQueue.baseState=c)}\nvar Jg={isMounted:function(a){return(a=a._reactInternalFiber)?dc(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternalFiber;var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e=wg(d,e);e.payload=b;void 0!==c&&null!==c&&(e.callback=c);xg(a,e);Ig(a,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternalFiber;var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e=wg(d,e);e.tag=1;e.payload=b;void 0!==c&&null!==c&&(e.callback=c);xg(a,e);Ig(a,d)},enqueueForceUpdate:function(a,b){a=a._reactInternalFiber;var c=Gg(),d=Dg.suspense;\nc=Hg(c,a,d);d=wg(c,d);d.tag=2;void 0!==b&&null!==b&&(d.callback=b);xg(a,d);Ig(a,c)}};function Kg(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!bf(c,d)||!bf(e,f):!0}\nfunction Lg(a,b,c){var d=!1,e=Af;var f=b.contextType;\"object\"===typeof f&&null!==f?f=sg(f):(e=L(b)?Bf:J.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Cf(a,e):Af);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Jg;a.stateNode=b;b._reactInternalFiber=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Mg(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Jg.enqueueReplaceState(b,b.state,null)}\nfunction Ng(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=Eg;ug(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=sg(f):(f=L(b)?Bf:J.current,e.context=Cf(a,f));zg(a,c,e,d);e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Fg(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||\n(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Jg.enqueueReplaceState(e,e.state,null),zg(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.effectTag|=4)}var Og=Array.isArray;\nfunction Pg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(u(309));var d=c.stateNode}if(!d)throw Error(u(147,a));var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===Eg&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}if(\"string\"!==typeof a)throw Error(u(284));if(!c._owner)throw Error(u(290,a));}return a}\nfunction Qg(a,b){if(\"textarea\"!==a.type)throw Error(u(31,\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b,\"\"));}\nfunction Rg(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.effectTag=8}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Sg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.effectTag=\n2,c):d;b.effectTag=2;return c}function g(b){a&&null===b.alternate&&(b.effectTag=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Tg(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){if(null!==b&&b.elementType===c.type)return d=e(b,c.props),d.ref=Pg(a,b,c),d.return=a,d;d=Ug(c.type,c.key,c.props,null,a.mode,d);d.ref=Pg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||b.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==\nc.implementation)return b=Vg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Wg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function p(a,b,c){if(\"string\"===typeof b||\"number\"===typeof b)return b=Tg(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case Za:return c=Ug(b.type,b.key,b.props,null,a.mode,c),c.ref=Pg(a,null,b),c.return=a,c;case $a:return b=Vg(b,a.mode,c),b.return=a,b}if(Og(b)||\nnb(b))return b=Wg(b,a.mode,c,null),b.return=a,b;Qg(a,b)}return null}function x(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case Za:return c.key===e?c.type===ab?m(a,b,c.props.children,d,e):k(a,b,c,d):null;case $a:return c.key===e?l(a,b,c,d):null}if(Og(c)||nb(c))return null!==e?null:m(a,b,c,d,null);Qg(a,c)}return null}function z(a,b,c,d,e){if(\"string\"===typeof d||\"number\"===typeof d)return a=\na.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case Za:return a=a.get(null===d.key?c:d.key)||null,d.type===ab?m(b,a,d.props.children,e,d.key):k(b,a,d,e);case $a:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e)}if(Og(d)||nb(d))return a=a.get(c)||null,m(b,a,d,e,null);Qg(b,d)}return null}function ca(e,g,h,k){for(var l=null,t=null,m=g,y=g=0,A=null;null!==m&&y<h.length;y++){m.index>y?(A=m,m=null):A=m.sibling;var q=x(e,m,h[y],k);if(null===q){null===m&&(m=A);break}a&&\nm&&null===q.alternate&&b(e,m);g=f(q,g,y);null===t?l=q:t.sibling=q;t=q;m=A}if(y===h.length)return c(e,m),l;if(null===m){for(;y<h.length;y++)m=p(e,h[y],k),null!==m&&(g=f(m,g,y),null===t?l=m:t.sibling=m,t=m);return l}for(m=d(e,m);y<h.length;y++)A=z(m,e,y,h[y],k),null!==A&&(a&&null!==A.alternate&&m.delete(null===A.key?y:A.key),g=f(A,g,y),null===t?l=A:t.sibling=A,t=A);a&&m.forEach(function(a){return b(e,a)});return l}function D(e,g,h,l){var k=nb(h);if(\"function\"!==typeof k)throw Error(u(150));h=k.call(h);\nif(null==h)throw Error(u(151));for(var m=k=null,t=g,y=g=0,A=null,q=h.next();null!==t&&!q.done;y++,q=h.next()){t.index>y?(A=t,t=null):A=t.sibling;var D=x(e,t,q.value,l);if(null===D){null===t&&(t=A);break}a&&t&&null===D.alternate&&b(e,t);g=f(D,g,y);null===m?k=D:m.sibling=D;m=D;t=A}if(q.done)return c(e,t),k;if(null===t){for(;!q.done;y++,q=h.next())q=p(e,q.value,l),null!==q&&(g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);return k}for(t=d(e,t);!q.done;y++,q=h.next())q=z(t,e,y,q.value,l),null!==q&&(a&&null!==\nq.alternate&&t.delete(null===q.key?y:q.key),g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);a&&t.forEach(function(a){return b(e,a)});return k}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ab&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Za:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ab){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,\nk.sibling);d=e(k,f.props);d.ref=Pg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ab?(d=Wg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Ug(f.type,f.key,f.props,null,a.mode,h),h.ref=Pg(a,d,f),h.return=a,a=h)}return g(a);case $a:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=\nd.sibling}d=Vg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Tg(f,a.mode,h),d.return=a,a=d),g(a);if(Og(f))return ca(a,d,f,h);if(nb(f))return D(a,d,f,h);l&&Qg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:throw a=a.type,Error(u(152,a.displayName||a.name||\"Component\"));}return c(a,d)}}var Xg=Rg(!0),Yg=Rg(!1),Zg={},$g={current:Zg},ah={current:Zg},bh={current:Zg};\nfunction ch(a){if(a===Zg)throw Error(u(174));return a}function dh(a,b){I(bh,b);I(ah,a);I($g,Zg);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:Ob(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=Ob(b,a)}H($g);I($g,b)}function eh(){H($g);H(ah);H(bh)}function fh(a){ch(bh.current);var b=ch($g.current);var c=Ob(b,a.type);b!==c&&(I(ah,a),I($g,c))}function gh(a){ah.current===a&&(H($g),H(ah))}var M={current:0};\nfunction hh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||c.data===Bd||c.data===Cd))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.effectTag&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}function ih(a,b){return{responder:a,props:b}}\nvar jh=Wa.ReactCurrentDispatcher,kh=Wa.ReactCurrentBatchConfig,lh=0,N=null,O=null,P=null,mh=!1;function Q(){throw Error(u(321));}function nh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!$e(a[c],b[c]))return!1;return!0}\nfunction oh(a,b,c,d,e,f){lh=f;N=b;b.memoizedState=null;b.updateQueue=null;b.expirationTime=0;jh.current=null===a||null===a.memoizedState?ph:qh;a=c(d,e);if(b.expirationTime===lh){f=0;do{b.expirationTime=0;if(!(25>f))throw Error(u(301));f+=1;P=O=null;b.updateQueue=null;jh.current=rh;a=c(d,e)}while(b.expirationTime===lh)}jh.current=sh;b=null!==O&&null!==O.next;lh=0;P=O=N=null;mh=!1;if(b)throw Error(u(300));return a}\nfunction th(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function uh(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(u(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}\nfunction vh(a,b){return\"function\"===typeof b?b(a):b}\nfunction wh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=O,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.expirationTime;if(l<lh){var m={expirationTime:k.expirationTime,suspenseConfig:k.suspenseConfig,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null};null===h?(g=h=m,f=d):h=h.next=m;l>N.expirationTime&&\n(N.expirationTime=l,Bg(l))}else null!==h&&(h=h.next={expirationTime:1073741823,suspenseConfig:k.suspenseConfig,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),Ag(l,k.suspenseConfig),d=k.eagerReducer===a?k.eagerState:a(d,k.action);k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;$e(d,b.memoizedState)||(rg=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction xh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);$e(f,b.memoizedState)||(rg=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction yh(a){var b=th();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={pending:null,dispatch:null,lastRenderedReducer:vh,lastRenderedState:a};a=a.dispatch=zh.bind(null,N,a);return[b.memoizedState,a]}function Ah(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null},N.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}\nfunction Bh(){return uh().memoizedState}function Ch(a,b,c,d){var e=th();N.effectTag|=a;e.memoizedState=Ah(1|b,c,void 0,void 0===d?null:d)}function Dh(a,b,c,d){var e=uh();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&nh(d,g.deps)){Ah(b,c,f,d);return}}N.effectTag|=a;e.memoizedState=Ah(1|b,c,f,d)}function Eh(a,b){return Ch(516,4,a,b)}function Fh(a,b){return Dh(516,4,a,b)}function Gh(a,b){return Dh(4,2,a,b)}\nfunction Hh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function Ih(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Dh(4,2,Hh.bind(null,b,a),c)}function Jh(){}function Kh(a,b){th().memoizedState=[a,void 0===b?null:b];return a}function Lh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Mh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Nh(a,b,c){var d=ag();cg(98>d?98:d,function(){a(!0)});cg(97<d?97:d,function(){var d=kh.suspense;kh.suspense=void 0===b?null:b;try{a(!1),c()}finally{kh.suspense=d}})}\nfunction zh(a,b,c){var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e={expirationTime:d,suspenseConfig:e,action:c,eagerReducer:null,eagerState:null,next:null};var f=b.pending;null===f?e.next=e:(e.next=f.next,f.next=e);b.pending=e;f=a.alternate;if(a===N||null!==f&&f===N)mh=!0,e.expirationTime=lh,N.expirationTime=lh;else{if(0===a.expirationTime&&(null===f||0===f.expirationTime)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.eagerReducer=f;e.eagerState=h;if($e(h,g))return}catch(k){}finally{}Ig(a,\nd)}}\nvar sh={readContext:sg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useResponder:Q,useDeferredValue:Q,useTransition:Q},ph={readContext:sg,useCallback:Kh,useContext:sg,useEffect:Eh,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Ch(4,2,Hh.bind(null,b,a),c)},useLayoutEffect:function(a,b){return Ch(4,2,a,b)},useMemo:function(a,b){var c=th();b=void 0===b?null:b;a=a();c.memoizedState=[a,\nb];return a},useReducer:function(a,b,c){var d=th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={pending:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=zh.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=th();a={current:a};return b.memoizedState=a},useState:yh,useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=yh(a),d=c[0],e=c[1];Eh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=\nc}},[a,b]);return d},useTransition:function(a){var b=yh(!1),c=b[0];b=b[1];return[Kh(Nh.bind(null,b,a),[b,a]),c]}},qh={readContext:sg,useCallback:Lh,useContext:sg,useEffect:Fh,useImperativeHandle:Ih,useLayoutEffect:Gh,useMemo:Mh,useReducer:wh,useRef:Bh,useState:function(){return wh(vh)},useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=wh(vh),d=c[0],e=c[1];Fh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=c}},[a,b]);return d},useTransition:function(a){var b=\nwh(vh),c=b[0];b=b[1];return[Lh(Nh.bind(null,b,a),[b,a]),c]}},rh={readContext:sg,useCallback:Lh,useContext:sg,useEffect:Fh,useImperativeHandle:Ih,useLayoutEffect:Gh,useMemo:Mh,useReducer:xh,useRef:Bh,useState:function(){return xh(vh)},useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=xh(vh),d=c[0],e=c[1];Fh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=c}},[a,b]);return d},useTransition:function(a){var b=xh(vh),c=b[0];b=b[1];return[Lh(Nh.bind(null,\nb,a),[b,a]),c]}},Oh=null,Ph=null,Qh=!1;function Rh(a,b){var c=Sh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}\nfunction Th(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction Uh(a){if(Qh){var b=Ph;if(b){var c=b;if(!Th(a,b)){b=Jd(c.nextSibling);if(!b||!Th(a,b)){a.effectTag=a.effectTag&-1025|2;Qh=!1;Oh=a;return}Rh(Oh,c)}Oh=a;Ph=Jd(b.firstChild)}else a.effectTag=a.effectTag&-1025|2,Qh=!1,Oh=a}}function Vh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;Oh=a}\nfunction Wh(a){if(a!==Oh)return!1;if(!Qh)return Vh(a),Qh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!Gd(b,a.memoizedProps))for(b=Ph;b;)Rh(a,b),b=Jd(b.nextSibling);Vh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(u(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(c===Ad){if(0===b){Ph=Jd(a.nextSibling);break a}b--}else c!==zd&&c!==Cd&&c!==Bd||b++}a=a.nextSibling}Ph=null}}else Ph=Oh?Jd(a.stateNode.nextSibling):null;return!0}\nfunction Xh(){Ph=Oh=null;Qh=!1}var Yh=Wa.ReactCurrentOwner,rg=!1;function R(a,b,c,d){b.child=null===a?Yg(b,null,c,d):Xg(b,a.child,c,d)}function Zh(a,b,c,d,e){c=c.render;var f=b.ref;qg(b,e);d=oh(a,b,c,d,f,e);if(null!==a&&!rg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),$h(a,b,e);b.effectTag|=1;R(a,b,d,e);return b.child}\nfunction ai(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!bi(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,ci(a,b,g,d,e,f);a=Ug(c.type,null,d,null,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(e<f&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:bf,c(e,d)&&a.ref===b.ref))return $h(a,b,f);b.effectTag|=1;a=Sg(g,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction ci(a,b,c,d,e,f){return null!==a&&bf(a.memoizedProps,d)&&a.ref===b.ref&&(rg=!1,e<f)?(b.expirationTime=a.expirationTime,$h(a,b,f)):di(a,b,c,d,f)}function ei(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.effectTag|=128}function di(a,b,c,d,e){var f=L(c)?Bf:J.current;f=Cf(b,f);qg(b,e);c=oh(a,b,c,d,f,e);if(null!==a&&!rg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),$h(a,b,e);b.effectTag|=1;R(a,b,c,e);return b.child}\nfunction fi(a,b,c,d,e){if(L(c)){var f=!0;Gf(b)}else f=!1;qg(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),Lg(b,c,d),Ng(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=sg(l):(l=L(c)?Bf:J.current,l=Cf(b,l));var m=c.getDerivedStateFromProps,p=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;p||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Mg(b,g,d,l);tg=!1;var x=b.memoizedState;g.state=x;zg(b,d,g,e);k=b.memoizedState;h!==d||x!==k||K.current||tg?(\"function\"===typeof m&&(Fg(b,c,m,d),k=b.memoizedState),(h=tg||Kg(b,c,h,d,x,k,l))?(p||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===\ntypeof g.componentDidMount&&(b.effectTag|=4)):(\"function\"===typeof g.componentDidMount&&(b.effectTag|=4),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.effectTag|=4),d=!1)}else g=b.stateNode,vg(a,b),h=b.memoizedProps,g.props=b.type===b.elementType?h:ig(b.type,h),k=g.context,l=c.contextType,\"object\"===typeof l&&null!==l?l=sg(l):(l=L(c)?Bf:J.current,l=Cf(b,l)),m=c.getDerivedStateFromProps,(p=\"function\"===typeof m||\"function\"===\ntypeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Mg(b,g,d,l),tg=!1,k=b.memoizedState,g.state=k,zg(b,d,g,e),x=b.memoizedState,h!==d||k!==x||K.current||tg?(\"function\"===typeof m&&(Fg(b,c,m,d),x=b.memoizedState),(m=tg||Kg(b,c,h,d,k,x,l))?(p||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,\nx,l),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,x,l)),\"function\"===typeof g.componentDidUpdate&&(b.effectTag|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.effectTag|=256)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=256),b.memoizedProps=d,b.memoizedState=x),g.props=d,g.state=x,g.context=l,d=m):\n(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=256),d=!1);return gi(a,b,c,d,f,e)}\nfunction gi(a,b,c,d,e,f){ei(a,b);var g=0!==(b.effectTag&64);if(!d&&!g)return e&&Hf(b,c,!1),$h(a,b,f);d=b.stateNode;Yh.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.effectTag|=1;null!==a&&g?(b.child=Xg(b,a.child,null,f),b.child=Xg(b,null,h,f)):R(a,b,h,f);b.memoizedState=d.state;e&&Hf(b,c,!0);return b.child}function hi(a){var b=a.stateNode;b.pendingContext?Ef(a,b.pendingContext,b.pendingContext!==b.context):b.context&&Ef(a,b.context,!1);dh(a,b.containerInfo)}\nvar ii={dehydrated:null,retryTime:0};\nfunction ji(a,b,c){var d=b.mode,e=b.pendingProps,f=M.current,g=!1,h;(h=0!==(b.effectTag&64))||(h=0!==(f&2)&&(null===a||null!==a.memoizedState));h?(g=!0,b.effectTag&=-65):null!==a&&null===a.memoizedState||void 0===e.fallback||!0===e.unstable_avoidThisFallback||(f|=1);I(M,f&1);if(null===a){void 0!==e.fallback&&Uh(b);if(g){g=e.fallback;e=Wg(null,d,0,null);e.return=b;if(0===(b.mode&2))for(a=null!==b.memoizedState?b.child.child:b.child,e.child=a;null!==a;)a.return=e,a=a.sibling;c=Wg(g,d,c,null);c.return=\nb;e.sibling=c;b.memoizedState=ii;b.child=e;return c}d=e.children;b.memoizedState=null;return b.child=Yg(b,null,d,c)}if(null!==a.memoizedState){a=a.child;d=a.sibling;if(g){e=e.fallback;c=Sg(a,a.pendingProps);c.return=b;if(0===(b.mode&2)&&(g=null!==b.memoizedState?b.child.child:b.child,g!==a.child))for(c.child=g;null!==g;)g.return=c,g=g.sibling;d=Sg(d,e);d.return=b;c.sibling=d;c.childExpirationTime=0;b.memoizedState=ii;b.child=c;return d}c=Xg(b,a.child,e.children,c);b.memoizedState=null;return b.child=\nc}a=a.child;if(g){g=e.fallback;e=Wg(null,d,0,null);e.return=b;e.child=a;null!==a&&(a.return=e);if(0===(b.mode&2))for(a=null!==b.memoizedState?b.child.child:b.child,e.child=a;null!==a;)a.return=e,a=a.sibling;c=Wg(g,d,c,null);c.return=b;e.sibling=c;c.effectTag|=2;e.childExpirationTime=0;b.memoizedState=ii;b.child=e;return c}b.memoizedState=null;return b.child=Xg(b,a,e.children,c)}\nfunction ki(a,b){a.expirationTime<b&&(a.expirationTime=b);var c=a.alternate;null!==c&&c.expirationTime<b&&(c.expirationTime=b);pg(a.return,b)}function li(a,b,c,d,e,f){var g=a.memoizedState;null===g?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailExpiration:0,tailMode:e,lastEffect:f}:(g.isBackwards=b,g.rendering=null,g.renderingStartTime=0,g.last=d,g.tail=c,g.tailExpiration=0,g.tailMode=e,g.lastEffect=f)}\nfunction mi(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;R(a,b,d.children,c);d=M.current;if(0!==(d&2))d=d&1|2,b.effectTag|=64;else{if(null!==a&&0!==(a.effectTag&64))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&ki(a,c);else if(19===a.tag)ki(a,c);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}I(M,d);if(0===(b.mode&2))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===hh(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);li(b,!1,e,c,f,b.lastEffect);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===hh(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}li(b,!0,c,null,f,b.lastEffect);break;case \"together\":li(b,!1,null,null,void 0,b.lastEffect);break;default:b.memoizedState=null}return b.child}\nfunction $h(a,b,c){null!==a&&(b.dependencies=a.dependencies);var d=b.expirationTime;0!==d&&Bg(d);if(b.childExpirationTime<c)return null;if(null!==a&&b.child!==a.child)throw Error(u(153));if(null!==b.child){a=b.child;c=Sg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Sg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}var ni,oi,pi,qi;\nni=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};oi=function(){};\npi=function(a,b,c,d,e){var f=a.memoizedProps;if(f!==d){var g=b.stateNode;ch($g.current);a=null;switch(c){case \"input\":f=zb(g,f);d=zb(g,d);a=[];break;case \"option\":f=Gb(g,f);d=Gb(g,d);a=[];break;case \"select\":f=n({},f,{value:void 0});d=n({},d,{value:void 0});a=[];break;case \"textarea\":f=Ib(g,f);d=Ib(g,d);a=[];break;default:\"function\"!==typeof f.onClick&&\"function\"===typeof d.onClick&&(g.onclick=sd)}od(c,d);var h,k;c=null;for(h in f)if(!d.hasOwnProperty(h)&&f.hasOwnProperty(h)&&null!=f[h])if(\"style\"===\nh)for(k in g=f[h],g)g.hasOwnProperty(k)&&(c||(c={}),c[k]=\"\");else\"dangerouslySetInnerHTML\"!==h&&\"children\"!==h&&\"suppressContentEditableWarning\"!==h&&\"suppressHydrationWarning\"!==h&&\"autoFocus\"!==h&&(va.hasOwnProperty(h)?a||(a=[]):(a=a||[]).push(h,null));for(h in d){var l=d[h];g=null!=f?f[h]:void 0;if(d.hasOwnProperty(h)&&l!==g&&(null!=l||null!=g))if(\"style\"===h)if(g){for(k in g)!g.hasOwnProperty(k)||l&&l.hasOwnProperty(k)||(c||(c={}),c[k]=\"\");for(k in l)l.hasOwnProperty(k)&&g[k]!==l[k]&&(c||(c={}),\nc[k]=l[k])}else c||(a||(a=[]),a.push(h,c)),c=l;else\"dangerouslySetInnerHTML\"===h?(l=l?l.__html:void 0,g=g?g.__html:void 0,null!=l&&g!==l&&(a=a||[]).push(h,l)):\"children\"===h?g===l||\"string\"!==typeof l&&\"number\"!==typeof l||(a=a||[]).push(h,\"\"+l):\"suppressContentEditableWarning\"!==h&&\"suppressHydrationWarning\"!==h&&(va.hasOwnProperty(h)?(null!=l&&rd(e,h),a||g===l||(a=[])):(a=a||[]).push(h,l))}c&&(a=a||[]).push(\"style\",c);e=a;if(b.updateQueue=e)b.effectTag|=4}};\nqi=function(a,b,c,d){c!==d&&(b.effectTag|=4)};function ri(a,b){switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction si(a,b,c){var d=b.pendingProps;switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return L(b.type)&&Df(),null;case 3:return eh(),H(K),H(J),c=b.stateNode,c.pendingContext&&(c.context=c.pendingContext,c.pendingContext=null),null!==a&&null!==a.child||!Wh(b)||(b.effectTag|=4),oi(b),null;case 5:gh(b);c=ch(bh.current);var e=b.type;if(null!==a&&null!=b.stateNode)pi(a,b,e,d,c),a.ref!==b.ref&&(b.effectTag|=128);else{if(!d){if(null===b.stateNode)throw Error(u(166));\nreturn null}a=ch($g.current);if(Wh(b)){d=b.stateNode;e=b.type;var f=b.memoizedProps;d[Md]=b;d[Nd]=f;switch(e){case \"iframe\":case \"object\":case \"embed\":F(\"load\",d);break;case \"video\":case \"audio\":for(a=0;a<ac.length;a++)F(ac[a],d);break;case \"source\":F(\"error\",d);break;case \"img\":case \"image\":case \"link\":F(\"error\",d);F(\"load\",d);break;case \"form\":F(\"reset\",d);F(\"submit\",d);break;case \"details\":F(\"toggle\",d);break;case \"input\":Ab(d,f);F(\"invalid\",d);rd(c,\"onChange\");break;case \"select\":d._wrapperState=\n{wasMultiple:!!f.multiple};F(\"invalid\",d);rd(c,\"onChange\");break;case \"textarea\":Jb(d,f),F(\"invalid\",d),rd(c,\"onChange\")}od(e,f);a=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(a=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(a=[\"children\",\"\"+h]):va.hasOwnProperty(g)&&null!=h&&rd(c,g)}switch(e){case \"input\":xb(d);Eb(d,f,!0);break;case \"textarea\":xb(d);Lb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&\n(d.onclick=sd)}c=a;b.updateQueue=c;null!==c&&(b.effectTag|=4)}else{g=9===c.nodeType?c:c.ownerDocument;a===qd&&(a=Nb(e));a===qd?\"script\"===e?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(e,{is:d.is}):(a=g.createElement(e),\"select\"===e&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,e);a[Md]=b;a[Nd]=d;ni(a,b,!1,!1);b.stateNode=a;g=pd(e,d);switch(e){case \"iframe\":case \"object\":case \"embed\":F(\"load\",\na);h=d;break;case \"video\":case \"audio\":for(h=0;h<ac.length;h++)F(ac[h],a);h=d;break;case \"source\":F(\"error\",a);h=d;break;case \"img\":case \"image\":case \"link\":F(\"error\",a);F(\"load\",a);h=d;break;case \"form\":F(\"reset\",a);F(\"submit\",a);h=d;break;case \"details\":F(\"toggle\",a);h=d;break;case \"input\":Ab(a,d);h=zb(a,d);F(\"invalid\",a);rd(c,\"onChange\");break;case \"option\":h=Gb(a,d);break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};h=n({},d,{value:void 0});F(\"invalid\",a);rd(c,\"onChange\");break;case \"textarea\":Jb(a,\nd);h=Ib(a,d);F(\"invalid\",a);rd(c,\"onChange\");break;default:h=d}od(e,h);var k=h;for(f in k)if(k.hasOwnProperty(f)){var l=k[f];\"style\"===f?md(a,l):\"dangerouslySetInnerHTML\"===f?(l=l?l.__html:void 0,null!=l&&Qb(a,l)):\"children\"===f?\"string\"===typeof l?(\"textarea\"!==e||\"\"!==l)&&Rb(a,l):\"number\"===typeof l&&Rb(a,\"\"+l):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(va.hasOwnProperty(f)?null!=l&&rd(c,f):null!=l&&Xa(a,f,l,g))}switch(e){case \"input\":xb(a);Eb(a,d,!1);\nbreak;case \"textarea\":xb(a);Lb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+rb(d.value));break;case \"select\":a.multiple=!!d.multiple;c=d.value;null!=c?Hb(a,!!d.multiple,c,!1):null!=d.defaultValue&&Hb(a,!!d.multiple,d.defaultValue,!0);break;default:\"function\"===typeof h.onClick&&(a.onclick=sd)}Fd(e,d)&&(b.effectTag|=4)}null!==b.ref&&(b.effectTag|=128)}return null;case 6:if(a&&null!=b.stateNode)qi(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(u(166));\nc=ch(bh.current);ch($g.current);Wh(b)?(c=b.stateNode,d=b.memoizedProps,c[Md]=b,c.nodeValue!==d&&(b.effectTag|=4)):(c=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),c[Md]=b,b.stateNode=c)}return null;case 13:H(M);d=b.memoizedState;if(0!==(b.effectTag&64))return b.expirationTime=c,b;c=null!==d;d=!1;null===a?void 0!==b.memoizedProps.fallback&&Wh(b):(e=a.memoizedState,d=null!==e,c||null===e||(e=a.child.sibling,null!==e&&(f=b.firstEffect,null!==f?(b.firstEffect=e,e.nextEffect=f):(b.firstEffect=b.lastEffect=\ne,e.nextEffect=null),e.effectTag=8)));if(c&&!d&&0!==(b.mode&2))if(null===a&&!0!==b.memoizedProps.unstable_avoidThisFallback||0!==(M.current&1))S===ti&&(S=ui);else{if(S===ti||S===ui)S=vi;0!==wi&&null!==T&&(xi(T,U),yi(T,wi))}if(c||d)b.effectTag|=4;return null;case 4:return eh(),oi(b),null;case 10:return og(b),null;case 17:return L(b.type)&&Df(),null;case 19:H(M);d=b.memoizedState;if(null===d)return null;e=0!==(b.effectTag&64);f=d.rendering;if(null===f)if(e)ri(d,!1);else{if(S!==ti||null!==a&&0!==(a.effectTag&\n64))for(f=b.child;null!==f;){a=hh(f);if(null!==a){b.effectTag|=64;ri(d,!1);e=a.updateQueue;null!==e&&(b.updateQueue=e,b.effectTag|=4);null===d.lastEffect&&(b.firstEffect=null);b.lastEffect=d.lastEffect;for(d=b.child;null!==d;)e=d,f=c,e.effectTag&=2,e.nextEffect=null,e.firstEffect=null,e.lastEffect=null,a=e.alternate,null===a?(e.childExpirationTime=0,e.expirationTime=f,e.child=null,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null):(e.childExpirationTime=a.childExpirationTime,\ne.expirationTime=a.expirationTime,e.child=a.child,e.memoizedProps=a.memoizedProps,e.memoizedState=a.memoizedState,e.updateQueue=a.updateQueue,f=a.dependencies,e.dependencies=null===f?null:{expirationTime:f.expirationTime,firstContext:f.firstContext,responders:f.responders}),d=d.sibling;I(M,M.current&1|2);return b.child}f=f.sibling}}else{if(!e)if(a=hh(f),null!==a){if(b.effectTag|=64,e=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.effectTag|=4),ri(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!f.alternate)return b=\nb.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*$f()-d.renderingStartTime>d.tailExpiration&&1<c&&(b.effectTag|=64,e=!0,ri(d,!1),b.expirationTime=b.childExpirationTime=c-1);d.isBackwards?(f.sibling=b.child,b.child=f):(c=d.last,null!==c?c.sibling=f:b.child=f,d.last=f)}return null!==d.tail?(0===d.tailExpiration&&(d.tailExpiration=$f()+500),c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=$f(),c.sibling=null,b=M.current,I(M,e?b&1|2:b&1),c):null}throw Error(u(156,\nb.tag));}function zi(a){switch(a.tag){case 1:L(a.type)&&Df();var b=a.effectTag;return b&4096?(a.effectTag=b&-4097|64,a):null;case 3:eh();H(K);H(J);b=a.effectTag;if(0!==(b&64))throw Error(u(285));a.effectTag=b&-4097|64;return a;case 5:return gh(a),null;case 13:return H(M),b=a.effectTag,b&4096?(a.effectTag=b&-4097|64,a):null;case 19:return H(M),null;case 4:return eh(),null;case 10:return og(a),null;default:return null}}function Ai(a,b){return{value:a,source:b,stack:qb(b)}}\nvar Bi=\"function\"===typeof WeakSet?WeakSet:Set;function Ci(a,b){var c=b.source,d=b.stack;null===d&&null!==c&&(d=qb(c));null!==c&&pb(c.type);b=b.value;null!==a&&1===a.tag&&pb(a.type);try{console.error(b)}catch(e){setTimeout(function(){throw e;})}}function Di(a,b){try{b.props=a.memoizedProps,b.state=a.memoizedState,b.componentWillUnmount()}catch(c){Ei(a,c)}}function Fi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Ei(a,c)}else b.current=null}\nfunction Gi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.effectTag&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:ig(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:case 5:case 6:case 4:case 17:return}throw Error(u(163));}\nfunction Hi(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.destroy;c.destroy=void 0;void 0!==d&&d()}c=c.next}while(c!==b)}}function Ii(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}\nfunction Ji(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:Ii(3,c);return;case 1:a=c.stateNode;if(c.effectTag&4)if(null===b)a.componentDidMount();else{var d=c.elementType===c.type?b.memoizedProps:ig(c.type,b.memoizedProps);a.componentDidUpdate(d,b.memoizedState,a.__reactInternalSnapshotBeforeUpdate)}b=c.updateQueue;null!==b&&Cg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Cg(c,b,a)}return;\ncase 5:a=c.stateNode;null===b&&c.effectTag&4&&Fd(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Vc(c))));return;case 19:case 17:case 20:case 21:return}throw Error(u(163));}\nfunction Ki(a,b,c){\"function\"===typeof Li&&Li(b);switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var d=a.next;cg(97<c?97:c,function(){var a=d;do{var c=a.destroy;if(void 0!==c){var g=b;try{c()}catch(h){Ei(g,h)}}a=a.next}while(a!==d)})}break;case 1:Fi(b);c=b.stateNode;\"function\"===typeof c.componentWillUnmount&&Di(b,c);break;case 5:Fi(b);break;case 4:Mi(a,b,c)}}\nfunction Ni(a){var b=a.alternate;a.return=null;a.child=null;a.memoizedState=null;a.updateQueue=null;a.dependencies=null;a.alternate=null;a.firstEffect=null;a.lastEffect=null;a.pendingProps=null;a.memoizedProps=null;a.stateNode=null;null!==b&&Ni(b)}function Oi(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Pi(a){a:{for(var b=a.return;null!==b;){if(Oi(b)){var c=b;break a}b=b.return}throw Error(u(160));}b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(u(161));}c.effectTag&16&&(Rb(b,\"\"),c.effectTag&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||Oi(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.effectTag&2)continue b;\nif(null===c.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.effectTag&2)){c=c.stateNode;break a}}d?Qi(a,c,b):Ri(a,c,b)}\nfunction Qi(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=sd));else if(4!==d&&(a=a.child,null!==a))for(Qi(a,b,c),a=a.sibling;null!==a;)Qi(a,b,c),a=a.sibling}\nfunction Ri(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Ri(a,b,c),a=a.sibling;null!==a;)Ri(a,b,c),a=a.sibling}\nfunction Mi(a,b,c){for(var d=b,e=!1,f,g;;){if(!e){e=d.return;a:for(;;){if(null===e)throw Error(u(160));f=e.stateNode;switch(e.tag){case 5:g=!1;break a;case 3:f=f.containerInfo;g=!0;break a;case 4:f=f.containerInfo;g=!0;break a}e=e.return}e=!0}if(5===d.tag||6===d.tag){a:for(var h=a,k=d,l=c,m=k;;)if(Ki(h,m,l),null!==m.child&&4!==m.tag)m.child.return=m,m=m.child;else{if(m===k)break a;for(;null===m.sibling;){if(null===m.return||m.return===k)break a;m=m.return}m.sibling.return=m.return;m=m.sibling}g?(h=\nf,k=d.stateNode,8===h.nodeType?h.parentNode.removeChild(k):h.removeChild(k)):f.removeChild(d.stateNode)}else if(4===d.tag){if(null!==d.child){f=d.stateNode.containerInfo;g=!0;d.child.return=d;d=d.child;continue}}else if(Ki(a,d,c),null!==d.child){d.child.return=d;d=d.child;continue}if(d===b)break;for(;null===d.sibling;){if(null===d.return||d.return===b)return;d=d.return;4===d.tag&&(e=!1)}d.sibling.return=d.return;d=d.sibling}}\nfunction Si(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:Hi(3,b);return;case 1:return;case 5:var c=b.stateNode;if(null!=c){var d=b.memoizedProps,e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[Nd]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&Bb(c,d);pd(a,e);b=pd(a,d);for(e=0;e<f.length;e+=2){var g=f[e],h=f[e+1];\"style\"===g?md(c,h):\"dangerouslySetInnerHTML\"===g?Qb(c,h):\"children\"===g?Rb(c,h):Xa(c,g,h,b)}switch(a){case \"input\":Cb(c,d);break;\ncase \"textarea\":Kb(c,d);break;case \"select\":b=c._wrapperState.wasMultiple,c._wrapperState.wasMultiple=!!d.multiple,a=d.value,null!=a?Hb(c,!!d.multiple,a,!1):b!==!!d.multiple&&(null!=d.defaultValue?Hb(c,!!d.multiple,d.defaultValue,!0):Hb(c,!!d.multiple,d.multiple?[]:\"\",!1))}}}return;case 6:if(null===b.stateNode)throw Error(u(162));b.stateNode.nodeValue=b.memoizedProps;return;case 3:b=b.stateNode;b.hydrate&&(b.hydrate=!1,Vc(b.containerInfo));return;case 12:return;case 13:c=b;null===b.memoizedState?\nd=!1:(d=!0,c=b.child,Ti=$f());if(null!==c)a:for(a=c;;){if(5===a.tag)f=a.stateNode,d?(f=f.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(f=a.stateNode,e=a.memoizedProps.style,e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null,f.style.display=ld(\"display\",e));else if(6===a.tag)a.stateNode.nodeValue=d?\"\":a.memoizedProps;else if(13===a.tag&&null!==a.memoizedState&&null===a.memoizedState.dehydrated){f=a.child.sibling;f.return=a;a=\nf;continue}else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===c)break;for(;null===a.sibling;){if(null===a.return||a.return===c)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}Ui(b);return;case 19:Ui(b);return;case 17:return}throw Error(u(163));}function Ui(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Bi);b.forEach(function(b){var d=Vi.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nvar Wi=\"function\"===typeof WeakMap?WeakMap:Map;function Xi(a,b,c){c=wg(c,null);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Yi||(Yi=!0,Zi=d);Ci(a,b)};return c}\nfunction $i(a,b,c){c=wg(c,null);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ci(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===aj?aj=new Set([this]):aj.add(this),Ci(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nvar bj=Math.ceil,cj=Wa.ReactCurrentDispatcher,dj=Wa.ReactCurrentOwner,V=0,ej=8,fj=16,gj=32,ti=0,hj=1,ij=2,ui=3,vi=4,jj=5,W=V,T=null,X=null,U=0,S=ti,kj=null,lj=1073741823,mj=1073741823,nj=null,wi=0,oj=!1,Ti=0,pj=500,Y=null,Yi=!1,Zi=null,aj=null,qj=!1,rj=null,sj=90,tj=null,uj=0,vj=null,wj=0;function Gg(){return(W&(fj|gj))!==V?1073741821-($f()/10|0):0!==wj?wj:wj=1073741821-($f()/10|0)}\nfunction Hg(a,b,c){b=b.mode;if(0===(b&2))return 1073741823;var d=ag();if(0===(b&4))return 99===d?1073741823:1073741822;if((W&fj)!==V)return U;if(null!==c)a=hg(a,c.timeoutMs|0||5E3,250);else switch(d){case 99:a=1073741823;break;case 98:a=hg(a,150,100);break;case 97:case 96:a=hg(a,5E3,250);break;case 95:a=2;break;default:throw Error(u(326));}null!==T&&a===U&&--a;return a}\nfunction Ig(a,b){if(50<uj)throw uj=0,vj=null,Error(u(185));a=xj(a,b);if(null!==a){var c=ag();1073741823===b?(W&ej)!==V&&(W&(fj|gj))===V?yj(a):(Z(a),W===V&&gg()):Z(a);(W&4)===V||98!==c&&99!==c||(null===tj?tj=new Map([[a,b]]):(c=tj.get(a),(void 0===c||c>b)&&tj.set(a,b)))}}\nfunction xj(a,b){a.expirationTime<b&&(a.expirationTime=b);var c=a.alternate;null!==c&&c.expirationTime<b&&(c.expirationTime=b);var d=a.return,e=null;if(null===d&&3===a.tag)e=a.stateNode;else for(;null!==d;){c=d.alternate;d.childExpirationTime<b&&(d.childExpirationTime=b);null!==c&&c.childExpirationTime<b&&(c.childExpirationTime=b);if(null===d.return&&3===d.tag){e=d.stateNode;break}d=d.return}null!==e&&(T===e&&(Bg(b),S===vi&&xi(e,U)),yi(e,b));return e}\nfunction zj(a){var b=a.lastExpiredTime;if(0!==b)return b;b=a.firstPendingTime;if(!Aj(a,b))return b;var c=a.lastPingedTime;a=a.nextKnownPendingLevel;a=c>a?c:a;return 2>=a&&b!==a?0:a}\nfunction Z(a){if(0!==a.lastExpiredTime)a.callbackExpirationTime=1073741823,a.callbackPriority=99,a.callbackNode=eg(yj.bind(null,a));else{var b=zj(a),c=a.callbackNode;if(0===b)null!==c&&(a.callbackNode=null,a.callbackExpirationTime=0,a.callbackPriority=90);else{var d=Gg();1073741823===b?d=99:1===b||2===b?d=95:(d=10*(1073741821-b)-10*(1073741821-d),d=0>=d?99:250>=d?98:5250>=d?97:95);if(null!==c){var e=a.callbackPriority;if(a.callbackExpirationTime===b&&e>=d)return;c!==Tf&&Kf(c)}a.callbackExpirationTime=\nb;a.callbackPriority=d;b=1073741823===b?eg(yj.bind(null,a)):dg(d,Bj.bind(null,a),{timeout:10*(1073741821-b)-$f()});a.callbackNode=b}}}\nfunction Bj(a,b){wj=0;if(b)return b=Gg(),Cj(a,b),Z(a),null;var c=zj(a);if(0!==c){b=a.callbackNode;if((W&(fj|gj))!==V)throw Error(u(327));Dj();a===T&&c===U||Ej(a,c);if(null!==X){var d=W;W|=fj;var e=Fj();do try{Gj();break}catch(h){Hj(a,h)}while(1);ng();W=d;cj.current=e;if(S===hj)throw b=kj,Ej(a,c),xi(a,c),Z(a),b;if(null===X)switch(e=a.finishedWork=a.current.alternate,a.finishedExpirationTime=c,d=S,T=null,d){case ti:case hj:throw Error(u(345));case ij:Cj(a,2<c?2:c);break;case ui:xi(a,c);d=a.lastSuspendedTime;\nc===d&&(a.nextKnownPendingLevel=Ij(e));if(1073741823===lj&&(e=Ti+pj-$f(),10<e)){if(oj){var f=a.lastPingedTime;if(0===f||f>=c){a.lastPingedTime=c;Ej(a,c);break}}f=zj(a);if(0!==f&&f!==c)break;if(0!==d&&d!==c){a.lastPingedTime=d;break}a.timeoutHandle=Hd(Jj.bind(null,a),e);break}Jj(a);break;case vi:xi(a,c);d=a.lastSuspendedTime;c===d&&(a.nextKnownPendingLevel=Ij(e));if(oj&&(e=a.lastPingedTime,0===e||e>=c)){a.lastPingedTime=c;Ej(a,c);break}e=zj(a);if(0!==e&&e!==c)break;if(0!==d&&d!==c){a.lastPingedTime=\nd;break}1073741823!==mj?d=10*(1073741821-mj)-$f():1073741823===lj?d=0:(d=10*(1073741821-lj)-5E3,e=$f(),c=10*(1073741821-c)-e,d=e-d,0>d&&(d=0),d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*bj(d/1960))-d,c<d&&(d=c));if(10<d){a.timeoutHandle=Hd(Jj.bind(null,a),d);break}Jj(a);break;case jj:if(1073741823!==lj&&null!==nj){f=lj;var g=nj;d=g.busyMinDurationMs|0;0>=d?d=0:(e=g.busyDelayMs|0,f=$f()-(10*(1073741821-f)-(g.timeoutMs|0||5E3)),d=f<=e?0:e+d-f);if(10<d){xi(a,c);a.timeoutHandle=\nHd(Jj.bind(null,a),d);break}}Jj(a);break;default:throw Error(u(329));}Z(a);if(a.callbackNode===b)return Bj.bind(null,a)}}return null}\nfunction yj(a){var b=a.lastExpiredTime;b=0!==b?b:1073741823;if((W&(fj|gj))!==V)throw Error(u(327));Dj();a===T&&b===U||Ej(a,b);if(null!==X){var c=W;W|=fj;var d=Fj();do try{Kj();break}catch(e){Hj(a,e)}while(1);ng();W=c;cj.current=d;if(S===hj)throw c=kj,Ej(a,b),xi(a,b),Z(a),c;if(null!==X)throw Error(u(261));a.finishedWork=a.current.alternate;a.finishedExpirationTime=b;T=null;Jj(a);Z(a)}return null}function Lj(){if(null!==tj){var a=tj;tj=null;a.forEach(function(a,c){Cj(c,a);Z(c)});gg()}}\nfunction Mj(a,b){var c=W;W|=1;try{return a(b)}finally{W=c,W===V&&gg()}}function Nj(a,b){var c=W;W&=-2;W|=ej;try{return a(b)}finally{W=c,W===V&&gg()}}\nfunction Ej(a,b){a.finishedWork=null;a.finishedExpirationTime=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Id(c));if(null!==X)for(c=X.return;null!==c;){var d=c;switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&Df();break;case 3:eh();H(K);H(J);break;case 5:gh(d);break;case 4:eh();break;case 13:H(M);break;case 19:H(M);break;case 10:og(d)}c=c.return}T=a;X=Sg(a.current,null);U=b;S=ti;kj=null;mj=lj=1073741823;nj=null;wi=0;oj=!1}\nfunction Hj(a,b){do{try{ng();jh.current=sh;if(mh)for(var c=N.memoizedState;null!==c;){var d=c.queue;null!==d&&(d.pending=null);c=c.next}lh=0;P=O=N=null;mh=!1;if(null===X||null===X.return)return S=hj,kj=b,X=null;a:{var e=a,f=X.return,g=X,h=b;b=U;g.effectTag|=2048;g.firstEffect=g.lastEffect=null;if(null!==h&&\"object\"===typeof h&&\"function\"===typeof h.then){var k=h;if(0===(g.mode&2)){var l=g.alternate;l?(g.updateQueue=l.updateQueue,g.memoizedState=l.memoizedState,g.expirationTime=l.expirationTime):(g.updateQueue=\nnull,g.memoizedState=null)}var m=0!==(M.current&1),p=f;do{var x;if(x=13===p.tag){var z=p.memoizedState;if(null!==z)x=null!==z.dehydrated?!0:!1;else{var ca=p.memoizedProps;x=void 0===ca.fallback?!1:!0!==ca.unstable_avoidThisFallback?!0:m?!1:!0}}if(x){var D=p.updateQueue;if(null===D){var t=new Set;t.add(k);p.updateQueue=t}else D.add(k);if(0===(p.mode&2)){p.effectTag|=64;g.effectTag&=-2981;if(1===g.tag)if(null===g.alternate)g.tag=17;else{var y=wg(1073741823,null);y.tag=2;xg(g,y)}g.expirationTime=1073741823;\nbreak a}h=void 0;g=b;var A=e.pingCache;null===A?(A=e.pingCache=new Wi,h=new Set,A.set(k,h)):(h=A.get(k),void 0===h&&(h=new Set,A.set(k,h)));if(!h.has(g)){h.add(g);var q=Oj.bind(null,e,k,g);k.then(q,q)}p.effectTag|=4096;p.expirationTime=b;break a}p=p.return}while(null!==p);h=Error((pb(g.type)||\"A React component\")+\" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\"+qb(g))}S!==\njj&&(S=ij);h=Ai(h,g);p=f;do{switch(p.tag){case 3:k=h;p.effectTag|=4096;p.expirationTime=b;var B=Xi(p,k,b);yg(p,B);break a;case 1:k=h;var w=p.type,ub=p.stateNode;if(0===(p.effectTag&64)&&(\"function\"===typeof w.getDerivedStateFromError||null!==ub&&\"function\"===typeof ub.componentDidCatch&&(null===aj||!aj.has(ub)))){p.effectTag|=4096;p.expirationTime=b;var vb=$i(p,k,b);yg(p,vb);break a}}p=p.return}while(null!==p)}X=Pj(X)}catch(Xc){b=Xc;continue}break}while(1)}\nfunction Fj(){var a=cj.current;cj.current=sh;return null===a?sh:a}function Ag(a,b){a<lj&&2<a&&(lj=a);null!==b&&a<mj&&2<a&&(mj=a,nj=b)}function Bg(a){a>wi&&(wi=a)}function Kj(){for(;null!==X;)X=Qj(X)}function Gj(){for(;null!==X&&!Uf();)X=Qj(X)}function Qj(a){var b=Rj(a.alternate,a,U);a.memoizedProps=a.pendingProps;null===b&&(b=Pj(a));dj.current=null;return b}\nfunction Pj(a){X=a;do{var b=X.alternate;a=X.return;if(0===(X.effectTag&2048)){b=si(b,X,U);if(1===U||1!==X.childExpirationTime){for(var c=0,d=X.child;null!==d;){var e=d.expirationTime,f=d.childExpirationTime;e>c&&(c=e);f>c&&(c=f);d=d.sibling}X.childExpirationTime=c}if(null!==b)return b;null!==a&&0===(a.effectTag&2048)&&(null===a.firstEffect&&(a.firstEffect=X.firstEffect),null!==X.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=X.firstEffect),a.lastEffect=X.lastEffect),1<X.effectTag&&(null!==\na.lastEffect?a.lastEffect.nextEffect=X:a.firstEffect=X,a.lastEffect=X))}else{b=zi(X);if(null!==b)return b.effectTag&=2047,b;null!==a&&(a.firstEffect=a.lastEffect=null,a.effectTag|=2048)}b=X.sibling;if(null!==b)return b;X=a}while(null!==X);S===ti&&(S=jj);return null}function Ij(a){var b=a.expirationTime;a=a.childExpirationTime;return b>a?b:a}function Jj(a){var b=ag();cg(99,Sj.bind(null,a,b));return null}\nfunction Sj(a,b){do Dj();while(null!==rj);if((W&(fj|gj))!==V)throw Error(u(327));var c=a.finishedWork,d=a.finishedExpirationTime;if(null===c)return null;a.finishedWork=null;a.finishedExpirationTime=0;if(c===a.current)throw Error(u(177));a.callbackNode=null;a.callbackExpirationTime=0;a.callbackPriority=90;a.nextKnownPendingLevel=0;var e=Ij(c);a.firstPendingTime=e;d<=a.lastSuspendedTime?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:d<=a.firstSuspendedTime&&(a.firstSuspendedTime=\nd-1);d<=a.lastPingedTime&&(a.lastPingedTime=0);d<=a.lastExpiredTime&&(a.lastExpiredTime=0);a===T&&(X=T=null,U=0);1<c.effectTag?null!==c.lastEffect?(c.lastEffect.nextEffect=c,e=c.firstEffect):e=c:e=c.firstEffect;if(null!==e){var f=W;W|=gj;dj.current=null;Dd=fd;var g=xd();if(yd(g)){if(\"selectionStart\"in g)var h={start:g.selectionStart,end:g.selectionEnd};else a:{h=(h=g.ownerDocument)&&h.defaultView||window;var k=h.getSelection&&h.getSelection();if(k&&0!==k.rangeCount){h=k.anchorNode;var l=k.anchorOffset,\nm=k.focusNode;k=k.focusOffset;try{h.nodeType,m.nodeType}catch(wb){h=null;break a}var p=0,x=-1,z=-1,ca=0,D=0,t=g,y=null;b:for(;;){for(var A;;){t!==h||0!==l&&3!==t.nodeType||(x=p+l);t!==m||0!==k&&3!==t.nodeType||(z=p+k);3===t.nodeType&&(p+=t.nodeValue.length);if(null===(A=t.firstChild))break;y=t;t=A}for(;;){if(t===g)break b;y===h&&++ca===l&&(x=p);y===m&&++D===k&&(z=p);if(null!==(A=t.nextSibling))break;t=y;y=t.parentNode}t=A}h=-1===x||-1===z?null:{start:x,end:z}}else h=null}h=h||{start:0,end:0}}else h=\nnull;Ed={activeElementDetached:null,focusedElem:g,selectionRange:h};fd=!1;Y=e;do try{Tj()}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);Y=e;do try{for(g=a,h=b;null!==Y;){var q=Y.effectTag;q&16&&Rb(Y.stateNode,\"\");if(q&128){var B=Y.alternate;if(null!==B){var w=B.ref;null!==w&&(\"function\"===typeof w?w(null):w.current=null)}}switch(q&1038){case 2:Pi(Y);Y.effectTag&=-3;break;case 6:Pi(Y);Y.effectTag&=-3;Si(Y.alternate,Y);break;case 1024:Y.effectTag&=-1025;break;case 1028:Y.effectTag&=\n-1025;Si(Y.alternate,Y);break;case 4:Si(Y.alternate,Y);break;case 8:l=Y,Mi(g,l,h),Ni(l)}Y=Y.nextEffect}}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);w=Ed;B=xd();q=w.focusedElem;h=w.selectionRange;if(B!==q&&q&&q.ownerDocument&&wd(q.ownerDocument.documentElement,q)){null!==h&&yd(q)&&(B=h.start,w=h.end,void 0===w&&(w=B),\"selectionStart\"in q?(q.selectionStart=B,q.selectionEnd=Math.min(w,q.value.length)):(w=(B=q.ownerDocument||document)&&B.defaultView||window,w.getSelection&&\n(w=w.getSelection(),l=q.textContent.length,g=Math.min(h.start,l),h=void 0===h.end?g:Math.min(h.end,l),!w.extend&&g>h&&(l=h,h=g,g=l),l=vd(q,g),m=vd(q,h),l&&m&&(1!==w.rangeCount||w.anchorNode!==l.node||w.anchorOffset!==l.offset||w.focusNode!==m.node||w.focusOffset!==m.offset)&&(B=B.createRange(),B.setStart(l.node,l.offset),w.removeAllRanges(),g>h?(w.addRange(B),w.extend(m.node,m.offset)):(B.setEnd(m.node,m.offset),w.addRange(B))))));B=[];for(w=q;w=w.parentNode;)1===w.nodeType&&B.push({element:w,left:w.scrollLeft,\ntop:w.scrollTop});\"function\"===typeof q.focus&&q.focus();for(q=0;q<B.length;q++)w=B[q],w.element.scrollLeft=w.left,w.element.scrollTop=w.top}fd=!!Dd;Ed=Dd=null;a.current=c;Y=e;do try{for(q=a;null!==Y;){var ub=Y.effectTag;ub&36&&Ji(q,Y.alternate,Y);if(ub&128){B=void 0;var vb=Y.ref;if(null!==vb){var Xc=Y.stateNode;switch(Y.tag){case 5:B=Xc;break;default:B=Xc}\"function\"===typeof vb?vb(B):vb.current=B}}Y=Y.nextEffect}}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);Y=\nnull;Vf();W=f}else a.current=c;if(qj)qj=!1,rj=a,sj=b;else for(Y=e;null!==Y;)b=Y.nextEffect,Y.nextEffect=null,Y=b;b=a.firstPendingTime;0===b&&(aj=null);1073741823===b?a===vj?uj++:(uj=0,vj=a):uj=0;\"function\"===typeof Uj&&Uj(c.stateNode,d);Z(a);if(Yi)throw Yi=!1,a=Zi,Zi=null,a;if((W&ej)!==V)return null;gg();return null}function Tj(){for(;null!==Y;){var a=Y.effectTag;0!==(a&256)&&Gi(Y.alternate,Y);0===(a&512)||qj||(qj=!0,dg(97,function(){Dj();return null}));Y=Y.nextEffect}}\nfunction Dj(){if(90!==sj){var a=97<sj?97:sj;sj=90;return cg(a,Vj)}}function Vj(){if(null===rj)return!1;var a=rj;rj=null;if((W&(fj|gj))!==V)throw Error(u(331));var b=W;W|=gj;for(a=a.current.firstEffect;null!==a;){try{var c=a;if(0!==(c.effectTag&512))switch(c.tag){case 0:case 11:case 15:case 22:Hi(5,c),Ii(5,c)}}catch(d){if(null===a)throw Error(u(330));Ei(a,d)}c=a.nextEffect;a.nextEffect=null;a=c}W=b;gg();return!0}\nfunction Wj(a,b,c){b=Ai(c,b);b=Xi(a,b,1073741823);xg(a,b);a=xj(a,1073741823);null!==a&&Z(a)}function Ei(a,b){if(3===a.tag)Wj(a,a,b);else for(var c=a.return;null!==c;){if(3===c.tag){Wj(c,a,b);break}else if(1===c.tag){var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===aj||!aj.has(d))){a=Ai(b,a);a=$i(c,a,1073741823);xg(c,a);c=xj(c,1073741823);null!==c&&Z(c);break}}c=c.return}}\nfunction Oj(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);T===a&&U===c?S===vi||S===ui&&1073741823===lj&&$f()-Ti<pj?Ej(a,U):oj=!0:Aj(a,c)&&(b=a.lastPingedTime,0!==b&&b<c||(a.lastPingedTime=c,Z(a)))}function Vi(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=Gg(),b=Hg(b,a,null));a=xj(a,b);null!==a&&Z(a)}var Rj;\nRj=function(a,b,c){var d=b.expirationTime;if(null!==a){var e=b.pendingProps;if(a.memoizedProps!==e||K.current)rg=!0;else{if(d<c){rg=!1;switch(b.tag){case 3:hi(b);Xh();break;case 5:fh(b);if(b.mode&4&&1!==c&&e.hidden)return b.expirationTime=b.childExpirationTime=1,null;break;case 1:L(b.type)&&Gf(b);break;case 4:dh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;e=b.type._context;I(jg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){d=b.child.childExpirationTime;\nif(0!==d&&d>=c)return ji(a,b,c);I(M,M.current&1);b=$h(a,b,c);return null!==b?b.sibling:null}I(M,M.current&1);break;case 19:d=b.childExpirationTime>=c;if(0!==(a.effectTag&64)){if(d)return mi(a,b,c);b.effectTag|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null);I(M,M.current);if(!d)return null}return $h(a,b,c)}rg=!1}}else rg=!1;b.expirationTime=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;e=Cf(b,J.current);qg(b,c);e=oh(null,\nb,d,a,e,c);b.effectTag|=1;if(\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(L(d)){var f=!0;Gf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;ug(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Fg(b,d,g,a);e.updater=Jg;b.stateNode=e;e._reactInternalFiber=b;Ng(b,d,a,c);b=gi(null,b,d,!0,f,c)}else b.tag=0,R(null,b,e,c),b=b.child;return b;case 16:a:{e=b.elementType;null!==a&&(a.alternate=\nnull,b.alternate=null,b.effectTag|=2);a=b.pendingProps;ob(e);if(1!==e._status)throw e._result;e=e._result;b.type=e;f=b.tag=Xj(e);a=ig(e,a);switch(f){case 0:b=di(null,b,e,a,c);break a;case 1:b=fi(null,b,e,a,c);break a;case 11:b=Zh(null,b,e,a,c);break a;case 14:b=ai(null,b,e,ig(e.type,a),d,c);break a}throw Error(u(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),di(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),fi(a,b,d,e,c);\ncase 3:hi(b);d=b.updateQueue;if(null===a||null===d)throw Error(u(282));d=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;vg(a,b);zg(b,d,null,c);d=b.memoizedState.element;if(d===e)Xh(),b=$h(a,b,c);else{if(e=b.stateNode.hydrate)Ph=Jd(b.stateNode.containerInfo.firstChild),Oh=b,e=Qh=!0;if(e)for(c=Yg(b,null,d,c),b.child=c;c;)c.effectTag=c.effectTag&-3|1024,c=c.sibling;else R(a,b,d,c),Xh();b=b.child}return b;case 5:return fh(b),null===a&&Uh(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:\nnull,g=e.children,Gd(d,e)?g=null:null!==f&&Gd(d,f)&&(b.effectTag|=16),ei(a,b),b.mode&4&&1!==c&&e.hidden?(b.expirationTime=b.childExpirationTime=1,b=null):(R(a,b,g,c),b=b.child),b;case 6:return null===a&&Uh(b),null;case 13:return ji(a,b,c);case 4:return dh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Xg(b,null,d,c):R(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),Zh(a,b,d,e,c);case 7:return R(a,b,b.pendingProps,c),b.child;case 8:return R(a,\nb,b.pendingProps.children,c),b.child;case 12:return R(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;var h=b.type._context;I(jg,h._currentValue);h._currentValue=f;if(null!==g)if(h=g.value,f=$e(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0,0===f){if(g.children===e.children&&!K.current){b=$h(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==\nk){g=h.child;for(var l=k.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=wg(c,null),l.tag=2,xg(h,l));h.expirationTime<c&&(h.expirationTime=c);l=h.alternate;null!==l&&l.expirationTime<c&&(l.expirationTime=c);pg(h.return,c);k.expirationTime<c&&(k.expirationTime=c);break}l=l.next}}else g=10===h.tag?h.type===b.type?null:h.child:h.child;if(null!==g)g.return=h;else for(g=h;null!==g;){if(g===b){g=null;break}h=g.sibling;if(null!==h){h.return=g.return;g=h;break}g=g.return}h=\ng}R(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,f=b.pendingProps,d=f.children,qg(b,c),e=sg(e,f.unstable_observedBits),d=d(e),b.effectTag|=1,R(a,b,d,c),b.child;case 14:return e=b.type,f=ig(e,b.pendingProps),f=ig(e.type,f),ai(a,b,e,f,d,c);case 15:return ci(a,b,b.type,b.pendingProps,d,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),b.tag=1,L(d)?(a=!0,Gf(b)):a=!1,qg(b,c),Lg(b,d,e),Ng(b,d,e,c),gi(null,\nb,d,!0,a,c);case 19:return mi(a,b,c)}throw Error(u(156,b.tag));};var Uj=null,Li=null;function Yj(a){if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)return!0;try{var c=b.inject(a);Uj=function(a){try{b.onCommitFiberRoot(c,a,void 0,64===(a.current.effectTag&64))}catch(e){}};Li=function(a){try{b.onCommitFiberUnmount(c,a)}catch(e){}}}catch(d){}return!0}\nfunction Zj(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.effectTag=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childExpirationTime=this.expirationTime=0;this.alternate=null}function Sh(a,b,c,d){return new Zj(a,b,c,d)}\nfunction bi(a){a=a.prototype;return!(!a||!a.isReactComponent)}function Xj(a){if(\"function\"===typeof a)return bi(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===gb)return 11;if(a===jb)return 14}return 2}\nfunction Sg(a,b){var c=a.alternate;null===c?(c=Sh(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.effectTag=0,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null);c.childExpirationTime=a.childExpirationTime;c.expirationTime=a.expirationTime;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{expirationTime:b.expirationTime,\nfirstContext:b.firstContext,responders:b.responders};c.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Ug(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bi(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ab:return Wg(c.children,e,f,b);case fb:g=8;e|=7;break;case bb:g=8;e|=1;break;case cb:return a=Sh(12,c,b,e|8),a.elementType=cb,a.type=cb,a.expirationTime=f,a;case hb:return a=Sh(13,c,b,e),a.type=hb,a.elementType=hb,a.expirationTime=f,a;case ib:return a=Sh(19,c,b,e),a.elementType=ib,a.expirationTime=f,a;default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case db:g=\n10;break a;case eb:g=9;break a;case gb:g=11;break a;case jb:g=14;break a;case kb:g=16;d=null;break a;case lb:g=22;break a}throw Error(u(130,null==a?a:typeof a,\"\"));}b=Sh(g,c,b,e);b.elementType=a;b.type=d;b.expirationTime=f;return b}function Wg(a,b,c,d){a=Sh(7,a,d,b);a.expirationTime=c;return a}function Tg(a,b,c){a=Sh(6,a,null,b);a.expirationTime=c;return a}\nfunction Vg(a,b,c){b=Sh(4,null!==a.children?a.children:[],a.key,b);b.expirationTime=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction ak(a,b,c){this.tag=b;this.current=null;this.containerInfo=a;this.pingCache=this.pendingChildren=null;this.finishedExpirationTime=0;this.finishedWork=null;this.timeoutHandle=-1;this.pendingContext=this.context=null;this.hydrate=c;this.callbackNode=null;this.callbackPriority=90;this.lastExpiredTime=this.lastPingedTime=this.nextKnownPendingLevel=this.lastSuspendedTime=this.firstSuspendedTime=this.firstPendingTime=0}\nfunction Aj(a,b){var c=a.firstSuspendedTime;a=a.lastSuspendedTime;return 0!==c&&c>=b&&a<=b}function xi(a,b){var c=a.firstSuspendedTime,d=a.lastSuspendedTime;c<b&&(a.firstSuspendedTime=b);if(d>b||0===c)a.lastSuspendedTime=b;b<=a.lastPingedTime&&(a.lastPingedTime=0);b<=a.lastExpiredTime&&(a.lastExpiredTime=0)}\nfunction yi(a,b){b>a.firstPendingTime&&(a.firstPendingTime=b);var c=a.firstSuspendedTime;0!==c&&(b>=c?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:b>=a.lastSuspendedTime&&(a.lastSuspendedTime=b+1),b>a.nextKnownPendingLevel&&(a.nextKnownPendingLevel=b))}function Cj(a,b){var c=a.lastExpiredTime;if(0===c||c>b)a.lastExpiredTime=b}\nfunction bk(a,b,c,d){var e=b.current,f=Gg(),g=Dg.suspense;f=Hg(f,e,g);a:if(c){c=c._reactInternalFiber;b:{if(dc(c)!==c||1!==c.tag)throw Error(u(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(L(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(u(171));}if(1===c.tag){var k=c.type;if(L(k)){c=Ff(c,k,h);break a}}c=h}else c=Af;null===b.context?b.context=c:b.pendingContext=c;b=wg(f,g);b.payload={element:a};d=void 0===\nd?null:d;null!==d&&(b.callback=d);xg(e,b);Ig(e,f);return f}function ck(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function dk(a,b){a=a.memoizedState;null!==a&&null!==a.dehydrated&&a.retryTime<b&&(a.retryTime=b)}function ek(a,b){dk(a,b);(a=a.alternate)&&dk(a,b)}\nfunction fk(a,b,c){c=null!=c&&!0===c.hydrate;var d=new ak(a,b,c),e=Sh(3,null,null,2===b?7:1===b?3:0);d.current=e;e.stateNode=d;ug(e);a[Od]=d.current;c&&0!==b&&Jc(a,9===a.nodeType?a:a.ownerDocument);this._internalRoot=d}fk.prototype.render=function(a){bk(a,this._internalRoot,null,null)};fk.prototype.unmount=function(){var a=this._internalRoot,b=a.containerInfo;bk(null,a,null,function(){b[Od]=null})};\nfunction gk(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function hk(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new fk(a,0,b?{hydrate:!0}:void 0)}\nfunction ik(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f._internalRoot;if(\"function\"===typeof e){var h=e;e=function(){var a=ck(g);h.call(a)}}bk(b,g,a,e)}else{f=c._reactRootContainer=hk(c,d);g=f._internalRoot;if(\"function\"===typeof e){var k=e;e=function(){var a=ck(g);k.call(a)}}Nj(function(){bk(b,g,a,e)})}return ck(g)}function jk(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:$a,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nwc=function(a){if(13===a.tag){var b=hg(Gg(),150,100);Ig(a,b);ek(a,b)}};xc=function(a){13===a.tag&&(Ig(a,3),ek(a,3))};yc=function(a){if(13===a.tag){var b=Gg();b=Hg(b,a,null);Ig(a,b);ek(a,b)}};\nza=function(a,b,c){switch(b){case \"input\":Cb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Qd(d);if(!e)throw Error(u(90));yb(d);Cb(d,e)}}}break;case \"textarea\":Kb(a,c);break;case \"select\":b=c.value,null!=b&&Hb(a,!!c.multiple,b,!1)}};Fa=Mj;\nGa=function(a,b,c,d,e){var f=W;W|=4;try{return cg(98,a.bind(null,b,c,d,e))}finally{W=f,W===V&&gg()}};Ha=function(){(W&(1|fj|gj))===V&&(Lj(),Dj())};Ia=function(a,b){var c=W;W|=2;try{return a(b)}finally{W=c,W===V&&gg()}};function kk(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!gk(b))throw Error(u(200));return jk(a,b,null,c)}var lk={Events:[Nc,Pd,Qd,xa,ta,Xd,function(a){jc(a,Wd)},Da,Ea,id,mc,Dj,{current:!1}]};\n(function(a){var b=a.findFiberByHostInstance;return Yj(n({},a,{overrideHookState:null,overrideProps:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:Wa.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=hc(a);return null===a?null:a.stateNode},findFiberByHostInstance:function(a){return b?b(a):null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null}))})({findFiberByHostInstance:tc,bundleType:0,version:\"16.14.0\",\nrendererPackageName:\"react-dom\"});exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=lk;exports.createPortal=kk;exports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternalFiber;if(void 0===b){if(\"function\"===typeof a.render)throw Error(u(188));throw Error(u(268,Object.keys(a)));}a=hc(b);a=null===a?null:a.stateNode;return a};\nexports.flushSync=function(a,b){if((W&(fj|gj))!==V)throw Error(u(187));var c=W;W|=1;try{return cg(99,a.bind(null,b))}finally{W=c,gg()}};exports.hydrate=function(a,b,c){if(!gk(b))throw Error(u(200));return ik(null,a,b,!0,c)};exports.render=function(a,b,c){if(!gk(b))throw Error(u(200));return ik(null,a,b,!1,c)};\nexports.unmountComponentAtNode=function(a){if(!gk(a))throw Error(u(40));return a._reactRootContainer?(Nj(function(){ik(null,null,a,!1,function(){a._reactRootContainer=null;a[Od]=null})}),!0):!1};exports.unstable_batchedUpdates=Mj;exports.unstable_createPortal=function(a,b){return kk(a,b,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)};\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!gk(c))throw Error(u(200));if(null==a||void 0===a._reactInternalFiber)throw Error(u(38));return ik(a,b,c,!1,d)};exports.version=\"16.14.0\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n","/** @license React v0.19.1\n * scheduler.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\n'use strict';var f,g,h,k,l;\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var p=null,q=null,t=function(){if(null!==p)try{var a=exports.unstable_now();p(!0,a);p=null}catch(b){throw setTimeout(t,0),b;}},u=Date.now();exports.unstable_now=function(){return Date.now()-u};f=function(a){null!==p?setTimeout(f,0,a):(p=a,setTimeout(t,0))};g=function(a,b){q=setTimeout(a,b)};h=function(){clearTimeout(q)};k=function(){return!1};l=exports.unstable_forceFrameRate=function(){}}else{var w=window.performance,x=window.Date,\ny=window.setTimeout,z=window.clearTimeout;if(\"undefined\"!==typeof console){var A=window.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\");\"function\"!==typeof A&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\")}if(\"object\"===\ntypeof w&&\"function\"===typeof w.now)exports.unstable_now=function(){return w.now()};else{var B=x.now();exports.unstable_now=function(){return x.now()-B}}var C=!1,D=null,E=-1,F=5,G=0;k=function(){return exports.unstable_now()>=G};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported\"):F=0<a?Math.floor(1E3/a):5};var H=new MessageChannel,I=H.port2;H.port1.onmessage=\nfunction(){if(null!==D){var a=exports.unstable_now();G=a+F;try{D(!0,a)?I.postMessage(null):(C=!1,D=null)}catch(b){throw I.postMessage(null),b;}}else C=!1};f=function(a){D=a;C||(C=!0,I.postMessage(null))};g=function(a,b){E=y(function(){a(exports.unstable_now())},b)};h=function(){z(E);E=-1}}function J(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<K(e,b))a[d]=b,a[c]=e,c=d;else break a}}function L(a){a=a[0];return void 0===a?null:a}\nfunction M(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var m=2*(d+1)-1,n=a[m],v=m+1,r=a[v];if(void 0!==n&&0>K(n,c))void 0!==r&&0>K(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>K(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function K(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var N=[],O=[],P=1,Q=null,R=3,S=!1,T=!1,U=!1;\nfunction V(a){for(var b=L(O);null!==b;){if(null===b.callback)M(O);else if(b.startTime<=a)M(O),b.sortIndex=b.expirationTime,J(N,b);else break;b=L(O)}}function W(a){U=!1;V(a);if(!T)if(null!==L(N))T=!0,f(X);else{var b=L(O);null!==b&&g(W,b.startTime-a)}}\nfunction X(a,b){T=!1;U&&(U=!1,h());S=!0;var c=R;try{V(b);for(Q=L(N);null!==Q&&(!(Q.expirationTime>b)||a&&!k());){var d=Q.callback;if(null!==d){Q.callback=null;R=Q.priorityLevel;var e=d(Q.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?Q.callback=e:Q===L(N)&&M(N);V(b)}else M(N);Q=L(N)}if(null!==Q)var m=!0;else{var n=L(O);null!==n&&g(W,n.startTime-b);m=!1}return m}finally{Q=null,R=c,S=!1}}\nfunction Y(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var Z=l;exports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){T||S||(T=!0,f(X))};\nexports.unstable_getCurrentPriorityLevel=function(){return R};exports.unstable_getFirstCallbackNode=function(){return L(N)};exports.unstable_next=function(a){switch(R){case 1:case 2:case 3:var b=3;break;default:b=R}var c=R;R=b;try{return a()}finally{R=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=Z;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=R;R=a;try{return b()}finally{R=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if(\"object\"===typeof c&&null!==c){var e=c.delay;e=\"number\"===typeof e&&0<e?d+e:d;c=\"number\"===typeof c.timeout?c.timeout:Y(a)}else c=Y(a),e=d;c=e+c;a={id:P++,callback:b,priorityLevel:a,startTime:e,expirationTime:c,sortIndex:-1};e>d?(a.sortIndex=e,J(O,a),null===L(N)&&a===L(O)&&(U?h():U=!0,g(W,e-d))):(a.sortIndex=c,J(N,a),T||S||(T=!0,f(X)));return a};\nexports.unstable_shouldYield=function(){var a=exports.unstable_now();V(a);var b=L(N);return b!==Q&&null!==Q&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime<Q.expirationTime||k()};exports.unstable_wrapCallback=function(a){var b=R;return function(){var c=R;R=b;try{return a.apply(this,arguments)}finally{R=c}}};\n","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 _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;","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;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\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\nvar runtime = (function (exports) {\n  \"use strict\";\n\n  var Op = Object.prototype;\n  var hasOwn = Op.hasOwnProperty;\n  var undefined; // More compressible than void 0.\n  var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n  var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n  var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n  var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n  function define(obj, key, value) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n    return obj[key];\n  }\n  try {\n    // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n    define({}, \"\");\n  } catch (err) {\n    define = function(obj, key, value) {\n      return obj[key] = value;\n    };\n  }\n\n  function wrap(innerFn, outerFn, self, tryLocsList) {\n    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n    var generator = Object.create(protoGenerator.prototype);\n    var context = new Context(tryLocsList || []);\n\n    // The ._invoke method unifies the implementations of the .next,\n    // .throw, and .return methods.\n    generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n    return generator;\n  }\n  exports.wrap = wrap;\n\n  // Try/catch helper to minimize deoptimizations. Returns a completion\n  // record like context.tryEntries[i].completion. This interface could\n  // have been (and was previously) designed to take a closure to be\n  // invoked without arguments, but in all the cases we care about we\n  // already have an existing method we want to call, so there's no need\n  // to create a new function object. We can even get away with assuming\n  // the method takes exactly one argument, since that happens to be true\n  // in every case, so we don't have to touch the arguments object. The\n  // only additional allocation required is the completion record, which\n  // has a stable shape and so hopefully should be cheap to allocate.\n  function tryCatch(fn, obj, arg) {\n    try {\n      return { type: \"normal\", arg: fn.call(obj, arg) };\n    } catch (err) {\n      return { type: \"throw\", arg: err };\n    }\n  }\n\n  var GenStateSuspendedStart = \"suspendedStart\";\n  var GenStateSuspendedYield = \"suspendedYield\";\n  var GenStateExecuting = \"executing\";\n  var GenStateCompleted = \"completed\";\n\n  // Returning this object from the innerFn has the same effect as\n  // breaking out of the dispatch switch statement.\n  var ContinueSentinel = {};\n\n  // Dummy constructor functions that we use as the .constructor and\n  // .constructor.prototype properties for functions that return Generator\n  // objects. For full spec compliance, you may wish to configure your\n  // minifier not to mangle the names of these two functions.\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n\n  // This is a polyfill for %IteratorPrototype% for environments that\n  // don't natively support it.\n  var IteratorPrototype = {};\n  define(IteratorPrototype, iteratorSymbol, function () {\n    return this;\n  });\n\n  var getProto = Object.getPrototypeOf;\n  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n  if (NativeIteratorPrototype &&\n      NativeIteratorPrototype !== Op &&\n      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n    // This environment has a native %IteratorPrototype%; use it instead\n    // of the polyfill.\n    IteratorPrototype = NativeIteratorPrototype;\n  }\n\n  var Gp = GeneratorFunctionPrototype.prototype =\n    Generator.prototype = Object.create(IteratorPrototype);\n  GeneratorFunction.prototype = GeneratorFunctionPrototype;\n  define(Gp, \"constructor\", GeneratorFunctionPrototype);\n  define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n  GeneratorFunction.displayName = define(\n    GeneratorFunctionPrototype,\n    toStringTagSymbol,\n    \"GeneratorFunction\"\n  );\n\n  // Helper for defining the .next, .throw, and .return methods of the\n  // Iterator interface in terms of a single ._invoke method.\n  function defineIteratorMethods(prototype) {\n    [\"next\", \"throw\", \"return\"].forEach(function(method) {\n      define(prototype, method, function(arg) {\n        return this._invoke(method, arg);\n      });\n    });\n  }\n\n  exports.isGeneratorFunction = function(genFun) {\n    var ctor = typeof genFun === \"function\" && genFun.constructor;\n    return ctor\n      ? ctor === GeneratorFunction ||\n        // For the native GeneratorFunction constructor, the best we can\n        // do is to check its .name property.\n        (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n      : false;\n  };\n\n  exports.mark = function(genFun) {\n    if (Object.setPrototypeOf) {\n      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n    } else {\n      genFun.__proto__ = GeneratorFunctionPrototype;\n      define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n    }\n    genFun.prototype = Object.create(Gp);\n    return genFun;\n  };\n\n  // Within the body of any async function, `await x` is transformed to\n  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n  // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n  // meant to be awaited.\n  exports.awrap = function(arg) {\n    return { __await: arg };\n  };\n\n  function AsyncIterator(generator, PromiseImpl) {\n    function invoke(method, arg, resolve, reject) {\n      var record = tryCatch(generator[method], generator, arg);\n      if (record.type === \"throw\") {\n        reject(record.arg);\n      } else {\n        var result = record.arg;\n        var value = result.value;\n        if (value &&\n            typeof value === \"object\" &&\n            hasOwn.call(value, \"__await\")) {\n          return PromiseImpl.resolve(value.__await).then(function(value) {\n            invoke(\"next\", value, resolve, reject);\n          }, function(err) {\n            invoke(\"throw\", err, resolve, reject);\n          });\n        }\n\n        return PromiseImpl.resolve(value).then(function(unwrapped) {\n          // When a yielded Promise is resolved, its final value becomes\n          // the .value of the Promise<{value,done}> result for the\n          // current iteration.\n          result.value = unwrapped;\n          resolve(result);\n        }, function(error) {\n          // If a rejected Promise was yielded, throw the rejection back\n          // into the async generator function so it can be handled there.\n          return invoke(\"throw\", error, resolve, reject);\n        });\n      }\n    }\n\n    var previousPromise;\n\n    function enqueue(method, arg) {\n      function callInvokeWithMethodAndArg() {\n        return new PromiseImpl(function(resolve, reject) {\n          invoke(method, arg, resolve, reject);\n        });\n      }\n\n      return previousPromise =\n        // If enqueue has been called before, then we want to wait until\n        // all previous Promises have been resolved before calling invoke,\n        // so that results are always delivered in the correct order. If\n        // enqueue has not been called before, then it is important to\n        // call invoke immediately, without waiting on a callback to fire,\n        // so that the async generator function has the opportunity to do\n        // any necessary setup in a predictable way. This predictability\n        // is why the Promise constructor synchronously invokes its\n        // executor callback, and why async functions synchronously\n        // execute code before the first await. Since we implement simple\n        // async functions in terms of async generators, it is especially\n        // important to get this right, even though it requires care.\n        previousPromise ? previousPromise.then(\n          callInvokeWithMethodAndArg,\n          // Avoid propagating failures to Promises returned by later\n          // invocations of the iterator.\n          callInvokeWithMethodAndArg\n        ) : callInvokeWithMethodAndArg();\n    }\n\n    // Define the unified helper method that is used to implement .next,\n    // .throw, and .return (see defineIteratorMethods).\n    this._invoke = enqueue;\n  }\n\n  defineIteratorMethods(AsyncIterator.prototype);\n  define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n    return this;\n  });\n  exports.AsyncIterator = AsyncIterator;\n\n  // Note that simple async functions are implemented on top of\n  // AsyncIterator objects; they just return a Promise for the value of\n  // the final result produced by the iterator.\n  exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n    if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n    var iter = new AsyncIterator(\n      wrap(innerFn, outerFn, self, tryLocsList),\n      PromiseImpl\n    );\n\n    return exports.isGeneratorFunction(outerFn)\n      ? iter // If outerFn is a generator, return the full iterator.\n      : iter.next().then(function(result) {\n          return result.done ? result.value : iter.next();\n        });\n  };\n\n  function makeInvokeMethod(innerFn, self, context) {\n    var state = GenStateSuspendedStart;\n\n    return function invoke(method, arg) {\n      if (state === GenStateExecuting) {\n        throw new Error(\"Generator is already running\");\n      }\n\n      if (state === GenStateCompleted) {\n        if (method === \"throw\") {\n          throw arg;\n        }\n\n        // Be forgiving, per 25.3.3.3.3 of the spec:\n        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n        return doneResult();\n      }\n\n      context.method = method;\n      context.arg = arg;\n\n      while (true) {\n        var delegate = context.delegate;\n        if (delegate) {\n          var delegateResult = maybeInvokeDelegate(delegate, context);\n          if (delegateResult) {\n            if (delegateResult === ContinueSentinel) continue;\n            return delegateResult;\n          }\n        }\n\n        if (context.method === \"next\") {\n          // Setting context._sent for legacy support of Babel's\n          // function.sent implementation.\n          context.sent = context._sent = context.arg;\n\n        } else if (context.method === \"throw\") {\n          if (state === GenStateSuspendedStart) {\n            state = GenStateCompleted;\n            throw context.arg;\n          }\n\n          context.dispatchException(context.arg);\n\n        } else if (context.method === \"return\") {\n          context.abrupt(\"return\", context.arg);\n        }\n\n        state = GenStateExecuting;\n\n        var record = tryCatch(innerFn, self, context);\n        if (record.type === \"normal\") {\n          // If an exception is thrown from innerFn, we leave state ===\n          // GenStateExecuting and loop back for another invocation.\n          state = context.done\n            ? GenStateCompleted\n            : GenStateSuspendedYield;\n\n          if (record.arg === ContinueSentinel) {\n            continue;\n          }\n\n          return {\n            value: record.arg,\n            done: context.done\n          };\n\n        } else if (record.type === \"throw\") {\n          state = GenStateCompleted;\n          // Dispatch the exception by looping back around to the\n          // context.dispatchException(context.arg) call above.\n          context.method = \"throw\";\n          context.arg = record.arg;\n        }\n      }\n    };\n  }\n\n  // Call delegate.iterator[context.method](context.arg) and handle the\n  // result, either by returning a { value, done } result from the\n  // delegate iterator, or by modifying context.method and context.arg,\n  // setting context.delegate to null, and returning the ContinueSentinel.\n  function maybeInvokeDelegate(delegate, context) {\n    var method = delegate.iterator[context.method];\n    if (method === undefined) {\n      // A .throw or .return when the delegate iterator has no .throw\n      // method always terminates the yield* loop.\n      context.delegate = null;\n\n      if (context.method === \"throw\") {\n        // Note: [\"return\"] must be used for ES3 parsing compatibility.\n        if (delegate.iterator[\"return\"]) {\n          // If the delegate iterator has a return method, give it a\n          // chance to clean up.\n          context.method = \"return\";\n          context.arg = undefined;\n          maybeInvokeDelegate(delegate, context);\n\n          if (context.method === \"throw\") {\n            // If maybeInvokeDelegate(context) changed context.method from\n            // \"return\" to \"throw\", let that override the TypeError below.\n            return ContinueSentinel;\n          }\n        }\n\n        context.method = \"throw\";\n        context.arg = new TypeError(\n          \"The iterator does not provide a 'throw' method\");\n      }\n\n      return ContinueSentinel;\n    }\n\n    var record = tryCatch(method, delegate.iterator, context.arg);\n\n    if (record.type === \"throw\") {\n      context.method = \"throw\";\n      context.arg = record.arg;\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    var info = record.arg;\n\n    if (! info) {\n      context.method = \"throw\";\n      context.arg = new TypeError(\"iterator result is not an object\");\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    if (info.done) {\n      // Assign the result of the finished delegate to the temporary\n      // variable specified by delegate.resultName (see delegateYield).\n      context[delegate.resultName] = info.value;\n\n      // Resume execution at the desired location (see delegateYield).\n      context.next = delegate.nextLoc;\n\n      // If context.method was \"throw\" but the delegate handled the\n      // exception, let the outer generator proceed normally. If\n      // context.method was \"next\", forget context.arg since it has been\n      // \"consumed\" by the delegate iterator. If context.method was\n      // \"return\", allow the original .return call to continue in the\n      // outer generator.\n      if (context.method !== \"return\") {\n        context.method = \"next\";\n        context.arg = undefined;\n      }\n\n    } else {\n      // Re-yield the result returned by the delegate method.\n      return info;\n    }\n\n    // The delegate iterator is finished, so forget it and continue with\n    // the outer generator.\n    context.delegate = null;\n    return ContinueSentinel;\n  }\n\n  // Define Generator.prototype.{next,throw,return} in terms of the\n  // unified ._invoke helper method.\n  defineIteratorMethods(Gp);\n\n  define(Gp, toStringTagSymbol, \"Generator\");\n\n  // A Generator should always return itself as the iterator object when the\n  // @@iterator function is called on it. Some browsers' implementations of the\n  // iterator prototype chain incorrectly implement this, causing the Generator\n  // object to not be returned from this call. This ensures that doesn't happen.\n  // See https://github.com/facebook/regenerator/issues/274 for more details.\n  define(Gp, iteratorSymbol, function() {\n    return this;\n  });\n\n  define(Gp, \"toString\", function() {\n    return \"[object Generator]\";\n  });\n\n  function pushTryEntry(locs) {\n    var entry = { tryLoc: locs[0] };\n\n    if (1 in locs) {\n      entry.catchLoc = locs[1];\n    }\n\n    if (2 in locs) {\n      entry.finallyLoc = locs[2];\n      entry.afterLoc = locs[3];\n    }\n\n    this.tryEntries.push(entry);\n  }\n\n  function resetTryEntry(entry) {\n    var record = entry.completion || {};\n    record.type = \"normal\";\n    delete record.arg;\n    entry.completion = record;\n  }\n\n  function Context(tryLocsList) {\n    // The root entry object (effectively a try statement without a catch\n    // or a finally block) gives us a place to store values thrown from\n    // locations where there is no enclosing try statement.\n    this.tryEntries = [{ tryLoc: \"root\" }];\n    tryLocsList.forEach(pushTryEntry, this);\n    this.reset(true);\n  }\n\n  exports.keys = function(object) {\n    var keys = [];\n    for (var key in object) {\n      keys.push(key);\n    }\n    keys.reverse();\n\n    // Rather than returning an object with a next method, we keep\n    // things simple and return the next function itself.\n    return function next() {\n      while (keys.length) {\n        var key = keys.pop();\n        if (key in object) {\n          next.value = key;\n          next.done = false;\n          return next;\n        }\n      }\n\n      // To avoid creating an additional object, we just hang the .value\n      // and .done properties off the next function object itself. This\n      // also ensures that the minifier will not anonymize the function.\n      next.done = true;\n      return next;\n    };\n  };\n\n  function values(iterable) {\n    if (iterable) {\n      var iteratorMethod = iterable[iteratorSymbol];\n      if (iteratorMethod) {\n        return iteratorMethod.call(iterable);\n      }\n\n      if (typeof iterable.next === \"function\") {\n        return iterable;\n      }\n\n      if (!isNaN(iterable.length)) {\n        var i = -1, next = function next() {\n          while (++i < iterable.length) {\n            if (hasOwn.call(iterable, i)) {\n              next.value = iterable[i];\n              next.done = false;\n              return next;\n            }\n          }\n\n          next.value = undefined;\n          next.done = true;\n\n          return next;\n        };\n\n        return next.next = next;\n      }\n    }\n\n    // Return an iterator with no values.\n    return { next: doneResult };\n  }\n  exports.values = values;\n\n  function doneResult() {\n    return { value: undefined, done: true };\n  }\n\n  Context.prototype = {\n    constructor: Context,\n\n    reset: function(skipTempReset) {\n      this.prev = 0;\n      this.next = 0;\n      // Resetting context._sent for legacy support of Babel's\n      // function.sent implementation.\n      this.sent = this._sent = undefined;\n      this.done = false;\n      this.delegate = null;\n\n      this.method = \"next\";\n      this.arg = undefined;\n\n      this.tryEntries.forEach(resetTryEntry);\n\n      if (!skipTempReset) {\n        for (var name in this) {\n          // Not sure about the optimal order of these conditions:\n          if (name.charAt(0) === \"t\" &&\n              hasOwn.call(this, name) &&\n              !isNaN(+name.slice(1))) {\n            this[name] = undefined;\n          }\n        }\n      }\n    },\n\n    stop: function() {\n      this.done = true;\n\n      var rootEntry = this.tryEntries[0];\n      var rootRecord = rootEntry.completion;\n      if (rootRecord.type === \"throw\") {\n        throw rootRecord.arg;\n      }\n\n      return this.rval;\n    },\n\n    dispatchException: function(exception) {\n      if (this.done) {\n        throw exception;\n      }\n\n      var context = this;\n      function handle(loc, caught) {\n        record.type = \"throw\";\n        record.arg = exception;\n        context.next = loc;\n\n        if (caught) {\n          // If the dispatched exception was caught by a catch block,\n          // then let that catch block handle the exception normally.\n          context.method = \"next\";\n          context.arg = undefined;\n        }\n\n        return !! caught;\n      }\n\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        var record = entry.completion;\n\n        if (entry.tryLoc === \"root\") {\n          // Exception thrown outside of any try block that could handle\n          // it, so set the completion value of the entire function to\n          // throw the exception.\n          return handle(\"end\");\n        }\n\n        if (entry.tryLoc <= this.prev) {\n          var hasCatch = hasOwn.call(entry, \"catchLoc\");\n          var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n          if (hasCatch && hasFinally) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            } else if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else if (hasCatch) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            }\n\n          } else if (hasFinally) {\n            if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else {\n            throw new Error(\"try statement without catch or finally\");\n          }\n        }\n      }\n    },\n\n    abrupt: function(type, arg) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc <= this.prev &&\n            hasOwn.call(entry, \"finallyLoc\") &&\n            this.prev < entry.finallyLoc) {\n          var finallyEntry = entry;\n          break;\n        }\n      }\n\n      if (finallyEntry &&\n          (type === \"break\" ||\n           type === \"continue\") &&\n          finallyEntry.tryLoc <= arg &&\n          arg <= finallyEntry.finallyLoc) {\n        // Ignore the finally entry if control is not jumping to a\n        // location outside the try/catch block.\n        finallyEntry = null;\n      }\n\n      var record = finallyEntry ? finallyEntry.completion : {};\n      record.type = type;\n      record.arg = arg;\n\n      if (finallyEntry) {\n        this.method = \"next\";\n        this.next = finallyEntry.finallyLoc;\n        return ContinueSentinel;\n      }\n\n      return this.complete(record);\n    },\n\n    complete: function(record, afterLoc) {\n      if (record.type === \"throw\") {\n        throw record.arg;\n      }\n\n      if (record.type === \"break\" ||\n          record.type === \"continue\") {\n        this.next = record.arg;\n      } else if (record.type === \"return\") {\n        this.rval = this.arg = record.arg;\n        this.method = \"return\";\n        this.next = \"end\";\n      } else if (record.type === \"normal\" && afterLoc) {\n        this.next = afterLoc;\n      }\n\n      return ContinueSentinel;\n    },\n\n    finish: function(finallyLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.finallyLoc === finallyLoc) {\n          this.complete(entry.completion, entry.afterLoc);\n          resetTryEntry(entry);\n          return ContinueSentinel;\n        }\n      }\n    },\n\n    \"catch\": function(tryLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc === tryLoc) {\n          var record = entry.completion;\n          if (record.type === \"throw\") {\n            var thrown = record.arg;\n            resetTryEntry(entry);\n          }\n          return thrown;\n        }\n      }\n\n      // The context.catch method must only be called with a location\n      // argument that corresponds to a known catch block.\n      throw new Error(\"illegal catch attempt\");\n    },\n\n    delegateYield: function(iterable, resultName, nextLoc) {\n      this.delegate = {\n        iterator: values(iterable),\n        resultName: resultName,\n        nextLoc: nextLoc\n      };\n\n      if (this.method === \"next\") {\n        // Deliberately forget the last sent value so that we don't\n        // accidentally pass it on to the delegate.\n        this.arg = undefined;\n      }\n\n      return ContinueSentinel;\n    }\n  };\n\n  // Regardless of whether this script is executing as a CommonJS module\n  // or not, return the runtime object so that we can declare the variable\n  // regeneratorRuntime in the outer scope, which allows this module to be\n  // injected easily by `bin/regenerator --include-runtime script.js`.\n  return exports;\n\n}(\n  // If this script is executing as a CommonJS module, use module.exports\n  // as the regeneratorRuntime namespace. Otherwise create a new empty\n  // object. Either way, the resulting object will be used to initialize\n  // the regeneratorRuntime variable at the top of this file.\n  typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n  regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n  // This module should not be running in strict mode, so the above\n  // assignment should always work unless something is misconfigured. Just\n  // in case runtime.js accidentally runs in strict mode, in modern engines\n  // we can explicitly access globalThis. In older engines we can escape\n  // strict mode using a global Function call. This could conceivably fail\n  // if a Content Security Policy forbids using Function, but in that case\n  // the proper solution is to fix the accidental strict mode problem. If\n  // you've misconfigured your bundler to force strict mode and applied a\n  // CSP to forbid Function, and you're not willing to fix either of those\n  // problems, please detail your unique predicament in a GitHub issue.\n  if (typeof globalThis === \"object\") {\n    globalThis.regeneratorRuntime = runtime;\n  } else {\n    Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n  }\n}\n","'use strict'\n\n/* Dependencies. */\nvar extend = require('extend')\nvar bail = require('bail')\nvar vfile = require('vfile')\nvar trough = require('trough')\nvar string = require('x-is-string')\nvar plain = require('is-plain-obj')\n\n/* Expose a frozen processor. */\nmodule.exports = unified().freeze()\n\nvar slice = [].slice\nvar own = {}.hasOwnProperty\n\n/* Process pipeline. */\nvar pipeline = trough()\n  .use(pipelineParse)\n  .use(pipelineRun)\n  .use(pipelineStringify)\n\nfunction pipelineParse(p, ctx) {\n  ctx.tree = p.parse(ctx.file)\n}\n\nfunction pipelineRun(p, ctx, next) {\n  p.run(ctx.tree, ctx.file, done)\n\n  function done(err, tree, file) {\n    if (err) {\n      next(err)\n    } else {\n      ctx.tree = tree\n      ctx.file = file\n      next()\n    }\n  }\n}\n\nfunction pipelineStringify(p, ctx) {\n  ctx.file.contents = p.stringify(ctx.tree, ctx.file)\n}\n\n/* Function to create the first processor. */\nfunction unified() {\n  var attachers = []\n  var transformers = trough()\n  var namespace = {}\n  var frozen = false\n  var freezeIndex = -1\n\n  /* Data management. */\n  processor.data = data\n\n  /* Lock. */\n  processor.freeze = freeze\n\n  /* Plug-ins. */\n  processor.attachers = attachers\n  processor.use = use\n\n  /* API. */\n  processor.parse = parse\n  processor.stringify = stringify\n  processor.run = run\n  processor.runSync = runSync\n  processor.process = process\n  processor.processSync = processSync\n\n  /* Expose. */\n  return processor\n\n  /* Create a new processor based on the processor\n   * in the current scope. */\n  function processor() {\n    var destination = unified()\n    var length = attachers.length\n    var index = -1\n\n    while (++index < length) {\n      destination.use.apply(null, attachers[index])\n    }\n\n    destination.data(extend(true, {}, namespace))\n\n    return destination\n  }\n\n  /* Freeze: used to signal a processor that has finished\n   * configuration.\n   *\n   * For example, take unified itself.  It’s frozen.\n   * Plug-ins should not be added to it.  Rather, it should\n   * be extended, by invoking it, before modifying it.\n   *\n   * In essence, always invoke this when exporting a\n   * processor. */\n  function freeze() {\n    var values\n    var plugin\n    var options\n    var transformer\n\n    if (frozen) {\n      return processor\n    }\n\n    while (++freezeIndex < attachers.length) {\n      values = attachers[freezeIndex]\n      plugin = values[0]\n      options = values[1]\n      transformer = null\n\n      if (options === false) {\n        continue\n      }\n\n      if (options === true) {\n        values[1] = undefined\n      }\n\n      transformer = plugin.apply(processor, values.slice(1))\n\n      if (typeof transformer === 'function') {\n        transformers.use(transformer)\n      }\n    }\n\n    frozen = true\n    freezeIndex = Infinity\n\n    return processor\n  }\n\n  /* Data management.\n   * Getter / setter for processor-specific informtion. */\n  function data(key, value) {\n    if (string(key)) {\n      /* Set `key`. */\n      if (arguments.length === 2) {\n        assertUnfrozen('data', frozen)\n\n        namespace[key] = value\n\n        return processor\n      }\n\n      /* Get `key`. */\n      return (own.call(namespace, key) && namespace[key]) || null\n    }\n\n    /* Set space. */\n    if (key) {\n      assertUnfrozen('data', frozen)\n      namespace = key\n      return processor\n    }\n\n    /* Get space. */\n    return namespace\n  }\n\n  /* Plug-in management.\n   *\n   * Pass it:\n   * *   an attacher and options,\n   * *   a preset,\n   * *   a list of presets, attachers, and arguments (list\n   *     of attachers and options). */\n  function use(value) {\n    var settings\n\n    assertUnfrozen('use', frozen)\n\n    if (value === null || value === undefined) {\n      /* Empty */\n    } else if (typeof value === 'function') {\n      addPlugin.apply(null, arguments)\n    } else if (typeof value === 'object') {\n      if ('length' in value) {\n        addList(value)\n      } else {\n        addPreset(value)\n      }\n    } else {\n      throw new Error('Expected usable value, not `' + value + '`')\n    }\n\n    if (settings) {\n      namespace.settings = extend(namespace.settings || {}, settings)\n    }\n\n    return processor\n\n    function addPreset(result) {\n      addList(result.plugins)\n\n      if (result.settings) {\n        settings = extend(settings || {}, result.settings)\n      }\n    }\n\n    function add(value) {\n      if (typeof value === 'function') {\n        addPlugin(value)\n      } else if (typeof value === 'object') {\n        if ('length' in value) {\n          addPlugin.apply(null, value)\n        } else {\n          addPreset(value)\n        }\n      } else {\n        throw new Error('Expected usable value, not `' + value + '`')\n      }\n    }\n\n    function addList(plugins) {\n      var length\n      var index\n\n      if (plugins === null || plugins === undefined) {\n        /* Empty */\n      } else if (typeof plugins === 'object' && 'length' in plugins) {\n        length = plugins.length\n        index = -1\n\n        while (++index < length) {\n          add(plugins[index])\n        }\n      } else {\n        throw new Error('Expected a list of plugins, not `' + plugins + '`')\n      }\n    }\n\n    function addPlugin(plugin, value) {\n      var entry = find(plugin)\n\n      if (entry) {\n        if (plain(entry[1]) && plain(value)) {\n          value = extend(entry[1], value)\n        }\n\n        entry[1] = value\n      } else {\n        attachers.push(slice.call(arguments))\n      }\n    }\n  }\n\n  function find(plugin) {\n    var length = attachers.length\n    var index = -1\n    var entry\n\n    while (++index < length) {\n      entry = attachers[index]\n\n      if (entry[0] === plugin) {\n        return entry\n      }\n    }\n  }\n\n  /* Parse a file (in string or VFile representation)\n   * into a Unist node using the `Parser` on the\n   * processor. */\n  function parse(doc) {\n    var file = vfile(doc)\n    var Parser\n\n    freeze()\n    Parser = processor.Parser\n    assertParser('parse', Parser)\n\n    if (newable(Parser)) {\n      return new Parser(String(file), file).parse()\n    }\n\n    return Parser(String(file), file) // eslint-disable-line new-cap\n  }\n\n  /* Run transforms on a Unist node representation of a file\n   * (in string or VFile representation), async. */\n  function run(node, file, cb) {\n    assertNode(node)\n    freeze()\n\n    if (!cb && typeof file === 'function') {\n      cb = file\n      file = null\n    }\n\n    if (!cb) {\n      return new Promise(executor)\n    }\n\n    executor(null, cb)\n\n    function executor(resolve, reject) {\n      transformers.run(node, vfile(file), done)\n\n      function done(err, tree, file) {\n        tree = tree || node\n        if (err) {\n          reject(err)\n        } else if (resolve) {\n          resolve(tree)\n        } else {\n          cb(null, tree, file)\n        }\n      }\n    }\n  }\n\n  /* Run transforms on a Unist node representation of a file\n   * (in string or VFile representation), sync. */\n  function runSync(node, file) {\n    var complete = false\n    var result\n\n    run(node, file, done)\n\n    assertDone('runSync', 'run', complete)\n\n    return result\n\n    function done(err, tree) {\n      complete = true\n      bail(err)\n      result = tree\n    }\n  }\n\n  /* Stringify a Unist node representation of a file\n   * (in string or VFile representation) into a string\n   * using the `Compiler` on the processor. */\n  function stringify(node, doc) {\n    var file = vfile(doc)\n    var Compiler\n\n    freeze()\n    Compiler = processor.Compiler\n    assertCompiler('stringify', Compiler)\n    assertNode(node)\n\n    if (newable(Compiler)) {\n      return new Compiler(node, file).compile()\n    }\n\n    return Compiler(node, file) // eslint-disable-line new-cap\n  }\n\n  /* Parse a file (in string or VFile representation)\n   * into a Unist node using the `Parser` on the processor,\n   * then run transforms on that node, and compile the\n   * resulting node using the `Compiler` on the processor,\n   * and store that result on the VFile. */\n  function process(doc, cb) {\n    freeze()\n    assertParser('process', processor.Parser)\n    assertCompiler('process', processor.Compiler)\n\n    if (!cb) {\n      return new Promise(executor)\n    }\n\n    executor(null, cb)\n\n    function executor(resolve, reject) {\n      var file = vfile(doc)\n\n      pipeline.run(processor, {file: file}, done)\n\n      function done(err) {\n        if (err) {\n          reject(err)\n        } else if (resolve) {\n          resolve(file)\n        } else {\n          cb(null, file)\n        }\n      }\n    }\n  }\n\n  /* Process the given document (in string or VFile\n   * representation), sync. */\n  function processSync(doc) {\n    var complete = false\n    var file\n\n    freeze()\n    assertParser('processSync', processor.Parser)\n    assertCompiler('processSync', processor.Compiler)\n    file = vfile(doc)\n\n    process(file, done)\n\n    assertDone('processSync', 'process', complete)\n\n    return file\n\n    function done(err) {\n      complete = true\n      bail(err)\n    }\n  }\n}\n\n/* Check if `func` is a constructor. */\nfunction newable(value) {\n  return typeof value === 'function' && keys(value.prototype)\n}\n\n/* Check if `value` is an object with keys. */\nfunction keys(value) {\n  var key\n  for (key in value) {\n    return true\n  }\n  return false\n}\n\n/* Assert a parser is available. */\nfunction assertParser(name, Parser) {\n  if (typeof Parser !== 'function') {\n    throw new Error('Cannot `' + name + '` without `Parser`')\n  }\n}\n\n/* Assert a compiler is available. */\nfunction assertCompiler(name, Compiler) {\n  if (typeof Compiler !== 'function') {\n    throw new Error('Cannot `' + name + '` without `Compiler`')\n  }\n}\n\n/* Assert the processor is not frozen. */\nfunction assertUnfrozen(name, frozen) {\n  if (frozen) {\n    throw new Error(\n      [\n        'Cannot invoke `' + name + '` on a frozen processor.\\nCreate a new ',\n        'processor first, by invoking it: use `processor()` instead of ',\n        '`processor`.'\n      ].join('')\n    )\n  }\n}\n\n/* Assert `node` is a Unist node. */\nfunction assertNode(node) {\n  if (!node || !string(node.type)) {\n    throw new Error('Expected node, got `' + node + '`')\n  }\n}\n\n/* Assert that `complete` is `true`. */\nfunction assertDone(name, asyncName, complete) {\n  if (!complete) {\n    throw new Error(\n      '`' + name + '` finished async. Use `' + asyncName + '` instead'\n    )\n  }\n}\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","'use strict'\n\nmodule.exports = bail\n\nfunction bail(err) {\n  if (err) {\n    throw err\n  }\n}\n","'use strict';\n\nvar VMessage = require('vfile-message');\nvar VFile = require('./core.js');\n\nmodule.exports = VFile;\n\nvar proto = VFile.prototype;\n\nproto.message = message;\nproto.info = info;\nproto.fail = fail;\n\n/* Slight backwards compatibility.  Remove in the future. */\nproto.warn = message;\n\n/* Create a message with `reason` at `position`.\n * When an error is passed in as `reason`, copies the stack. */\nfunction message(reason, position, origin) {\n  var filePath = this.path;\n  var message = new VMessage(reason, position, origin);\n\n  if (filePath) {\n    message.name = filePath + ':' + message.name;\n    message.file = filePath;\n  }\n\n  message.fatal = false;\n\n  this.messages.push(message);\n\n  return message;\n}\n\n/* Fail. Creates a vmessage, associates it with the file,\n * and throws it. */\nfunction fail() {\n  var message = this.message.apply(this, arguments);\n\n  message.fatal = true;\n\n  throw message;\n}\n\n/* Info. Creates a vmessage, associates it with the file,\n * and marks the fatality as null. */\nfunction info() {\n  var message = this.message.apply(this, arguments);\n\n  message.fatal = null;\n\n  return message;\n}\n","'use strict'\n\nvar stringify = require('unist-util-stringify-position')\n\nmodule.exports = VMessage\n\n// Inherit from `Error#`.\nfunction VMessagePrototype() {}\nVMessagePrototype.prototype = Error.prototype\nVMessage.prototype = new VMessagePrototype()\n\n// Message properties.\nvar proto = VMessage.prototype\n\nproto.file = ''\nproto.name = ''\nproto.reason = ''\nproto.message = ''\nproto.stack = ''\nproto.fatal = null\nproto.column = null\nproto.line = null\n\n// Construct a new VMessage.\n//\n// Note: We cannot invoke `Error` on the created context, as that adds readonly\n// `line` and `column` attributes on Safari 9, thus throwing and failing the\n// data.\nfunction VMessage(reason, position, origin) {\n  var parts\n  var range\n  var location\n\n  if (typeof position === 'string') {\n    origin = position\n    position = null\n  }\n\n  parts = parseOrigin(origin)\n  range = stringify(position) || '1:1'\n\n  location = {\n    start: {line: null, column: null},\n    end: {line: null, column: null}\n  }\n\n  // Node.\n  if (position && position.position) {\n    position = position.position\n  }\n\n  if (position) {\n    // Position.\n    if (position.start) {\n      location = position\n      position = position.start\n    } else {\n      // Point.\n      location.start = position\n    }\n  }\n\n  if (reason.stack) {\n    this.stack = reason.stack\n    reason = reason.message\n  }\n\n  this.message = reason\n  this.name = range\n  this.reason = reason\n  this.line = position ? position.line : null\n  this.column = position ? position.column : null\n  this.location = location\n  this.source = parts[0]\n  this.ruleId = parts[1]\n}\n\nfunction parseOrigin(origin) {\n  var result = [null, null]\n  var index\n\n  if (typeof origin === 'string') {\n    index = origin.indexOf(':')\n\n    if (index === -1) {\n      result[1] = origin\n    } else {\n      result[0] = origin.slice(0, index)\n      result[1] = origin.slice(index + 1)\n    }\n  }\n\n  return result\n}\n","'use strict'\n\nvar own = {}.hasOwnProperty\n\nmodule.exports = stringify\n\nfunction stringify(value) {\n  /* Nothing. */\n  if (!value || typeof value !== 'object') {\n    return null\n  }\n\n  /* Node. */\n  if (own.call(value, 'position') || own.call(value, 'type')) {\n    return position(value.position)\n  }\n\n  /* Position. */\n  if (own.call(value, 'start') || own.call(value, 'end')) {\n    return position(value)\n  }\n\n  /* Point. */\n  if (own.call(value, 'line') || own.call(value, 'column')) {\n    return point(value)\n  }\n\n  /* ? */\n  return null\n}\n\nfunction point(point) {\n  if (!point || typeof point !== 'object') {\n    point = {}\n  }\n\n  return index(point.line) + ':' + index(point.column)\n}\n\nfunction position(pos) {\n  if (!pos || typeof pos !== 'object') {\n    pos = {}\n  }\n\n  return point(pos.start) + '-' + point(pos.end)\n}\n\nfunction index(value) {\n  return value && typeof value === 'number' ? value : 1\n}\n","'use strict';\n\nvar path = require('path');\nvar replace = require('replace-ext');\nvar buffer = require('is-buffer');\n\nmodule.exports = VFile;\n\nvar own = {}.hasOwnProperty;\nvar proto = VFile.prototype;\n\nproto.toString = toString;\n\n/* Order of setting (least specific to most), we need this because\n * otherwise `{stem: 'a', path: '~/b.js'}` would throw, as a path\n * is needed before a stem can be set. */\nvar order = [\n  'history',\n  'path',\n  'basename',\n  'stem',\n  'extname',\n  'dirname'\n];\n\n/* Construct a new file. */\nfunction VFile(options) {\n  var prop;\n  var index;\n  var length;\n\n  if (!options) {\n    options = {};\n  } else if (typeof options === 'string' || buffer(options)) {\n    options = {contents: options};\n  } else if ('message' in options && 'messages' in options) {\n    return options;\n  }\n\n  if (!(this instanceof VFile)) {\n    return new VFile(options);\n  }\n\n  this.data = {};\n  this.messages = [];\n  this.history = [];\n  this.cwd = process.cwd();\n\n  /* Set path related properties in the correct order. */\n  index = -1;\n  length = order.length;\n\n  while (++index < length) {\n    prop = order[index];\n\n    if (own.call(options, prop)) {\n      this[prop] = options[prop];\n    }\n  }\n\n  /* Set non-path related properties. */\n  for (prop in options) {\n    if (order.indexOf(prop) === -1) {\n      this[prop] = options[prop];\n    }\n  }\n}\n\n/* Access full path (`~/index.min.js`). */\nObject.defineProperty(proto, 'path', {\n  get: function () {\n    return this.history[this.history.length - 1];\n  },\n  set: function (path) {\n    assertNonEmpty(path, 'path');\n\n    if (path !== this.path) {\n      this.history.push(path);\n    }\n  }\n});\n\n/* Access parent path (`~`). */\nObject.defineProperty(proto, 'dirname', {\n  get: function () {\n    return typeof this.path === 'string' ? path.dirname(this.path) : undefined;\n  },\n  set: function (dirname) {\n    assertPath(this.path, 'dirname');\n    this.path = path.join(dirname || '', this.basename);\n  }\n});\n\n/* Access basename (`index.min.js`). */\nObject.defineProperty(proto, 'basename', {\n  get: function () {\n    return typeof this.path === 'string' ? path.basename(this.path) : undefined;\n  },\n  set: function (basename) {\n    assertNonEmpty(basename, 'basename');\n    assertPart(basename, 'basename');\n    this.path = path.join(this.dirname || '', basename);\n  }\n});\n\n/* Access extname (`.js`). */\nObject.defineProperty(proto, 'extname', {\n  get: function () {\n    return typeof this.path === 'string' ? path.extname(this.path) : undefined;\n  },\n  set: function (extname) {\n    var ext = extname || '';\n\n    assertPart(ext, 'extname');\n    assertPath(this.path, 'extname');\n\n    if (ext) {\n      if (ext.charAt(0) !== '.') {\n        throw new Error('`extname` must start with `.`');\n      }\n\n      if (ext.indexOf('.', 1) !== -1) {\n        throw new Error('`extname` cannot contain multiple dots');\n      }\n    }\n\n    this.path = replace(this.path, ext);\n  }\n});\n\n/* Access stem (`index.min`). */\nObject.defineProperty(proto, 'stem', {\n  get: function () {\n    return typeof this.path === 'string' ? path.basename(this.path, this.extname) : undefined;\n  },\n  set: function (stem) {\n    assertNonEmpty(stem, 'stem');\n    assertPart(stem, 'stem');\n    this.path = path.join(this.dirname || '', stem + (this.extname || ''));\n  }\n});\n\n/* Get the value of the file. */\nfunction toString(encoding) {\n  var value = this.contents || '';\n  return buffer(value) ? value.toString(encoding) : String(value);\n}\n\n/* Assert that `part` is not a path (i.e., does\n * not contain `path.sep`). */\nfunction assertPart(part, name) {\n  if (part.indexOf(path.sep) !== -1) {\n    throw new Error('`' + name + '` cannot be a path: did not expect `' + path.sep + '`');\n  }\n}\n\n/* Assert that `part` is not empty. */\nfunction assertNonEmpty(part, name) {\n  if (!part) {\n    throw new Error('`' + name + '` cannot be empty');\n  }\n}\n\n/* Assert `path` exists. */\nfunction assertPath(path, name) {\n  if (!path) {\n    throw new Error('Setting `' + name + '` requires `path` to be set too');\n  }\n}\n","'use strict';\n\nvar path = require('path');\n\nfunction replaceExt(npath, ext) {\n  if (typeof npath !== 'string') {\n    return npath;\n  }\n\n  if (npath.length === 0) {\n    return npath;\n  }\n\n  var nFileName = path.basename(npath, path.extname(npath)) + ext;\n  return path.join(path.dirname(npath), nFileName);\n}\n\nmodule.exports = replaceExt;\n","/*!\n * Determine if an object is a Buffer\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n  return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n  return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n  return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","'use strict'\n\nvar wrap = require('./wrap.js')\n\nmodule.exports = trough\n\ntrough.wrap = wrap\n\nvar slice = [].slice\n\n// Create new middleware.\nfunction trough() {\n  var fns = []\n  var middleware = {}\n\n  middleware.run = run\n  middleware.use = use\n\n  return middleware\n\n  // Run `fns`.  Last argument must be a completion handler.\n  function run() {\n    var index = -1\n    var input = slice.call(arguments, 0, -1)\n    var done = arguments[arguments.length - 1]\n\n    if (typeof done !== 'function') {\n      throw new Error('Expected function as last argument, not ' + done)\n    }\n\n    next.apply(null, [null].concat(input))\n\n    // Run the next `fn`, if any.\n    function next(err) {\n      var fn = fns[++index]\n      var params = slice.call(arguments, 0)\n      var values = params.slice(1)\n      var length = input.length\n      var pos = -1\n\n      if (err) {\n        done(err)\n        return\n      }\n\n      // Copy non-nully input into values.\n      while (++pos < length) {\n        if (values[pos] === null || values[pos] === undefined) {\n          values[pos] = input[pos]\n        }\n      }\n\n      input = values\n\n      // Next or done.\n      if (fn) {\n        wrap(fn, next).apply(null, input)\n      } else {\n        done.apply(null, [null].concat(input))\n      }\n    }\n  }\n\n  // Add `fn` to the list.\n  function use(fn) {\n    if (typeof fn !== 'function') {\n      throw new Error('Expected `fn` to be a function, not ' + fn)\n    }\n\n    fns.push(fn)\n\n    return middleware\n  }\n}\n","'use strict'\n\nvar slice = [].slice\n\nmodule.exports = wrap\n\n// Wrap `fn`.\n// Can be sync or async; return a promise, receive a completion handler, return\n// new values and errors.\nfunction wrap(fn, callback) {\n  var invoked\n\n  return wrapped\n\n  function wrapped() {\n    var params = slice.call(arguments, 0)\n    var callback = fn.length > params.length\n    var result\n\n    if (callback) {\n      params.push(done)\n    }\n\n    try {\n      result = fn.apply(null, params)\n    } catch (error) {\n      // Well, this is quite the pickle.\n      // `fn` received a callback and invoked it (thus continuing the pipeline),\n      // but later also threw an error.\n      // We’re not about to restart the pipeline again, so the only thing left\n      // to do is to throw the thing instead.\n      if (callback && invoked) {\n        throw error\n      }\n\n      return done(error)\n    }\n\n    if (!callback) {\n      if (result && typeof result.then === 'function') {\n        result.then(then, done)\n      } else if (result instanceof Error) {\n        done(result)\n      } else {\n        then(result)\n      }\n    }\n  }\n\n  // Invoke `next`, only once.\n  function done() {\n    if (!invoked) {\n      invoked = true\n\n      callback.apply(null, arguments)\n    }\n  }\n\n  // Invoke `done` with one value.\n  // Tracks if an error is passed, too.\n  function then(value) {\n    done(null, value)\n  }\n}\n","var toString = Object.prototype.toString\n\nmodule.exports = isString\n\nfunction isString(obj) {\n    return toString.call(obj) === \"[object String]\"\n}\n","'use strict';\nvar toString = Object.prototype.toString;\n\nmodule.exports = function (x) {\n\tvar prototype;\n\treturn toString.call(x) === '[object Object]' && (prototype = Object.getPrototypeOf(x), prototype === null || prototype === Object.getPrototypeOf({}));\n};\n","'use strict';\n\nvar unherit = require('unherit');\nvar xtend = require('xtend');\nvar Parser = require('./lib/parser.js');\n\nmodule.exports = parse;\nparse.Parser = Parser;\n\nfunction parse(options) {\n  var Local = unherit(Parser);\n  Local.prototype.options = xtend(Local.prototype.options, this.data('settings'), options);\n  this.Parser = Local;\n}\n","'use strict'\n\nvar xtend = require('xtend')\nvar inherits = require('inherits')\n\nmodule.exports = unherit\n\n// Create a custom constructor which can be modified without affecting the\n// original class.\nfunction unherit(Super) {\n  var result\n  var key\n  var value\n\n  inherits(Of, Super)\n  inherits(From, Of)\n\n  // Clone values.\n  result = Of.prototype\n\n  for (key in result) {\n    value = result[key]\n\n    if (value && typeof value === 'object') {\n      result[key] = 'concat' in value ? value.concat() : xtend(value)\n    }\n  }\n\n  return Of\n\n  // Constructor accepting a single argument, which itself is an `arguments`\n  // object.\n  function From(parameters) {\n    return Super.apply(this, parameters)\n  }\n\n  // Constructor accepting variadic arguments.\n  function Of() {\n    if (!(this instanceof Of)) {\n      return new From(arguments)\n    }\n\n    return Super.apply(this, arguments)\n  }\n}\n","if (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      ctor.prototype = Object.create(superCtor.prototype, {\n        constructor: {\n          value: ctor,\n          enumerable: false,\n          writable: true,\n          configurable: true\n        }\n      })\n    }\n  };\n} else {\n  // old school shim for old browsers\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      var TempCtor = function () {}\n      TempCtor.prototype = superCtor.prototype\n      ctor.prototype = new TempCtor()\n      ctor.prototype.constructor = ctor\n    }\n  }\n}\n","'use strict';\n\nvar xtend = require('xtend');\nvar toggle = require('state-toggle');\nvar vfileLocation = require('vfile-location');\nvar unescape = require('./unescape');\nvar decode = require('./decode');\nvar tokenizer = require('./tokenizer');\n\nmodule.exports = Parser;\n\nfunction Parser(doc, file) {\n  this.file = file;\n  this.offset = {};\n  this.options = xtend(this.options);\n  this.setOptions({});\n\n  this.inList = false;\n  this.inBlock = false;\n  this.inLink = false;\n  this.atStart = true;\n\n  this.toOffset = vfileLocation(file).toOffset;\n  this.unescape = unescape(this, 'escape');\n  this.decode = decode(this);\n}\n\nvar proto = Parser.prototype;\n\n/* Expose core. */\nproto.setOptions = require('./set-options');\nproto.parse = require('./parse');\n\n/* Expose `defaults`. */\nproto.options = require('./defaults');\n\n/* Enter and exit helpers. */\nproto.exitStart = toggle('atStart', true);\nproto.enterList = toggle('inList', false);\nproto.enterLink = toggle('inLink', false);\nproto.enterBlock = toggle('inBlock', false);\n\n/* Nodes that can interupt a paragraph:\n *\n * ```markdown\n * A paragraph, followed by a thematic break.\n * ___\n * ```\n *\n * In the above example, the thematic break “interupts”\n * the paragraph. */\nproto.interruptParagraph = [\n  ['thematicBreak'],\n  ['atxHeading'],\n  ['fencedCode'],\n  ['blockquote'],\n  ['html'],\n  ['setextHeading', {commonmark: false}],\n  ['definition', {commonmark: false}],\n  ['footnote', {commonmark: false}]\n];\n\n/* Nodes that can interupt a list:\n *\n * ```markdown\n * - One\n * ___\n * ```\n *\n * In the above example, the thematic break “interupts”\n * the list. */\nproto.interruptList = [\n  ['atxHeading', {pedantic: false}],\n  ['fencedCode', {pedantic: false}],\n  ['thematicBreak', {pedantic: false}],\n  ['definition', {commonmark: false}],\n  ['footnote', {commonmark: false}]\n];\n\n/* Nodes that can interupt a blockquote:\n *\n * ```markdown\n * > A paragraph.\n * ___\n * ```\n *\n * In the above example, the thematic break “interupts”\n * the blockquote. */\nproto.interruptBlockquote = [\n  ['indentedCode', {commonmark: true}],\n  ['fencedCode', {commonmark: true}],\n  ['atxHeading', {commonmark: true}],\n  ['setextHeading', {commonmark: true}],\n  ['thematicBreak', {commonmark: true}],\n  ['html', {commonmark: true}],\n  ['list', {commonmark: true}],\n  ['definition', {commonmark: false}],\n  ['footnote', {commonmark: false}]\n];\n\n/* Handlers. */\nproto.blockTokenizers = {\n  newline: require('./tokenize/newline'),\n  indentedCode: require('./tokenize/code-indented'),\n  fencedCode: require('./tokenize/code-fenced'),\n  blockquote: require('./tokenize/blockquote'),\n  atxHeading: require('./tokenize/heading-atx'),\n  thematicBreak: require('./tokenize/thematic-break'),\n  list: require('./tokenize/list'),\n  setextHeading: require('./tokenize/heading-setext'),\n  html: require('./tokenize/html-block'),\n  footnote: require('./tokenize/footnote-definition'),\n  definition: require('./tokenize/definition'),\n  table: require('./tokenize/table'),\n  paragraph: require('./tokenize/paragraph')\n};\n\nproto.inlineTokenizers = {\n  escape: require('./tokenize/escape'),\n  autoLink: require('./tokenize/auto-link'),\n  url: require('./tokenize/url'),\n  html: require('./tokenize/html-inline'),\n  link: require('./tokenize/link'),\n  reference: require('./tokenize/reference'),\n  strong: require('./tokenize/strong'),\n  emphasis: require('./tokenize/emphasis'),\n  deletion: require('./tokenize/delete'),\n  code: require('./tokenize/code-inline'),\n  break: require('./tokenize/break'),\n  text: require('./tokenize/text')\n};\n\n/* Expose precedence. */\nproto.blockMethods = keys(proto.blockTokenizers);\nproto.inlineMethods = keys(proto.inlineTokenizers);\n\n/* Tokenizers. */\nproto.tokenizeBlock = tokenizer('block');\nproto.tokenizeInline = tokenizer('inline');\nproto.tokenizeFactory = tokenizer;\n\n/* Get all keys in `value`. */\nfunction keys(value) {\n  var result = [];\n  var key;\n\n  for (key in value) {\n    result.push(key);\n  }\n\n  return result;\n}\n","'use strict'\n\nmodule.exports = factory\n\n// Construct a state `toggler`: a function which inverses `property` in context\n// based on its current value.\n// The by `toggler` returned function restores that value.\nfunction factory(key, state, ctx) {\n  return enter\n\n  function enter() {\n    var context = ctx || this\n    var current = context[key]\n\n    context[key] = !state\n\n    return exit\n\n    function exit() {\n      context[key] = current\n    }\n  }\n}\n","'use strict'\n\nmodule.exports = factory\n\nfunction factory(file) {\n  var contents = indices(String(file))\n\n  return {\n    toPosition: offsetToPositionFactory(contents),\n    toOffset: positionToOffsetFactory(contents)\n  }\n}\n\n// Factory to get the line and column-based `position` for `offset` in the bound\n// indices.\nfunction offsetToPositionFactory(indices) {\n  return offsetToPosition\n\n  // Get the line and column-based `position` for `offset` in the bound indices.\n  function offsetToPosition(offset) {\n    var index = -1\n    var length = indices.length\n\n    if (offset < 0) {\n      return {}\n    }\n\n    while (++index < length) {\n      if (indices[index] > offset) {\n        return {\n          line: index + 1,\n          column: offset - (indices[index - 1] || 0) + 1,\n          offset: offset\n        }\n      }\n    }\n\n    return {}\n  }\n}\n\n// Factory to get the `offset` for a line and column-based `position` in the\n// bound indices.\nfunction positionToOffsetFactory(indices) {\n  return positionToOffset\n\n  // Get the `offset` for a line and column-based `position` in the bound\n  // indices.\n  function positionToOffset(position) {\n    var line = position && position.line\n    var column = position && position.column\n\n    if (!isNaN(line) && !isNaN(column) && line - 1 in indices) {\n      return (indices[line - 2] || 0) + column - 1 || 0\n    }\n\n    return -1\n  }\n}\n\n// Get indices of line-breaks in `value`.\nfunction indices(value) {\n  var result = []\n  var index = value.indexOf('\\n')\n\n  while (index !== -1) {\n    result.push(index + 1)\n    index = value.indexOf('\\n', index + 1)\n  }\n\n  result.push(value.length + 1)\n\n  return result\n}\n","'use strict';\n\nmodule.exports = factory;\n\n/* Factory to de-escape a value, based on a list at `key`\n * in `ctx`. */\nfunction factory(ctx, key) {\n  return unescape;\n\n  /* De-escape a string using the expression at `key`\n   * in `ctx`. */\n  function unescape(value) {\n    var prev = 0;\n    var index = value.indexOf('\\\\');\n    var escape = ctx[key];\n    var queue = [];\n    var character;\n\n    while (index !== -1) {\n      queue.push(value.slice(prev, index));\n      prev = index + 1;\n      character = value.charAt(prev);\n\n      /* If the following character is not a valid escape,\n       * add the slash. */\n      if (!character || escape.indexOf(character) === -1) {\n        queue.push('\\\\');\n      }\n\n      index = value.indexOf('\\\\', prev);\n    }\n\n    queue.push(value.slice(prev));\n\n    return queue.join('');\n  }\n}\n","'use strict';\n\nvar xtend = require('xtend');\nvar entities = require('parse-entities');\n\nmodule.exports = factory;\n\n/* Factory to create an entity decoder. */\nfunction factory(ctx) {\n  decoder.raw = decodeRaw;\n\n  return decoder;\n\n  /* Normalize `position` to add an `indent`. */\n  function normalize(position) {\n    var offsets = ctx.offset;\n    var line = position.line;\n    var result = [];\n\n    while (++line) {\n      if (!(line in offsets)) {\n        break;\n      }\n\n      result.push((offsets[line] || 0) + 1);\n    }\n\n    return {\n      start: position,\n      indent: result\n    };\n  }\n\n  /* Handle a warning.\n   * See https://github.com/wooorm/parse-entities\n   * for the warnings. */\n  function handleWarning(reason, position, code) {\n    if (code === 3) {\n      return;\n    }\n\n    ctx.file.message(reason, position);\n  }\n\n  /* Decode `value` (at `position`) into text-nodes. */\n  function decoder(value, position, handler) {\n    entities(value, {\n      position: normalize(position),\n      warning: handleWarning,\n      text: handler,\n      reference: handler,\n      textContext: ctx,\n      referenceContext: ctx\n    });\n  }\n\n  /* Decode `value` (at `position`) into a string. */\n  function decodeRaw(value, position, options) {\n    return entities(value, xtend(options, {\n      position: normalize(position),\n      warning: handleWarning\n    }));\n  }\n}\n","'use strict'\n\nmodule.exports = hexadecimal\n\n// Check if the given character code, or the character code at the first\n// character, is hexadecimal.\nfunction hexadecimal(character) {\n  var code = typeof character === 'string' ? character.charCodeAt(0) : character\n\n  return (\n    (code >= 97 /* a */ && code <= 102) /* z */ ||\n    (code >= 65 /* A */ && code <= 70) /* Z */ ||\n    (code >= 48 /* A */ && code <= 57) /* Z */\n  )\n}\n","'use strict'\n\nvar alphabetical = require('is-alphabetical')\nvar decimal = require('is-decimal')\n\nmodule.exports = alphanumerical\n\n// Check if the given character code, or the character code at the first\n// character, is alphanumerical.\nfunction alphanumerical(character) {\n  return alphabetical(character) || decimal(character)\n}\n","'use strict'\n\n/* eslint-env browser */\n\nvar el\n\nvar semicolon = 59 //  ';'\n\nmodule.exports = decodeEntity\n\nfunction decodeEntity(characters) {\n  var entity = '&' + characters + ';'\n  var char\n\n  el = el || document.createElement('i')\n  el.innerHTML = entity\n  char = el.textContent\n\n  // Some entities do not require the closing semicolon (`&not` - for instance),\n  // which leads to situations where parsing the assumed entity of &notit; will\n  // result in the string `¬it;`.  When we encounter a trailing semicolon after\n  // parsing and the entity to decode was not a semicolon (`&semi;`), we can\n  // assume that the matching was incomplete\n  if (char.charCodeAt(char.length - 1) === semicolon && characters !== 'semi') {\n    return false\n  }\n\n  // If the decoded string is equal to the input, the entity was not valid\n  return char === entity ? false : char\n}\n","'use strict';\n\nmodule.exports = factory;\n\nvar MERGEABLE_NODES = {\n  text: mergeText,\n  blockquote: mergeBlockquote\n};\n\n/* Check whether a node is mergeable with adjacent nodes. */\nfunction mergeable(node) {\n  var start;\n  var end;\n\n  if (node.type !== 'text' || !node.position) {\n    return true;\n  }\n\n  start = node.position.start;\n  end = node.position.end;\n\n  /* Only merge nodes which occupy the same size as their\n   * `value`. */\n  return start.line !== end.line ||\n      end.column - start.column === node.value.length;\n}\n\n/* Merge two text nodes: `node` into `prev`. */\nfunction mergeText(prev, node) {\n  prev.value += node.value;\n\n  return prev;\n}\n\n/* Merge two blockquotes: `node` into `prev`, unless in\n * CommonMark mode. */\nfunction mergeBlockquote(prev, node) {\n  if (this.options.commonmark) {\n    return node;\n  }\n\n  prev.children = prev.children.concat(node.children);\n\n  return prev;\n}\n\n/* Construct a tokenizer.  This creates both\n * `tokenizeInline` and `tokenizeBlock`. */\nfunction factory(type) {\n  return tokenize;\n\n  /* Tokenizer for a bound `type`. */\n  function tokenize(value, location) {\n    var self = this;\n    var offset = self.offset;\n    var tokens = [];\n    var methods = self[type + 'Methods'];\n    var tokenizers = self[type + 'Tokenizers'];\n    var line = location.line;\n    var column = location.column;\n    var index;\n    var length;\n    var method;\n    var name;\n    var matched;\n    var valueLength;\n\n    /* Trim white space only lines. */\n    if (!value) {\n      return tokens;\n    }\n\n    /* Expose on `eat`. */\n    eat.now = now;\n    eat.file = self.file;\n\n    /* Sync initial offset. */\n    updatePosition('');\n\n    /* Iterate over `value`, and iterate over all\n     * tokenizers.  When one eats something, re-iterate\n     * with the remaining value.  If no tokenizer eats,\n     * something failed (should not happen) and an\n     * exception is thrown. */\n    while (value) {\n      index = -1;\n      length = methods.length;\n      matched = false;\n\n      while (++index < length) {\n        name = methods[index];\n        method = tokenizers[name];\n\n        if (\n          method &&\n          /* istanbul ignore next */ (!method.onlyAtStart || self.atStart) &&\n          (!method.notInList || !self.inList) &&\n          (!method.notInBlock || !self.inBlock) &&\n          (!method.notInLink || !self.inLink)\n        ) {\n          valueLength = value.length;\n\n          method.apply(self, [eat, value]);\n\n          matched = valueLength !== value.length;\n\n          if (matched) {\n            break;\n          }\n        }\n      }\n\n      /* istanbul ignore if */\n      if (!matched) {\n        self.file.fail(new Error('Infinite loop'), eat.now());\n      }\n    }\n\n    self.eof = now();\n\n    return tokens;\n\n    /* Update line, column, and offset based on\n     * `value`. */\n    function updatePosition(subvalue) {\n      var lastIndex = -1;\n      var index = subvalue.indexOf('\\n');\n\n      while (index !== -1) {\n        line++;\n        lastIndex = index;\n        index = subvalue.indexOf('\\n', index + 1);\n      }\n\n      if (lastIndex === -1) {\n        column += subvalue.length;\n      } else {\n        column = subvalue.length - lastIndex;\n      }\n\n      if (line in offset) {\n        if (lastIndex !== -1) {\n          column += offset[line];\n        } else if (column <= offset[line]) {\n          column = offset[line] + 1;\n        }\n      }\n    }\n\n    /* Get offset.  Called before the first character is\n     * eaten to retrieve the range's offsets. */\n    function getOffset() {\n      var indentation = [];\n      var pos = line + 1;\n\n      /* Done.  Called when the last character is\n       * eaten to retrieve the range’s offsets. */\n      return function () {\n        var last = line + 1;\n\n        while (pos < last) {\n          indentation.push((offset[pos] || 0) + 1);\n\n          pos++;\n        }\n\n        return indentation;\n      };\n    }\n\n    /* Get the current position. */\n    function now() {\n      var pos = {line: line, column: column};\n\n      pos.offset = self.toOffset(pos);\n\n      return pos;\n    }\n\n    /* Store position information for a node. */\n    function Position(start) {\n      this.start = start;\n      this.end = now();\n    }\n\n    /* Throw when a value is incorrectly eaten.\n     * This shouldn’t happen but will throw on new,\n     * incorrect rules. */\n    function validateEat(subvalue) {\n      /* istanbul ignore if */\n      if (value.substring(0, subvalue.length) !== subvalue) {\n        /* Capture stack-trace. */\n        self.file.fail(\n          new Error(\n            'Incorrectly eaten value: please report this ' +\n            'warning on http://git.io/vg5Ft'\n          ),\n          now()\n        );\n      }\n    }\n\n    /* Mark position and patch `node.position`. */\n    function position() {\n      var before = now();\n\n      return update;\n\n      /* Add the position to a node. */\n      function update(node, indent) {\n        var prev = node.position;\n        var start = prev ? prev.start : before;\n        var combined = [];\n        var n = prev && prev.end.line;\n        var l = before.line;\n\n        node.position = new Position(start);\n\n        /* If there was already a `position`, this\n         * node was merged.  Fixing `start` wasn’t\n         * hard, but the indent is different.\n         * Especially because some information, the\n         * indent between `n` and `l` wasn’t\n         * tracked.  Luckily, that space is\n         * (should be?) empty, so we can safely\n         * check for it now. */\n        if (prev && indent && prev.indent) {\n          combined = prev.indent;\n\n          if (n < l) {\n            while (++n < l) {\n              combined.push((offset[n] || 0) + 1);\n            }\n\n            combined.push(before.column);\n          }\n\n          indent = combined.concat(indent);\n        }\n\n        node.position.indent = indent || [];\n\n        return node;\n      }\n    }\n\n    /* Add `node` to `parent`s children or to `tokens`.\n     * Performs merges where possible. */\n    function add(node, parent) {\n      var children = parent ? parent.children : tokens;\n      var prev = children[children.length - 1];\n\n      if (\n        prev &&\n        node.type === prev.type &&\n        node.type in MERGEABLE_NODES &&\n        mergeable(prev) &&\n        mergeable(node)\n      ) {\n        node = MERGEABLE_NODES[node.type].call(self, prev, node);\n      }\n\n      if (node !== prev) {\n        children.push(node);\n      }\n\n      if (self.atStart && tokens.length !== 0) {\n        self.exitStart();\n      }\n\n      return node;\n    }\n\n    /* Remove `subvalue` from `value`.\n     * `subvalue` must be at the start of `value`. */\n    function eat(subvalue) {\n      var indent = getOffset();\n      var pos = position();\n      var current = now();\n\n      validateEat(subvalue);\n\n      apply.reset = reset;\n      reset.test = test;\n      apply.test = test;\n\n      value = value.substring(subvalue.length);\n\n      updatePosition(subvalue);\n\n      indent = indent();\n\n      return apply;\n\n      /* Add the given arguments, add `position` to\n       * the returned node, and return the node. */\n      function apply(node, parent) {\n        return pos(add(pos(node), parent), indent);\n      }\n\n      /* Functions just like apply, but resets the\n       * content:  the line and column are reversed,\n       * and the eaten value is re-added.\n       * This is useful for nodes with a single\n       * type of content, such as lists and tables.\n       * See `apply` above for what parameters are\n       * expected. */\n      function reset() {\n        var node = apply.apply(null, arguments);\n\n        line = current.line;\n        column = current.column;\n        value = subvalue + value;\n\n        return node;\n      }\n\n      /* Test the position, after eating, and reverse\n       * to a not-eaten state. */\n      function test() {\n        var result = pos({});\n\n        line = current.line;\n        column = current.column;\n        value = subvalue + value;\n\n        return result.position;\n      }\n    }\n  }\n}\n","'use strict';\n\nvar xtend = require('xtend');\nvar escapes = require('markdown-escapes');\nvar defaults = require('./defaults');\n\nmodule.exports = setOptions;\n\nfunction setOptions(options) {\n  var self = this;\n  var current = self.options;\n  var key;\n  var value;\n\n  if (options == null) {\n    options = {};\n  } else if (typeof options === 'object') {\n    options = xtend(options);\n  } else {\n    throw new Error(\n      'Invalid value `' + options + '` ' +\n      'for setting `options`'\n    );\n  }\n\n  for (key in defaults) {\n    value = options[key];\n\n    if (value == null) {\n      value = current[key];\n    }\n\n    if (\n      (key !== 'blocks' && typeof value !== 'boolean') ||\n      (key === 'blocks' && typeof value !== 'object')\n    ) {\n      throw new Error('Invalid value `' + value + '` for setting `options.' + key + '`');\n    }\n\n    options[key] = value;\n  }\n\n  self.options = options;\n  self.escape = escapes(options);\n\n  return self;\n}\n","'use strict'\n\nmodule.exports = escapes\n\nvar defaults = [\n  '\\\\',\n  '`',\n  '*',\n  '{',\n  '}',\n  '[',\n  ']',\n  '(',\n  ')',\n  '#',\n  '+',\n  '-',\n  '.',\n  '!',\n  '_',\n  '>'\n]\n\nvar gfm = defaults.concat(['~', '|'])\n\nvar commonmark = gfm.concat([\n  '\\n',\n  '\"',\n  '$',\n  '%',\n  '&',\n  \"'\",\n  ',',\n  '/',\n  ':',\n  ';',\n  '<',\n  '=',\n  '?',\n  '@',\n  '^'\n])\n\nescapes.default = defaults\nescapes.gfm = gfm\nescapes.commonmark = commonmark\n\n// Get markdown escapes.\nfunction escapes(options) {\n  var settings = options || {}\n\n  if (settings.commonmark) {\n    return commonmark\n  }\n\n  return settings.gfm ? gfm : defaults\n}\n","'use strict';\n\nvar xtend = require('xtend');\nvar removePosition = require('unist-util-remove-position');\n\nmodule.exports = parse;\n\nvar C_NEWLINE = '\\n';\nvar EXPRESSION_LINE_BREAKS = /\\r\\n|\\r/g;\n\n/* Parse the bound file. */\nfunction parse() {\n  var self = this;\n  var value = String(self.file);\n  var start = {line: 1, column: 1, offset: 0};\n  var content = xtend(start);\n  var node;\n\n  /* Clean non-unix newlines: `\\r\\n` and `\\r` are all\n   * changed to `\\n`.  This should not affect positional\n   * information. */\n  value = value.replace(EXPRESSION_LINE_BREAKS, C_NEWLINE);\n\n  if (value.charCodeAt(0) === 0xFEFF) {\n    value = value.slice(1);\n\n    content.column++;\n    content.offset++;\n  }\n\n  node = {\n    type: 'root',\n    children: self.tokenizeBlock(value, content),\n    position: {\n      start: start,\n      end: self.eof || xtend(start)\n    }\n  };\n\n  if (!self.options.position) {\n    removePosition(node, true);\n  }\n\n  return node;\n}\n","'use strict'\n\nvar visit = require('unist-util-visit')\n\nmodule.exports = removePosition\n\nfunction removePosition(node, force) {\n  visit(node, force ? hard : soft)\n  return node\n}\n\nfunction hard(node) {\n  delete node.position\n}\n\nfunction soft(node) {\n  node.position = undefined\n}\n","'use strict'\n\nmodule.exports = visitParents\n\nvar convert = require('unist-util-is/convert')\n\nvar CONTINUE = true\nvar SKIP = 'skip'\nvar EXIT = false\n\nvisitParents.CONTINUE = CONTINUE\nvisitParents.SKIP = SKIP\nvisitParents.EXIT = EXIT\n\nfunction visitParents(tree, test, visitor, reverse) {\n  var is\n\n  if (typeof test === 'function' && typeof visitor !== 'function') {\n    reverse = visitor\n    visitor = test\n    test = null\n  }\n\n  is = convert(test)\n\n  one(tree, null, [])\n\n  // Visit a single node.\n  function one(node, index, parents) {\n    var result = []\n    var subresult\n\n    if (!test || is(node, index, parents[parents.length - 1] || null)) {\n      result = toResult(visitor(node, parents))\n\n      if (result[0] === EXIT) {\n        return result\n      }\n    }\n\n    if (node.children && result[0] !== SKIP) {\n      subresult = toResult(all(node.children, parents.concat(node)))\n      return subresult[0] === EXIT ? subresult : result\n    }\n\n    return result\n  }\n\n  // Visit children in `parent`.\n  function all(children, parents) {\n    var min = -1\n    var step = reverse ? -1 : 1\n    var index = (reverse ? children.length : min) + step\n    var result\n\n    while (index > min && index < children.length) {\n      result = one(children[index], index, parents)\n\n      if (result[0] === EXIT) {\n        return result\n      }\n\n      index = typeof result[1] === 'number' ? result[1] : index + step\n    }\n  }\n}\n\nfunction toResult(value) {\n  if (value !== null && typeof value === 'object' && 'length' in value) {\n    return value\n  }\n\n  if (typeof value === 'number') {\n    return [CONTINUE, value]\n  }\n\n  return [value]\n}\n","'use strict'\n\nmodule.exports = convert\n\nfunction convert(test) {\n  if (typeof test === 'string') {\n    return typeFactory(test)\n  }\n\n  if (test === null || test === undefined) {\n    return ok\n  }\n\n  if (typeof test === 'object') {\n    return ('length' in test ? anyFactory : matchesFactory)(test)\n  }\n\n  if (typeof test === 'function') {\n    return test\n  }\n\n  throw new Error('Expected function, string, or object as test')\n}\n\nfunction convertAll(tests) {\n  var results = []\n  var length = tests.length\n  var index = -1\n\n  while (++index < length) {\n    results[index] = convert(tests[index])\n  }\n\n  return results\n}\n\n// Utility assert each property in `test` is represented in `node`, and each\n// values are strictly equal.\nfunction matchesFactory(test) {\n  return matches\n\n  function matches(node) {\n    var key\n\n    for (key in test) {\n      if (node[key] !== test[key]) {\n        return false\n      }\n    }\n\n    return true\n  }\n}\n\nfunction anyFactory(tests) {\n  var checks = convertAll(tests)\n  var length = checks.length\n\n  return matches\n\n  function matches() {\n    var index = -1\n\n    while (++index < length) {\n      if (checks[index].apply(this, arguments)) {\n        return true\n      }\n    }\n\n    return false\n  }\n}\n\n// Utility to convert a string into a function which checks a given node’s type\n// for said string.\nfunction typeFactory(test) {\n  return type\n\n  function type(node) {\n    return Boolean(node && node.type === test)\n  }\n}\n\n// Utility to return true.\nfunction ok() {\n  return true\n}\n","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nmodule.exports = newline;\n\n/* Tokenise newline. */\nfunction newline(eat, value, silent) {\n  var character = value.charAt(0);\n  var length;\n  var subvalue;\n  var queue;\n  var index;\n\n  if (character !== '\\n') {\n    return;\n  }\n\n  /* istanbul ignore if - never used (yet) */\n  if (silent) {\n    return true;\n  }\n\n  index = 1;\n  length = value.length;\n  subvalue = character;\n  queue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (!whitespace(character)) {\n      break;\n    }\n\n    queue += character;\n\n    if (character === '\\n') {\n      subvalue += queue;\n      queue = '';\n    }\n\n    index++;\n  }\n\n  eat(subvalue);\n}\n","'use strict';\n\nvar repeat = require('repeat-string');\nvar trim = require('trim-trailing-lines');\n\nmodule.exports = indentedCode;\n\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\n\nvar CODE_INDENT_COUNT = 4;\nvar CODE_INDENT = repeat(C_SPACE, CODE_INDENT_COUNT);\n\n/* Tokenise indented code. */\nfunction indentedCode(eat, value, silent) {\n  var index = -1;\n  var length = value.length;\n  var subvalue = '';\n  var content = '';\n  var subvalueQueue = '';\n  var contentQueue = '';\n  var character;\n  var blankQueue;\n  var indent;\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (indent) {\n      indent = false;\n\n      subvalue += subvalueQueue;\n      content += contentQueue;\n      subvalueQueue = '';\n      contentQueue = '';\n\n      if (character === C_NEWLINE) {\n        subvalueQueue = character;\n        contentQueue = character;\n      } else {\n        subvalue += character;\n        content += character;\n\n        while (++index < length) {\n          character = value.charAt(index);\n\n          if (!character || character === C_NEWLINE) {\n            contentQueue = character;\n            subvalueQueue = character;\n            break;\n          }\n\n          subvalue += character;\n          content += character;\n        }\n      }\n    } else if (\n      character === C_SPACE &&\n      value.charAt(index + 1) === character &&\n      value.charAt(index + 2) === character &&\n      value.charAt(index + 3) === character\n    ) {\n      subvalueQueue += CODE_INDENT;\n      index += 3;\n      indent = true;\n    } else if (character === C_TAB) {\n      subvalueQueue += character;\n      indent = true;\n    } else {\n      blankQueue = '';\n\n      while (character === C_TAB || character === C_SPACE) {\n        blankQueue += character;\n        character = value.charAt(++index);\n      }\n\n      if (character !== C_NEWLINE) {\n        break;\n      }\n\n      subvalueQueue += blankQueue + character;\n      contentQueue += character;\n    }\n  }\n\n  if (content) {\n    if (silent) {\n      return true;\n    }\n\n    return eat(subvalue)({\n      type: 'code',\n      lang: null,\n      value: trim(content)\n    });\n  }\n}\n","'use strict';\n\nvar trim = require('trim-trailing-lines');\n\nmodule.exports = fencedCode;\n\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_TILDE = '~';\nvar C_TICK = '`';\n\nvar MIN_FENCE_COUNT = 3;\nvar CODE_INDENT_COUNT = 4;\n\nfunction fencedCode(eat, value, silent) {\n  var self = this;\n  var settings = self.options;\n  var length = value.length + 1;\n  var index = 0;\n  var subvalue = '';\n  var fenceCount;\n  var marker;\n  var character;\n  var flag;\n  var queue;\n  var content;\n  var exdentedContent;\n  var closing;\n  var exdentedClosing;\n  var indent;\n  var now;\n\n  if (!settings.gfm) {\n    return;\n  }\n\n  /* Eat initial spacing. */\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_SPACE && character !== C_TAB) {\n      break;\n    }\n\n    subvalue += character;\n    index++;\n  }\n\n  indent = index;\n\n  /* Eat the fence. */\n  character = value.charAt(index);\n\n  if (character !== C_TILDE && character !== C_TICK) {\n    return;\n  }\n\n  index++;\n  marker = character;\n  fenceCount = 1;\n  subvalue += character;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character !== marker) {\n      break;\n    }\n\n    subvalue += character;\n    fenceCount++;\n    index++;\n  }\n\n  if (fenceCount < MIN_FENCE_COUNT) {\n    return;\n  }\n\n  /* Eat spacing before flag. */\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_SPACE && character !== C_TAB) {\n      break;\n    }\n\n    subvalue += character;\n    index++;\n  }\n\n  /* Eat flag. */\n  flag = '';\n  queue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (\n      character === C_NEWLINE ||\n      character === C_TILDE ||\n      character === C_TICK\n    ) {\n      break;\n    }\n\n    if (character === C_SPACE || character === C_TAB) {\n      queue += character;\n    } else {\n      flag += queue + character;\n      queue = '';\n    }\n\n    index++;\n  }\n\n  character = value.charAt(index);\n\n  if (character && character !== C_NEWLINE) {\n    return;\n  }\n\n  if (silent) {\n    return true;\n  }\n\n  now = eat.now();\n  now.column += subvalue.length;\n  now.offset += subvalue.length;\n\n  subvalue += flag;\n  flag = self.decode.raw(self.unescape(flag), now);\n\n  if (queue) {\n    subvalue += queue;\n  }\n\n  queue = '';\n  closing = '';\n  exdentedClosing = '';\n  content = '';\n  exdentedContent = '';\n\n  /* Eat content. */\n  while (index < length) {\n    character = value.charAt(index);\n    content += closing;\n    exdentedContent += exdentedClosing;\n    closing = '';\n    exdentedClosing = '';\n\n    if (character !== C_NEWLINE) {\n      content += character;\n      exdentedClosing += character;\n      index++;\n      continue;\n    }\n\n    /* Add the newline to `subvalue` if its the first\n     * character.  Otherwise, add it to the `closing`\n     * queue. */\n    if (content) {\n      closing += character;\n      exdentedClosing += character;\n    } else {\n      subvalue += character;\n    }\n\n    queue = '';\n    index++;\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (character !== C_SPACE) {\n        break;\n      }\n\n      queue += character;\n      index++;\n    }\n\n    closing += queue;\n    exdentedClosing += queue.slice(indent);\n\n    if (queue.length >= CODE_INDENT_COUNT) {\n      continue;\n    }\n\n    queue = '';\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (character !== marker) {\n        break;\n      }\n\n      queue += character;\n      index++;\n    }\n\n    closing += queue;\n    exdentedClosing += queue;\n\n    if (queue.length < fenceCount) {\n      continue;\n    }\n\n    queue = '';\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (character !== C_SPACE && character !== C_TAB) {\n        break;\n      }\n\n      closing += character;\n      exdentedClosing += character;\n      index++;\n    }\n\n    if (!character || character === C_NEWLINE) {\n      break;\n    }\n  }\n\n  subvalue += content + closing;\n\n  return eat(subvalue)({\n    type: 'code',\n    lang: flag || null,\n    value: trim(exdentedContent)\n  });\n}\n","'use strict';\n\nvar trim = require('trim');\nvar interrupt = require('../util/interrupt');\n\nmodule.exports = blockquote;\n\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_GT = '>';\n\n/* Tokenise a blockquote. */\nfunction blockquote(eat, value, silent) {\n  var self = this;\n  var offsets = self.offset;\n  var tokenizers = self.blockTokenizers;\n  var interruptors = self.interruptBlockquote;\n  var now = eat.now();\n  var currentLine = now.line;\n  var length = value.length;\n  var values = [];\n  var contents = [];\n  var indents = [];\n  var add;\n  var index = 0;\n  var character;\n  var rest;\n  var nextIndex;\n  var content;\n  var line;\n  var startIndex;\n  var prefixed;\n  var exit;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_SPACE && character !== C_TAB) {\n      break;\n    }\n\n    index++;\n  }\n\n  if (value.charAt(index) !== C_GT) {\n    return;\n  }\n\n  if (silent) {\n    return true;\n  }\n\n  index = 0;\n\n  while (index < length) {\n    nextIndex = value.indexOf(C_NEWLINE, index);\n    startIndex = index;\n    prefixed = false;\n\n    if (nextIndex === -1) {\n      nextIndex = length;\n    }\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (character !== C_SPACE && character !== C_TAB) {\n        break;\n      }\n\n      index++;\n    }\n\n    if (value.charAt(index) === C_GT) {\n      index++;\n      prefixed = true;\n\n      if (value.charAt(index) === C_SPACE) {\n        index++;\n      }\n    } else {\n      index = startIndex;\n    }\n\n    content = value.slice(index, nextIndex);\n\n    if (!prefixed && !trim(content)) {\n      index = startIndex;\n      break;\n    }\n\n    if (!prefixed) {\n      rest = value.slice(index);\n\n      /* Check if the following code contains a possible\n       * block. */\n      if (interrupt(interruptors, tokenizers, self, [eat, rest, true])) {\n        break;\n      }\n    }\n\n    line = startIndex === index ? content : value.slice(startIndex, nextIndex);\n\n    indents.push(index - startIndex);\n    values.push(line);\n    contents.push(content);\n\n    index = nextIndex + 1;\n  }\n\n  index = -1;\n  length = indents.length;\n  add = eat(values.join(C_NEWLINE));\n\n  while (++index < length) {\n    offsets[currentLine] = (offsets[currentLine] || 0) + indents[index];\n    currentLine++;\n  }\n\n  exit = self.enterBlock();\n  contents = self.tokenizeBlock(contents.join(C_NEWLINE), now);\n  exit();\n\n  return add({\n    type: 'blockquote',\n    children: contents\n  });\n}\n","'use strict';\n\nmodule.exports = atxHeading;\n\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_HASH = '#';\n\nvar MAX_ATX_COUNT = 6;\n\nfunction atxHeading(eat, value, silent) {\n  var self = this;\n  var settings = self.options;\n  var length = value.length + 1;\n  var index = -1;\n  var now = eat.now();\n  var subvalue = '';\n  var content = '';\n  var character;\n  var queue;\n  var depth;\n\n  /* Eat initial spacing. */\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_SPACE && character !== C_TAB) {\n      index--;\n      break;\n    }\n\n    subvalue += character;\n  }\n\n  /* Eat hashes. */\n  depth = 0;\n\n  while (++index <= length) {\n    character = value.charAt(index);\n\n    if (character !== C_HASH) {\n      index--;\n      break;\n    }\n\n    subvalue += character;\n    depth++;\n  }\n\n  if (depth > MAX_ATX_COUNT) {\n    return;\n  }\n\n  if (\n    !depth ||\n    (!settings.pedantic && value.charAt(index + 1) === C_HASH)\n  ) {\n    return;\n  }\n\n  length = value.length + 1;\n\n  /* Eat intermediate white-space. */\n  queue = '';\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_SPACE && character !== C_TAB) {\n      index--;\n      break;\n    }\n\n    queue += character;\n  }\n\n  /* Exit when not in pedantic mode without spacing. */\n  if (\n    !settings.pedantic &&\n    queue.length === 0 &&\n    character &&\n    character !== C_NEWLINE\n  ) {\n    return;\n  }\n\n  if (silent) {\n    return true;\n  }\n\n  /* Eat content. */\n  subvalue += queue;\n  queue = '';\n  content = '';\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (!character || character === C_NEWLINE) {\n      break;\n    }\n\n    if (\n      character !== C_SPACE &&\n      character !== C_TAB &&\n      character !== C_HASH\n    ) {\n      content += queue + character;\n      queue = '';\n      continue;\n    }\n\n    while (character === C_SPACE || character === C_TAB) {\n      queue += character;\n      character = value.charAt(++index);\n    }\n\n    while (character === C_HASH) {\n      queue += character;\n      character = value.charAt(++index);\n    }\n\n    while (character === C_SPACE || character === C_TAB) {\n      queue += character;\n      character = value.charAt(++index);\n    }\n\n    index--;\n  }\n\n  now.column += subvalue.length;\n  now.offset += subvalue.length;\n  subvalue += content + queue;\n\n  return eat(subvalue)({\n    type: 'heading',\n    depth: depth,\n    children: self.tokenizeInline(content, now)\n  });\n}\n","'use strict';\n\nmodule.exports = thematicBreak;\n\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_ASTERISK = '*';\nvar C_UNDERSCORE = '_';\nvar C_DASH = '-';\n\nvar THEMATIC_BREAK_MARKER_COUNT = 3;\n\nfunction thematicBreak(eat, value, silent) {\n  var index = -1;\n  var length = value.length + 1;\n  var subvalue = '';\n  var character;\n  var marker;\n  var markerCount;\n  var queue;\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_TAB && character !== C_SPACE) {\n      break;\n    }\n\n    subvalue += character;\n  }\n\n  if (\n    character !== C_ASTERISK &&\n    character !== C_DASH &&\n    character !== C_UNDERSCORE\n  ) {\n    return;\n  }\n\n  marker = character;\n  subvalue += character;\n  markerCount = 1;\n  queue = '';\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (character === marker) {\n      markerCount++;\n      subvalue += queue + marker;\n      queue = '';\n    } else if (character === C_SPACE) {\n      queue += character;\n    } else if (\n      markerCount >= THEMATIC_BREAK_MARKER_COUNT &&\n      (!character || character === C_NEWLINE)\n    ) {\n      subvalue += queue;\n\n      if (silent) {\n        return true;\n      }\n\n      return eat(subvalue)({type: 'thematicBreak'});\n    } else {\n      return;\n    }\n  }\n}\n","'use strict';\n\n/* eslint-disable max-params */\n\nvar trim = require('trim');\nvar repeat = require('repeat-string');\nvar decimal = require('is-decimal');\nvar getIndent = require('../util/get-indentation');\nvar removeIndent = require('../util/remove-indentation');\nvar interrupt = require('../util/interrupt');\n\nmodule.exports = list;\n\nvar C_ASTERISK = '*';\nvar C_UNDERSCORE = '_';\nvar C_PLUS = '+';\nvar C_DASH = '-';\nvar C_DOT = '.';\nvar C_SPACE = ' ';\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_PAREN_CLOSE = ')';\nvar C_X_LOWER = 'x';\n\nvar TAB_SIZE = 4;\nvar EXPRESSION_LOOSE_LIST_ITEM = /\\n\\n(?!\\s*$)/;\nvar EXPRESSION_TASK_ITEM = /^\\[([ \\t]|x|X)][ \\t]/;\nvar EXPRESSION_BULLET = /^([ \\t]*)([*+-]|\\d+[.)])( {1,4}(?! )| |\\t|$|(?=\\n))([^\\n]*)/;\nvar EXPRESSION_PEDANTIC_BULLET = /^([ \\t]*)([*+-]|\\d+[.)])([ \\t]+)/;\nvar EXPRESSION_INITIAL_INDENT = /^( {1,4}|\\t)?/gm;\n\n/* Map of characters which can be used to mark\n * list-items. */\nvar LIST_UNORDERED_MARKERS = {};\n\nLIST_UNORDERED_MARKERS[C_ASTERISK] = true;\nLIST_UNORDERED_MARKERS[C_PLUS] = true;\nLIST_UNORDERED_MARKERS[C_DASH] = true;\n\n/* Map of characters which can be used to mark\n * list-items after a digit. */\nvar LIST_ORDERED_MARKERS = {};\n\nLIST_ORDERED_MARKERS[C_DOT] = true;\n\n/* Map of characters which can be used to mark\n * list-items after a digit. */\nvar LIST_ORDERED_COMMONMARK_MARKERS = {};\n\nLIST_ORDERED_COMMONMARK_MARKERS[C_DOT] = true;\nLIST_ORDERED_COMMONMARK_MARKERS[C_PAREN_CLOSE] = true;\n\nfunction list(eat, value, silent) {\n  var self = this;\n  var commonmark = self.options.commonmark;\n  var pedantic = self.options.pedantic;\n  var tokenizers = self.blockTokenizers;\n  var interuptors = self.interruptList;\n  var markers;\n  var index = 0;\n  var length = value.length;\n  var start = null;\n  var size = 0;\n  var queue;\n  var ordered;\n  var character;\n  var marker;\n  var nextIndex;\n  var startIndex;\n  var prefixed;\n  var currentMarker;\n  var content;\n  var line;\n  var prevEmpty;\n  var empty;\n  var items;\n  var allLines;\n  var emptyLines;\n  var item;\n  var enterTop;\n  var exitBlockquote;\n  var isLoose;\n  var node;\n  var now;\n  var end;\n  var indented;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character === C_TAB) {\n      size += TAB_SIZE - (size % TAB_SIZE);\n    } else if (character === C_SPACE) {\n      size++;\n    } else {\n      break;\n    }\n\n    index++;\n  }\n\n  if (size >= TAB_SIZE) {\n    return;\n  }\n\n  character = value.charAt(index);\n\n  markers = commonmark ?\n    LIST_ORDERED_COMMONMARK_MARKERS :\n    LIST_ORDERED_MARKERS;\n\n  if (LIST_UNORDERED_MARKERS[character] === true) {\n    marker = character;\n    ordered = false;\n  } else {\n    ordered = true;\n    queue = '';\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (!decimal(character)) {\n        break;\n      }\n\n      queue += character;\n      index++;\n    }\n\n    character = value.charAt(index);\n\n    if (!queue || markers[character] !== true) {\n      return;\n    }\n\n    start = parseInt(queue, 10);\n    marker = character;\n  }\n\n  character = value.charAt(++index);\n\n  if (character !== C_SPACE && character !== C_TAB) {\n    return;\n  }\n\n  if (silent) {\n    return true;\n  }\n\n  index = 0;\n  items = [];\n  allLines = [];\n  emptyLines = [];\n\n  while (index < length) {\n    nextIndex = value.indexOf(C_NEWLINE, index);\n    startIndex = index;\n    prefixed = false;\n    indented = false;\n\n    if (nextIndex === -1) {\n      nextIndex = length;\n    }\n\n    end = index + TAB_SIZE;\n    size = 0;\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (character === C_TAB) {\n        size += TAB_SIZE - (size % TAB_SIZE);\n      } else if (character === C_SPACE) {\n        size++;\n      } else {\n        break;\n      }\n\n      index++;\n    }\n\n    if (size >= TAB_SIZE) {\n      indented = true;\n    }\n\n    if (item && size >= item.indent) {\n      indented = true;\n    }\n\n    character = value.charAt(index);\n    currentMarker = null;\n\n    if (!indented) {\n      if (LIST_UNORDERED_MARKERS[character] === true) {\n        currentMarker = character;\n        index++;\n        size++;\n      } else {\n        queue = '';\n\n        while (index < length) {\n          character = value.charAt(index);\n\n          if (!decimal(character)) {\n            break;\n          }\n\n          queue += character;\n          index++;\n        }\n\n        character = value.charAt(index);\n        index++;\n\n        if (queue && markers[character] === true) {\n          currentMarker = character;\n          size += queue.length + 1;\n        }\n      }\n\n      if (currentMarker) {\n        character = value.charAt(index);\n\n        if (character === C_TAB) {\n          size += TAB_SIZE - (size % TAB_SIZE);\n          index++;\n        } else if (character === C_SPACE) {\n          end = index + TAB_SIZE;\n\n          while (index < end) {\n            if (value.charAt(index) !== C_SPACE) {\n              break;\n            }\n\n            index++;\n            size++;\n          }\n\n          if (index === end && value.charAt(index) === C_SPACE) {\n            index -= TAB_SIZE - 1;\n            size -= TAB_SIZE - 1;\n          }\n        } else if (character !== C_NEWLINE && character !== '') {\n          currentMarker = null;\n        }\n      }\n    }\n\n    if (currentMarker) {\n      if (!pedantic && marker !== currentMarker) {\n        break;\n      }\n\n      prefixed = true;\n    } else {\n      if (!commonmark && !indented && value.charAt(startIndex) === C_SPACE) {\n        indented = true;\n      } else if (commonmark && item) {\n        indented = size >= item.indent || size > TAB_SIZE;\n      }\n\n      prefixed = false;\n      index = startIndex;\n    }\n\n    line = value.slice(startIndex, nextIndex);\n    content = startIndex === index ? line : value.slice(index, nextIndex);\n\n    if (\n      currentMarker === C_ASTERISK ||\n      currentMarker === C_UNDERSCORE ||\n      currentMarker === C_DASH\n    ) {\n      if (tokenizers.thematicBreak.call(self, eat, line, true)) {\n        break;\n      }\n    }\n\n    prevEmpty = empty;\n    empty = !trim(content).length;\n\n    if (indented && item) {\n      item.value = item.value.concat(emptyLines, line);\n      allLines = allLines.concat(emptyLines, line);\n      emptyLines = [];\n    } else if (prefixed) {\n      if (emptyLines.length !== 0) {\n        item.value.push('');\n        item.trail = emptyLines.concat();\n      }\n\n      item = {\n        value: [line],\n        indent: size,\n        trail: []\n      };\n\n      items.push(item);\n      allLines = allLines.concat(emptyLines, line);\n      emptyLines = [];\n    } else if (empty) {\n      if (prevEmpty) {\n        break;\n      }\n\n      emptyLines.push(line);\n    } else {\n      if (prevEmpty) {\n        break;\n      }\n\n      if (interrupt(interuptors, tokenizers, self, [eat, line, true])) {\n        break;\n      }\n\n      item.value = item.value.concat(emptyLines, line);\n      allLines = allLines.concat(emptyLines, line);\n      emptyLines = [];\n    }\n\n    index = nextIndex + 1;\n  }\n\n  node = eat(allLines.join(C_NEWLINE)).reset({\n    type: 'list',\n    ordered: ordered,\n    start: start,\n    loose: null,\n    children: []\n  });\n\n  enterTop = self.enterList();\n  exitBlockquote = self.enterBlock();\n  isLoose = false;\n  index = -1;\n  length = items.length;\n\n  while (++index < length) {\n    item = items[index].value.join(C_NEWLINE);\n    now = eat.now();\n\n    item = eat(item)(listItem(self, item, now), node);\n\n    if (item.loose) {\n      isLoose = true;\n    }\n\n    item = items[index].trail.join(C_NEWLINE);\n\n    if (index !== length - 1) {\n      item += C_NEWLINE;\n    }\n\n    eat(item);\n  }\n\n  enterTop();\n  exitBlockquote();\n\n  node.loose = isLoose;\n\n  return node;\n}\n\nfunction listItem(ctx, value, position) {\n  var offsets = ctx.offset;\n  var fn = ctx.options.pedantic ? pedanticListItem : normalListItem;\n  var checked = null;\n  var task;\n  var indent;\n\n  value = fn.apply(null, arguments);\n\n  if (ctx.options.gfm) {\n    task = value.match(EXPRESSION_TASK_ITEM);\n\n    if (task) {\n      indent = task[0].length;\n      checked = task[1].toLowerCase() === C_X_LOWER;\n      offsets[position.line] += indent;\n      value = value.slice(indent);\n    }\n  }\n\n  return {\n    type: 'listItem',\n    loose: EXPRESSION_LOOSE_LIST_ITEM.test(value) ||\n      value.charAt(value.length - 1) === C_NEWLINE,\n    checked: checked,\n    children: ctx.tokenizeBlock(value, position)\n  };\n}\n\n/* Create a list-item using overly simple mechanics. */\nfunction pedanticListItem(ctx, value, position) {\n  var offsets = ctx.offset;\n  var line = position.line;\n\n  /* Remove the list-item’s bullet. */\n  value = value.replace(EXPRESSION_PEDANTIC_BULLET, replacer);\n\n  /* The initial line was also matched by the below, so\n   * we reset the `line`. */\n  line = position.line;\n\n  return value.replace(EXPRESSION_INITIAL_INDENT, replacer);\n\n  /* A simple replacer which removed all matches,\n   * and adds their length to `offset`. */\n  function replacer($0) {\n    offsets[line] = (offsets[line] || 0) + $0.length;\n    line++;\n\n    return '';\n  }\n}\n\n/* Create a list-item using sane mechanics. */\nfunction normalListItem(ctx, value, position) {\n  var offsets = ctx.offset;\n  var line = position.line;\n  var max;\n  var bullet;\n  var rest;\n  var lines;\n  var trimmedLines;\n  var index;\n  var length;\n\n  /* Remove the list-item’s bullet. */\n  value = value.replace(EXPRESSION_BULLET, replacer);\n\n  lines = value.split(C_NEWLINE);\n\n  trimmedLines = removeIndent(value, getIndent(max).indent).split(C_NEWLINE);\n\n  /* We replaced the initial bullet with something\n   * else above, which was used to trick\n   * `removeIndentation` into removing some more\n   * characters when possible.  However, that could\n   * result in the initial line to be stripped more\n   * than it should be. */\n  trimmedLines[0] = rest;\n\n  offsets[line] = (offsets[line] || 0) + bullet.length;\n  line++;\n\n  index = 0;\n  length = lines.length;\n\n  while (++index < length) {\n    offsets[line] = (offsets[line] || 0) +\n      lines[index].length - trimmedLines[index].length;\n    line++;\n  }\n\n  return trimmedLines.join(C_NEWLINE);\n\n  function replacer($0, $1, $2, $3, $4) {\n    bullet = $1 + $2 + $3;\n    rest = $4;\n\n    /* Make sure that the first nine numbered list items\n     * can indent with an extra space.  That is, when\n     * the bullet did not receive an extra final space. */\n    if (Number($2) < 10 && bullet.length % 2 === 1) {\n      $2 = C_SPACE + $2;\n    }\n\n    max = $1 + repeat(C_SPACE, $2.length) + $3;\n\n    return max + rest;\n  }\n}\n","'use strict';\n\nvar trim = require('trim');\nvar repeat = require('repeat-string');\nvar getIndent = require('./get-indentation');\n\nmodule.exports = indentation;\n\nvar C_SPACE = ' ';\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\n\n/* Remove the minimum indent from every line in `value`.\n * Supports both tab, spaced, and mixed indentation (as\n * well as possible). */\nfunction indentation(value, maximum) {\n  var values = value.split(C_NEWLINE);\n  var position = values.length + 1;\n  var minIndent = Infinity;\n  var matrix = [];\n  var index;\n  var indentation;\n  var stops;\n  var padding;\n\n  values.unshift(repeat(C_SPACE, maximum) + '!');\n\n  while (position--) {\n    indentation = getIndent(values[position]);\n\n    matrix[position] = indentation.stops;\n\n    if (trim(values[position]).length === 0) {\n      continue;\n    }\n\n    if (indentation.indent) {\n      if (indentation.indent > 0 && indentation.indent < minIndent) {\n        minIndent = indentation.indent;\n      }\n    } else {\n      minIndent = Infinity;\n\n      break;\n    }\n  }\n\n  if (minIndent !== Infinity) {\n    position = values.length;\n\n    while (position--) {\n      stops = matrix[position];\n      index = minIndent;\n\n      while (index && !(index in stops)) {\n        index--;\n      }\n\n      if (\n        trim(values[position]).length !== 0 &&\n        minIndent &&\n        index !== minIndent\n      ) {\n        padding = C_TAB;\n      } else {\n        padding = '';\n      }\n\n      values[position] = padding + values[position].slice(\n        index in stops ? stops[index] + 1 : 0\n      );\n    }\n  }\n\n  values.shift();\n\n  return values.join(C_NEWLINE);\n}\n","'use strict';\n\nmodule.exports = setextHeading;\n\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_EQUALS = '=';\nvar C_DASH = '-';\n\nvar MAX_HEADING_INDENT = 3;\n\n/* Map of characters which can be used to mark setext\n * headers, mapping to their corresponding depth. */\nvar SETEXT_MARKERS = {};\n\nSETEXT_MARKERS[C_EQUALS] = 1;\nSETEXT_MARKERS[C_DASH] = 2;\n\nfunction setextHeading(eat, value, silent) {\n  var self = this;\n  var now = eat.now();\n  var length = value.length;\n  var index = -1;\n  var subvalue = '';\n  var content;\n  var queue;\n  var character;\n  var marker;\n  var depth;\n\n  /* Eat initial indentation. */\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_SPACE || index >= MAX_HEADING_INDENT) {\n      index--;\n      break;\n    }\n\n    subvalue += character;\n  }\n\n  /* Eat content. */\n  content = '';\n  queue = '';\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (character === C_NEWLINE) {\n      index--;\n      break;\n    }\n\n    if (character === C_SPACE || character === C_TAB) {\n      queue += character;\n    } else {\n      content += queue + character;\n      queue = '';\n    }\n  }\n\n  now.column += subvalue.length;\n  now.offset += subvalue.length;\n  subvalue += content + queue;\n\n  /* Ensure the content is followed by a newline and a\n   * valid marker. */\n  character = value.charAt(++index);\n  marker = value.charAt(++index);\n\n  if (character !== C_NEWLINE || !SETEXT_MARKERS[marker]) {\n    return;\n  }\n\n  subvalue += character;\n\n  /* Eat Setext-line. */\n  queue = marker;\n  depth = SETEXT_MARKERS[marker];\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (character !== marker) {\n      if (character !== C_NEWLINE) {\n        return;\n      }\n\n      index--;\n      break;\n    }\n\n    queue += character;\n  }\n\n  if (silent) {\n    return true;\n  }\n\n  return eat(subvalue + queue)({\n    type: 'heading',\n    depth: depth,\n    children: self.tokenizeInline(content, now)\n  });\n}\n","'use strict';\n\nvar openCloseTag = require('../util/html').openCloseTag;\n\nmodule.exports = blockHTML;\n\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_NEWLINE = '\\n';\nvar C_LT = '<';\n\nfunction blockHTML(eat, value, silent) {\n  var self = this;\n  var blocks = self.options.blocks;\n  var length = value.length;\n  var index = 0;\n  var next;\n  var line;\n  var offset;\n  var character;\n  var count;\n  var sequence;\n  var subvalue;\n\n  var sequences = [\n    [/^<(script|pre|style)(?=(\\s|>|$))/i, /<\\/(script|pre|style)>/i, true],\n    [/^<!--/, /-->/, true],\n    [/^<\\?/, /\\?>/, true],\n    [/^<![A-Za-z]/, />/, true],\n    [/^<!\\[CDATA\\[/, /\\]\\]>/, true],\n    [new RegExp('^</?(' + blocks.join('|') + ')(?=(\\\\s|/?>|$))', 'i'), /^$/, true],\n    [new RegExp(openCloseTag.source + '\\\\s*$'), /^$/, false]\n  ];\n\n  /* Eat initial spacing. */\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_TAB && character !== C_SPACE) {\n      break;\n    }\n\n    index++;\n  }\n\n  if (value.charAt(index) !== C_LT) {\n    return;\n  }\n\n  next = value.indexOf(C_NEWLINE, index + 1);\n  next = next === -1 ? length : next;\n  line = value.slice(index, next);\n  offset = -1;\n  count = sequences.length;\n\n  while (++offset < count) {\n    if (sequences[offset][0].test(line)) {\n      sequence = sequences[offset];\n      break;\n    }\n  }\n\n  if (!sequence) {\n    return;\n  }\n\n  if (silent) {\n    return sequence[2];\n  }\n\n  index = next;\n\n  if (!sequence[1].test(line)) {\n    while (index < length) {\n      next = value.indexOf(C_NEWLINE, index + 1);\n      next = next === -1 ? length : next;\n      line = value.slice(index + 1, next);\n\n      if (sequence[1].test(line)) {\n        if (line) {\n          index = next;\n        }\n\n        break;\n      }\n\n      index = next;\n    }\n  }\n\n  subvalue = value.slice(0, index);\n\n  return eat(subvalue)({type: 'html', value: subvalue});\n}\n","'use strict';\n\nvar whitespace = require('is-whitespace-character');\nvar normalize = require('../util/normalize');\n\nmodule.exports = footnoteDefinition;\nfootnoteDefinition.notInList = true;\nfootnoteDefinition.notInBlock = true;\n\nvar C_BACKSLASH = '\\\\';\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_BRACKET_OPEN = '[';\nvar C_BRACKET_CLOSE = ']';\nvar C_CARET = '^';\nvar C_COLON = ':';\n\nvar EXPRESSION_INITIAL_TAB = /^( {4}|\\t)?/gm;\n\nfunction footnoteDefinition(eat, value, silent) {\n  var self = this;\n  var offsets = self.offset;\n  var index;\n  var length;\n  var subvalue;\n  var now;\n  var currentLine;\n  var content;\n  var queue;\n  var subqueue;\n  var character;\n  var identifier;\n  var add;\n  var exit;\n\n  if (!self.options.footnotes) {\n    return;\n  }\n\n  index = 0;\n  length = value.length;\n  subvalue = '';\n  now = eat.now();\n  currentLine = now.line;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (!whitespace(character)) {\n      break;\n    }\n\n    subvalue += character;\n    index++;\n  }\n\n  if (\n    value.charAt(index) !== C_BRACKET_OPEN ||\n    value.charAt(index + 1) !== C_CARET\n  ) {\n    return;\n  }\n\n  subvalue += C_BRACKET_OPEN + C_CARET;\n  index = subvalue.length;\n  queue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character === C_BRACKET_CLOSE) {\n      break;\n    } else if (character === C_BACKSLASH) {\n      queue += character;\n      index++;\n      character = value.charAt(index);\n    }\n\n    queue += character;\n    index++;\n  }\n\n  if (\n    !queue ||\n    value.charAt(index) !== C_BRACKET_CLOSE ||\n    value.charAt(index + 1) !== C_COLON\n  ) {\n    return;\n  }\n\n  if (silent) {\n    return true;\n  }\n\n  identifier = normalize(queue);\n  subvalue += queue + C_BRACKET_CLOSE + C_COLON;\n  index = subvalue.length;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_TAB && character !== C_SPACE) {\n      break;\n    }\n\n    subvalue += character;\n    index++;\n  }\n\n  now.column += subvalue.length;\n  now.offset += subvalue.length;\n  queue = '';\n  content = '';\n  subqueue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character === C_NEWLINE) {\n      subqueue = character;\n      index++;\n\n      while (index < length) {\n        character = value.charAt(index);\n\n        if (character !== C_NEWLINE) {\n          break;\n        }\n\n        subqueue += character;\n        index++;\n      }\n\n      queue += subqueue;\n      subqueue = '';\n\n      while (index < length) {\n        character = value.charAt(index);\n\n        if (character !== C_SPACE) {\n          break;\n        }\n\n        subqueue += character;\n        index++;\n      }\n\n      if (subqueue.length === 0) {\n        break;\n      }\n\n      queue += subqueue;\n    }\n\n    if (queue) {\n      content += queue;\n      queue = '';\n    }\n\n    content += character;\n    index++;\n  }\n\n  subvalue += content;\n\n  content = content.replace(EXPRESSION_INITIAL_TAB, function (line) {\n    offsets[currentLine] = (offsets[currentLine] || 0) + line.length;\n    currentLine++;\n\n    return '';\n  });\n\n  add = eat(subvalue);\n\n  exit = self.enterBlock();\n  content = self.tokenizeBlock(content, now);\n  exit();\n\n  return add({\n    type: 'footnoteDefinition',\n    identifier: identifier,\n    children: content\n  });\n}\n","'use strict'\n\nmodule.exports = collapse\n\n// `collapse(' \\t\\nbar \\nbaz\\t') // ' bar baz '`\nfunction collapse(value) {\n  return String(value).replace(/\\s+/g, ' ')\n}\n","'use strict';\n\nvar whitespace = require('is-whitespace-character');\nvar normalize = require('../util/normalize');\n\nmodule.exports = definition;\ndefinition.notInList = true;\ndefinition.notInBlock = true;\n\nvar C_DOUBLE_QUOTE = '\"';\nvar C_SINGLE_QUOTE = '\\'';\nvar C_BACKSLASH = '\\\\';\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_BRACKET_OPEN = '[';\nvar C_BRACKET_CLOSE = ']';\nvar C_PAREN_OPEN = '(';\nvar C_PAREN_CLOSE = ')';\nvar C_COLON = ':';\nvar C_LT = '<';\nvar C_GT = '>';\n\nfunction definition(eat, value, silent) {\n  var self = this;\n  var commonmark = self.options.commonmark;\n  var index = 0;\n  var length = value.length;\n  var subvalue = '';\n  var beforeURL;\n  var beforeTitle;\n  var queue;\n  var character;\n  var test;\n  var identifier;\n  var url;\n  var title;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_SPACE && character !== C_TAB) {\n      break;\n    }\n\n    subvalue += character;\n    index++;\n  }\n\n  character = value.charAt(index);\n\n  if (character !== C_BRACKET_OPEN) {\n    return;\n  }\n\n  index++;\n  subvalue += character;\n  queue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character === C_BRACKET_CLOSE) {\n      break;\n    } else if (character === C_BACKSLASH) {\n      queue += character;\n      index++;\n      character = value.charAt(index);\n    }\n\n    queue += character;\n    index++;\n  }\n\n  if (\n    !queue ||\n    value.charAt(index) !== C_BRACKET_CLOSE ||\n    value.charAt(index + 1) !== C_COLON\n  ) {\n    return;\n  }\n\n  identifier = queue;\n  subvalue += queue + C_BRACKET_CLOSE + C_COLON;\n  index = subvalue.length;\n  queue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (\n      character !== C_TAB &&\n      character !== C_SPACE &&\n      character !== C_NEWLINE\n    ) {\n      break;\n    }\n\n    subvalue += character;\n    index++;\n  }\n\n  character = value.charAt(index);\n  queue = '';\n  beforeURL = subvalue;\n\n  if (character === C_LT) {\n    index++;\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (!isEnclosedURLCharacter(character)) {\n        break;\n      }\n\n      queue += character;\n      index++;\n    }\n\n    character = value.charAt(index);\n\n    if (character === isEnclosedURLCharacter.delimiter) {\n      subvalue += C_LT + queue + character;\n      index++;\n    } else {\n      if (commonmark) {\n        return;\n      }\n\n      index -= queue.length + 1;\n      queue = '';\n    }\n  }\n\n  if (!queue) {\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (!isUnclosedURLCharacter(character)) {\n        break;\n      }\n\n      queue += character;\n      index++;\n    }\n\n    subvalue += queue;\n  }\n\n  if (!queue) {\n    return;\n  }\n\n  url = queue;\n  queue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (\n      character !== C_TAB &&\n      character !== C_SPACE &&\n      character !== C_NEWLINE\n    ) {\n      break;\n    }\n\n    queue += character;\n    index++;\n  }\n\n  character = value.charAt(index);\n  test = null;\n\n  if (character === C_DOUBLE_QUOTE) {\n    test = C_DOUBLE_QUOTE;\n  } else if (character === C_SINGLE_QUOTE) {\n    test = C_SINGLE_QUOTE;\n  } else if (character === C_PAREN_OPEN) {\n    test = C_PAREN_CLOSE;\n  }\n\n  if (!test) {\n    queue = '';\n    index = subvalue.length;\n  } else if (queue) {\n    subvalue += queue + character;\n    index = subvalue.length;\n    queue = '';\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (character === test) {\n        break;\n      }\n\n      if (character === C_NEWLINE) {\n        index++;\n        character = value.charAt(index);\n\n        if (character === C_NEWLINE || character === test) {\n          return;\n        }\n\n        queue += C_NEWLINE;\n      }\n\n      queue += character;\n      index++;\n    }\n\n    character = value.charAt(index);\n\n    if (character !== test) {\n      return;\n    }\n\n    beforeTitle = subvalue;\n    subvalue += queue + character;\n    index++;\n    title = queue;\n    queue = '';\n  } else {\n    return;\n  }\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_TAB && character !== C_SPACE) {\n      break;\n    }\n\n    subvalue += character;\n    index++;\n  }\n\n  character = value.charAt(index);\n\n  if (!character || character === C_NEWLINE) {\n    if (silent) {\n      return true;\n    }\n\n    beforeURL = eat(beforeURL).test().end;\n    url = self.decode.raw(self.unescape(url), beforeURL, {nonTerminated: false});\n\n    if (title) {\n      beforeTitle = eat(beforeTitle).test().end;\n      title = self.decode.raw(self.unescape(title), beforeTitle);\n    }\n\n    return eat(subvalue)({\n      type: 'definition',\n      identifier: normalize(identifier),\n      title: title || null,\n      url: url\n    });\n  }\n}\n\n/* Check if `character` can be inside an enclosed URI. */\nfunction isEnclosedURLCharacter(character) {\n  return character !== C_GT &&\n    character !== C_BRACKET_OPEN &&\n    character !== C_BRACKET_CLOSE;\n}\n\nisEnclosedURLCharacter.delimiter = C_GT;\n\n/* Check if `character` can be inside an unclosed URI. */\nfunction isUnclosedURLCharacter(character) {\n  return character !== C_BRACKET_OPEN &&\n    character !== C_BRACKET_CLOSE &&\n    !whitespace(character);\n}\n","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nmodule.exports = table;\n\nvar C_BACKSLASH = '\\\\';\nvar C_TICK = '`';\nvar C_DASH = '-';\nvar C_PIPE = '|';\nvar C_COLON = ':';\nvar C_SPACE = ' ';\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\n\nvar MIN_TABLE_COLUMNS = 1;\nvar MIN_TABLE_ROWS = 2;\n\nvar TABLE_ALIGN_LEFT = 'left';\nvar TABLE_ALIGN_CENTER = 'center';\nvar TABLE_ALIGN_RIGHT = 'right';\nvar TABLE_ALIGN_NONE = null;\n\nfunction table(eat, value, silent) {\n  var self = this;\n  var index;\n  var alignments;\n  var alignment;\n  var subvalue;\n  var row;\n  var length;\n  var lines;\n  var queue;\n  var character;\n  var hasDash;\n  var align;\n  var cell;\n  var preamble;\n  var count;\n  var opening;\n  var now;\n  var position;\n  var lineCount;\n  var line;\n  var rows;\n  var table;\n  var lineIndex;\n  var pipeIndex;\n  var first;\n\n  /* Exit when not in gfm-mode. */\n  if (!self.options.gfm) {\n    return;\n  }\n\n  /* Get the rows.\n   * Detecting tables soon is hard, so there are some\n   * checks for performance here, such as the minimum\n   * number of rows, and allowed characters in the\n   * alignment row. */\n  index = 0;\n  lineCount = 0;\n  length = value.length + 1;\n  lines = [];\n\n  while (index < length) {\n    lineIndex = value.indexOf(C_NEWLINE, index);\n    pipeIndex = value.indexOf(C_PIPE, index + 1);\n\n    if (lineIndex === -1) {\n      lineIndex = value.length;\n    }\n\n    if (pipeIndex === -1 || pipeIndex > lineIndex) {\n      if (lineCount < MIN_TABLE_ROWS) {\n        return;\n      }\n\n      break;\n    }\n\n    lines.push(value.slice(index, lineIndex));\n    lineCount++;\n    index = lineIndex + 1;\n  }\n\n  /* Parse the alignment row. */\n  subvalue = lines.join(C_NEWLINE);\n  alignments = lines.splice(1, 1)[0] || [];\n  index = 0;\n  length = alignments.length;\n  lineCount--;\n  alignment = false;\n  align = [];\n\n  while (index < length) {\n    character = alignments.charAt(index);\n\n    if (character === C_PIPE) {\n      hasDash = null;\n\n      if (alignment === false) {\n        if (first === false) {\n          return;\n        }\n      } else {\n        align.push(alignment);\n        alignment = false;\n      }\n\n      first = false;\n    } else if (character === C_DASH) {\n      hasDash = true;\n      alignment = alignment || TABLE_ALIGN_NONE;\n    } else if (character === C_COLON) {\n      if (alignment === TABLE_ALIGN_LEFT) {\n        alignment = TABLE_ALIGN_CENTER;\n      } else if (hasDash && alignment === TABLE_ALIGN_NONE) {\n        alignment = TABLE_ALIGN_RIGHT;\n      } else {\n        alignment = TABLE_ALIGN_LEFT;\n      }\n    } else if (!whitespace(character)) {\n      return;\n    }\n\n    index++;\n  }\n\n  if (alignment !== false) {\n    align.push(alignment);\n  }\n\n  /* Exit when without enough columns. */\n  if (align.length < MIN_TABLE_COLUMNS) {\n    return;\n  }\n\n  /* istanbul ignore if - never used (yet) */\n  if (silent) {\n    return true;\n  }\n\n  /* Parse the rows. */\n  position = -1;\n  rows = [];\n\n  table = eat(subvalue).reset({\n    type: 'table',\n    align: align,\n    children: rows\n  });\n\n  while (++position < lineCount) {\n    line = lines[position];\n    row = {type: 'tableRow', children: []};\n\n    /* Eat a newline character when this is not the\n     * first row. */\n    if (position) {\n      eat(C_NEWLINE);\n    }\n\n    /* Eat the row. */\n    eat(line).reset(row, table);\n\n    length = line.length + 1;\n    index = 0;\n    queue = '';\n    cell = '';\n    preamble = true;\n    count = null;\n    opening = null;\n\n    while (index < length) {\n      character = line.charAt(index);\n\n      if (character === C_TAB || character === C_SPACE) {\n        if (cell) {\n          queue += character;\n        } else {\n          eat(character);\n        }\n\n        index++;\n        continue;\n      }\n\n      if (character === '' || character === C_PIPE) {\n        if (preamble) {\n          eat(character);\n        } else {\n          if (character && opening) {\n            queue += character;\n            index++;\n            continue;\n          }\n\n          if ((cell || character) && !preamble) {\n            subvalue = cell;\n\n            if (queue.length > 1) {\n              if (character) {\n                subvalue += queue.slice(0, queue.length - 1);\n                queue = queue.charAt(queue.length - 1);\n              } else {\n                subvalue += queue;\n                queue = '';\n              }\n            }\n\n            now = eat.now();\n\n            eat(subvalue)({\n              type: 'tableCell',\n              children: self.tokenizeInline(cell, now)\n            }, row);\n          }\n\n          eat(queue + character);\n\n          queue = '';\n          cell = '';\n        }\n      } else {\n        if (queue) {\n          cell += queue;\n          queue = '';\n        }\n\n        cell += character;\n\n        if (character === C_BACKSLASH && index !== length - 2) {\n          cell += line.charAt(index + 1);\n          index++;\n        }\n\n        if (character === C_TICK) {\n          count = 1;\n\n          while (line.charAt(index + 1) === character) {\n            cell += character;\n            index++;\n            count++;\n          }\n\n          if (!opening) {\n            opening = count;\n          } else if (count >= opening) {\n            opening = 0;\n          }\n        }\n      }\n\n      preamble = false;\n      index++;\n    }\n\n    /* Eat the alignment row. */\n    if (!position) {\n      eat(C_NEWLINE + alignments);\n    }\n  }\n\n  return table;\n}\n","'use strict';\n\nvar trim = require('trim');\nvar decimal = require('is-decimal');\nvar trimTrailingLines = require('trim-trailing-lines');\nvar interrupt = require('../util/interrupt');\n\nmodule.exports = paragraph;\n\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\n\nvar TAB_SIZE = 4;\n\n/* Tokenise paragraph. */\nfunction paragraph(eat, value, silent) {\n  var self = this;\n  var settings = self.options;\n  var commonmark = settings.commonmark;\n  var gfm = settings.gfm;\n  var tokenizers = self.blockTokenizers;\n  var interruptors = self.interruptParagraph;\n  var index = value.indexOf(C_NEWLINE);\n  var length = value.length;\n  var position;\n  var subvalue;\n  var character;\n  var size;\n  var now;\n\n  while (index < length) {\n    /* Eat everything if there’s no following newline. */\n    if (index === -1) {\n      index = length;\n      break;\n    }\n\n    /* Stop if the next character is NEWLINE. */\n    if (value.charAt(index + 1) === C_NEWLINE) {\n      break;\n    }\n\n    /* In commonmark-mode, following indented lines\n     * are part of the paragraph. */\n    if (commonmark) {\n      size = 0;\n      position = index + 1;\n\n      while (position < length) {\n        character = value.charAt(position);\n\n        if (character === C_TAB) {\n          size = TAB_SIZE;\n          break;\n        } else if (character === C_SPACE) {\n          size++;\n        } else {\n          break;\n        }\n\n        position++;\n      }\n\n      if (size >= TAB_SIZE) {\n        index = value.indexOf(C_NEWLINE, index + 1);\n        continue;\n      }\n    }\n\n    subvalue = value.slice(index + 1);\n\n    /* Check if the following code contains a possible\n     * block. */\n    if (interrupt(interruptors, tokenizers, self, [eat, subvalue, true])) {\n      break;\n    }\n\n    /* Break if the following line starts a list, when\n     * already in a list, or when in commonmark, or when\n     * in gfm mode and the bullet is *not* numeric. */\n    if (\n      tokenizers.list.call(self, eat, subvalue, true) &&\n      (\n        self.inList ||\n        commonmark ||\n        (gfm && !decimal(trim.left(subvalue).charAt(0)))\n      )\n    ) {\n      break;\n    }\n\n    position = index;\n    index = value.indexOf(C_NEWLINE, index + 1);\n\n    if (index !== -1 && trim(value.slice(position, index)) === '') {\n      index = position;\n      break;\n    }\n  }\n\n  subvalue = value.slice(0, index);\n\n  if (trim(subvalue) === '') {\n    eat(subvalue);\n\n    return null;\n  }\n\n  /* istanbul ignore if - never used (yet) */\n  if (silent) {\n    return true;\n  }\n\n  now = eat.now();\n  subvalue = trimTrailingLines(subvalue);\n\n  return eat(subvalue)({\n    type: 'paragraph',\n    children: self.tokenizeInline(subvalue, now)\n  });\n}\n","'use strict';\n\nvar locate = require('../locate/escape');\n\nmodule.exports = escape;\nescape.locator = locate;\n\nfunction escape(eat, value, silent) {\n  var self = this;\n  var character;\n  var node;\n\n  if (value.charAt(0) === '\\\\') {\n    character = value.charAt(1);\n\n    if (self.escape.indexOf(character) !== -1) {\n      /* istanbul ignore if - never used (yet) */\n      if (silent) {\n        return true;\n      }\n\n      if (character === '\\n') {\n        node = {type: 'break'};\n      } else {\n        node = {\n          type: 'text',\n          value: character\n        };\n      }\n\n      return eat('\\\\' + character)(node);\n    }\n  }\n}\n","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n  return value.indexOf('\\\\', fromIndex);\n}\n","'use strict';\n\nvar whitespace = require('is-whitespace-character');\nvar decode = require('parse-entities');\nvar locate = require('../locate/tag');\n\nmodule.exports = autoLink;\nautoLink.locator = locate;\nautoLink.notInLink = true;\n\nvar C_LT = '<';\nvar C_GT = '>';\nvar C_AT_SIGN = '@';\nvar C_SLASH = '/';\nvar MAILTO = 'mailto:';\nvar MAILTO_LENGTH = MAILTO.length;\n\n/* Tokenise a link. */\nfunction autoLink(eat, value, silent) {\n  var self;\n  var subvalue;\n  var length;\n  var index;\n  var queue;\n  var character;\n  var hasAtCharacter;\n  var link;\n  var now;\n  var content;\n  var tokenizers;\n  var exit;\n\n  if (value.charAt(0) !== C_LT) {\n    return;\n  }\n\n  self = this;\n  subvalue = '';\n  length = value.length;\n  index = 0;\n  queue = '';\n  hasAtCharacter = false;\n  link = '';\n\n  index++;\n  subvalue = C_LT;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (\n      whitespace(character) ||\n      character === C_GT ||\n      character === C_AT_SIGN ||\n      (character === ':' && value.charAt(index + 1) === C_SLASH)\n    ) {\n      break;\n    }\n\n    queue += character;\n    index++;\n  }\n\n  if (!queue) {\n    return;\n  }\n\n  link += queue;\n  queue = '';\n\n  character = value.charAt(index);\n  link += character;\n  index++;\n\n  if (character === C_AT_SIGN) {\n    hasAtCharacter = true;\n  } else {\n    if (\n      character !== ':' ||\n      value.charAt(index + 1) !== C_SLASH\n    ) {\n      return;\n    }\n\n    link += C_SLASH;\n    index++;\n  }\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (whitespace(character) || character === C_GT) {\n      break;\n    }\n\n    queue += character;\n    index++;\n  }\n\n  character = value.charAt(index);\n\n  if (!queue || character !== C_GT) {\n    return;\n  }\n\n  /* istanbul ignore if - never used (yet) */\n  if (silent) {\n    return true;\n  }\n\n  link += queue;\n  content = link;\n  subvalue += link + character;\n  now = eat.now();\n  now.column++;\n  now.offset++;\n\n  if (hasAtCharacter) {\n    if (link.slice(0, MAILTO_LENGTH).toLowerCase() === MAILTO) {\n      content = content.substr(MAILTO_LENGTH);\n      now.column += MAILTO_LENGTH;\n      now.offset += MAILTO_LENGTH;\n    } else {\n      link = MAILTO + link;\n    }\n  }\n\n  /* Temporarily remove all tokenizers except text in autolinks. */\n  tokenizers = self.inlineTokenizers;\n  self.inlineTokenizers = {text: tokenizers.text};\n\n  exit = self.enterLink();\n\n  content = self.tokenizeInline(content, now);\n\n  self.inlineTokenizers = tokenizers;\n  exit();\n\n  return eat(subvalue)({\n    type: 'link',\n    title: null,\n    url: decode(link, {nonTerminated: false}),\n    children: content\n  });\n}\n","'use strict';\n\nvar decode = require('parse-entities');\nvar whitespace = require('is-whitespace-character');\nvar locate = require('../locate/url');\n\nmodule.exports = url;\nurl.locator = locate;\nurl.notInLink = true;\n\nvar C_BRACKET_OPEN = '[';\nvar C_BRACKET_CLOSE = ']';\nvar C_PAREN_OPEN = '(';\nvar C_PAREN_CLOSE = ')';\nvar C_LT = '<';\nvar C_AT_SIGN = '@';\n\nvar HTTP_PROTOCOL = 'http://';\nvar HTTPS_PROTOCOL = 'https://';\nvar MAILTO_PROTOCOL = 'mailto:';\n\nvar PROTOCOLS = [\n  HTTP_PROTOCOL,\n  HTTPS_PROTOCOL,\n  MAILTO_PROTOCOL\n];\n\nvar PROTOCOLS_LENGTH = PROTOCOLS.length;\n\nfunction url(eat, value, silent) {\n  var self = this;\n  var subvalue;\n  var content;\n  var character;\n  var index;\n  var position;\n  var protocol;\n  var match;\n  var length;\n  var queue;\n  var parenCount;\n  var nextCharacter;\n  var exit;\n\n  if (!self.options.gfm) {\n    return;\n  }\n\n  subvalue = '';\n  index = -1;\n  length = PROTOCOLS_LENGTH;\n\n  while (++index < length) {\n    protocol = PROTOCOLS[index];\n    match = value.slice(0, protocol.length);\n\n    if (match.toLowerCase() === protocol) {\n      subvalue = match;\n      break;\n    }\n  }\n\n  if (!subvalue) {\n    return;\n  }\n\n  index = subvalue.length;\n  length = value.length;\n  queue = '';\n  parenCount = 0;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (whitespace(character) || character === C_LT) {\n      break;\n    }\n\n    if (\n      character === '.' ||\n      character === ',' ||\n      character === ':' ||\n      character === ';' ||\n      character === '\"' ||\n      character === '\\'' ||\n      character === ')' ||\n      character === ']'\n    ) {\n      nextCharacter = value.charAt(index + 1);\n\n      if (!nextCharacter || whitespace(nextCharacter)) {\n        break;\n      }\n    }\n\n    if (character === C_PAREN_OPEN || character === C_BRACKET_OPEN) {\n      parenCount++;\n    }\n\n    if (character === C_PAREN_CLOSE || character === C_BRACKET_CLOSE) {\n      parenCount--;\n\n      if (parenCount < 0) {\n        break;\n      }\n    }\n\n    queue += character;\n    index++;\n  }\n\n  if (!queue) {\n    return;\n  }\n\n  subvalue += queue;\n  content = subvalue;\n\n  if (protocol === MAILTO_PROTOCOL) {\n    position = queue.indexOf(C_AT_SIGN);\n\n    if (position === -1 || position === length - 1) {\n      return;\n    }\n\n    content = content.substr(MAILTO_PROTOCOL.length);\n  }\n\n  /* istanbul ignore if - never used (yet) */\n  if (silent) {\n    return true;\n  }\n\n  exit = self.enterLink();\n  content = self.tokenizeInline(content, eat.now());\n  exit();\n\n  return eat(subvalue)({\n    type: 'link',\n    title: null,\n    url: decode(subvalue, {nonTerminated: false}),\n    children: content\n  });\n}\n","'use strict';\n\nmodule.exports = locate;\n\nvar PROTOCOLS = ['https://', 'http://', 'mailto:'];\n\nfunction locate(value, fromIndex) {\n  var length = PROTOCOLS.length;\n  var index = -1;\n  var min = -1;\n  var position;\n\n  if (!this.options.gfm) {\n    return -1;\n  }\n\n  while (++index < length) {\n    position = value.indexOf(PROTOCOLS[index], fromIndex);\n\n    if (position !== -1 && (position < min || min === -1)) {\n      min = position;\n    }\n  }\n\n  return min;\n}\n","'use strict';\n\nvar alphabetical = require('is-alphabetical');\nvar locate = require('../locate/tag');\nvar tag = require('../util/html').tag;\n\nmodule.exports = inlineHTML;\ninlineHTML.locator = locate;\n\nvar EXPRESSION_HTML_LINK_OPEN = /^<a /i;\nvar EXPRESSION_HTML_LINK_CLOSE = /^<\\/a>/i;\n\nfunction inlineHTML(eat, value, silent) {\n  var self = this;\n  var length = value.length;\n  var character;\n  var subvalue;\n\n  if (value.charAt(0) !== '<' || length < 3) {\n    return;\n  }\n\n  character = value.charAt(1);\n\n  if (\n    !alphabetical(character) &&\n    character !== '?' &&\n    character !== '!' &&\n    character !== '/'\n  ) {\n    return;\n  }\n\n  subvalue = value.match(tag);\n\n  if (!subvalue) {\n    return;\n  }\n\n  /* istanbul ignore if - not used yet. */\n  if (silent) {\n    return true;\n  }\n\n  subvalue = subvalue[0];\n\n  if (!self.inLink && EXPRESSION_HTML_LINK_OPEN.test(subvalue)) {\n    self.inLink = true;\n  } else if (self.inLink && EXPRESSION_HTML_LINK_CLOSE.test(subvalue)) {\n    self.inLink = false;\n  }\n\n  return eat(subvalue)({type: 'html', value: subvalue});\n}\n","'use strict';\n\nvar whitespace = require('is-whitespace-character');\nvar locate = require('../locate/link');\n\nmodule.exports = link;\nlink.locator = locate;\n\nvar own = {}.hasOwnProperty;\n\nvar C_BACKSLASH = '\\\\';\nvar C_BRACKET_OPEN = '[';\nvar C_BRACKET_CLOSE = ']';\nvar C_PAREN_OPEN = '(';\nvar C_PAREN_CLOSE = ')';\nvar C_LT = '<';\nvar C_GT = '>';\nvar C_TICK = '`';\nvar C_DOUBLE_QUOTE = '\"';\nvar C_SINGLE_QUOTE = '\\'';\n\n/* Map of characters, which can be used to mark link\n * and image titles. */\nvar LINK_MARKERS = {};\n\nLINK_MARKERS[C_DOUBLE_QUOTE] = C_DOUBLE_QUOTE;\nLINK_MARKERS[C_SINGLE_QUOTE] = C_SINGLE_QUOTE;\n\n/* Map of characters, which can be used to mark link\n * and image titles in commonmark-mode. */\nvar COMMONMARK_LINK_MARKERS = {};\n\nCOMMONMARK_LINK_MARKERS[C_DOUBLE_QUOTE] = C_DOUBLE_QUOTE;\nCOMMONMARK_LINK_MARKERS[C_SINGLE_QUOTE] = C_SINGLE_QUOTE;\nCOMMONMARK_LINK_MARKERS[C_PAREN_OPEN] = C_PAREN_CLOSE;\n\nfunction link(eat, value, silent) {\n  var self = this;\n  var subvalue = '';\n  var index = 0;\n  var character = value.charAt(0);\n  var pedantic = self.options.pedantic;\n  var commonmark = self.options.commonmark;\n  var gfm = self.options.gfm;\n  var closed;\n  var count;\n  var opening;\n  var beforeURL;\n  var beforeTitle;\n  var subqueue;\n  var hasMarker;\n  var markers;\n  var isImage;\n  var content;\n  var marker;\n  var length;\n  var title;\n  var depth;\n  var queue;\n  var url;\n  var now;\n  var exit;\n  var node;\n\n  /* Detect whether this is an image. */\n  if (character === '!') {\n    isImage = true;\n    subvalue = character;\n    character = value.charAt(++index);\n  }\n\n  /* Eat the opening. */\n  if (character !== C_BRACKET_OPEN) {\n    return;\n  }\n\n  /* Exit when this is a link and we’re already inside\n   * a link. */\n  if (!isImage && self.inLink) {\n    return;\n  }\n\n  subvalue += character;\n  queue = '';\n  index++;\n\n  /* Eat the content. */\n  length = value.length;\n  now = eat.now();\n  depth = 0;\n\n  now.column += index;\n  now.offset += index;\n\n  while (index < length) {\n    character = value.charAt(index);\n    subqueue = character;\n\n    if (character === C_TICK) {\n      /* Inline-code in link content. */\n      count = 1;\n\n      while (value.charAt(index + 1) === C_TICK) {\n        subqueue += character;\n        index++;\n        count++;\n      }\n\n      if (!opening) {\n        opening = count;\n      } else if (count >= opening) {\n        opening = 0;\n      }\n    } else if (character === C_BACKSLASH) {\n      /* Allow brackets to be escaped. */\n      index++;\n      subqueue += value.charAt(index);\n    /* In GFM mode, brackets in code still count.\n     * In all other modes, they don’t.  This empty\n     * block prevents the next statements are\n     * entered. */\n    } else if ((!opening || gfm) && character === C_BRACKET_OPEN) {\n      depth++;\n    } else if ((!opening || gfm) && character === C_BRACKET_CLOSE) {\n      if (depth) {\n        depth--;\n      } else {\n        /* Allow white-space between content and\n         * url in GFM mode. */\n        if (!pedantic) {\n          while (index < length) {\n            character = value.charAt(index + 1);\n\n            if (!whitespace(character)) {\n              break;\n            }\n\n            subqueue += character;\n            index++;\n          }\n        }\n\n        if (value.charAt(index + 1) !== C_PAREN_OPEN) {\n          return;\n        }\n\n        subqueue += C_PAREN_OPEN;\n        closed = true;\n        index++;\n\n        break;\n      }\n    }\n\n    queue += subqueue;\n    subqueue = '';\n    index++;\n  }\n\n  /* Eat the content closing. */\n  if (!closed) {\n    return;\n  }\n\n  content = queue;\n  subvalue += queue + subqueue;\n  index++;\n\n  /* Eat white-space. */\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (!whitespace(character)) {\n      break;\n    }\n\n    subvalue += character;\n    index++;\n  }\n\n  /* Eat the URL. */\n  character = value.charAt(index);\n  markers = commonmark ? COMMONMARK_LINK_MARKERS : LINK_MARKERS;\n  queue = '';\n  beforeURL = subvalue;\n\n  if (character === C_LT) {\n    index++;\n    beforeURL += C_LT;\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (character === C_GT) {\n        break;\n      }\n\n      if (commonmark && character === '\\n') {\n        return;\n      }\n\n      queue += character;\n      index++;\n    }\n\n    if (value.charAt(index) !== C_GT) {\n      return;\n    }\n\n    subvalue += C_LT + queue + C_GT;\n    url = queue;\n    index++;\n  } else {\n    character = null;\n    subqueue = '';\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (subqueue && own.call(markers, character)) {\n        break;\n      }\n\n      if (whitespace(character)) {\n        if (!pedantic) {\n          break;\n        }\n\n        subqueue += character;\n      } else {\n        if (character === C_PAREN_OPEN) {\n          depth++;\n        } else if (character === C_PAREN_CLOSE) {\n          if (depth === 0) {\n            break;\n          }\n\n          depth--;\n        }\n\n        queue += subqueue;\n        subqueue = '';\n\n        if (character === C_BACKSLASH) {\n          queue += C_BACKSLASH;\n          character = value.charAt(++index);\n        }\n\n        queue += character;\n      }\n\n      index++;\n    }\n\n    subvalue += queue;\n    url = queue;\n    index = subvalue.length;\n  }\n\n  /* Eat white-space. */\n  queue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (!whitespace(character)) {\n      break;\n    }\n\n    queue += character;\n    index++;\n  }\n\n  character = value.charAt(index);\n  subvalue += queue;\n\n  /* Eat the title. */\n  if (queue && own.call(markers, character)) {\n    index++;\n    subvalue += character;\n    queue = '';\n    marker = markers[character];\n    beforeTitle = subvalue;\n\n    /* In commonmark-mode, things are pretty easy: the\n     * marker cannot occur inside the title.\n     *\n     * Non-commonmark does, however, support nested\n     * delimiters. */\n    if (commonmark) {\n      while (index < length) {\n        character = value.charAt(index);\n\n        if (character === marker) {\n          break;\n        }\n\n        if (character === C_BACKSLASH) {\n          queue += C_BACKSLASH;\n          character = value.charAt(++index);\n        }\n\n        index++;\n        queue += character;\n      }\n\n      character = value.charAt(index);\n\n      if (character !== marker) {\n        return;\n      }\n\n      title = queue;\n      subvalue += queue + character;\n      index++;\n\n      while (index < length) {\n        character = value.charAt(index);\n\n        if (!whitespace(character)) {\n          break;\n        }\n\n        subvalue += character;\n        index++;\n      }\n    } else {\n      subqueue = '';\n\n      while (index < length) {\n        character = value.charAt(index);\n\n        if (character === marker) {\n          if (hasMarker) {\n            queue += marker + subqueue;\n            subqueue = '';\n          }\n\n          hasMarker = true;\n        } else if (!hasMarker) {\n          queue += character;\n        } else if (character === C_PAREN_CLOSE) {\n          subvalue += queue + marker + subqueue;\n          title = queue;\n          break;\n        } else if (whitespace(character)) {\n          subqueue += character;\n        } else {\n          queue += marker + subqueue + character;\n          subqueue = '';\n          hasMarker = false;\n        }\n\n        index++;\n      }\n    }\n  }\n\n  if (value.charAt(index) !== C_PAREN_CLOSE) {\n    return;\n  }\n\n  /* istanbul ignore if - never used (yet) */\n  if (silent) {\n    return true;\n  }\n\n  subvalue += C_PAREN_CLOSE;\n\n  url = self.decode.raw(self.unescape(url), eat(beforeURL).test().end, {nonTerminated: false});\n\n  if (title) {\n    beforeTitle = eat(beforeTitle).test().end;\n    title = self.decode.raw(self.unescape(title), beforeTitle);\n  }\n\n  node = {\n    type: isImage ? 'image' : 'link',\n    title: title || null,\n    url: url\n  };\n\n  if (isImage) {\n    node.alt = self.decode.raw(self.unescape(content), now) || null;\n  } else {\n    exit = self.enterLink();\n    node.children = self.tokenizeInline(content, now);\n    exit();\n  }\n\n  return eat(subvalue)(node);\n}\n","'use strict';\n\nvar whitespace = require('is-whitespace-character');\nvar locate = require('../locate/link');\nvar normalize = require('../util/normalize');\n\nmodule.exports = reference;\nreference.locator = locate;\n\nvar T_LINK = 'link';\nvar T_IMAGE = 'image';\nvar T_FOOTNOTE = 'footnote';\nvar REFERENCE_TYPE_SHORTCUT = 'shortcut';\nvar REFERENCE_TYPE_COLLAPSED = 'collapsed';\nvar REFERENCE_TYPE_FULL = 'full';\nvar C_CARET = '^';\nvar C_BACKSLASH = '\\\\';\nvar C_BRACKET_OPEN = '[';\nvar C_BRACKET_CLOSE = ']';\n\nfunction reference(eat, value, silent) {\n  var self = this;\n  var character = value.charAt(0);\n  var index = 0;\n  var length = value.length;\n  var subvalue = '';\n  var intro = '';\n  var type = T_LINK;\n  var referenceType = REFERENCE_TYPE_SHORTCUT;\n  var content;\n  var identifier;\n  var now;\n  var node;\n  var exit;\n  var queue;\n  var bracketed;\n  var depth;\n\n  /* Check whether we’re eating an image. */\n  if (character === '!') {\n    type = T_IMAGE;\n    intro = character;\n    character = value.charAt(++index);\n  }\n\n  if (character !== C_BRACKET_OPEN) {\n    return;\n  }\n\n  index++;\n  intro += character;\n  queue = '';\n\n  /* Check whether we’re eating a footnote. */\n  if (self.options.footnotes && value.charAt(index) === C_CARET) {\n    /* Exit if `![^` is found, so the `!` will be seen as text after this,\n     * and we’ll enter this function again when `[^` is found. */\n    if (type === T_IMAGE) {\n      return;\n    }\n\n    intro += C_CARET;\n    index++;\n    type = T_FOOTNOTE;\n  }\n\n  /* Eat the text. */\n  depth = 0;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character === C_BRACKET_OPEN) {\n      bracketed = true;\n      depth++;\n    } else if (character === C_BRACKET_CLOSE) {\n      if (!depth) {\n        break;\n      }\n\n      depth--;\n    }\n\n    if (character === C_BACKSLASH) {\n      queue += C_BACKSLASH;\n      character = value.charAt(++index);\n    }\n\n    queue += character;\n    index++;\n  }\n\n  subvalue = queue;\n  content = queue;\n  character = value.charAt(index);\n\n  if (character !== C_BRACKET_CLOSE) {\n    return;\n  }\n\n  index++;\n  subvalue += character;\n  queue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (!whitespace(character)) {\n      break;\n    }\n\n    queue += character;\n    index++;\n  }\n\n  character = value.charAt(index);\n\n  /* Inline footnotes cannot have an identifier. */\n  if (type !== T_FOOTNOTE && character === C_BRACKET_OPEN) {\n    identifier = '';\n    queue += character;\n    index++;\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (character === C_BRACKET_OPEN || character === C_BRACKET_CLOSE) {\n        break;\n      }\n\n      if (character === C_BACKSLASH) {\n        identifier += C_BACKSLASH;\n        character = value.charAt(++index);\n      }\n\n      identifier += character;\n      index++;\n    }\n\n    character = value.charAt(index);\n\n    if (character === C_BRACKET_CLOSE) {\n      referenceType = identifier ? REFERENCE_TYPE_FULL : REFERENCE_TYPE_COLLAPSED;\n      queue += identifier + character;\n      index++;\n    } else {\n      identifier = '';\n    }\n\n    subvalue += queue;\n    queue = '';\n  } else {\n    if (!content) {\n      return;\n    }\n\n    identifier = content;\n  }\n\n  /* Brackets cannot be inside the identifier. */\n  if (referenceType !== REFERENCE_TYPE_FULL && bracketed) {\n    return;\n  }\n\n  subvalue = intro + subvalue;\n\n  if (type === T_LINK && self.inLink) {\n    return null;\n  }\n\n  /* istanbul ignore if - never used (yet) */\n  if (silent) {\n    return true;\n  }\n\n  if (type === T_FOOTNOTE && content.indexOf(' ') !== -1) {\n    return eat(subvalue)({\n      type: 'footnote',\n      children: this.tokenizeInline(content, eat.now())\n    });\n  }\n\n  now = eat.now();\n  now.column += intro.length;\n  now.offset += intro.length;\n  identifier = referenceType === REFERENCE_TYPE_FULL ? identifier : content;\n\n  node = {\n    type: type + 'Reference',\n    identifier: normalize(identifier)\n  };\n\n  if (type === T_LINK || type === T_IMAGE) {\n    node.referenceType = referenceType;\n  }\n\n  if (type === T_LINK) {\n    exit = self.enterLink();\n    node.children = self.tokenizeInline(content, now);\n    exit();\n  } else if (type === T_IMAGE) {\n    node.alt = self.decode.raw(self.unescape(content), now) || null;\n  }\n\n  return eat(subvalue)(node);\n}\n","'use strict';\n\nvar trim = require('trim');\nvar whitespace = require('is-whitespace-character');\nvar locate = require('../locate/strong');\n\nmodule.exports = strong;\nstrong.locator = locate;\n\nvar C_ASTERISK = '*';\nvar C_UNDERSCORE = '_';\n\nfunction strong(eat, value, silent) {\n  var self = this;\n  var index = 0;\n  var character = value.charAt(index);\n  var now;\n  var pedantic;\n  var marker;\n  var queue;\n  var subvalue;\n  var length;\n  var prev;\n\n  if (\n    (character !== C_ASTERISK && character !== C_UNDERSCORE) ||\n    value.charAt(++index) !== character\n  ) {\n    return;\n  }\n\n  pedantic = self.options.pedantic;\n  marker = character;\n  subvalue = marker + marker;\n  length = value.length;\n  index++;\n  queue = '';\n  character = '';\n\n  if (pedantic && whitespace(value.charAt(index))) {\n    return;\n  }\n\n  while (index < length) {\n    prev = character;\n    character = value.charAt(index);\n\n    if (\n      character === marker &&\n      value.charAt(index + 1) === marker &&\n      (!pedantic || !whitespace(prev))\n    ) {\n      character = value.charAt(index + 2);\n\n      if (character !== marker) {\n        if (!trim(queue)) {\n          return;\n        }\n\n        /* istanbul ignore if - never used (yet) */\n        if (silent) {\n          return true;\n        }\n\n        now = eat.now();\n        now.column += 2;\n        now.offset += 2;\n\n        return eat(subvalue + queue + subvalue)({\n          type: 'strong',\n          children: self.tokenizeInline(queue, now)\n        });\n      }\n    }\n\n    if (!pedantic && character === '\\\\') {\n      queue += character;\n      character = value.charAt(++index);\n    }\n\n    queue += character;\n    index++;\n  }\n}\n","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n  var asterisk = value.indexOf('**', fromIndex);\n  var underscore = value.indexOf('__', fromIndex);\n\n  if (underscore === -1) {\n    return asterisk;\n  }\n\n  if (asterisk === -1) {\n    return underscore;\n  }\n\n  return underscore < asterisk ? underscore : asterisk;\n}\n","'use strict';\n\nvar trim = require('trim');\nvar word = require('is-word-character');\nvar whitespace = require('is-whitespace-character');\nvar locate = require('../locate/emphasis');\n\nmodule.exports = emphasis;\nemphasis.locator = locate;\n\nvar C_ASTERISK = '*';\nvar C_UNDERSCORE = '_';\n\nfunction emphasis(eat, value, silent) {\n  var self = this;\n  var index = 0;\n  var character = value.charAt(index);\n  var now;\n  var pedantic;\n  var marker;\n  var queue;\n  var subvalue;\n  var length;\n  var prev;\n\n  if (character !== C_ASTERISK && character !== C_UNDERSCORE) {\n    return;\n  }\n\n  pedantic = self.options.pedantic;\n  subvalue = character;\n  marker = character;\n  length = value.length;\n  index++;\n  queue = '';\n  character = '';\n\n  if (pedantic && whitespace(value.charAt(index))) {\n    return;\n  }\n\n  while (index < length) {\n    prev = character;\n    character = value.charAt(index);\n\n    if (character === marker && (!pedantic || !whitespace(prev))) {\n      character = value.charAt(++index);\n\n      if (character !== marker) {\n        if (!trim(queue) || prev === marker) {\n          return;\n        }\n\n        if (!pedantic && marker === C_UNDERSCORE && word(character)) {\n          queue += marker;\n          continue;\n        }\n\n        /* istanbul ignore if - never used (yet) */\n        if (silent) {\n          return true;\n        }\n\n        now = eat.now();\n        now.column++;\n        now.offset++;\n\n        return eat(subvalue + queue + marker)({\n          type: 'emphasis',\n          children: self.tokenizeInline(queue, now)\n        });\n      }\n\n      queue += marker;\n    }\n\n    if (!pedantic && character === '\\\\') {\n      queue += character;\n      character = value.charAt(++index);\n    }\n\n    queue += character;\n    index++;\n  }\n}\n","'use strict'\n\nmodule.exports = wordCharacter\n\nvar fromCode = String.fromCharCode\nvar re = /\\w/\n\n// Check if the given character code, or the character code at the first\n// character, is a word character.\nfunction wordCharacter(character) {\n  return re.test(\n    typeof character === 'number' ? fromCode(character) : character.charAt(0)\n  )\n}\n","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n  var asterisk = value.indexOf('*', fromIndex);\n  var underscore = value.indexOf('_', fromIndex);\n\n  if (underscore === -1) {\n    return asterisk;\n  }\n\n  if (asterisk === -1) {\n    return underscore;\n  }\n\n  return underscore < asterisk ? underscore : asterisk;\n}\n","'use strict';\n\nvar whitespace = require('is-whitespace-character');\nvar locate = require('../locate/delete');\n\nmodule.exports = strikethrough;\nstrikethrough.locator = locate;\n\nvar C_TILDE = '~';\nvar DOUBLE = '~~';\n\nfunction strikethrough(eat, value, silent) {\n  var self = this;\n  var character = '';\n  var previous = '';\n  var preceding = '';\n  var subvalue = '';\n  var index;\n  var length;\n  var now;\n\n  if (\n    !self.options.gfm ||\n    value.charAt(0) !== C_TILDE ||\n    value.charAt(1) !== C_TILDE ||\n    whitespace(value.charAt(2))\n  ) {\n    return;\n  }\n\n  index = 1;\n  length = value.length;\n  now = eat.now();\n  now.column += 2;\n  now.offset += 2;\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (\n      character === C_TILDE &&\n      previous === C_TILDE &&\n      (!preceding || !whitespace(preceding))\n    ) {\n      /* istanbul ignore if - never used (yet) */\n      if (silent) {\n        return true;\n      }\n\n      return eat(DOUBLE + subvalue + DOUBLE)({\n        type: 'delete',\n        children: self.tokenizeInline(subvalue, now)\n      });\n    }\n\n    subvalue += previous;\n    preceding = previous;\n    previous = character;\n  }\n}\n","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n  return value.indexOf('~~', fromIndex);\n}\n","'use strict';\n\nvar whitespace = require('is-whitespace-character');\nvar locate = require('../locate/code-inline');\n\nmodule.exports = inlineCode;\ninlineCode.locator = locate;\n\nvar C_TICK = '`';\n\n/* Tokenise inline code. */\nfunction inlineCode(eat, value, silent) {\n  var length = value.length;\n  var index = 0;\n  var queue = '';\n  var tickQueue = '';\n  var contentQueue;\n  var subqueue;\n  var count;\n  var openingCount;\n  var subvalue;\n  var character;\n  var found;\n  var next;\n\n  while (index < length) {\n    if (value.charAt(index) !== C_TICK) {\n      break;\n    }\n\n    queue += C_TICK;\n    index++;\n  }\n\n  if (!queue) {\n    return;\n  }\n\n  subvalue = queue;\n  openingCount = index;\n  queue = '';\n  next = value.charAt(index);\n  count = 0;\n\n  while (index < length) {\n    character = next;\n    next = value.charAt(index + 1);\n\n    if (character === C_TICK) {\n      count++;\n      tickQueue += character;\n    } else {\n      count = 0;\n      queue += character;\n    }\n\n    if (count && next !== C_TICK) {\n      if (count === openingCount) {\n        subvalue += queue + tickQueue;\n        found = true;\n        break;\n      }\n\n      queue += tickQueue;\n      tickQueue = '';\n    }\n\n    index++;\n  }\n\n  if (!found) {\n    if (openingCount % 2 !== 0) {\n      return;\n    }\n\n    queue = '';\n  }\n\n  /* istanbul ignore if - never used (yet) */\n  if (silent) {\n    return true;\n  }\n\n  contentQueue = '';\n  subqueue = '';\n  length = queue.length;\n  index = -1;\n\n  while (++index < length) {\n    character = queue.charAt(index);\n\n    if (whitespace(character)) {\n      subqueue += character;\n      continue;\n    }\n\n    if (subqueue) {\n      if (contentQueue) {\n        contentQueue += subqueue;\n      }\n\n      subqueue = '';\n    }\n\n    contentQueue += character;\n  }\n\n  return eat(subvalue)({\n    type: 'inlineCode',\n    value: contentQueue\n  });\n}\n","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n  return value.indexOf('`', fromIndex);\n}\n","'use strict';\n\nvar locate = require('../locate/break');\n\nmodule.exports = hardBreak;\nhardBreak.locator = locate;\n\nvar MIN_BREAK_LENGTH = 2;\n\nfunction hardBreak(eat, value, silent) {\n  var length = value.length;\n  var index = -1;\n  var queue = '';\n  var character;\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (character === '\\n') {\n      if (index < MIN_BREAK_LENGTH) {\n        return;\n      }\n\n      /* istanbul ignore if - never used (yet) */\n      if (silent) {\n        return true;\n      }\n\n      queue += character;\n\n      return eat(queue)({type: 'break'});\n    }\n\n    if (character !== ' ') {\n      return;\n    }\n\n    queue += character;\n  }\n}\n","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n  var index = value.indexOf('\\n', fromIndex);\n\n  while (index > fromIndex) {\n    if (value.charAt(index - 1) !== ' ') {\n      break;\n    }\n\n    index--;\n  }\n\n  return index;\n}\n","'use strict';\n\nmodule.exports = text;\n\nfunction text(eat, value, silent) {\n  var self = this;\n  var methods;\n  var tokenizers;\n  var index;\n  var length;\n  var subvalue;\n  var position;\n  var tokenizer;\n  var name;\n  var min;\n  var now;\n\n  /* istanbul ignore if - never used (yet) */\n  if (silent) {\n    return true;\n  }\n\n  methods = self.inlineMethods;\n  length = methods.length;\n  tokenizers = self.inlineTokenizers;\n  index = -1;\n  min = value.length;\n\n  while (++index < length) {\n    name = methods[index];\n\n    if (name === 'text' || !tokenizers[name]) {\n      continue;\n    }\n\n    tokenizer = tokenizers[name].locator;\n\n    if (!tokenizer) {\n      eat.file.fail('Missing locator: `' + name + '`');\n    }\n\n    position = tokenizer.call(self, value, 1);\n\n    if (position !== -1 && position < min) {\n      min = position;\n    }\n  }\n\n  subvalue = value.slice(0, min);\n  now = eat.now();\n\n  self.decode(subvalue, now, function (content, position, source) {\n    eat(source || content)({\n      type: 'text',\n      value: content\n    });\n  });\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\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\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\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\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","var visitWithParents = require('unist-util-visit-parents');\n\nfunction addListMetadata() {\n  return function (ast) {\n    visitWithParents(ast, 'list', function (listNode, parents) {\n      var depth = 0, i, n;\n      for (i = 0, n = parents.length; i < n; i++) {\n        if (parents[i].type === 'list') depth += 1;\n      }\n      for (i = 0, n = listNode.children.length; i < n; i++) {\n        var child = listNode.children[i];\n        child.index = i;\n        child.ordered = listNode.ordered;\n      }\n      listNode.depth = depth;\n    });\n    return ast;\n  };\n}\n\nmodule.exports = addListMetadata;\n","'use strict'\n\n/* Expose. */\nmodule.exports = visitParents\n\n/* Visit. */\nfunction visitParents(tree, type, visitor) {\n  var stack = []\n\n  if (typeof type === 'function') {\n    visitor = type\n    type = null\n  }\n\n  one(tree)\n\n  /* Visit a single node. */\n  function one(node) {\n    var result\n\n    if (!type || node.type === type) {\n      result = visitor(node, stack.concat())\n    }\n\n    if (node.children && result !== false) {\n      return all(node.children, node)\n    }\n\n    return result\n  }\n\n  /* Visit children in `parent`. */\n  function all(children, parent) {\n    var length = children.length\n    var index = -1\n    var child\n\n    stack.push(parent)\n\n    while (++index < length) {\n      child = children[index]\n\n      if (child && one(child) === false) {\n        return false\n      }\n    }\n\n    stack.pop()\n\n    return true\n  }\n}\n","'use strict';\n\n/**\n * Naive, simple plugin to match inline nodes without attributes\n * This allows say <strong>foo</strong>, but not <strong class=\"very\">foo</strong>\n * For proper HTML support, you'll want a different plugin\n **/\nvar visit = require('unist-util-visit');\n\nvar type = 'virtualHtml';\nvar selfClosingRe = /^<(area|base|br|col|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)\\s*\\/?>$/i;\nvar simpleTagRe = /^<(\\/?)([a-z]+)\\s*>$/;\n\nmodule.exports = function (tree) {\n  var open = void 0;\n  var currentParent = void 0;\n  visit(tree, 'html', function (node, index, parent) {\n    if (currentParent !== parent) {\n      open = [];\n      currentParent = parent;\n    }\n\n    var selfClosing = getSelfClosing(node);\n    if (selfClosing) {\n      parent.children.splice(index, 1, {\n        type: type,\n        tag: selfClosing,\n        position: node.position\n      });\n      return true;\n    }\n\n    var current = getSimpleTag(node, parent);\n    if (!current) {\n      return true;\n    }\n\n    var matching = findAndPull(open, current.tag);\n\n    if (matching) {\n      parent.children.splice(index, 0, virtual(current, matching, parent));\n    } else if (!current.opening) {\n      open.push(current);\n    }\n\n    return true;\n  }, true // Iterate in reverse\n  );\n\n  return tree;\n};\n\nfunction findAndPull(open, matchingTag) {\n  var i = open.length;\n  while (i--) {\n    if (open[i].tag === matchingTag) {\n      return open.splice(i, 1)[0];\n    }\n  }\n\n  return false;\n}\n\nfunction getSimpleTag(node, parent) {\n  var match = node.value.match(simpleTagRe);\n  return match ? { tag: match[2], opening: !match[1], node: node } : false;\n}\n\nfunction getSelfClosing(node) {\n  var match = node.value.match(selfClosingRe);\n  return match ? match[1] : false;\n}\n\nfunction virtual(fromNode, toNode, parent) {\n  var fromIndex = parent.children.indexOf(fromNode.node);\n  var toIndex = parent.children.indexOf(toNode.node);\n\n  var extracted = parent.children.splice(fromIndex, toIndex - fromIndex + 1);\n  var children = extracted.slice(1, -1);\n  return {\n    type: type,\n    children: children,\n    tag: fromNode.tag,\n    position: {\n      start: fromNode.node.position.start,\n      end: toNode.node.position.end,\n      indent: []\n    }\n  };\n}","'use strict';\n\nvar visit = require('unist-util-visit');\n\nexports.ofType = function (types, mode) {\n  return function (node) {\n    types.forEach(function (type) {\n      return visit(node, type, disallow, true);\n    });\n    return node;\n  };\n\n  function disallow(node, index, parent) {\n    if (parent) {\n      untangle(node, index, parent, mode);\n    }\n  }\n};\n\nexports.ifNotMatch = function (allowNode, mode) {\n  return function (node) {\n    visit(node, disallow, true);\n    return node;\n  };\n\n  function disallow(node, index, parent) {\n    if (parent && !allowNode(node, index, parent)) {\n      untangle(node, index, parent, mode);\n    }\n  }\n};\n\nfunction untangle(node, index, parent, mode) {\n  if (mode === 'remove') {\n    parent.children.splice(index, 1);\n  } else if (mode === 'unwrap') {\n    var args = [index, 1];\n\n    if (node.children) {\n      args = args.concat(node.children);\n    }\n\n    Array.prototype.splice.apply(parent.children, args);\n  }\n}","'use strict';\n\nvar React = require('react');\nvar xtend = require('xtend');\n\nfunction astToReact(node, options) {\n  var parent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var index = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n\n  var renderer = options.renderers[node.type];\n\n  var pos = node.position.start;\n  var key = [node.type, pos.line, pos.column].join('-');\n\n  if (node.type === 'text') {\n    return renderer ? renderer(node.value, key) : node.value;\n  }\n\n  if (typeof renderer !== 'function' && typeof renderer !== 'string' && !isReactFragment(renderer)) {\n    throw new Error('Renderer for type `' + node.type + '` not defined or is not renderable');\n  }\n\n  var nodeProps = getNodeProps(node, key, options, renderer, parent, index);\n\n  return React.createElement(renderer, nodeProps, nodeProps.children || resolveChildren() || undefined);\n\n  function resolveChildren() {\n    return node.children && node.children.map(function (childNode, i) {\n      return astToReact(childNode, options, { node: node, props: nodeProps }, i);\n    });\n  }\n}\n\nfunction isReactFragment(renderer) {\n  return React.Fragment && React.Fragment === renderer;\n}\n\n// eslint-disable-next-line max-params, complexity\nfunction getNodeProps(node, key, opts, renderer, parent, index) {\n  var props = { key: key };\n\n  var isTagRenderer = typeof renderer === 'string';\n\n  // `sourcePos` is true if the user wants source information (line/column info from markdown source)\n  if (opts.sourcePos && node.position) {\n    props['data-sourcepos'] = flattenPosition(node.position);\n  }\n\n  if (opts.rawSourcePos && !isTagRenderer) {\n    props.sourcePosition = node.position;\n  }\n\n  // If `includeNodeIndex` is true, pass node index info to all non-tag renderers\n  if (opts.includeNodeIndex && parent.node && parent.node.children && !isTagRenderer) {\n    props.index = parent.node.children.indexOf(node);\n    props.parentChildCount = parent.node.children.length;\n  }\n\n  var ref = node.identifier !== null && node.identifier !== undefined ? opts.definitions[node.identifier] || {} : null;\n\n  switch (node.type) {\n    case 'root':\n      assignDefined(props, { className: opts.className });\n      break;\n    case 'heading':\n      props.level = node.depth;\n      break;\n    case 'list':\n      props.start = node.start;\n      props.ordered = node.ordered;\n      props.tight = !node.loose;\n      props.depth = node.depth;\n      break;\n    case 'listItem':\n      props.checked = node.checked;\n      props.tight = !node.loose;\n      props.ordered = node.ordered;\n      props.index = node.index;\n      props.children = (props.tight ? unwrapParagraphs(node) : node.children).map(function (childNode, i) {\n        return astToReact(childNode, opts, { node: node, props: props }, i);\n      });\n      break;\n    case 'definition':\n      assignDefined(props, { identifier: node.identifier, title: node.title, url: node.url });\n      break;\n    case 'code':\n      assignDefined(props, { language: node.lang && node.lang.split(/\\s/, 1)[0] });\n      break;\n    case 'inlineCode':\n      props.children = node.value;\n      props.inline = true;\n      break;\n    case 'link':\n      assignDefined(props, {\n        title: node.title || undefined,\n        target: typeof opts.linkTarget === 'function' ? opts.linkTarget(node.url, node.children, node.title) : opts.linkTarget,\n        href: opts.transformLinkUri ? opts.transformLinkUri(node.url, node.children, node.title) : node.url\n      });\n      break;\n    case 'image':\n      assignDefined(props, {\n        alt: node.alt || undefined,\n        title: node.title || undefined,\n        src: opts.transformImageUri ? opts.transformImageUri(node.url, node.children, node.title, node.alt) : node.url\n      });\n      break;\n    case 'linkReference':\n      assignDefined(props, xtend(ref, {\n        href: opts.transformLinkUri ? opts.transformLinkUri(ref.href) : ref.href\n      }));\n      break;\n    case 'imageReference':\n      assignDefined(props, {\n        src: opts.transformImageUri && ref.href ? opts.transformImageUri(ref.href, node.children, ref.title, node.alt) : ref.href,\n        title: ref.title || undefined,\n        alt: node.alt || undefined\n      });\n      break;\n    case 'table':\n    case 'tableHead':\n    case 'tableBody':\n      props.columnAlignment = node.align;\n      break;\n    case 'tableRow':\n      props.isHeader = parent.node.type === 'tableHead';\n      props.columnAlignment = parent.props.columnAlignment;\n      break;\n    case 'tableCell':\n      assignDefined(props, {\n        isHeader: parent.props.isHeader,\n        align: parent.props.columnAlignment[index]\n      });\n      break;\n    case 'virtualHtml':\n      props.tag = node.tag;\n      break;\n    case 'html':\n      // @todo find a better way than this\n      props.isBlock = node.position.start.line !== node.position.end.line;\n      props.escapeHtml = opts.escapeHtml;\n      props.skipHtml = opts.skipHtml;\n      break;\n    default:\n      assignDefined(props, xtend(node, {\n        type: undefined,\n        position: undefined,\n        children: undefined\n      }));\n  }\n\n  if (!isTagRenderer && node.value) {\n    props.value = node.value;\n  }\n\n  return props;\n}\n\nfunction assignDefined(target, attrs) {\n  for (var key in attrs) {\n    if (typeof attrs[key] !== 'undefined') {\n      target[key] = attrs[key];\n    }\n  }\n}\n\nfunction flattenPosition(pos) {\n  return [pos.start.line, ':', pos.start.column, '-', pos.end.line, ':', pos.end.column].map(String).join('');\n}\n\nfunction unwrapParagraphs(node) {\n  return node.children.reduce(function (array, child) {\n    return array.concat(child.type === 'paragraph' ? child.children || [] : [child]);\n  }, []);\n}\n\nmodule.exports = astToReact;","'use strict';\n\nvar visit = require('unist-util-visit');\n\nmodule.exports = function (node) {\n  visit(node, 'table', wrap);\n  return node;\n};\n\nfunction wrap(table) {\n  var children = table.children;\n  table.children = [{\n    type: 'tableHead',\n    align: table.align,\n    children: [children[0]],\n    position: children[0].position\n  }];\n  if (children.length > 1) {\n    table.children.push({\n      type: 'tableBody',\n      align: table.align,\n      children: children.slice(1),\n      position: {\n        start: children[1].position.start,\n        end: children[children.length - 1].position.end\n      }\n    });\n  }\n}","'use strict';\n\nmodule.exports = function getDefinitions(node) {\n  var defs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  return (node.children || []).reduce(function (definitions, child) {\n    if (child.type === 'definition') {\n      definitions[child.identifier] = {\n        href: child.url,\n        title: child.title\n      };\n    }\n\n    return getDefinitions(child, definitions);\n  }, defs);\n};","'use strict';\n\nvar protocols = ['http', 'https', 'mailto', 'tel'];\n\nmodule.exports = function uriTransformer(uri) {\n  var url = (uri || '').trim();\n  var first = url.charAt(0);\n\n  if (first === '#' || first === '/') {\n    return url;\n  }\n\n  var colon = url.indexOf(':');\n  if (colon === -1) {\n    return url;\n  }\n\n  var length = protocols.length;\n  var index = -1;\n\n  while (++index < length) {\n    var protocol = protocols[index];\n\n    if (colon === protocol.length && url.slice(0, protocol.length) === protocol) {\n      return url;\n    }\n  }\n\n  index = url.indexOf('?');\n  if (index !== -1 && colon > index) {\n    return url;\n  }\n\n  index = url.indexOf('#');\n  if (index !== -1 && colon > index) {\n    return url;\n  }\n\n  // eslint-disable-next-line no-script-url\n  return 'javascript:void(0)';\n};","/* eslint-disable react/prop-types, react/no-multi-comp */\n'use strict';\n\nvar xtend = require('xtend');\nvar React = require('react');\nvar createElement = React.createElement;\n\nmodule.exports = {\n  root: 'div',\n  break: 'br',\n  paragraph: 'p',\n  emphasis: 'em',\n  strong: 'strong',\n  thematicBreak: 'hr',\n  blockquote: 'blockquote',\n  delete: 'del',\n  link: 'a',\n  image: 'img',\n  linkReference: 'a',\n  imageReference: 'img',\n  table: SimpleRenderer.bind(null, 'table'),\n  tableHead: SimpleRenderer.bind(null, 'thead'),\n  tableBody: SimpleRenderer.bind(null, 'tbody'),\n  tableRow: SimpleRenderer.bind(null, 'tr'),\n  tableCell: TableCell,\n\n  list: List,\n  listItem: ListItem,\n  definition: NullRenderer,\n  heading: Heading,\n  inlineCode: InlineCode,\n  code: CodeBlock,\n  html: Html,\n  virtualHtml: VirtualHtml\n};\n\nfunction SimpleRenderer(tag, props) {\n  return createElement(tag, getCoreProps(props), props.children);\n}\n\nfunction TableCell(props) {\n  var style = props.align ? { textAlign: props.align } : undefined;\n  var coreProps = getCoreProps(props);\n  return createElement(props.isHeader ? 'th' : 'td', style ? xtend({ style: style }, coreProps) : coreProps, props.children);\n}\n\nfunction Heading(props) {\n  return createElement('h' + props.level, getCoreProps(props), props.children);\n}\n\nfunction List(props) {\n  var attrs = getCoreProps(props);\n  if (props.start !== null && props.start !== 1) {\n    attrs.start = props.start.toString();\n  }\n\n  return createElement(props.ordered ? 'ol' : 'ul', attrs, props.children);\n}\n\nfunction ListItem(props) {\n  var checkbox = null;\n  if (props.checked !== null) {\n    var checked = props.checked;\n    checkbox = createElement('input', { type: 'checkbox', checked: checked, readOnly: true });\n  }\n\n  return createElement('li', getCoreProps(props), checkbox, props.children);\n}\n\nfunction CodeBlock(props) {\n  var className = props.language && 'language-' + props.language;\n  var code = createElement('code', className ? { className: className } : null, props.value);\n  return createElement('pre', getCoreProps(props), code);\n}\n\nfunction InlineCode(props) {\n  return createElement('code', getCoreProps(props), props.children);\n}\n\nfunction Html(props) {\n  if (props.skipHtml) {\n    return null;\n  }\n\n  var tag = props.isBlock ? 'div' : 'span';\n  if (props.escapeHtml) {\n    // @todo when fiber lands, we can simply render props.value\n    return createElement(tag, null, props.value);\n  }\n\n  var nodeProps = { dangerouslySetInnerHTML: { __html: props.value } };\n  return createElement(tag, nodeProps);\n}\n\nfunction VirtualHtml(props) {\n  return createElement(props.tag, getCoreProps(props), props.children);\n}\n\nfunction NullRenderer() {\n  return null;\n}\n\nfunction getCoreProps(props) {\n  return props['data-sourcepos'] ? { 'data-sourcepos': props['data-sourcepos'] } : {};\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _search = _interopRequireDefault(require(\"./search.js\"));\n\nvar _mega = _interopRequireDefault(require(\"./mega.js\"));\n\nvar _drawer = _interopRequireDefault(require(\"./drawer.js\"));\n\nvar _subnav = _interopRequireDefault(require(\"./subnav.js\"));\n\nvar _sticky = _interopRequireDefault(require(\"./sticky.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nclass Header {\n  constructor(headerEl) {\n    if (!headerEl) {\n      headerEl = document.querySelector('[data-o-component=\"o-header\"]');\n    } else if (typeof headerEl === 'string') {\n      headerEl = document.querySelector(headerEl);\n    }\n\n    if (headerEl.hasAttribute('data-o-header--js')) {\n      return;\n    }\n\n    this.headerEl = headerEl;\n\n    _search.default.init(this.headerEl);\n\n    _mega.default.init(this.headerEl);\n\n    _drawer.default.init(this.headerEl);\n\n    _subnav.default.init(this.headerEl);\n\n    _sticky.default.init(this.headerEl);\n\n    this.headerEl.removeAttribute('data-o-header--no-js');\n    this.headerEl.setAttribute('data-o-header--js', '');\n  }\n\n  static init(rootEl) {\n    if (!rootEl) {\n      rootEl = document.body;\n    }\n\n    if (!(rootEl instanceof HTMLElement)) {\n      rootEl = document.querySelector(rootEl);\n    }\n\n    if (/\\bo-header\\b/.test(rootEl.getAttribute('data-o-component'))) {\n      return new Header(rootEl);\n    }\n\n    return [].map.call(rootEl.querySelectorAll('[data-o-component=\"o-header\"]'), el => {\n      if (!el.hasAttribute('data-o-header--js')) {\n        return new Header(el);\n      }\n    }).filter(header => {\n      return header !== undefined;\n    });\n  }\n\n}\n\nvar _default = Header;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.init = init;\nexports.default = void 0;\n\nvar _oToggle = _interopRequireDefault(require(\"@financial-times/o-toggle\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction init(headerEl) {\n  var target = headerEl.querySelector('[data-o-header-search]');\n  var controls = target && headerEl.querySelectorAll(\"[aria-controls=\\\"\".concat(target.id, \"\\\"]\"));\n\n  if (controls === null || controls.length === 0) {\n    return;\n  }\n\n  var opening = [];\n\n  var callback = function callback(state, e) {\n    if (state === 'open') {\n      // record the opening control\n      opening.push(e.currentTarget);\n      target.querySelector('[name=\"q\"]').focus();\n    } else {\n      // re-focus opening control\n      if (opening.length) {\n        opening.pop().focus();\n      }\n    }\n  };\n\n  for (var i = 0, len = controls.length; i < len; i++) {\n    new _oToggle.default(controls[i], {\n      target,\n      callback\n    });\n  }\n}\n\nvar _default = {\n  init\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _target = _interopRequireDefault(require(\"./target.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Some assistive technologies, like screen readers, suggest to press 'space'\n// when interacting with a link with a role of 'button'.\n// We need to ensure that we replicate this functionality that exists on a button element.\nfunction handleSpaceKeydown(e) {\n  // if the pressed key is a space, we'll simulate a click\n  if (e.keyCode === 32) {\n    this.toggle(e);\n  }\n}\n\nclass Toggle {\n  constructor(toggleEl, config) {\n    if (!Toggle._targets) {\n      Toggle._targets = new Map();\n    }\n\n    if (!toggleEl) {\n      return;\n    } else if (!(toggleEl instanceof HTMLElement)) {\n      toggleEl = document.querySelector(toggleEl);\n    }\n\n    if (toggleEl.hasAttribute('data-o-toggle--js')) {\n      return;\n    }\n\n    if (!config) {\n      config = {}; // Try to get config set declaratively on the element\n\n      Array.prototype.forEach.call(toggleEl.attributes, attr => {\n        if (attr.name.indexOf('data-o-toggle') === 0) {\n          // Remove the prefix part of the data attribute name\n          var key = attr.name.replace('data-o-toggle-', '');\n\n          try {\n            // If it's a JSON, a boolean or a number, we want it stored like that, and not as a string\n            // We also replace all ' with \" so JSON strings are parsed correctly\n            config[key] = JSON.parse(attr.value.replace(/\\'/g, '\"'));\n          } catch (e) {\n            config[key] = attr.value;\n          }\n        }\n      });\n    } // Set the toggle callback if its a string.\n\n\n    if (config.callback && typeof config.callback === 'string') {\n      // Error if the callback is a string and a global function of that name does not exist.\n      if (typeof window[config.callback] !== 'function') {\n        throw new Error(\"Could not find o-toggle callback \\\"\".concat(config.callback, \"\\\".\"));\n      }\n\n      this.callback = window[config.callback];\n    } // Set the toggle callback if its a funciton.\n\n\n    if (config.callback && typeof config.callback === 'function') {\n      this.callback = config.callback;\n    } // Error if some callback value has been given but has not been set.\n\n\n    if (config.callback && !this.callback) {\n      throw new Error(\"The o-toggle callback must be a string or function.\");\n    } // Set the toggle element.\n\n\n    this.toggleEl = toggleEl;\n\n    if (this.toggleEl.nodeName === 'A') {\n      this.toggleEl.setAttribute('role', 'button');\n      this.toggleEl.addEventListener('keydown', handleSpaceKeydown.bind(this)); // If a user drags their mouse slightly when trying to interact with the toggle\n      // it will trigger the 'drag and drop' functionality.\n      // Regular buttons prevent this and ensure as long as the mouse is still above the\n      // button that the click will register.\n      // This will help users with motor impairments and those less familiar with a trackpad.\n\n      this.toggleEl.setAttribute('draggable', 'false');\n    }\n\n    this.toggle = this.toggle.bind(this);\n    this.toggleEl.addEventListener('click', this.toggle);\n    this.toggleEl.setAttribute('data-o-toggle--js', 'true');\n    this.targetEl = config.target;\n\n    if (!(this.targetEl instanceof HTMLElement)) {\n      this.targetEl = document.querySelector(this.targetEl);\n    }\n\n    if (Toggle._targets.get(this.targetEl) === undefined) {\n      this.target = new Toggle.Target(this);\n\n      Toggle._targets.set(this.targetEl, this.target);\n    } else {\n      this.target = Toggle._targets.get(this.targetEl);\n    }\n\n    this.target.addToggle(this);\n    this.target.close();\n  }\n\n  open() {\n    this.toggleEl.setAttribute('aria-expanded', 'true');\n  }\n\n  close() {\n    this.toggleEl.setAttribute('aria-expanded', 'false');\n  } // toggle is bound to the Toggle instance in the constructor\n\n\n  toggle(e) {\n    this.target.toggle();\n\n    if (e) {\n      e.preventDefault();\n    }\n\n    if (this.callback) {\n      var stateName = this.target.isOpen() ? 'open' : 'close';\n      this.callback(stateName, e);\n    }\n  }\n\n  destroy() {\n    if (this.toggleEl.nodeName === 'A') {\n      this.toggleEl.removeEventListener('keydown', handleSpaceKeydown);\n    }\n\n    this.toggleEl.removeEventListener('click', this.toggle);\n    this.toggleEl.removeAttribute('aria-expanded');\n    this.toggleEl.removeAttribute('role');\n    this.toggleEl.removeAttribute('data-o-toggle--js');\n    this.target.removeToggle(this);\n    this.target = undefined;\n    this.toggleEl = undefined;\n    this.callback = undefined;\n  }\n\n  static init(el, config) {\n    if (!el) {\n      el = document.body;\n    } else if (!(el instanceof HTMLElement)) {\n      el = document.querySelector(el);\n    }\n\n    var toggleEls = el.querySelectorAll('[data-o-component=\"o-toggle\"]');\n    var toggles = [];\n\n    for (var toggleEl of toggleEls) {\n      if (!toggleEl.hasAttribute('data-o-toggle--js')) {\n        toggles.push(new Toggle(toggleEl, config));\n      }\n    }\n\n    return toggles;\n  }\n\n}\n\nToggle.Target = _target.default;\nvar _default = Toggle;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nclass Target {\n  constructor(toggle) {\n    this.targetEl = toggle.targetEl;\n    this.toggles = [];\n  }\n\n  addToggle(toggle) {\n    this.toggles.push(toggle);\n  }\n\n  removeToggle(toggle) {\n    var togglePosition = this.toggles.indexOf(toggle);\n    this.toggles = this.toggles.slice(0, togglePosition).concat(this.toggles.slice(togglePosition + 1));\n\n    if (this.toggles.length === 0) {\n      // If that was the last/only toggle that controlled this target then ensure\n      // this target is open so it doesn't get stuck in the closed position\n      this.open();\n    }\n  }\n\n  open() {\n    this.targetEl.setAttribute('aria-hidden', 'false');\n    this.targetEl.classList.add('o-toggle--active'); // Set every toggle that controls this target to be open\n\n    this.toggles.forEach(toggle => {\n      toggle.open();\n    });\n  }\n\n  close() {\n    this.targetEl.setAttribute('aria-hidden', 'true');\n    this.targetEl.classList.remove('o-toggle--active'); // Set every toggle that controls this target to be closed\n\n    this.toggles.forEach(toggle => {\n      toggle.close();\n    });\n  }\n\n  toggle() {\n    if (this.isOpen()) {\n      this.close();\n    } else {\n      this.open();\n    }\n  }\n\n  isOpen() {\n    return this.targetEl.classList.contains('o-toggle--active');\n  }\n\n}\n\nvar _default = Target;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.init = init;\nexports.show = show;\nexports.hide = hide;\nexports.default = void 0;\nvar INTENT_ENTER = 300;\nvar INTENT_LEAVE = 400;\nvar expanded = [];\n\nfunction addEvents(parent, menu) {\n  var timeout;\n  parent.addEventListener('mouseenter', () => {\n    clearTimeout(timeout);\n\n    if (isOpen(menu)) {\n      return;\n    }\n\n    timeout = setTimeout(() => {\n      if (expanded.length) {\n        hide(expanded[0]);\n        show(menu, false);\n      } else {\n        show(menu, true);\n      }\n    }, INTENT_ENTER);\n  });\n  parent.addEventListener('mouseleave', () => {\n    clearTimeout(timeout);\n    timeout = setTimeout(() => isOpen(menu) && hide(menu), INTENT_LEAVE);\n  });\n}\n\nfunction isOpen(menu) {\n  return expanded.indexOf(menu) !== -1;\n}\n\nfunction show(menu, animate) {\n  if (animate) {\n    menu.classList.add('o-header__mega--animation');\n  }\n\n  menu.setAttribute('aria-hidden', 'false');\n  menu.setAttribute('aria-expanded', 'true');\n  menu.dispatchEvent(new CustomEvent('oHeader.MegaMenuShow', {\n    bubbles: true\n  }));\n  expanded.push(menu);\n}\n\nfunction hide(menu) {\n  menu.classList.remove('o-header__mega--animation');\n  menu.setAttribute('aria-hidden', 'true');\n  menu.setAttribute('aria-expanded', 'false');\n  menu.dispatchEvent(new CustomEvent('oHeader.MegaMenuHide', {\n    bubbles: true\n  }));\n  expanded.splice(expanded.indexOf(menu), 1);\n}\n\nfunction init(headerEl) {\n  var menus = Array.from(headerEl.querySelectorAll('[data-o-header-mega]'));\n  var parents = menus.map(menu => menu.parentNode);\n  menus.forEach(menu => {\n    menu.setAttribute('aria-hidden', 'true');\n    menu.setAttribute('aria-expanded', 'false');\n  });\n  parents.forEach((parent, i) => addEvents(parent, menus[i]));\n}\n\nvar _default = {\n  init,\n  show,\n  hide\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.init = init;\nexports.handleCloseEvents = handleCloseEvents;\nexports.default = void 0;\n\nvar _oToggle = _interopRequireDefault(require(\"@financial-times/o-toggle\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar LISTEN_DELAY = 300;\nvar INTENT_DELAY = 1000;\n\nfunction handleCloseEvents(scope, callback, allFocusable) {\n  var timeout;\n\n  var handleKeydown = e => {\n    if (e.keyCode === 27) {\n      callback();\n    }\n  };\n\n  var handleClick = e => {\n    if (!scope.contains(e.target)) {\n      callback();\n    }\n  };\n\n  var handleMouseenter = () => {\n    clearTimeout(timeout);\n  };\n\n  var handleMouseleave = () => {\n    // IE 11 mobile fires a mouseleave event when the search box gets focus. This means when the user tries\n    // to use the search box, it disappears because the drawer closes.\n    // Mouseout events should only occur when the drawer takes up less than 100% of the window, so we can ignore\n    // any events triggered if the width of the drawer is equal to or bigger than the window.innerwidth\n    if (window.innerWidth >= scope.offsetWidth) {\n      timeout = setTimeout(callback, INTENT_DELAY);\n    }\n  };\n\n  var handleFocus = e => {\n    var target = e.relatedTarget || e.target;\n\n    if (!scope.contains(target)) {\n      scope.focus();\n    }\n  };\n\n  var handleTab = e => {\n    if (e.keyCode === 9) {\n      var firstEl = allFocusable[0];\n      var lastEl = allFocusable[allFocusable.length - 1]; // Keep focus within the drawer when tabbing for a11y reasons.\n\n      if (!e.shiftKey && e.target === lastEl) {\n        firstEl.focus();\n        e.preventDefault();\n      } else if (e.shiftKey && e.target === firstEl) {\n        // loop to the bottom when shift+tabbing.\n        lastEl.focus();\n        e.preventDefault();\n      }\n    }\n  };\n\n  var removeEvents = () => {\n    clearTimeout(timeout);\n    scope.removeEventListener('mouseenter', handleMouseenter);\n    scope.removeEventListener('mouseleave', handleMouseleave);\n    document.removeEventListener('click', handleClick);\n    document.removeEventListener('touchstart', handleClick);\n    document.removeEventListener('keydown', handleKeydown);\n    document.removeEventListener('focusin', handleFocus);\n    document.removeEventListener('focusout', handleFocus);\n    scope.removeEventListener('keydown', handleTab);\n  };\n\n  var addEvents = () => {\n    scope.addEventListener('mouseenter', handleMouseenter);\n    scope.addEventListener('mouseleave', handleMouseleave);\n    document.addEventListener('click', handleClick);\n    document.addEventListener('touchstart', handleClick);\n    document.addEventListener('keydown', handleKeydown); // Firefox doesn't support focusin or focusout\n    // https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n\n    document.addEventListener('focusin', handleFocus);\n    document.addEventListener('focusout', handleFocus);\n    scope.addEventListener('keydown', handleTab);\n  };\n\n  return {\n    addEvents,\n    removeEvents,\n    handleMouseleave\n  };\n}\n\nfunction addDrawerToggles(drawerEl, allFocusable) {\n  var controls = Array.from(document.body.querySelectorAll(\"[aria-controls=\\\"\".concat(drawerEl.id, \"\\\"]\")));\n  var handleClose;\n  var openingControl;\n\n  function toggleCallback(state, e) {\n    if (state === 'close') {\n      toggleTabbing(drawerEl, false, allFocusable);\n      handleClose.removeEvents();\n      openingControl.focus();\n    } else {\n      toggleTabbing(drawerEl, true, allFocusable); // don't capture the initial click or accidental double taps etc.\n      // we could use transitionend but scoping is tricky and it needs prefixing and...\n\n      setTimeout(handleClose.addEvents, LISTEN_DELAY); // record the opening control so we can send focus back to it when closing the drawer\n\n      openingControl = e.currentTarget; // aria-controls is only supported by JAWS.\n      // In a setTimeout callback to avoid flickering transitions in Chrome (v54)\n\n      setTimeout(() => {\n        // Don't focus on the drawer itself or iOS VoiceOver will miss it\n        // Focus on the first focusable element\n        var firstFocusable = drawerEl.querySelector('a, button, input, select');\n\n        if (firstFocusable) {\n          firstFocusable.focus();\n        } else {\n          drawerEl.focus();\n        }\n      });\n    }\n\n    drawerEl.classList.toggle('o-header__drawer--closing', state === 'close');\n    drawerEl.classList.toggle('o-header__drawer--opening', state === 'open');\n  }\n\n  controls.forEach(control => {\n    var drawerToggle = new _oToggle.default(control, {\n      target: drawerEl,\n      callback: toggleCallback\n    }); // Both toggles have the same target, so the toggle function will be the same\n    // If there's a separate handleClose instance for each toggle, removeEvents doesn't work\n    // when the close toggle is clicked\n\n    if (!handleClose) {\n      handleClose = handleCloseEvents(drawerEl, drawerToggle.toggle, allFocusable);\n    }\n  }); // make the drawer programmatically focusable\n\n  drawerEl.tabIndex = -1;\n}\n\nfunction addSubmenuToggles(drawerEl) {\n  var submenus = drawerEl.querySelectorAll('[id^=\"o-header-drawer-child-\"]');\n  Array.from(submenus).forEach(submenu => {\n    var button = drawerEl.querySelector(\"[aria-controls=\\\"\".concat(submenu.id, \"\\\"]\"));\n    submenu.setAttribute('aria-hidden', 'true');\n    new _oToggle.default(button, {\n      target: submenu,\n      callback: state => {\n        button.textContent = button.textContent.replace(/fewer|more/, state === 'open' ? 'fewer' : 'more');\n      }\n    });\n  });\n} // This function is to solve accessibility issue\n// when o-header-drawer is closed => tabbing is disabled.\n// when o-header-drawer is open => tabbing is enabled.\n\n\nfunction toggleTabbing(drawerEl, isEnabled, allFocusable) {\n  if (isEnabled) {\n    allFocusable.forEach(el => {\n      el.removeAttribute('tabindex');\n    });\n  } else {\n    allFocusable.forEach(el => {\n      el.setAttribute('tabindex', '-1');\n    });\n  }\n}\n\nfunction init() {\n  var drawerEl = document.body.querySelector('[data-o-header-drawer]');\n\n  if (!drawerEl) {\n    return;\n  }\n\n  var allFocusable = Array.from(drawerEl.querySelectorAll('a, button, input, select'));\n  toggleTabbing(drawerEl, false, allFocusable);\n  addSubmenuToggles(drawerEl);\n  addDrawerToggles(drawerEl, allFocusable); // Wrap in a timeout to stop page load stall in Chrome v73 on Android\n  // toggleTabbing and the removal of the no-js attribute spikes the CPU\n  // and causes the main process to block for around 10 seconds.\n\n  setTimeout(() => {\n    drawerEl.removeAttribute('data-o-header-drawer--no-js');\n    drawerEl.setAttribute('data-o-header-drawer--js', 'true');\n  });\n}\n\nvar _default = {\n  init,\n  handleCloseEvents\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.init = init;\nexports.default = void 0;\n\nvar oUtils = _interopRequireWildcard(require(\"@financial-times/o-utils\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction init(headerEl) {\n  var subnav = headerEl.querySelector('[data-o-header-subnav]');\n\n  if (subnav === null) {\n    return;\n  }\n\n  var buttons = Array.from(subnav.getElementsByTagName('button'));\n  var wrapper = subnav.querySelector('[data-o-header-subnav-wrapper]');\n  var scrollWidth;\n  var wrapperWidth = wrapper.clientWidth;\n\n  function checkCurrentPosition() {\n    var currentSelection = wrapper.querySelector('[aria-current]');\n\n    if (currentSelection) {\n      var currentSelectionEnd = currentSelection.getBoundingClientRect().right; //if the current selection is wider than the end of the wrapper\n\n      if (currentSelectionEnd > wrapperWidth) {\n        // check by how much\n        var diff = currentSelectionEnd - wrapperWidth; // if the difference is greater than half of the wrapper, scroll to the end of the current selection.\n\n        diff = diff > wrapperWidth / 2 ? currentSelectionEnd : wrapperWidth / 2;\n        wrapper.scrollTo(diff, 0);\n      }\n    }\n\n    scrollable();\n  }\n\n  function direction(button) {\n    return button.className.match(/left|right/).pop();\n  }\n\n  function scrollable() {\n    scrollWidth = wrapper.scrollWidth;\n    buttons.forEach(button => {\n      if (direction(button) === 'left') {\n        button.disabled = wrapper.scrollLeft === 0;\n      } else {\n        var remaining = scrollWidth - wrapperWidth - wrapper.scrollLeft; // Allow a little difference as scrollWidth is fast, not accurate.\n\n        button.disabled = remaining <= 1;\n      }\n    });\n  }\n\n  function scroll(e) {\n    var distance = 100;\n\n    if (direction(e.currentTarget) === 'left') {\n      distance = (wrapper.scrollLeft > distance ? distance : wrapper.scrollLeft) * -1;\n    } else {\n      var remaining = scrollWidth - wrapperWidth - wrapper.scrollLeft;\n      distance = remaining > distance ? distance : remaining;\n    }\n\n    wrapper.scrollLeft = wrapper.scrollLeft + distance;\n    scrollable();\n  }\n\n  wrapper.addEventListener('scroll', oUtils.throttle(scrollable, 100));\n  window.addEventListener('oViewport.resize', scrollable);\n  buttons.forEach(button => {\n    button.onclick = scroll;\n  });\n  checkCurrentPosition();\n}\n\nvar _default = {\n  init\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.init = init;\nexports.default = void 0;\n\nvar _oUtils = require(\"@financial-times/o-utils\");\n\nfunction init(headerEl) {\n  if (!headerEl.hasAttribute('data-o-header--sticky')) {\n    return;\n  }\n\n  var viewportOffset;\n  var lastScrollDepth;\n  var lastAnimationFrame;\n  var lastStickyState;\n\n  function handleFrame() {\n    // sticky el will appear when scrolled down from page top to\n    // (arbitrarily) > half the viewport height\n    var scrollDepth = window.pageYOffset || window.scrollY;\n    var isActive = scrollDepth > viewportOffset;\n    headerEl.classList.toggle('o-header--sticky-active', isActive);\n\n    if (isActive !== lastStickyState) {\n      lastStickyState = isActive;\n      headerEl.dispatchEvent(new CustomEvent('oHeader.Sticky', {\n        bubbles: true,\n        detail: {\n          isActive\n        }\n      }));\n    } // allow a little wiggling room so we don't get too hasty toggling up/down state\n\n\n    if (Math.abs(scrollDepth - lastScrollDepth) > 20) {\n      var isScrollingDown = lastScrollDepth < scrollDepth;\n      headerEl.classList.toggle('o-header--sticky-scroll-down', isActive && isScrollingDown);\n      headerEl.classList.toggle('o-header--sticky-scroll-up', isActive && !isScrollingDown);\n    }\n\n    lastScrollDepth = scrollDepth;\n  }\n\n  function startLoop() {\n    viewportOffset = window.innerHeight / 2;\n    lastAnimationFrame = window.requestAnimationFrame(() => {\n      handleFrame();\n      startLoop();\n    });\n  }\n\n  function stopLoop() {\n    if (lastAnimationFrame) {\n      window.cancelAnimationFrame(lastAnimationFrame);\n    }\n  }\n\n  function scrollStart() {\n    window.removeEventListener('scroll', scrollStart);\n    window.addEventListener('scroll', debouncedScrollEnd);\n    startLoop();\n  }\n\n  function scrollEnd() {\n    stopLoop();\n    window.removeEventListener('scroll', debouncedScrollEnd);\n    window.addEventListener('scroll', scrollStart);\n  }\n\n  var debouncedScrollEnd = (0, _oUtils.debounce)(scrollEnd, 300);\n  window.addEventListener('scroll', scrollStart);\n  handleFrame();\n}\n\nvar _default = {\n  init\n};\nexports.default = _default;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inheritsLoose;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _setPrototypeOf(o, p) {\n  module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n  return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.api = exports.default = void 0;\n\n/**\n * cuid.js\n * Collision-resistant UID generator for browsers and node.\n * Sequential for fast db lookups and recency sorting.\n * Safe for element IDs and server-side lookups.\n *\n * Extracted from CLCTR\n *\n * Copyright (c) Eric Elliott 2012\n * MIT License\n */\nvar c = 0;\nvar blockSize = 4;\nvar base = 36;\nvar discreteValues = Math.pow(base, blockSize);\n\nvar pad = function pad(num, size) {\n  var s = \"000000000\" + num;\n  return s.substr(s.length - size);\n};\n\nvar randomBlock = function randomBlock() {\n  return pad((Math.random() * discreteValues << 0).toString(base), blockSize);\n};\n\nvar safeCounter = () => {\n  c = c < discreteValues ? c : 0;\n  c++; // this is not subliminal\n\n  return c - 1;\n};\n\nvar api = function cuid() {\n  // Starting with a lowercase letter makes\n  // it HTML element ID friendly.\n  // hard-coded allows for sequential access\n  var letter = 'c'; // timestamp\n  // warning: this exposes the exact date and time\n  // that the uid was created.\n\n  var timestamp = new Date().getTime().toString(base); // Prevent same-machine collisions.\n\n  var counter; // A few chars to generate distinct ids for different\n  // clients (so different computers are far less\n  // likely to generate the same id)\n\n  var fingerprint = api.fingerprint(); // Grab some more chars from Math.random()\n\n  var random = randomBlock() + randomBlock();\n  counter = pad(safeCounter().toString(base), blockSize);\n  return letter + timestamp + counter + fingerprint + random;\n};\n\nexports.api = api;\n\napi.slug = function slug() {\n  var date = new Date().getTime().toString(36);\n  var counter;\n  var print = api.fingerprint().slice(0, 1) + api.fingerprint().slice(-1);\n  var random = randomBlock().slice(-2);\n  counter = safeCounter().toString(36).slice(-4);\n  return date.slice(-2) + counter + print + random;\n};\n\napi.globalCount = function globalCount() {\n  // We want to cache the results of this\n  var cache = function calc() {\n    var count = 0;\n\n    for (var i in window) {\n      // eslint-disable-line no-unused-vars, guard-for-in\n      count++;\n    }\n\n    return count;\n  }();\n\n  api.globalCount = () => cache;\n\n  return cache;\n};\n\napi.fingerprint = function browserPrint() {\n  return pad((navigator.mimeTypes.length + navigator.userAgent.length).toString(36) + api.globalCount().toString(36), 4);\n};\n\nvar _default = api;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.get = get;\nObject.defineProperty(exports, \"xhr\", {\n  enumerable: true,\n  get: function get() {\n    return _xhr.default;\n  }\n});\nObject.defineProperty(exports, \"sendBeacon\", {\n  enumerable: true,\n  get: function get() {\n    return _sendBeacon.default;\n  }\n});\nObject.defineProperty(exports, \"image\", {\n  enumerable: true,\n  get: function get() {\n    return _image.default;\n  }\n});\nexports.default = void 0;\n\nvar _xhr = _interopRequireDefault(require(\"./xhr\"));\n\nvar _sendBeacon = _interopRequireDefault(require(\"./send-beacon\"));\n\nvar _image = _interopRequireDefault(require(\"./image\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction get(name) {\n  return this.mock || this[name];\n}\n\nvar _default = {\n  xhr: _xhr.default,\n  sendBeacon: _sendBeacon.default,\n  image: _image.default,\n  get\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.xhr = xhr;\nexports.default = void 0;\n\nfunction xhr() {\n  var xhr = new window.XMLHttpRequest();\n  return {\n    name: 'xhr',\n    send: function send(url, data) {\n      xhr.open('POST', url, true);\n      xhr.withCredentials = true;\n      xhr.setRequestHeader('Content-type', 'application/json');\n      xhr.send(data);\n    },\n    complete: function complete(callback) {\n      xhr.onerror = function () {\n        callback(this);\n      };\n\n      xhr.onload = function () {\n        if (xhr.status >= 200 && xhr.status < 300) {\n          callback();\n        } else {\n          callback('Incorrect response: ' + xhr.status);\n        }\n      };\n    }\n  };\n}\n\nvar _default = xhr;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.sendBeacon = sendBeacon;\nexports.default = void 0;\n\nfunction sendBeacon() {\n  var resolver;\n  var rejecter;\n  var p = new Promise((resolve, reject) => {\n    resolver = resolve;\n    rejecter = reject;\n  });\n  return {\n    name: 'sendBeacon',\n    send: function send(url, data) {\n      if (navigator.sendBeacon(url, data)) {\n        resolver();\n      } else {\n        rejecter(new Error('Failed to send beacon event: ' + data.toString()));\n      }\n    },\n    complete: function complete(callback) {\n      if (callback) {\n        p.then(callback, callback);\n      }\n    }\n  };\n}\n\nvar _default = sendBeacon;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.image = image;\nexports.default = void 0;\n\nvar _utils = _interopRequireDefault(require(\"../../utils\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction image() {\n  var image = new Image(1, 1);\n  return {\n    name: 'image',\n    send: function send(url, data) {\n      url = url.replace('https://spoor-api.ft.com/ingest', 'https://spoor-api.ft.com/px.gif');\n      image.src = url + (url.indexOf('?') > -1 ? '&' : '?') + 'data=' + _utils.default.encode(data);\n    },\n    complete: function complete(callback) {\n      if (image.addEventListener) {\n        image.addEventListener('error', callback);\n        image.addEventListener('load', () => callback());\n      } else {\n        // it's IE!\n        image.attachEvent('onerror', callback);\n        image.attachEvent('onload', () => callback());\n      }\n    }\n  };\n}\n\nvar _default = image;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.event = event;\nexports.default = void 0;\n\nvar _core = _interopRequireDefault(require(\"../core\"));\n\nvar _utils = _interopRequireDefault(require(\"../utils\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Default properties for events.\n *\n * @type {Object}\n * @return {Object} - Default configuration for events\n */\nvar defaultEventConfig = function defaultEventConfig() {\n  return {\n    category: 'event',\n    action: 'generic',\n    context: {}\n  };\n};\n/**\n * Track an event.\n *\n * @param {Event} trackingEvent - The event, which could the following properties in its 'detail' key:\n *   [category] - The category, for example: video\n *   [action] - The action performed, for example: play\n *   [component_id] - Optional. The ID for the component instance.\n *\n * @param {Function} callback - Optional, Callback function. Called when request completed.\n * @return {undefined}\n */\n\n\nfunction event(trackingEvent, callback) {\n  if (_utils.default.is(trackingEvent.detail.category) || _utils.default.is(trackingEvent.detail.action)) {\n    var noCategoryActionVals = 'Missing category or action values';\n\n    _utils.default.broadcast('oErrors', 'log', {\n      error: noCategoryActionVals,\n      info: {\n        module: 'o-tracking'\n      }\n    });\n\n    throw noCategoryActionVals;\n  }\n\n  var config = _utils.default.merge(defaultEventConfig(), {\n    category: trackingEvent.detail.category,\n    action: trackingEvent.detail.action,\n    context: trackingEvent.detail\n  });\n\n  delete config.context.category;\n  delete config.context.action;\n  var origamiElement = getOrigamiEventTarget(trackingEvent);\n\n  if (origamiElement) {\n    config.context.component_name = origamiElement.getAttribute('data-o-component');\n    config.context.component_id = config.context.component_id || getComponentId(origamiElement);\n  }\n\n  _core.default.track(config, callback);\n}\n/**\n * Helper function that gets the target of an event if it's an Origami component\n * @param  {Event} event - The event triggered.\n * @return {HTMLElement|undefined} - Returns the HTML element if an Origami component, else undefined.\n */\n\n\nfunction getOrigamiEventTarget(event) {\n  // IE backwards compatibility (get the actual target). If not IE, uses\n  // `event.target`\n  var element = event.target || event.srcElement;\n\n  if (element && element.getAttribute('data-o-component')) {\n    return element;\n  } else {}\n}\n/**\n * Helper function that generates a component id based on its xpath\n *\n * @param {HTMLElement} element - The HTML Element to gen an ID for.\n *\n * @return {string} hash\n */\n\n\nfunction getComponentId(element) {\n  var path = _getElementPath(element);\n\n  if (typeof path === 'undefined') {\n    return;\n  } // Select the source element (first item in the ordered sequence `path`)\n\n\n  var srcElement = path[0]; // Because, you could have two identical elements in the DOM as siblings,\n  // we need to determine the 'sibling index': the order they're sitting within a DOM node.\n  // Although in reality this is unlikely to always be the same, it's just a\n  // best guess - unless child elements are always appended to an element rather than added as the first child.\n\n  var siblingIndex = function getSiblingIndex(element) {\n    var srcParent = element.parentElement;\n\n    if (srcParent) {\n      for (var i = 0; i < srcParent.childNodes.length; i++) {\n        if (srcParent.childNodes[i] === srcElement) {\n          return i;\n        }\n      }\n\n      return -1;\n    } else {\n      return 0;\n    }\n  }(srcElement); // Generate a normalised string (normalising browser quirks) from the sequence of elements\n\n\n  var normalisedStringPath = path.reduceRight(function (builder, el) {\n    if (!el.nodeName) {\n      return builder + ' - ' + el.constructor.name + '\\n';\n    }\n\n    var nodeName = el.nodeName.toLowerCase(); // In some browsers, document is prepended with a '#'\n\n    if (nodeName.indexOf('#') === 0) {\n      return builder + '<' + nodeName + '>';\n    } // Replace this stuff with stuff that makes each node unique - without including styling detail (as this may change depending on animation state etc, position)\n\n\n    return builder + '<' + nodeName + ' id=\"' + (el.id || '') + '\">';\n  }, ''); // Append a sibling index to the string and use some simple, off the shelf string hashing algorithm.\n\n  return _generateHash(normalisedStringPath + '_siblingIndex=' + siblingIndex);\n}\n/**\n * Gets the xpath for an element\n *\n * @param  {HTMLElement} element - The element to get a path for.\n *\n * @private\n *\n * @return {array} The xpath\n */\n\n\nfunction _getElementPath(element) {\n  var path = [];\n\n  while (element) {\n    path.push(element);\n    element = element.parentElement;\n  }\n\n  return path;\n}\n/**\n * JS Implementation of MurmurHash2\n *\n * @author <a href=\"mailto:gary.court@gmail.com\">Gary Court</a>\n * @see http://github.com/garycourt/murmurhash-js\n * @author <a href=\"mailto:aappleby@gmail.com\">Austin Appleby</a>\n * @see http://sites.google.com/site/murmurhash/\n * Copyright (c) 2011 Gary Court\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * @param {string} str  - The string to hash, ASCII only.\n *\n * @return {number} 32-bit positive integer hash\n *\n * @private\n */\n\n\nfunction _generateHash(str) {\n  var l = str.length;\n  var h = 1 ^ l;\n  var i = 0;\n  var k;\n\n  while (l >= 4) {\n    k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n    k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n    k ^= k >>> 24;\n    k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n    h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16) ^ k;\n    l -= 4;\n    ++i;\n  }\n\n  switch (l) {\n    case 3:\n      h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n      break;\n\n    case 2:\n      h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n      break;\n\n    case 1:\n      h ^= str.charCodeAt(i) & 0xff;\n      h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n      break;\n\n    default:\n      break;\n  }\n\n  h ^= h >>> 13;\n  h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n  h ^= h >>> 15;\n  return h >>> 0;\n}\n\nvar init = function init() {\n  _utils.default.addEvent(window, 'oTracking.event', event);\n};\n\nevent.init = init;\nvar _default = event;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.page = page;\nexports.default = void 0;\n\nvar _core = _interopRequireDefault(require(\"../core\"));\n\nvar _utils = _interopRequireDefault(require(\"../utils\"));\n\nvar _settings = _interopRequireDefault(require(\"../core/settings\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_settings.default.set('page_viewed', false);\n/**\n * Default properties for page tracking requests.\n *\n * @return {Object} - The default properties for pages.\n */\n\n\nvar defaultPageConfig = function defaultPageConfig() {\n  return {\n    category: 'page',\n    action: 'view',\n    context: {\n      url: document.URL,\n      referrer: document.referrer\n    },\n    async: true // Send this event asyncronously - as sync doesn't work in FF, as it doesn't send cookies. https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#withCredentials\n\n  };\n};\n/**\n * Make the page tracking request.\n *\n * @param {Object} config - Configuration object. If omitted, will use the defaults.\n * @param {Function} callback - Callback function. Called when request completed.\n * @return {undefined}\n */\n\n\nfunction page(config, callback) {\n  config = _utils.default.merge(defaultPageConfig(), {\n    context: config\n  }); // New PageID for a new Page... Unless... It's the first pageview, and some events may have been sent before this.\n\n  if (_settings.default.get('page_viewed')) {\n    _core.default.setRootID();\n  }\n\n  _core.default.track(config, callback); // Alert internally that a new page has been tracked - for single page apps for example.\n\n\n  _settings.default.set('page_viewed', true);\n\n  _utils.default.triggerPage();\n}\n/**\n * Listener for pages.\n *\n * @param {CustomEvent} e - The CustomEvent\n * @private\n * @return {undefined}\n */\n\n\nfunction listener(e) {\n  page(e.detail);\n}\n\nvar init = function init() {\n  _utils.default.addEvent(window, 'oTracking.page', listener);\n};\n\npage.init = init;\nvar _default = page;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.init = exports.default = void 0;\n\nvar _ftdomdelegate = _interopRequireDefault(require(\"ftdomdelegate\"));\n\nvar _queue = _interopRequireDefault(require(\"../core/queue\"));\n\nvar _core = _interopRequireDefault(require(\"../core\"));\n\nvar _utils = _interopRequireDefault(require(\"../utils\"));\n\nvar _settings = _interopRequireDefault(require(\"../core/settings\"));\n\nvar _getTrace = _interopRequireDefault(require(\"../../libs/get-trace\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar internalQueue;\nvar eventPropertiesToCollect = [\"ctrlKey\", \"altKey\", \"shiftKey\", \"metaKey\"]; // Trigger the event tracking\n\nvar track = eventData => {\n  var firstDomPathToken = eventData.context.domPathTokens[0];\n  var href = firstDomPathToken.href || null;\n  var oTrackingSkipQueueAttr = firstDomPathToken['data-o-tracking-skip-queue'];\n  var skipQueue = oTrackingSkipQueueAttr && oTrackingSkipQueueAttr.toLowerCase() === 'true' || false;\n  var isInternal = href && href.indexOf(window.document.location.hostname) > -1;\n\n  if (isInternal && !skipQueue) {\n    eventData.context.source_id = _core.default.getRootID(); // Queue the event and send it on the next page load\n\n    internalQueue.add(eventData).save();\n  } else {\n    // Send now, before leaving this page\n    eventData.async = false;\n\n    _core.default.track(eventData);\n  }\n}; // Get properties for the event (as opposed to properties of the clicked element)\n// Available properties include mouse x- and y co-ordinates, for example.\n\n\nvar getEventProperties = event => {\n  var eventProperties = eventPropertiesToCollect.reduce((returnObject, property) => {\n    try {\n      if (event[property]) {\n        returnObject[property] = _utils.default.sanitise(event[property]);\n      }\n    } catch (e) {\n      console.log(e);\n    }\n\n    return returnObject;\n  }, {});\n  return eventProperties;\n}; // Controller for handling click events\n\n\nvar handleClickEvent = eventData => (clickEvent, clickElement) => {\n  //we don't want to track clicks to anonymous services like securedrop\n  if (clickElement.getAttribute(\"data-o-tracking-do-not-track\") === \"true\") {\n    return;\n  }\n\n  var context = getEventProperties(clickEvent);\n  var {\n    trace,\n    customContext\n  } = (0, _getTrace.default)(clickElement);\n  context.domPathTokens = trace;\n  context.url = window.document.location.href || null;\n\n  _utils.default.assignIfUndefined(customContext, context);\n\n  eventData.context = context; // Merge the event data into the \"parent\" config data\n\n  var config = _utils.default.merge(_settings.default.get('config'), eventData);\n\n  track(config);\n};\n/**\n * If there are any requests queued, attempts to send the next one\n * Otherwise, does nothing\n * @return {undefined}\n */\n\n/*eslint-disable no-unused-vars*/\n\n\nvar runQueue = _ => {\n  var next = _ => {\n    runQueue();\n  };\n\n  var nextLink = internalQueue.shift();\n\n  if (nextLink) {\n    _core.default.track(nextLink, next);\n  }\n};\n/*eslint-enable no-unused-vars*/\n\n/**\n * Listen for click events.\n *\n * @alias click#init\n * @param {String} category - The event category for clicks.\n * @param {String} elementsToTrack - A query selector string to select elements to track links on {@link https://github.com/ftlabs/ftdomdelegate#selector-string}.\n * @return {undefined}\n */\n\n\nvar init = (category, elementsToTrack) => {\n  elementsToTrack = elementsToTrack || 'a, button, input, [role=\"button\"]'; // See https://github.com/ftlabs/ftdomdelegate#selector-string\n  // Note: `context` is the term o-tracking uses for the data that is sent to spoor\n\n  var eventData = {\n    action: 'click',\n    category: category || 'o-tracking'\n  }; // Activate the click event listener\n\n  var delegate = new _ftdomdelegate.default(document.body);\n  delegate.on('click', elementsToTrack, handleClickEvent(eventData), true); // Track any queued events\n\n  internalQueue = new _queue.default('clicks');\n  runQueue(); // Listen for page requests. If this is a single page app, we can send link requests now.\n\n  _utils.default.onPage(runQueue);\n};\n\nexports.init = init;\nvar _default = {\n  init\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.init = exports.default = void 0;\n\nvar _core = _interopRequireDefault(require(\"../core\"));\n\nvar _getTrace = _interopRequireDefault(require(\"../../libs/get-trace\"));\n\nvar _utils = _interopRequireDefault(require(\"../utils\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TRACKING_ATTRIBUTES = ['componentContentId', 'type', 'subtype', 'component'];\n\nvar decorateEventData = (eventData, viewedEl, opts) => {\n  var {\n    trace,\n    customContext\n  } = (0, _getTrace.default)(viewedEl);\n  var context;\n\n  if (opts.getContextData) {\n    if (typeof opts.getContextData !== 'function') {\n      throw new Error('opts.getContextData is not a function');\n    }\n\n    var dataBeforeWhitelist = opts.getContextData(viewedEl);\n\n    if (typeof dataBeforeWhitelist !== 'object') {\n      throw new Error('opts.getContextData function should return {Object}');\n    }\n\n    context = _utils.default.whitelistProps(dataBeforeWhitelist, TRACKING_ATTRIBUTES);\n  } else {\n    context = {};\n  }\n\n  context.domPathTokens = trace;\n  context.url = window.document.location.href || null;\n\n  _utils.default.assignIfUndefined(customContext, context);\n\n  eventData.context = context;\n};\n/**\n * Listen for view events.\n *\n * @alias view#init\n * @param {Object} opts - To set custom category[String], selector[String], getContextData[Function]\n * @return {undefined}\n */\n\n\nvar init = function init() {\n  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n  if (!window.IntersectionObserver) {\n    console.warn('o-tracking: Unable to track component view events as \"window.IntersectionObserver\" is not supported.');\n    return;\n  }\n\n  var selector = opts.selector || '[data-o-tracking-view]';\n  var elementsToTrack = [...document.querySelectorAll(selector)];\n\n  if (!elementsToTrack.length) {\n    return;\n  }\n\n  function onChange(changes) {\n    changes.forEach(change => {\n      if (change.isIntersecting || change.intersectionRatio > 0) {\n        var eventData = {\n          action: opts.action || 'view',\n          category: opts.category || 'component'\n        };\n        var viewedEl = change.target;\n        decorateEventData(eventData, viewedEl, opts);\n\n        _core.default.track(eventData);\n\n        observer.unobserve(viewedEl);\n      }\n    });\n  }\n\n  var observer = new IntersectionObserver(onChange, {\n    threshold: [1.0]\n  });\n  elementsToTrack.forEach(el => observer.observe(el));\n};\n\nexports.init = init;\nvar _default = {\n  init\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _stream = _interopRequireDefault(require(\"./stream.js\"));\n\nvar _count = _interopRequireDefault(require(\"./count.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nclass Comments {\n  constructor(rootEl, opts) {\n    this.options = Object.assign({}, {}, opts || Comments.getDataAttributes(rootEl));\n    var isCount = rootEl.getAttribute('data-o-comments-count') === 'true';\n\n    if (!this.options.articleId) {\n      console.error('Missing required configuration option: `articleId`. Documentation on how to construct an instance of Comments is at https://registry.origami.ft.com/components/o-comments@7.7.3/readme#constructing-an-o-comments');\n    }\n\n    if (!this.options.articleUrl) {\n      console.error('Missing required configuration option: `articleUrl`. Documentation on how to construct an instance of Comments is at https://registry.origami.ft.com/components/o-comments@7.7.3/readme#constructing-an-o-comments');\n    }\n\n    if (!this.options.title) {\n      console.error('Missing required configuration option: `title`. Documentation on how to construct an instance of Comments is at https://registry.origami.ft.com/components/o-comments@7.7.3/readme#constructing-an-o-comments');\n    }\n\n    if (isCount) {\n      var count = new _count.default(rootEl, this.options);\n      count.renderCount();\n      return count;\n    } else {\n      var stream = new _stream.default(rootEl, this.options);\n      stream.init();\n      return stream;\n    }\n  }\n\n  static getCount(id) {\n    return _count.default.fetchCount(id);\n  }\n  /**\n   * Get the data attributes from the element. If the component is being set up\n   * declaratively, this method is used to extract the data attributes from the DOM.\n   *\n   * @param {HTMLElement} rootEl - The component element in the DOM\n   * @returns {Object} - Data attributes as an object\n   */\n\n\n  static getDataAttributes(rootEl) {\n    if (!(rootEl instanceof HTMLElement)) {\n      return {};\n    }\n\n    return Object.keys(rootEl.dataset).reduce((options, key) => {\n      // Ignore data-o-component\n      if (key === 'oComponent') {\n        return options;\n      } // Build a concise key and get the option value\n\n\n      var shortKey = key.replace(/^oComments(\\w)(\\w+)$/, (m, m1, m2) => m1.toLowerCase() + m2);\n      var value = rootEl.dataset[key]; // Try parsing the value as JSON, otherwise just set it as a string\n\n      try {\n        options[shortKey] = JSON.parse(value.replace(/\\'/g, '\"'));\n      } catch (error) {\n        options[shortKey] = value;\n      }\n\n      return options;\n    }, {});\n  }\n  /**\n   * Initialise the component.\n   *\n   * @param {(HTMLElement|String)} rootEl - The root element to intialise the component in, or a CSS selector for the root element\n   * @param {Object} [opts={}] - An options object for configuring the component\n   * @returns {(Comments|Array<Comments>)} - Comments instance(s)\n   */\n\n\n  static init(rootEl, opts) {\n    if (!rootEl) {\n      rootEl = document.body;\n    }\n\n    if (!(rootEl instanceof HTMLElement)) {\n      rootEl = document.querySelector(rootEl);\n    }\n\n    if (rootEl instanceof HTMLElement && rootEl.matches('[data-o-component=o-comments]')) {\n      return new Comments(rootEl, opts);\n    }\n\n    return Array.from(rootEl.querySelectorAll('[data-o-component=\"o-comments\"]'), rootEl => new Comments(rootEl, opts));\n  }\n\n}\n\nvar _default = Comments;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar events = _interopRequireWildcard(require(\"./utils/events.js\"));\n\nvar displayName = _interopRequireWildcard(require(\"./utils/display-name.js\"));\n\nvar auth = _interopRequireWildcard(require(\"./utils/auth.js\"));\n\nvar _purgeJwtCache = _interopRequireDefault(require(\"./utils/purge-jwt-cache.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nclass Stream {\n  /**\n   * Class constructor.\n   *\n   * @param {HTMLElement} [streamEl] - The component element in the DOM\n   * @param {Object} [opts={}] - An options object for configuring the component\n   */\n  constructor(streamEl) {\n    var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.streamEl = streamEl || document;\n    this.options = opts;\n    this.eventSeenTimes = {};\n    this.useStagingEnvironment = Boolean(opts.useStagingEnvironment);\n  }\n\n  init() {\n    var renderAndAuthenticate = displayName => {\n      return Promise.all([this.renderComments(), this.authenticateUser(displayName)]).then(() => {\n        this.login();\n      });\n    };\n\n    return displayName.validation(this.options.displayName).then(displayName => renderAndAuthenticate(displayName)).catch(() => renderAndAuthenticate());\n  }\n\n  login() {\n    if (this.authenticationToken) {\n      this.embed.login(this.authenticationToken);\n\n      if (this.displayName) {\n        this.renderSignedInMessage();\n      }\n    }\n  }\n\n  authenticateUser(displayName) {\n    var fetchOptions = {\n      useStagingEnvironment: this.useStagingEnvironment\n    };\n\n    if (displayName) {\n      fetchOptions.displayName = displayName;\n    }\n\n    return auth.fetchJsonWebToken(fetchOptions).then(response => {\n      this.displayName = response.displayName;\n\n      if (response.token) {\n        this.authenticationToken = response.token;\n      } else {\n        this.userHasValidSession = response.userHasValidSession;\n      }\n    }).catch(() => {\n      return false;\n    });\n  }\n\n  renderComments() {\n    return new Promise(resolve => {\n      try {\n        /*global Coral*/\n        var scriptElement = document.createElement('script');\n        scriptElement.src = this.useStagingEnvironment ? 'https://ft.staging.coral.coralproject.net/assets/js/embed.js' : 'https://ft.coral.coralproject.net/assets/js/embed.js';\n        var rootUrl = this.useStagingEnvironment ? 'https://ft.staging.coral.coralproject.net' : 'https://ft.coral.coralproject.net';\n\n        scriptElement.onload = () => {\n          this.embed = Coral.createStreamEmbed({\n            id: this.streamEl.id,\n            storyURL: this.options.articleUrl,\n            storyID: this.options.articleId,\n            rootURL: rootUrl,\n            autoRender: true,\n            events: _events => {\n              _events.onAny((name, data) => {\n                this.publishEvent({\n                  name,\n                  data\n                });\n              });\n            }\n          });\n          resolve();\n        };\n\n        this.streamEl.parentNode.appendChild(scriptElement);\n\n        if (this.useStagingEnvironment) {\n          var stagingWarning = document.createElement('div');\n          stagingWarning.innerHTML = \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<div class=\\\"o-comments__staging-message-container\\\">\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<div class=\\\"o-comments__staging-message-content\\\">\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<p class=\\\"o-comments__staging-message\\\">You are on the staging environment for Comments</p>\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t</div>\";\n          this.streamEl.parentNode.insertBefore(stagingWarning, this.streamEl);\n        }\n\n        document.dispatchEvent(new Event('oCommentsReady'));\n      } catch (error) {\n        resolve();\n      }\n    });\n  }\n\n  displayNamePrompt() {\n    var {\n      purgeCacheAfterCompletion = false\n    } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var overlay = displayName.prompt();\n\n    var onOverlayReady = event => {\n      var sourceOverlay = event.srcElement;\n      var displayNameForm = sourceOverlay.querySelector('#o-comments-displayname-form');\n\n      if (displayNameForm) {\n        displayNameForm.addEventListener('submit', event => {\n          displayName.promptValidation(event).then(displayName => {\n            overlay.close();\n            this.authenticateUser(displayName).then(() => {\n              this.login();\n            });\n\n            if (purgeCacheAfterCompletion) {\n              (0, _purgeJwtCache.default)();\n            }\n          });\n        });\n      }\n    };\n\n    document.addEventListener('oOverlay.ready', onOverlayReady);\n\n    var onOverlayClosed = () => {\n      overlay.context.removeEventListener('oLayers.close', onOverlayClosed);\n      document.removeEventListener('oOverlay.ready', onOverlayReady);\n      overlay.destroy();\n    };\n\n    overlay.context.addEventListener('oLayers.close', onOverlayClosed);\n  }\n  /**\n   * Emits events that have a valid o-comment event name.\n   *\n   * @param {String} name - The event name\n   * @param {Object} data - The event payload\n   * @returns {void}\n   */\n\n\n  publishEvent(_ref) {\n    var {\n      name,\n      data = {}\n    } = _ref;\n    var {\n      success: {\n        status\n      } = {},\n      error\n    } = data;\n\n    if (name === 'loginPrompt' && this.userHasValidSession) {\n      return this.displayNamePrompt();\n    }\n\n    var mappedEvent = events.coralEventMap.get(name);\n\n    if (mappedEvent) {\n      var now = Number(new Date());\n      var delayInMilliseconds = 100;\n      var eventHasntBeenSeenRecently = !this.eventSeenTimes[mappedEvent.oComments] || now > this.eventSeenTimes[mappedEvent.oComments] + delayInMilliseconds;\n\n      if (eventHasntBeenSeenRecently) {\n        this.eventSeenTimes[mappedEvent.oComments] = now;\n        var oCommentsEventOptions = {\n          bubbles: true\n        };\n\n        if (error) {\n          oCommentsEventOptions.detail = {\n            error\n          };\n        }\n\n        var oCommentsEvent = new CustomEvent(mappedEvent.oComments, oCommentsEventOptions);\n        this.streamEl.dispatchEvent(oCommentsEvent);\n\n        if (mappedEvent.oTracking && !this.options.disableOTracking) {\n          var oTrackingEventOptions = {\n            bubbles: true,\n            detail: {\n              category: 'comment',\n              action: mappedEvent.oTracking,\n              coral: true,\n              isWithheld: status === 'SYSTEM_WITHHELD'\n            }\n          };\n\n          if (error) {\n            oTrackingEventOptions.detail.error = error;\n          }\n\n          var oTrackingEvent = new CustomEvent('oTracking.event', oTrackingEventOptions);\n          document.body.dispatchEvent(oTrackingEvent);\n        }\n      }\n    }\n  }\n\n  renderSignedInMessage() {\n    var editButtonId = \"o-comments-edit-button--\".concat(this.streamEl.id);\n    var signedInMessage = document.createElement('div');\n    signedInMessage.classList.add('o-comments__signed-in-container');\n    signedInMessage.innerHTML = \"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t<p class=\\\"o-comments__signed-in-text\\\">Signed in as\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span class=\\\"o-comments__signed-in-inner-text\\\"></span>\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<button id=\\\"\".concat(editButtonId, \"\\\" class=\\\"o-comments__edit-display-name\\\">Edit</button>\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t</p>\");\n    signedInMessage.querySelector('.o-comments__signed-in-inner-text').innerText = this.displayName;\n    var oldSignedInMessage = this.streamEl.parentNode.querySelector('.o-comments__signed-in-container');\n\n    if (oldSignedInMessage) {\n      oldSignedInMessage.remove();\n    }\n\n    this.streamEl.parentNode.insertBefore(signedInMessage, this.streamEl);\n\n    document.getElementById(editButtonId).onclick = () => {\n      this.displayNamePrompt({\n        purgeCacheAfterCompletion: true\n      });\n    };\n  }\n\n}\n\nvar _default = Stream;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.coralEventMap = void 0;\nvar coralEventMap = new Map([['ready', {\n  oComments: 'oComments.ready',\n  oTracking: 'ready'\n}], ['loginPrompt', {\n  oComments: 'oComments.loginPrompt'\n}], ['createComment.success', {\n  oComments: 'oComments.postComment',\n  oTracking: 'post'\n}], ['createComment.error', {\n  oComments: 'oComments.errorComment',\n  oTracking: 'post-error'\n}], ['createCommentReply.success', {\n  oComments: 'oComments.replyComment',\n  oTracking: 'reply'\n}], ['editComment.success', {\n  oComments: 'oComments.editComment',\n  oTracking: 'edit'\n}], ['createCommentReaction.success', {\n  oComments: 'oComments.likeComment',\n  oTracking: 'like'\n}], ['reportComment.success', {\n  oComments: 'oComments.reportComment',\n  oTracking: 'report'\n}], ['ignoreUser.success', {\n  oComments: 'oComments.ignoreUser',\n  oTracking: 'ignore-user'\n}]]);\nexports.coralEventMap = coralEventMap;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.promptValidation = exports.validation = exports.prompt = void 0;\n\nvar _oOverlay = _interopRequireDefault(require(\"@financial-times/o-overlay\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar form = \"<form id=\\\"o-comments-displayname-form\\\" class=\\\"o-forms o-forms o-comments__displayname-form\\\">\\n\\t\\t\\t<label for=\\\"o-comments-displayname-input\\\" class=\\\"o-forms-field o-comments__displayname-field\\\">\\t\\t\\n\\t\\t\\t\\t<span class=\\\"o-forms-title\\\">Display name</span>\\n\\t\\t\\t</label>\\n\\t\\t\\t<div class=\\\"o-comments__displayname-container\\\">\\n\\t\\t\\t\\t<span class=\\\"o-forms-input o-forms-input--text o-comments__displayname-input\\\">\\n\\t\\t\\t\\t\\t<input id=\\\"o-comments-displayname-input\\\" type=\\\"text\\\" name=\\\"text\\\" value=\\\"\\\" required=\\\"\\\">\\n\\t\\t\\t\\t</span>\\n\\t\\t\\t\\t<button type=\\\"submit\\\" class=\\\"o-comments__displayname-submit\\\">Save</button>\\n\\t\\t\\t</div>\\n\\t\\t\\t<span id=\\\"o-comments-displayname-error\\\" class=\\\"o-forms-input__error o-comments__displayname-error\\\" aria-live=\\\"assertive\\\"></span>\\n\\t</form>\\n</form>\";\n\nvar isUnique = displayName => {\n  var url = \"https://comments-api.ft.com/displayname/isavailable/\".concat(encodeURIComponent(displayName));\n  return fetch(url, {\n    method: 'GET'\n  }).then(response => response.json()).then((_ref) => {\n    var {\n      available\n    } = _ref;\n    return available;\n  });\n};\n\nvar findInvalidCharacters = displayName => {\n  /*\n   * Allowed Characters\n   * The below regex matches any character not in the allowed characters set\n   * All allowed characters are case insensitive\n   * Anything in the range A-Z or 0-9 is allowed\n   * Any of the below special characters are allowed\n   * !#$%'`()*+,-./:;=@[]^_{|}\n   * Spaces are allowed\n   */\n  var matchInvalidCharacters = /[^0-9a-z!#$%'`()*+,\\-.\\/:;=@[\\]\\^_{}\\|\\s]/gi;\n  var matchingCharacters = displayName.match(matchInvalidCharacters);\n  var uniqueMatchingCharacters = matchingCharacters && matchingCharacters.length ? matchingCharacters.filter((character, position) => matchingCharacters.indexOf(character) === position) : [];\n  return uniqueMatchingCharacters.length ? uniqueMatchingCharacters.join('') : false;\n};\n\nvar prompt = () => {\n  var overlay = new _oOverlay.default('displayName', {\n    html: form,\n    class: 'o-comments__displayname-prompt',\n    compact: true,\n    heading: {\n      title: 'Choose a commenting display name'\n    }\n  });\n  overlay.open();\n  return overlay;\n};\n\nexports.prompt = prompt;\n\nvar validation = displayName => {\n  return new Promise((resolve, reject) => {\n    if (!displayName) {\n      return reject(new Error('Empty display name'));\n    }\n\n    var invalidCharacters = findInvalidCharacters(displayName);\n\n    if (invalidCharacters) {\n      return reject(new Error(\"The display name contains the following invalid characters: \".concat(invalidCharacters)));\n    } else {\n      isUnique(displayName).then(isUnique => {\n        if (!isUnique) {\n          return reject(new Error('Unfortunately that display name is already taken'));\n        } else {\n          return resolve(displayName);\n        }\n      }).catch(() => {\n        var apiError = new Error('Sorry, we are unable to update display names. Please try again later.');\n        apiError.name = 'CommentsApiError';\n        return reject(apiError);\n      });\n    }\n  });\n};\n\nexports.validation = validation;\n\nvar promptValidation = event => {\n  event.preventDefault();\n  return new Promise(resolve => {\n    var displayNameForm = event.srcElement;\n    var input = displayNameForm.querySelector('input');\n    var displayName = input.value.trim();\n    var errorMessage = displayNameForm.querySelector('#o-comments-displayname-error');\n    errorMessage.innerText = '';\n    displayNameForm.classList.remove('o-forms-input--invalid');\n    return validation(displayName).then(displayName => resolve(displayName)).catch(error => {\n      errorMessage.innerText = error.message;\n      displayNameForm.classList.add('o-forms-input--invalid');\n\n      if (error.name === 'CommentsApiError') {\n        throw error;\n      }\n    });\n  });\n};\n\nexports.promptValidation = promptValidation;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _overlay = _interopRequireDefault(require(\"./dist/js/overlay.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar constructAll = function constructAll() {\n  _overlay.default.init();\n\n  document.removeEventListener('o.DOMContentLoaded', constructAll);\n};\n\ndocument.addEventListener('o.DOMContentLoaded', constructAll);\nvar _default = _overlay.default;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _ftdomdelegate = _interopRequireDefault(require(\"ftdomdelegate\"));\n\nvar _oViewport = _interopRequireDefault(require(\"@financial-times/o-viewport\"));\n\nvar _oLayers = _interopRequireDefault(require(\"@financial-times/o-layers\"));\n\nvar _utils = _interopRequireDefault(require(\"./utils.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar overlays = {};\n\nvar checkOptions = function checkOptions(opts) {\n  if (opts.trigger && !(opts.trigger instanceof HTMLElement)) {\n    opts.trigger = document.querySelector(opts.trigger);\n  }\n\n  if (opts.heading && (!opts.heading.title || !opts.heading.title.trim())) {\n    throw new Error('\"o-overlay error\": To have a heading, a non-empty title needs to be set');\n  } // Overlays should be modal and layers by default\n\n\n  if (typeof opts.modal === 'undefined') {\n    opts.modal = true;\n  }\n\n  if (typeof opts.layer === 'undefined') {\n    opts.layer = true;\n  }\n\n  if (opts.compact && opts.heading && opts.heading.shaded) {\n    throw new Error('\"o-overlay error\": Compact overlays can\\'t have a shaded header');\n  }\n\n  return opts;\n};\n\nvar getOptionsFromTrigger = function getOptionsFromTrigger(trigger) {\n  var opts = {}; // Get config from data attributes set in the trigger if they haven't been passed via JS\n\n  if (trigger instanceof HTMLElement) {\n    Array.prototype.forEach.call(trigger.attributes, function (attr) {\n      if (attr.name.indexOf('data-o-overlay') === 0) {\n        // Remove the unnecessary part of the string the first time this is run for each attribute\n        var key = attr.name.replace('data-o-overlay-', '');\n        opts = _utils.default.optionsFromKey(key, attr.value, opts);\n      }\n    });\n    opts.trigger = trigger;\n  }\n\n  return opts;\n};\n\nvar triggerClickHandler = function triggerClickHandler(id, ev) {\n  ev.stopPropagation();\n  var overlay = overlays[id];\n\n  if (overlay) {\n    if (overlay.visible === true) {\n      overlay.close();\n    } else {\n      overlay.open();\n    }\n  }\n};\n\nvar isVisible = function isVisible(element) {\n  return Boolean(element.offsetHeight);\n};\n\nvar focusTrap = function focusTrap(event) {\n  var tabKeyCode = 9;\n  var overlayFocusableElements = [].slice.call(this.wrapper.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])')).filter(element => {\n    var elementVisible = isVisible(element); // Inputs for radio and checkboxes are visually hidden,\n    // so check the label visibility of inputs too when determining\n    // whether to trap focus.\n\n    var elementLabelVisible = element.labels && [].slice.call(element.labels).some(l => isVisible(l)); // When tabbing, the checked radio input of a group is focused, not each radio input.\n\n    var elementIsUncheckedRadio = element.type === 'radio' && element.checked !== true;\n    return !element.disabled && !elementIsUncheckedRadio && (elementVisible || elementLabelVisible);\n  });\n\n  if (overlayFocusableElements.length && event.keyCode === tabKeyCode) {\n    var lastElement = overlayFocusableElements[overlayFocusableElements.length - 1]; // Loop focus back to the first element if focus has reached the focusable element\n\n    if (event.target === lastElement) {\n      overlayFocusableElements[0].focus();\n      event.preventDefault();\n    } else if (event.shiftKey && event.target === overlayFocusableElements[0]) {\n      // loop to the bottom when shift+tabbing.\n      lastElement.focus();\n      event.preventDefault();\n    }\n  }\n};\n/**\n * Represents an Overlay.\n */\n\n\nclass Overlay {\n  /**\n   * Construct an overlay.\n   * @constructor\n   * @param {HTMLElement} id - String. A unique identifier for the overlay within the page. (Required)\n   * @param {Object} opts - An options object for configuring the Overlay. This object MUST have either `src` or `html` set. (Required)\n   * @param {String} opts.heading.title - Your overlay's title\n   * @param {Boolean} opts.heading.visuallyhidetitle - If you want to provide a different title style, this option will prevent the title span from being added to the overlay. (In this case the title is only used for aria labelling) Default: false.\n   * @param {Boolean} opts.heading.shaded - Whether to shade the background of the header. Default: to false\n   * @param {Boolean} opts.modal - Whether the overlay should have modal behaviour or not. Setting this as true will add a translucent shadow between the page and the overlay\n   * @param {Boolean} opts.compact - If true, the .o-overlay--compact class will be added to the overlay that reduces heading font-size and paddings in the content.\n   * @param {String} opts.src - Either a url from which HTML to populate the overlay can be loaded, or a querySelector string identifying an element from which the textContent should be extracted.\n   * @param {String} opts.html - String or HTMLElement. Raw HTML (cannot be set declaratively)\n   * @param {String} opts.trigger - querySelector expression or HTMLElement. When there's a trigger set, a click event handler will be added to it that will open or close the overlay accordingly. (cannot be set declaratively)\n   * @param {String} opts.zindex - Value of the CSS z-index property of the overlay. Default set via CSS: '10'\n   * @param {Boolean} opts.preventclosing - Prevents closure of overlay via standard x button or escape key. For use when you are directing the user to somewhere else. Only valid with modal set to true.\n   * @param {Boolean} opts.customclose - If you do not use the heading, but want to provide a close button in your html / src (with a class of o-overlay__close), setting customclose to true will attach o-overlay's close handler function to that button.\n   * @param {String} opts.parentnode - Should be a query selector for a DOM element. If set, the overlay will be appended as a child of this rather than the document body or target. If multiple nodes are matched, it will use the first. If nothing matches this selector, the body will be used.\n   * @param {Boolean} opts.nested - If set to true, the resize, escape, and layer listeners will not be set up. This boolean should be used in conjunction with the parentnode setting to allow an overlay to be positioned within a DOM element rather than overlaid on top of everything. Default: false.\n   * @param {Boolean} opts.nofocus - If set to true, the tabindex will not be set on the wrapper element. Useful in conjunction with the nested and parentnode options. Default: false.\n   * @param {Boolean} opts.fullscreen - If set to true, the overlay will display full screen. This overlay disables scroll on the underlying document and is dismissible with the back button.\n   * @throws {Error} Will throw an error if the `id` parameter is not unique.\n   */\n  constructor(id, opts) {\n    if (overlays[id]) {\n      throw new Error(\"o-overlay with id \\\"\".concat(id, \"\\\" already exists. Creating an overlay twice with the same id may result in unexpected behaviour.\"));\n    }\n\n    _oViewport.default.listenTo('resize');\n\n    this.visible = false;\n    this.id = id;\n\n    try {\n      this.opts = checkOptions(opts);\n    } catch (e) {\n      this.broadcast('log', 'oErrors', {\n        error: e\n      });\n      throw e;\n    }\n\n    if (!this.opts) {\n      var noOptError = new Error('\"o-overlay error\": Required options have not been set');\n      this.broadcast('log', 'oErrors', {\n        error: noOptError\n      });\n      throw noOptError;\n    }\n\n    if (this.opts.trigger) {\n      this.opts.trigger.addEventListener('click', triggerClickHandler.bind(this.opts.trigger, id), false);\n      this.context = _oLayers.default.getLayerContext(this.opts.trigger);\n    } else {\n      if (document.querySelector(this.opts.parentnode)) {\n        this.context = document.querySelector(this.opts.parentnode);\n      } else {\n        this.context = document.body;\n      }\n    }\n\n    this.delegates = {\n      doc: new _ftdomdelegate.default(),\n      wrap: new _ftdomdelegate.default(),\n      context: new _ftdomdelegate.default()\n    }; // Add this overlay to the overlays hashmap\n\n    overlays[id] = this;\n  }\n\n  open() {\n    // Prevent page scroll for open modals or fullscreen overlays.\n    if (this.opts.modal || this.opts.fullscreen) {\n      this.originalOverflow = document.documentElement.style.overflow;\n      document.documentElement.style.overflow = 'hidden';\n    } // A full screen overlay can look like a new page so add to history.\n    // The browser back button can then be used to close a full-screen overlay.\n\n\n    if (window.history.pushState && this.opts.fullscreen) {\n      // Push overlay state to history.\n      window.history.pushState({\n        [\"o-overlay-\".concat(this.id)]: 'fullscreen'\n      }, window.location.href); // When history changes check for the overlay and close it.\n\n      this.popstateHandler = function () {\n        if (window.history.state && window.history.state[\"o-overlay-\".concat(this.id)]) {\n          this.close();\n        }\n      }.bind(this);\n\n      window.addEventListener('popstate', this.popstateHandler);\n    }\n\n    if (this.opts.trigger) {\n      this.opts.trigger.setAttribute('aria-pressed', 'true');\n    }\n\n    if (!this.content) {\n      var overlay = this;\n      this.loadContent(function (html) {\n        overlay.opts.html = html;\n\n        if (!overlay.opts.html) {\n          throw new Error('\"o-overlay error\": Content for the overlay needs to be set via the \"html\" or the \"src\" option.');\n        }\n\n        overlay.render();\n      });\n    } else {\n      this.show();\n    }\n  }\n\n  loadContent(callback) {\n    if (!this.opts.html && this.opts.src) {\n      if (/^(https?\\:\\/)?\\//.test(this.opts.src)) {\n        _utils.default.copyContentFromUrl(this.opts.src, function (html) {\n          callback(html);\n        });\n      } else {\n        _utils.default.copyContentFromElement(document.querySelector(this.opts.src), function (html) {\n          callback(html);\n        });\n      }\n    } else {\n      callback(this.opts.html);\n    }\n  }\n\n  render() {\n    var wrapperEl = document.createElement('div');\n    wrapperEl.className = 'o-overlay';\n    wrapperEl.classList.add('o-overlay--' + this.id.replace(' ', '-')); // Add custom classes to the newly created overlay wrapper.\n\n    if (this.opts.class) {\n      try {\n        wrapperEl.classList.add(...this.opts.class.split(' '));\n      } catch (error) {\n        console.warn(\"Could not add the classes: \".concat(this.opts.class));\n      }\n    }\n\n    if (this.opts.fullscreen) {\n      wrapperEl.classList.add('o-overlay--full-screen');\n    }\n\n    wrapperEl.setAttribute('role', 'dialog');\n\n    if (this.opts.zindex) {\n      wrapperEl.style.zIndex = this.opts.zindex;\n    }\n\n    this.wrapper = wrapperEl;\n\n    if (this.opts.heading) {\n      var heading = document.createElement('header');\n      var headingId = this.opts.heading.title.toLowerCase() // replace non-ascii alphanums with hyphens\n      .replace(/[^a-z0-9-]/g, '-') // replace repeated hyphens with a single hyphen\n      .replace(/[\\s-]+/g, '-');\n      heading.classList.add('o-overlay__heading');\n      heading.setAttribute('id', headingId);\n      wrapperEl.setAttribute('aria-labelledby', headingId);\n\n      if (this.opts.heading.shaded) {\n        heading.classList.add('o-overlay__heading--shaded');\n      }\n\n      if (!this.opts.preventclosing) {\n        var button = document.createElement('button');\n        button.className = 'o-overlay__close';\n        button.setAttribute('aria-label', 'Close');\n        button.setAttribute('title', 'Close');\n\n        if (!this.opts.nofocus) {\n          button.setAttribute('tabindex', '0');\n        }\n\n        heading.appendChild(button);\n      }\n\n      var title = document.createElement('span');\n      title.setAttribute('role', 'heading');\n      title.className = 'o-overlay__title';\n\n      if (!this.opts.heading.visuallyhidetitle) {\n        title.innerHTML = this.opts.heading.title;\n      }\n\n      heading.appendChild(title);\n      wrapperEl.appendChild(heading);\n    }\n\n    if (this.opts.tooltip) {\n      var _button = document.createElement('a');\n\n      _button.className = 'o-overlay__close';\n\n      _button.setAttribute('role', 'button');\n\n      _button.setAttribute('href', '#void');\n\n      _button.setAttribute('aria-label', 'Close');\n\n      _button.setAttribute('title', 'Close');\n\n      if (!this.opts.nofocus) {\n        _button.setAttribute('tabindex', '0');\n      }\n\n      wrapperEl.appendChild(_button);\n      wrapperEl.classList.add('o-overlay--compact');\n    }\n\n    var content = document.createElement('section');\n    content.className = 'o-overlay__content';\n    wrapperEl.appendChild(content);\n    this.content = content;\n\n    if (this.opts.compact) {\n      wrapperEl.classList.add('o-overlay--compact');\n    }\n\n    this.show();\n  }\n\n  _trapFocus() {\n    // Trap the focus inside the overlay so keyboard navigation doesn't escape the overlay\n    document.addEventListener('keydown', focusTrap.bind(this));\n  }\n  /**\n   * Show the overlay\n   *\n   * @fires oOverlay#ready\n   */\n\n\n  show() {\n    if (this.opts.modal) {\n      this.wrapper.classList.add('o-overlay--modal');\n      var shadow = document.createElement('div');\n      shadow.className = 'o-overlay-shadow';\n      this.shadow = shadow;\n\n      if (this.opts.zindex) {\n        shadow.style.zIndex = this.opts.zindex - 1;\n      }\n\n      document.body.appendChild(shadow);\n    }\n\n    this.delegates.doc.root(document.body);\n    this.delegates.wrap.root(this.wrapper);\n    this.delegates.context.root(this.context);\n    this.closeHandler = this.close.bind(this); // If the overlay is nested within a DOM element don't attach the viewport resize listeners.\n\n    if (!this.opts.nested) {\n      this.resizeListenerHandler = this.resizeListener.bind(this);\n      this.delegates.doc.on('oViewport.resize', 'body', this.resizeListenerHandler);\n      this.closeOnEscapePressHandler = this.closeOnEscapePress.bind(this);\n      this.delegates.doc.on('keyup', this.closeOnEscapePressHandler);\n    }\n\n    if (this.opts.layer) {\n      this.closeOnNewLayerHandler = this.closeOnNewLayer.bind(this);\n      this.delegates.context.on('oLayers.new', this.closeOnNewLayerHandler);\n      this.broadcast('new', 'oLayers');\n    }\n\n    if (this.opts.heading || this.opts.tooltip || this.opts.customclose) {\n      this.delegates.wrap.on('click', '.o-overlay__close', this.closeHandler);\n      this.delegates.wrap.on('touchend', '.o-overlay__close', this.closeHandler);\n    }\n\n    this.closeOnExternalClickHandler = this.closeOnExternalClick.bind(this);\n    this.delegates.doc.on('click', 'body', this.closeOnExternalClickHandler);\n    this.delegates.doc.on('touchend', 'body', this.closeOnExternalClickHandler);\n    this.context.appendChild(this.wrapper); // Give the overlay focus\n\n    if (!this.opts.nofocus) {\n      this.wrapper.setAttribute('tabindex', '0');\n      this.wrapper.style.outline = 0;\n    } // Renders content after overlay has been added so css is applied before that\n    // Thay way if an element has autofocus, the window won't scroll to the bottom\n    // in Safari as the overlay is already in position\n\n\n    window.requestAnimationFrame(function () {\n      if (!this.content.innerHTML) {\n        if (typeof this.opts.html === 'string') {\n          this.content.innerHTML = this.opts.html;\n        } else {\n          this.content.appendChild(this.opts.html);\n        }\n      }\n\n      this.width = this.getWidth();\n      this.height = this.getHeight(); // If the overlay is nested within a DOM element don't resize according to the viewport.\n\n      if (!this.opts.nested) {\n        this.realign();\n      }\n\n      this.visible = true;\n      this.wrapper.focus();\n      /**\n       * Ready event\n       *\n       * @event oOverlay#ready\n       * @type {object}\n       * @property {oOverlay} instance - the firing instance\n       */\n\n      this.broadcast('ready', 'oOverlay', {\n        instance: this\n      }); // Add o-tracking integration\n\n      this.broadcast('event', 'oTracking', {\n        category: 'overlay',\n        action: 'show',\n        overlay_id: this.id\n      });\n\n      this._trapFocus();\n    }.bind(this));\n  }\n\n  close() {\n    this.delegates.doc.destroy();\n    this.delegates.wrap.destroy();\n    this.delegates.context.destroy(); // Restore document scroll when modals or fullscreen overlays are closed.\n\n    if (this.opts.modal || this.opts.fullscreen) {\n      document.documentElement.style.overflow = this.originalOverflow;\n    } // Remove fullscreen popstate handler and re-enable document scroll.\n\n\n    if (this.opts.fullscreen) {\n      window.removeEventListener('popstate', this.popstateHandler);\n    } // Remove state from history if fullscreen state is still in history.\n    // E.g.The close button was clicked directly rather than the browser back button.\n\n\n    if (window.history.pushState && window.history.state && window.history.state[\"o-overlay-\".concat(this.id)] === 'fullscreen') {\n      window.history.back();\n    }\n\n    _oViewport.default.stopListeningTo('resize');\n\n    this.broadcast('destroy');\n    this.broadcast('event', 'oTracking', {\n      category: 'overlay',\n      action: 'close',\n      overlay_id: this.id\n    });\n    this.context.removeChild(this.wrapper);\n\n    if (this.opts.modal) {\n      this.shadow.parentNode.removeChild(this.shadow);\n    } // Put focus back on the triggering element\n\n\n    if (this.opts.trigger) {\n      this.opts.trigger.focus();\n      this.opts.trigger.setAttribute('aria-pressed', 'false');\n    }\n\n    document.removeEventListener('keydown', focusTrap);\n    this.visible = false;\n\n    if (this.opts.layer) {\n      this.broadcast('close', 'oLayers');\n    }\n\n    return false;\n  }\n\n  closeOnExternalClick(ev) {\n    if (!this.wrapper.contains(ev.target) && !this.opts.modal && this.opts.trigger && !this.opts.trigger.contains(ev.target)) {\n      this.close();\n    }\n  }\n\n  closeOnEscapePress(ev) {\n    if (!this.opts.preventclosing && ev.keyCode === 27) {\n      this.close();\n    }\n  }\n\n  closeOnNewLayer(ev) {\n    if (!ev.detail || ev.detail.el !== this) {\n      this.close();\n    }\n  }\n\n  resizeListener(ev) {\n    if (!this.wrapper.contains(ev.target)) {\n      this.respondToWindow();\n    }\n  }\n\n  broadcast(eventType, namespace, detail) {\n    namespace = namespace || 'oOverlay';\n    var target = namespace === 'oLayers' ? this.context : this.wrapper || document.body;\n    detail = detail || {};\n\n    if (namespace !== 'oTracking') {\n      detail.el = this;\n    }\n\n    target.dispatchEvent(new CustomEvent(namespace + '.' + eventType, {\n      detail: detail,\n      // Don't bubble above the overlay's layer context otherwise we risk triggering a listener on a parent context\n      bubbles: namespace !== 'oLayers' ? true : false\n    }));\n  }\n\n  realign(dimension, size) {\n    // Realign both height and width according to the window by default.\n    if (!dimension && !size) {\n      this._align('width', _oViewport.default.getSize().width);\n\n      this._align('height', _oViewport.default.getSize().height);\n\n      return;\n    } // For a given dimension realign according to the viewport by default.\n\n\n    if (dimension && !size) {\n      this._align(dimension, _oViewport.default.getSize()['dimension']);\n\n      return;\n    }\n\n    this._align(dimension, size);\n  }\n\n  _align(dimension, size) {\n    if (dimension !== 'width' && dimension !== 'height') {\n      throw new Error(\"Can not realign the overlay for the dimension \\\"\".concat(dimension, \"\\\". \\\"height\\\" or \\\"width\\\" expected.\"));\n    }\n\n    if (isNaN(size)) {\n      throw new Error(\"Can not realign the overlay for the size \".concat(size, \". A number is expected.\"));\n    }\n\n    var edge = dimension === 'width' ? 'left' : 'top'; // Update overlay size for realignment calculation.\n    // We may be realigning because the content within the overlay has changed.\n\n    this.width = this.getWidth();\n    this.height = this.getHeight(); // E.g. viewport dimension <= overlay dimension\n\n    if (size <= this[dimension]) {\n      this.wrapper.classList.add('o-overlay--full-' + dimension);\n      this.wrapper.style[edge] = '0';\n      this.wrapper.style['margin' + _utils.default.capitalise(edge)] = 0;\n\n      if (dimension === 'height') {\n        // Set the exact height that the content of the overlay will have which is the total\n        // height of the overlay minus the heading if there is one. If height = 100%, the\n        // heading is part of that 100%, so some content is truncated.\n        var borderHeight = this.wrapper.offsetHeight - this.wrapper.clientHeight;\n        this.content.style.height = this.wrapper.offsetHeight - (this.opts.heading ? this.wrapper.querySelector('header').offsetHeight : 0) - borderHeight + 'px';\n      }\n    } else {\n      if (dimension === 'height') {\n        // Remove the property and let the overlay extend to its content\n        this.content.style.height = null;\n      }\n\n      this.wrapper.classList.remove('o-overlay--full-' + dimension);\n      this.wrapper.style['margin' + _utils.default.capitalise(edge)] = -(this.wrapper['offset' + _utils.default.capitalise(dimension)] / 2) + 'px'; // Set alignment in JavaScript (not via CSS) after all other styles have been applied\n      // so that browsers compute it properly. If it's applied earlier, when the negative\n      // margin is calculated, the overlay might not fit, so it shrinks and the negative\n      // margin would be incorrect\n\n      this.wrapper.style[edge] = '50%';\n    }\n  }\n\n  respondToWindow() {\n    this.realign();\n  }\n\n  fills(dimension) {\n    return this.wrapper.classList.contains('o-overlay--full-' + dimension);\n  }\n\n  destroy() {\n    if (this.visible === true) {\n      this.close();\n    }\n\n    if (this.opts.trigger) {\n      this.opts.trigger.removeEventListener('click', triggerClickHandler);\n    }\n\n    delete overlays[this.id];\n  }\n\n  getHeight() {\n    var borderHeight = this.wrapper.offsetHeight - this.wrapper.clientHeight;\n    return this.content.scrollHeight + (this.opts.heading ? this.wrapper.querySelector('header').offsetHeight : 0) + borderHeight;\n  }\n\n  getWidth() {\n    var borderWidth = this.wrapper.offsetWidth - this.wrapper.clientWidth;\n    return this.content.scrollWidth + borderWidth;\n  }\n\n  static init(el) {\n    if (!el) {\n      el = document.body;\n    }\n\n    if (!(el instanceof HTMLElement)) {\n      el = document.querySelector(el);\n    }\n\n    var triggers = el.querySelectorAll('.o-overlay-trigger');\n    var overlaysArray = [];\n\n    for (var t = 0; t < triggers.length; t++) {\n      // There can only be one overlay per trigger when set declaratively, so the first trigger found for a given overlay will be the one used to create the overlay\n      if (!overlays[triggers[t].getAttribute('data-o-overlay-id')]) {\n        overlaysArray.push(new Overlay(triggers[t].getAttribute('data-o-overlay-id'), getOptionsFromTrigger(triggers[t])));\n      }\n    }\n\n    return overlaysArray;\n  }\n\n  static destroy() {\n    var overlayIds = Object.keys(overlays);\n    overlayIds.forEach(function (id) {\n      overlays[id].destroy();\n    });\n  }\n\n  static getOverlays() {\n    return overlays;\n  }\n\n}\n\nvar _default = Overlay;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar Utils = _interopRequireWildcard(require(\"@financial-times/o-utils\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar _debug;\n/**\n *\n * @param {string} eventType\n * @param {object} data\n * @param {EventTarget} target\n */\n\n\nfunction broadcast(eventType, data, target) {\n  target = target || document.body;\n\n  if (_debug) {\n    console.log('o-viewport', eventType, data);\n  }\n\n  target.dispatchEvent(new CustomEvent('oViewport.' + eventType, {\n    detail: data,\n    bubbles: true\n  }));\n}\n/**\n* Get the viewport height.\n* @param {boolean} ignoreScrollbars [false] - set to true to discount scrollbar height.\n* @return {number}\n*/\n\n\nfunction getHeight(ignoreScrollbars) {\n  return ignoreScrollbars ? document.documentElement.clientHeight : Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n}\n/**\n* Get the viewport width.\n* @param {boolean} ignoreScrollbars [false] - set to true to discount scrollbar width\n* @return {number}\n*/\n\n\nfunction getWidth(ignoreScrollbars) {\n  return ignoreScrollbars ? document.documentElement.clientWidth : Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n}\n/**\n * Viewport size.\n * @typedef {Object} Size\n * @property {number} height\n * @property {number} width\n */\n\n/**\n* Get the viewport width and height.\n* @param {boolean} ignoreScrollbars [false] - set to true to discount scrollbar width/height.\n* @return {Size}\n*/\n\n\nfunction getSize(ignoreScrollbars) {\n  return {\n    height: getHeight(ignoreScrollbars),\n    width: getWidth(ignoreScrollbars)\n  };\n}\n/**\n * Scroll position.\n * @typedef {Object} ScrollPosition\n * @property {number} height - `document.body.scrollHeight`\n * @property {number} width - `document.body.scrollWidth`\n * @property {number} left - `window.pageXOffset || window.scrollX`\n * @property {number} top - `window.pageYOffset || window.scrollY`\n */\n\n/**\n * @return {ScrollPosition}\n */\n\n\nfunction getScrollPosition() {\n  return {\n    height: document.body.scrollHeight,\n    width: document.body.scrollWidth,\n    left: window.pageXOffset || window.scrollX,\n    top: window.pageYOffset || window.scrollY\n  };\n}\n/**\n * @return {string} - 'portrait' or 'landscape'\n */\n\n\nfunction getOrientation() {\n  var orientation = window.screen.orientation;\n\n  if (orientation) {\n    return typeof orientation === 'string' ? orientation.split('-')[0] : orientation.type.split('-')[0];\n  } else if (window.matchMedia) {\n    return window.matchMedia('(orientation: portrait)').matches ? 'portrait' : 'landscape';\n  } else {\n    return getHeight() >= getWidth() ? 'portrait' : 'landscape';\n  }\n}\n/**\n * @return {boolean} - true if the viewport is visible\n */\n\n\nfunction getVisibility() {\n  return document.hidden;\n}\n\nvar _default = {\n  debug: function debug() {\n    _debug = true;\n  },\n  broadcast,\n  getWidth,\n  getHeight,\n  getSize,\n  getScrollPosition,\n  getVisibility,\n  getOrientation,\n  debounce: Utils.debounce,\n  throttle: Utils.throttle\n};\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.getLayerContext = void 0;\n\nvar getLayerContext = function getLayerContext(el) {\n  return el.closest('.o-layers__context') || document.body;\n};\n\nexports.getLayerContext = getLayerContext;\nvar _default = {\n  getLayerContext\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _default = {\n  unCapitalise: function unCapitalise(str) {\n    return str.charAt(0).toLowerCase() + str.substr(1);\n  },\n  capitalise: function capitalise(str) {\n    return str.charAt(0).toUpperCase() + str.substr(1);\n  },\n  copyContentFromElement: function copyContentFromElement(content, callback) {\n    var html = content.nodeName === 'SCRIPT' ? content.innerHTML : content.outerHTML;\n    callback(html);\n  },\n  copyContentFromUrl: function copyContentFromUrl(url, callback) {\n    var xhr = new XMLHttpRequest();\n    xhr.open('GET', url, true);\n\n    xhr.onload = function () {\n      // eslint complains of e not being used\n      if (xhr.readyState === 4) {\n        if (xhr.status === 200) {\n          callback(xhr.responseText);\n        } else {\n          callback('Content failed to load correctly');\n        }\n      }\n    };\n\n    xhr.onerror = function (e) {\n      throw new Error('\"o-overlay error\": Fetching content from ' + url + ' failed with errror ' + e);\n    };\n\n    xhr.send(null);\n  },\n  optionsFromKey: function optionsFromKey(key, value, opts) {\n    var dashIndex = key.indexOf('-');\n\n    if (dashIndex === -1) {\n      try {\n        // If it's a JSON, a boolean or a number, we want it stored like that, and not as a string\n        // We also replace all ' with \" so JSON strings are parsed correctly\n        opts[key] = JSON.parse(value.replace(/\\'/g, '\"'));\n      } catch (e) {\n        opts[key] = value;\n      }\n    } else {\n      // Key that holds an object instead of a value\n      var subKey = key.substr(0, dashIndex); // If sub-object doesn't exist already, create it\n\n      if (!opts[subKey]) {\n        opts[subKey] = {};\n      } // Run function again starting with the rest of the key\n\n\n      opts[subKey] = this.optionsFromKey(key.substr(dashIndex + 1), value, opts[subKey]);\n    }\n\n    return opts;\n  },\n  // Code based on this article to get coordinates independent of scroll: http://javascript.info/tutorial/coordinates\n  getOffsetRect: function getOffsetRect(e) {\n    var eClientRect = e.getBoundingClientRect();\n    var body = document.body;\n    var docElem = document.documentElement; // docElem.scrollTop/Left for IE, use body as a last resort\n\n    var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\n    var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft; // IE sometimes shifts the upper left corner\n\n    var clientTop = docElem.clientTop || body.clientTop || 0;\n    var clientLeft = docElem.clientLeft || body.clientLeft || 0;\n    return {\n      // IE8 doesn't support getBoundingClientRect().height and .weight\n      width: eClientRect.width || eClientRect.right - eClientRect.left,\n      height: eClientRect.height || eClientRect.bottom - eClientRect.top,\n      top: eClientRect.top + scrollTop - clientTop,\n      left: eClientRect.left + scrollLeft - clientLeft\n    };\n  }\n};\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.fetchJsonWebToken = fetchJsonWebToken;\n\nfunction fetchJsonWebToken() {\n  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var url = new URL('https://comments-api.ft.com/user/auth/');\n\n  if (options.displayName) {\n    url.searchParams.append('displayName', options.displayName);\n  }\n\n  if (options.useStagingEnvironment) {\n    url.searchParams.append('staging', '1');\n  }\n\n  return fetch(url, {\n    credentials: 'include'\n  }).then(response => {\n    // user is signed in and has a pseudonym\n    if (response.ok) {\n      return response.json();\n    } else {\n      // user is signed in but has no display name\n      if (response.status === 409) {\n        return {\n          userHasValidSession: true\n        };\n      } // user is not signed in or session token is invalid\n      // or error in comments api\n\n\n      return {\n        userHasValidSession: false\n      };\n    }\n  });\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = purgeJwtCache;\n\nfunction purgeJwtCache() {\n  var url = \"https://comments-api.ft.com/user/auth\";\n  return fetch(url, {\n    method: 'PURGE',\n    credentials: 'include'\n  });\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nclass Count {\n  /**\n   * Class constructor.\n   *\n   * @param {HTMLElement} [countEl] - The component element in the DOM\n   * @param {Object} [opts={}] - An options object for configuring the component\n   */\n  constructor(countEl) {\n    var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.countEl = countEl;\n    this.articleId = opts.articleId;\n    this.useStagingEnvironment = Boolean(opts.useStagingEnvironment);\n  }\n  /**\n   * Render a comment count instance.\n   *\n   * @access private\n   * @returns {Promise<void>} A promise that resolves when the count has been updated\n   */\n\n\n  renderCount() {\n    if (this.countEl && !(this.countEl instanceof HTMLElement)) {\n      this.countEl = document.querySelector(this.countEl);\n    }\n\n    if (!this.countEl) {\n      throw new Error('Element must be a HTMLElement');\n    }\n\n    return Count.fetchCount(this.articleId, this.useStagingEnvironment).then(count => {\n      this.countEl.textContent = count;\n      var countLabel = Count.getCountLabel(count);\n      this.countEl.setAttribute('aria-label', countLabel);\n    });\n  }\n  /**\n   * Get the aria-label for the count element.\n   *\n   * @param {Number} count - The comment count\n   * @returns {String} The string that should be used as the aria-label\n   */\n\n\n  static getCountLabel(count) {\n    if (count === 1) {\n      return 'There is 1 comment, click to go to the comment section.';\n    } else {\n      return \"There are \".concat(count, \" comments, click to go to the comment section.\");\n    }\n  }\n\n  static fetchCount(id, useStaging) {\n    var url = \"https://comments-api.ft.com/story/count/\".concat(id) + (useStaging ? '?staging=1' : '');\n    return fetch(url).then(res => res.json()).then(json => json.commentCount).catch(error => {\n      throw new Error(\"Error with fetching comment count: \".concat(error.message));\n    });\n  }\n\n}\n\nvar _default = Count;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _oToggle = _interopRequireDefault(require(\"@financial-times/o-toggle\"));\n\nvar _layout = _interopRequireDefault(require(\"./layout.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar COLLAPSIBLE_BREAKPOINTS = ['default', 'XS', 'S'];\n\nclass Footer {\n  constructor(footerEl) {\n    if (!footerEl) {\n      footerEl = document.querySelector('[data-o-component=\"o-footer\"]');\n    } else if (typeof footerEl === 'string') {\n      footerEl = document.querySelector(footerEl);\n    }\n\n    this.footerEl = footerEl;\n    (0, _layout.default)(breakpoint => {\n      var shouldCollapse = Footer.shouldCollapse(breakpoint);\n\n      if (shouldCollapse && !this._toggles) {\n        return this.setup();\n      }\n\n      if (!shouldCollapse && this._toggles) {\n        return this.destroy();\n      }\n    });\n    this.footerEl.removeAttribute('data-o-footer--no-js');\n    this.footerEl.setAttribute('data-o-footer--js', '');\n  }\n\n  setup() {\n    this._toggles = [];\n    var toggleEls = this.footerEl.querySelectorAll('[aria-controls]');\n    Array.prototype.forEach.call(toggleEls, toggleEl => {\n      var target = document.getElementById(toggleEl.getAttribute('aria-controls'));\n      toggleEl.setAttribute('role', 'button');\n      toggleEl.setAttribute('tabindex', '0');\n\n      this._toggles.push(new _oToggle.default(toggleEl, {\n        target\n      }));\n    });\n  }\n\n  destroy() {\n    this._toggles.forEach(toggle => toggle.destroy());\n\n    this._toggles = null;\n  }\n\n  static get collapsibleBreakpoints() {\n    return COLLAPSIBLE_BREAKPOINTS;\n  }\n\n  static shouldCollapse(breakpoint) {\n    return COLLAPSIBLE_BREAKPOINTS.indexOf(breakpoint) !== -1;\n  }\n\n  static init(rootEl) {\n    if (!rootEl) {\n      rootEl = document.body;\n    } else if (typeof rootEl === 'string') {\n      rootEl = document.querySelector(rootEl);\n    }\n\n    var footerEl = rootEl.querySelector('[data-o-component=\"o-footer\"]');\n\n    if (footerEl) {\n      return new Footer(footerEl);\n    }\n  }\n\n}\n\nvar _default = Footer;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = init;\n\nvar _oGrid = _interopRequireDefault(require(\"@financial-times/o-grid\"));\n\nvar _oViewport = _interopRequireDefault(require(\"@financial-times/o-viewport\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction init(callback) {\n  _oViewport.default.listenTo('resize');\n\n  var lastBreakpoint = _oGrid.default.getCurrentLayout();\n\n  document.body.addEventListener('oViewport.resize', () => {\n    var breakpoint = _oGrid.default.getCurrentLayout();\n\n    if (breakpoint !== lastBreakpoint) {\n      callback(breakpoint);\n      lastBreakpoint = breakpoint;\n    }\n  });\n  callback(lastBreakpoint);\n}\n\nmodule.exports = exports.default;","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.buildPerfmarkSuffix = buildPerfmarkSuffix;\nexports.broadcast = broadcast;\nexports.on = on;\nexports.off = off;\nexports.once = once;\nexports.perfMark = void 0;\n\n/**\n * Utility methods for o-ads events. Methods defined here are added to the utils object not the utils.event object.\n * @author Origami Advertising, origami.advertising@ft.com\n * @module utils/events\n * @see utils\n */\n// Creates a timestamp in the browser's performance entry buffer\n// for later use\nvar perfMark = name => {\n  /* istanbul ignore next */\n  var performance = window.LUX || window.performance || window.msPerformance || window.webkitPerformance || window.mozPerformance;\n\n  if (performance && performance.mark) {\n    performance.clearMarks(name);\n    performance.mark(name);\n  }\n}; // Creates a suffix for an event's performance mark based on some of the attributes on\n// the event payload which help identify unequivocally the slot that originated the event\n\n\nexports.perfMark = perfMark;\n\nfunction buildPerfmarkSuffix(eventDetailsObj) {\n  var suffix = '';\n\n  if (eventDetailsObj && typeof eventDetailsObj === 'object' && 'pos' in eventDetailsObj && 'name' in eventDetailsObj) {\n    suffix = '__' + [eventDetailsObj.pos, eventDetailsObj.name, eventDetailsObj.size, eventDetailsObj.creativeId].join('__');\n  }\n\n  return suffix;\n}\n/**\n* Broadscasts an o-ads event\n* @param {string} name The name of the event\n* @param {object} data The data to send as event detail\n* @param {HTMLElement} target The element to attach the event listener to\n*/\n\n\nfunction broadcast(eventName, data, target) {\n  /* istanbul ignore next: ignore the final fallback as hard trigger */\n  target = target || document.body || document.documentElement;\n  eventName = \"oAds.\".concat(eventName);\n  var opts = {\n    bubbles: true,\n    cancelable: true,\n    detail: data\n  };\n  var isSlotEvent = typeof data === 'object' && 'pos' in data;\n  var evDetails = isSlotEvent ? {\n    pos: data.pos,\n    name: data.name,\n    size: data.size && data.size.length ? data.size.toString() : '',\n    creativeId: data.creativeId\n  } : {};\n  var suffix = buildPerfmarkSuffix(evDetails);\n  var markName = eventName + suffix;\n  perfMark(markName);\n  target.dispatchEvent(new CustomEvent(eventName, opts));\n}\n/**\n* Sets an event listener for an oAds event\n* @param {string} name The name of the event\n* @param {function} callback The function to execute on the event\n* @param {HTMLElement} target The element to attach the event listener to\n*/\n\n\nfunction on(name, callback, target) {\n  name = \"oAds.\".concat(name);\n  /* istanbul ignore next: ignore the final fallback as hard trigger */\n\n  target = target || document.body || document.documentElement;\n  target.addEventListener(name, callback);\n}\n/**\n* Removes an event listener for an oAds event\n* @param {string} name The name of the event\n* @param {function} callback The function on the event to be removed\n* @param {HTMLElement} target The element the event listener is attached to\n*/\n\n\nfunction off(name, callback, target) {\n  name = \"oAds.\".concat(name);\n  /* istanbul ignore next: ignore the final fallback as hard trigger */\n\n  target = target || document.body || document.documentElement;\n  target.removeEventListener(name, callback);\n}\n/**\n* Sets a one time event listener for an oAds event\n* @param {string} name The name of the event\n* @param {function} callback The function to execute on the event\n* @param {HTMLElement} target The element to attach the event listener to\n*/\n\n\nfunction once(name, callback, target) {\n  var handler = function handler(event) {\n    /* istanbul ignore next: ignore the final fallback as hard trigger */\n    var targ = event.target || event.srcElement;\n    targ.removeEventListener(name = \"oAds.\".concat(name), callback);\n\n    if (callback) {\n      callback(event); // we set callback to null so if for some reason the listener isn't removed the callback will still only be called once\n\n      callback = null;\n    }\n  };\n\n  on(name, handler, target);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.clearPerfMarks = clearPerfMarks;\nexports.setupMetrics = setupMetrics;\nexports.markPageChange = markPageChange;\n\nvar _index = _interopRequireDefault(require(\"./index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getMarksForEvents(events, suffix) {\n  var markNames = events.map(eventName => 'oAds.' + eventName + suffix);\n\n  if (!performance || !performance.getEntriesByName) {\n    /* istanbul ignore next  */\n    return {};\n  }\n\n  var marks = {};\n  markNames.forEach(function (mName) {\n    var pMarks = performance.getEntriesByName(mName);\n    var markName = mName.replace('oAds.', '').replace(suffix, '');\n\n    if (pMarks && pMarks.length) {\n      // We don't need sub-millisecond precision\n      marks[markName] = Math.round(pMarks[0].startTime);\n      return;\n    } // If no mark has been found, we might be looking for a page-level\n    // mark name, i.e. one without a suffix\n\n\n    if (suffix) {\n      var mNameNoSuffix = mName.replace(suffix, '');\n      var pMarks2 = performance.getEntriesByName(mNameNoSuffix);\n\n      if (pMarks2 && pMarks2.length) {\n        marks[markName] = Math.round(pMarks2[0].startTime);\n      }\n    }\n  });\n  return marks;\n}\n\nfunction clearPerfMarks(metricsDefinitions, groupsToClear) {\n  if (!performance || !performance.getEntriesByType) {\n    return;\n  }\n\n  var relevantGroups = metricsDefinitions.filter(group => groupsToClear.includes(group.spoorAction));\n  var relevantGroupsMarks = relevantGroups.map(group => group.marks); // Because relevantGroupsMarks is a 2D array ...\n\n  var eventsToClear = [].concat(...relevantGroupsMarks);\n  var perfMarks = performance.getEntriesByType('mark');\n  perfMarks.forEach((_ref) => {\n    var {\n      name\n    } = _ref;\n    eventsToClear.forEach(eventName => {\n      if (name.match(\"oAds.\".concat(eventName))) {\n        performance.clearMarks(name);\n      }\n    });\n  });\n}\n/* istanbul ignore next */\n\n\nfunction getNavigationPerfMarks(desiredMarks) {\n  if (!performance || !performance.getEntriesByType || !_index.default.isArray(desiredMarks)) {\n    /* istanbul ignore next  */\n    return {};\n  }\n\n  var navMarksArray = performance.getEntriesByType('navigation');\n  var navMarks = _index.default.isArray(navMarksArray) && navMarksArray[0] || {};\n  var marks = {};\n  desiredMarks.forEach(function (markName) {\n    marks[markName] = typeof navMarks[markName] === 'number' ? Math.round(navMarks[markName]) : 0;\n  });\n  return marks;\n}\n\nfunction setupMetrics(definitions, callback, disableSampling) {\n  if (!Array.isArray(definitions)) {\n    this.log.warn('Metrics definitions should be an array. o-Ads will not record any metrics.');\n    return;\n  }\n\n  definitions.forEach(function (eDef) {\n    if (disableSampling || _index.default.inSample(eDef.sampleSize)) {\n      var triggers = Array.isArray(eDef.triggers) ? eDef.triggers : [];\n      triggers.forEach(function (trigger) {\n        sendMetricsOnEvent('oAds.' + trigger, eDef, callback);\n      });\n    }\n  });\n}\n\nfunction sendMetricsOnEvent(eventName, eMarkMap, callback) {\n  document.addEventListener(eventName, function listenOnInitialised(event) {\n    sendMetrics(eMarkMap, event.detail, callback);\n\n    if (!eMarkMap.multiple) {\n      document.removeEventListener(eventName, listenOnInitialised);\n    }\n  });\n}\n\nfunction sendMetrics(eMarkMap, eventDetails, callback) {\n  var suffix = _index.default.buildPerfmarkSuffix(eventDetails);\n\n  var marks = getMarksForEvents(eMarkMap.marks, suffix);\n\n  if (eMarkMap.navigation) {\n    var navMarks = getNavigationPerfMarks(eMarkMap.navigation);\n    Object.assign(marks, navMarks);\n  }\n\n  var eventPayload = {\n    category: 'ads',\n    action: eMarkMap.spoorAction,\n    timings: {\n      marks: marks\n    }\n  };\n\n  if (eventDetails && 'pos' in eventDetails) {\n    eventPayload.creative = {\n      name: eventDetails.name,\n      pos: eventDetails.pos,\n      size: eventDetails.size && eventDetails.size.toString(),\n      creativeId: eventDetails.creativeId || 0\n    };\n\n    if (typeof eventDetails.isEmpty === 'boolean') {\n      eventPayload.creative.isEmpty = eventDetails.isEmpty;\n    }\n  }\n\n  callback(eventPayload);\n}\n\nfunction markPageChange(definitions, groupsToClear) {\n  clearPerfMarks(definitions, groupsToClear);\n\n  _index.default.broadcast('pageChange');\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\n/**\n * Utility methods for postMessage api.\n * @author Origami Advertising, origami.advertising@ft.com\n * @module utils\n */\nvar _default = {\n  post: function post(message, source) {\n    message = typeof message === 'string' ? message : JSON.stringify(message);\n    source = arguments[1] || window.top;\n    source.postMessage(message, '*');\n  },\n  parse: function parse(message) {\n    // Check whether the message looks like an object before trying to parse it\n    if (typeof message !== 'string' || message[0] !== '{') {\n      return message;\n    } // try returning the parsed object\n\n\n    try {\n      return JSON.parse(message);\n    } // return the original message\n    catch (e) {\n      return message;\n    }\n  }\n};\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.getCurrent = getCurrent;\nexports.default = init;\nexports.setThrottleInterval = void 0;\n\nvar _index = _interopRequireDefault(require(\"./index.js\"));\n\nvar _oViewport = _interopRequireDefault(require(\"@financial-times/o-viewport\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar callback;\nvar breakpoints;\nvar current;\n\nfunction getNearestBreakpoint() {\n  var winner;\n\n  var dims = _oViewport.default.getSize(true);\n\n  function findCurrentBreakpoint(breakpoint) {\n    var breakpointDims = breakpoints[breakpoint];\n\n    if (dims.width >= breakpointDims[0] && dims.height >= breakpointDims[1]) {\n      if (!winner || breakpointDims[0] >= breakpoints[winner][0]) {\n        winner = breakpoint;\n      }\n    }\n  }\n\n  Object.keys(breakpoints).forEach(findCurrentBreakpoint);\n  return winner;\n}\n\nfunction fire() {\n  var winner = getNearestBreakpoint();\n\n  if (current !== winner) {\n    setCurrent(winner);\n    callback(winner);\n  }\n}\n\nfunction setCurrent(name) {\n  current = name;\n}\n\nfunction getCurrent() {\n  return current;\n}\n\nfunction init(brps, cb) {\n  if (!_index.default.isFunction(cb)) {\n    // must have a call back function\n    return false;\n  }\n\n  breakpoints = brps;\n  callback = cb;\n  setCurrent(getNearestBreakpoint());\n  document.body.addEventListener('oViewport.orientation', fire);\n  document.body.addEventListener('oViewport.resize', fire);\n\n  _oViewport.default.listenTo('orientation');\n\n  _oViewport.default.listenTo('resize');\n\n  return getCurrent();\n}\n\nvar setThrottleInterval = _oViewport.default.setThrottleInterval;\nexports.setThrottleInterval = setThrottleInterval;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = log;\nexports.attributeTable = exports.table = exports.end = exports.start = exports.info = exports.error = exports.warn = exports.isOn = void 0;\n\nvar _index = require(\"./index.js\");\n\n/* eslint no-console: 0 */\n\n/**\n * Utility methods for logging.\n * @author Origami Advertising, origami.advertising@ft.com\n * @module utils/log\n * @see utils\n */\n\n/* jshint devel: true */\n\n/**\n * Safe logger for the browser\n * @exports utils/log\n * @param {string} type Sets the type of log message log, warn, error or info, if not set to one of these values log will be used\n * @param {any} args the arguments to be passed to console[type]\n */\nfunction log() {\n  var type;\n  var argsIndex;\n\n  if ('log warn error info'.indexOf(arguments[0]) === -1) {\n    type = 'log';\n    argsIndex = 0;\n  } else {\n    type = arguments[0];\n    argsIndex = 1;\n  }\n\n  var args = [].slice.call(arguments, argsIndex);\n\n  if (log.isOn(type)) {\n    window.console[type].apply(window.console, args);\n  }\n}\n/**\n * Determine if debug logging is on and if the type if supported\n * @param {string} type\n */\n\n\nvar isOn = function isOn(type) {\n  /* istanbul ignore else  */\n  var debug = localStorage && localStorage.getItem('oAds') || location.search.indexOf('DEBUG=OADS') !== -1;\n  return debug && window.console && window.console[type];\n};\n/**\n * Log a warning message\n */\n\n\nexports.isOn = isOn;\n\nvar warn = function warn() {\n  var args = ['warn'].concat([].slice.call(arguments, 0));\n  log.apply(null, args);\n};\n/**\n * Log an error message\n */\n\n\nexports.warn = warn;\n\nvar error = function error() {\n  var args = ['error'].concat([].slice.call(arguments, 0));\n  log.apply(null, args);\n};\n/**\n * Log an info message\n */\n\n\nexports.error = error;\n\nvar info = function info() {\n  var args = ['info'].concat([].slice.call(arguments, 0));\n  log.apply(null, args);\n};\n/**\n * Start a collapsed group\n * @param {string} group the name of the group, defaults to o-ads\n */\n\n\nexports.info = info;\n\nvar start = function start(group) {\n  if (!log.isOn('groupCollapsed')) {\n    return;\n  }\n\n  window.console.groupCollapsed(group || 'o-ads');\n};\n/**\n * End a collapsed group\n */\n\n\nexports.start = start;\n\nvar end = function end() {\n  if (!log.isOn('groupEnd')) {\n    return;\n  }\n\n  window.console.groupEnd();\n};\n\nexports.end = end;\n\nvar table = function table(data, columns) {\n  if (log.isOn('log') && window.console) {\n    if (console.table) {\n      console.table(data, columns);\n    } else {\n      console.log(data);\n    }\n  }\n};\n\nexports.table = table;\n\nvar attributeTable = function attributeTable(object, columns) {\n  if (log.isOn('log') && window.console) {\n    if (object && console.table) {\n      var data = Object.keys(object).map(item => {\n        var val;\n\n        if ((0, _index.isArray)(object[item]) || (0, _index.isObject)(object[item])) {\n          val = JSON.stringify(object[item]);\n        } else {\n          val = object[item];\n        }\n\n        return {\n          key: item,\n          value: val\n        };\n      });\n      console.table(data, columns);\n    } else {\n      console.log(object);\n    }\n  }\n};\n\nexports.attributeTable = attributeTable;","\"use strict\";\n\n// generated by genversion\nmodule.exports = '18.3.3';","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _index = _interopRequireDefault(require(\"./utils/index.js\"));\n\nvar _config = _interopRequireDefault(require(\"./config.js\"));\n\nvar _slot = _interopRequireDefault(require(\"./slot.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* eslint no-inner-declarations: 1 */\nvar screensize = null;\n/**\n * The Slots instance tracks all ad slots on the page\n * configures global page events used by a slot and\n * provides utlity methods that act on all slots\n * @constructor\n */\n\nfunction Slots() {//eslint-disable-line no-empty\n}\n\nfunction invokeMethodOnSlots(names, method, callback) {\n  var slots = [];\n  names = names || Object.keys(this);\n  /* istanbul ignore else\t*/\n\n  if (_index.default.isNonEmptyString(names)) {\n    slots.push(names);\n  } else if (_index.default.isArray(names)) {\n    slots = names;\n  }\n\n  slots.forEach(run.bind(null, this, method));\n\n  if (_index.default.isFunction(callback)) {\n    callback.call(this, slots);\n  }\n\n  return this;\n}\n/*\n * Either run a method or fire an event on the named slot.\n * @private\n * @param slots the slots object\n */\n\n\nfunction run(slots, action, name) {\n  var slot = slots[name];\n\n  if (slot) {\n    if (_index.default.isFunction(slot[action])) {\n      slot[action]();\n    } else {\n      if (_index.default.isFunction(slot.fire)) {\n        slot.fire(action);\n      } else {\n        _index.default.log.warn('Attempted to %s on a non-slot %s', action, name);\n      }\n    }\n  } else {\n    _index.default.log.warn('Attempted to %s non-existant slot %s', action, name);\n  }\n}\n\nfunction findFormatBySize(size) {\n  if (!size) {\n    return false;\n  }\n\n  var formats = (0, _config.default)('formats');\n\n  for (var prop in formats) {\n    /* istanbul ignore else\t*/\n    if (formats.hasOwnProperty(prop)) {\n      var sizes = formats[prop].sizes;\n      sizes = _index.default.isArray(sizes[0]) ? sizes : [sizes];\n      var match = sizes.filter(function (s) {\n        return s[0] === parseInt(size[0], 10) && s[1] === parseInt(size[1], 10);\n      });\n\n      if (match.length) {\n        return prop;\n      }\n    }\n  }\n}\n/**\n * Given a slot name or an array of slot names will collapse the slots using the collapse method on the slot\n */\n\n\nSlots.prototype.collapse = function (names) {\n  return invokeMethodOnSlots.call(this, names, 'collapse');\n};\n/**\n * Given a slot name or an array of slot names will uncollapse the slots using the uncollapse method on the slot\n */\n\n\nSlots.prototype.uncollapse = function (names) {\n  return invokeMethodOnSlots.call(this, names, 'uncollapse');\n};\n/**\n * Given a slot name or an array of slot names of slotnames will refresh the slots using the refresh method on the slot\n */\n\n\nSlots.prototype.refresh = function (names) {\n  return invokeMethodOnSlots.call(this, names, 'refresh');\n};\n/**\n * Given a slot name or an array of slot names will clear the slots using the clear method on the slot\n */\n\n\nSlots.prototype.clear = function (names) {\n  return invokeMethodOnSlots.call(this, names, 'clear');\n};\n/**\n * Given a slot name or an array of slot names will destroy the slots using the destroySlot method on the slot and remove the reference to the slot\n */\n\n\nSlots.prototype.destroy = function (names) {\n  return invokeMethodOnSlots.call(this, names, 'destroy', function (names) {\n    names.forEach(name => {\n      this[name] = null;\n      delete this[name];\n    });\n  });\n};\n/**\n * Given a slot name will submit a delayed impression for the slot\n */\n\n\nSlots.prototype.submitImpression = function (name) {\n  return invokeMethodOnSlots.call(this, name, 'submitImpression');\n};\n/**\n * Confirms a container in the page exists and creates a Slot object\n */\n\n\nSlots.prototype.initSlot = function (container) {\n  // if container is a string this is a legacy implementation using ids\n  // find the element and remove the ID in favour of a data attribute\n  if (_index.default.isString(container)) {\n    container = document.getElementById(container) || document.querySelector(\"[data-o-ads-name=\\\"\".concat(container, \"\\\"]\"));\n\n    if (container && container.id) {\n      container.setAttribute('data-o-ads-name', container.id);\n      container.removeAttribute('id');\n    }\n  } // if not an element or we can't find it in the DOM exit\n\n\n  if (!_index.default.isElement(container)) {\n    _index.default.log.error('slot container must be an element!', container);\n\n    return false;\n  } // add the aria hidden attribute\n\n\n  container.setAttribute('aria-hidden', 'true'); // pass the method to retrieve or create the single IntersectionObserver instance\n\n  var slot = new _slot.default(container, screensize, this.initLazyLoading.bind(this));\n  /* istanbul ignore else\t*/\n\n  if (slot && !this[slot.name]) {\n    this[slot.name] = slot;\n    slot.fire('slotReady');\n  } else if (this[slot.name]) {\n    _index.default.log.error('slot %s is already defined!', slot.name);\n  }\n\n  return slot;\n};\n\nSlots.prototype.initRefresh = function () {\n  if ((0, _config.default)('flags').refresh && (0, _config.default)('refresh')) {\n    var data = (0, _config.default)('refresh');\n    this.refreshCount = 0;\n    /* istanbul ignore else\t*/\n\n    if (data.time && !data.inview) {\n      var refresh = () => {\n        /* istanbul ignore else */\n        if (!data.max || this.refreshCount++ < data.max) {\n          this.refresh();\n        } else if (this.refreshCount >= data.max) {\n          clearInterval(refresh);\n        }\n      };\n\n      setInterval(refresh, (parseFloat(data.time) || 1) * 1000);\n    }\n  }\n\n  return this;\n};\n/*\n *\tlistens for the rendered event from a slot and fires the slotExpand event,\n * after extending the slot with information from the server.\n */\n\n\nSlots.prototype.initRendered = function () {\n  _index.default.on('slotRenderStart', function (slots, event) {\n    var slot = slots[event.detail.name];\n    /* istanbul ignore else\t*/\n\n    if (slot) {\n      _index.default.extend(slot[slot.server], event.detail[slot.server]);\n\n      var size = event.detail.gpt.size;\n      var format = findFormatBySize(size);\n      slot.setFormatLoaded(format);\n      slot.maximise(size);\n      slot.fire('slotExpand', event.detail);\n    }\n  }.bind(null, this));\n\n  return this;\n};\n/*\n * if responsive configuration exists listen for breakpoint changes\n */\n\n\nSlots.prototype.initResponsive = function () {\n  var breakpoints = (0, _config.default)('responsive');\n  /* istanbul ignore else\t*/\n\n  if (_index.default.isObject(breakpoints)) {\n    screensize = _index.default.responsive(breakpoints, onBreakpointChange.bind(null, this));\n  }\n\n  return this;\n};\n/*\n * called when a responsive breakpoint is crossed though window resizing or orientation change.\n */\n\n\nfunction onBreakpointChange(slots, screensize) {\n  slots.forEach(function (slot) {\n    /* istanbul ignore else\t*/\n    if (slot) {\n      // ADS-766 if format name is Responsive then we have requested a responsive creative and do not want to request new ads at different breakpoints\n\n      /* istanbul ignore else\t*/\n      var isCurrentlyResponsive = slot.container && slot.container.getAttribute('data-o-ads-loaded') === 'Responsive';\n      var stillWantsResponsive = slot.sizes[screensize] && slot.sizes[screensize].filter(size => findFormatBySize(size) === 'Responsive').length > 0;\n\n      if (isCurrentlyResponsive && stillWantsResponsive) {\n        return false;\n      }\n\n      slot.screensize = screensize;\n      slot.fire('breakpoint', {\n        screensize: screensize\n      });\n    }\n  });\n}\n/*\n * Initialise the postMessage API\n */\n\n\nSlots.prototype.initPostMessage = function () {\n  // Listen for messages coming from ads\n  window.addEventListener('message', pmHandler.bind(null, this), false);\n\n  function pmHandler(slots, event) {\n    var data = _index.default.messenger.parse(event.data);\n    /* istanbul ignore else\tdon't process messages with a non oAds type*/\n\n\n    if (data.type && (/^oAds\\./.test(data.type) || /^touch/.test(data.type))) {\n      var type = data.type.replace('oAds.', ''); // Make sure the message is coming from an identified ad slot\n\n      var slotName = _index.default.iframeToSlotName(event.source.window);\n\n      var slot = slots[slotName] || false;\n\n      if (!slot) {\n        _index.default.log.error('Message received from unidentified slot');\n\n        return;\n      } // TODO: Remove adIframeLoaded once we can tag onto GPTs `slotRenderEnded` event\n\n\n      if (type === 'adIframeLoaded') {\n        slot.fire('slotRenderEnded');\n      } else if (type === 'slotClass' && data.slotClass) {\n        slot.addClass(data.slotClass);\n      } // Received message to Collapse ad slot.\n      else if (type === 'collapse') {\n          slot.fire('slotCollapsed');\n          slot.collapse();\n        } // Received touch events from ad slot iframe\n\n        /* istanbul ignore else*/\n        else if (/^touch/.test(data.type)) {\n            slot.fire('touch', data);\n          } else {\n            _index.default.log.error('Unknown message received from o-ads-embed');\n          }\n    }\n  }\n}; // remove any observers tied to elements no longer in the DOM\n// e.g. app page has been swiped out from the gallery\n\n\nSlots.prototype.flushLazyLoading = function () {\n  this.lazyLoadingObservers = this.lazyLoadingObservers.filter(observer => {\n    return Boolean(!observer.root || document.contains(observer.root));\n  });\n};\n\nSlots.prototype.initLazyLoading = function (slotConfig) {\n  var lazyLoadingConfig = (0, _config.default)('lazyLoad') || slotConfig | {};\n  this.lazyLoadingObservers = this.lazyLoadingObservers || [];\n  this.flushLazyLoading(); // find any pre-existing observers\n\n  var lazyLoadingObserver = this.lazyLoadingObservers.find(observer => {\n    // deliberately double-equals to match null and undefined where the viewport is being observed\n    return lazyLoadingConfig.root == observer.root; // eslint-disable-line eqeqeq\n  });\n\n  function onChange(changes) {\n    //Execute the changes in the order they appear on the page. This is because the top slot often determines what the lower slots display.\n\n    /* istanbul ignore next */\n    changes.filter(a => a.intersectionRect.height || a.intersectionRect.width || a.intersectionRect.top || a.intersectionRect.left).sort((a, b) => a.intersectionRect.top - b.intersectionRect.top).forEach(change => {\n      var slotName = change.target.getAttribute('data-o-ads-name');\n      /* istanbul ignore else */\n\n      if (slotName) {\n        invokeMethodOnSlots.call(this, slotName, 'render');\n      }\n    });\n  } // If we don't already have an instance of the observer, and it is enabled globally or on a slot (force), then create one.\n\n  /* istanbul ignore else\t*/\n\n\n  if ('IntersectionObserver' in window && !lazyLoadingObserver && Boolean(lazyLoadingConfig)) {\n    var options = {};\n    /* istanbul ignore else\t*/\n\n    if (typeof lazyLoadingConfig === 'object') {\n      /* istanbul ignore else\t*/\n      if (lazyLoadingConfig.viewportMargin) {\n        options.rootMargin = lazyLoadingConfig.viewportMargin;\n      }\n      /* istanbul ignore else\t*/\n\n\n      if (lazyLoadingConfig.threshold) {\n        options.threshold = lazyLoadingConfig.threshold;\n      }\n\n      options.root = lazyLoadingConfig.root || null;\n    }\n\n    lazyLoadingObserver = new IntersectionObserver(onChange.bind(this), options);\n    this.lazyLoadingObservers.push(lazyLoadingObserver);\n  }\n\n  return lazyLoadingObserver;\n};\n\nSlots.prototype.forEach = function (fn) {\n  Object.keys(this).forEach(name => {\n    var slot = this[name];\n    /* istanbul ignore else\t*/\n\n    if (slot instanceof _slot.default) {\n      fn.call(this, slot);\n    }\n  });\n  return this;\n};\n/*\n * Initialise slots\n */\n\n\nSlots.prototype.init = function () {\n  this.initRefresh();\n  this.initRendered();\n  this.initResponsive();\n  this.initPostMessage();\n  this.initLazyLoading();\n};\n\nSlots.prototype.debug = function () {\n  var log = _index.default.log;\n  var data = [];\n  this.forEach(function (slot) {\n    var row = {\n      name: slot.name,\n      'unit name': slot.gpt.unitName,\n      'creative id': slot.gpt.creativeId || 'N/A',\n      'line item id': slot.gpt.lineItemId || 'N/A',\n      size: _index.default.isArray(slot.gpt.size) && slot.gpt.size.join('×') || slot.gpt.isEmpty && 'empty' || 'N/A',\n      sizes: _index.default.isArray(slot.sizes) && slot.sizes.map(function (item) {\n        return item.join('×');\n      }).join(', ') || 'responsive slot',\n      targeting: Object.keys(slot.targeting).map(function (param) {\n        return \"\".concat(param, \"=\").concat(slot.targeting[param]);\n      }).join(', ')\n    };\n    data.push(row);\n  });\n  log.start('Creatives');\n  log.table(data);\n  log.end();\n};\n\nvar _default = new Slots();\n\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _index = _interopRequireDefault(require(\"./utils/index.js\"));\n\nvar _config = _interopRequireDefault(require(\"./config.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar VALID_SIZE_STRINGS = ['fluid'];\nvar VALID_COLLAPSE_MODES = ['before', 'after', 'never'];\nvar attributeParsers = {\n  sizes: function sizes(value, _sizes) {\n    if (value === false || value === 'false') {\n      return false;\n    }\n    /* istanbul ignore else  */\n    else if (_index.default.isArray(_sizes)) {\n        var regex = /(\\d+)x(\\d+)/;\n        value.split(',').filter(size => size.length).forEach(size => {\n          if (regex.test(size)) {\n            size.replace(regex, function (match, width, height) {\n              _sizes.push([parseInt(width, 10), parseInt(height, 10)]);\n            });\n          } else if (VALID_SIZE_STRINGS.indexOf(size) >= 0) {\n            _sizes.push(size);\n          }\n        });\n      }\n\n    return _sizes;\n  },\n  formats: function formats(value, sizes) {\n    if (value === false || value === 'false') {\n      sizes = false;\n    } else {\n      var mapping = (0, _config.default)().formats;\n      var formats = _index.default.isArray(value) ? value : value.split(',');\n      formats.forEach(format => {\n        if (mapping && mapping[format]) {\n          format = mapping[format];\n\n          if (_index.default.isArray(format.sizes[0]) || VALID_SIZE_STRINGS.indexOf(format.sizes[0]) >= 0) {\n            format.sizes.forEach(size => {\n              sizes.push(size);\n            });\n          } else {\n            sizes.push(format.sizes);\n          }\n        } else {\n          _index.default.log.error(\"Slot configured with unknown format \".concat(format));\n        }\n      });\n    }\n\n    return sizes;\n  },\n  responsiveSizes: function responsiveSizes(name, value, sizes) {\n    var screenName = name.replace(/^sizes/, '').toLowerCase();\n    /* istanbul ignore else\t*/\n\n    if (!_index.default.isPlainObject(sizes)) {\n      sizes = {};\n    }\n\n    sizes[screenName] = attributeParsers.sizes(value, sizes[screenName] || []);\n    return sizes;\n  },\n  responsiveFormats: function responsiveFormats(name, value, sizes) {\n    var screenName = name.replace(/^formats/, '').toLowerCase();\n    /* istanbul ignore else\t*/\n\n    if (!_index.default.isPlainObject(sizes)) {\n      sizes = {};\n    }\n\n    sizes[screenName] = attributeParsers.formats(value, []);\n    return sizes;\n  },\n  lazyLoadThreshold: function lazyLoadThreshold(value) {\n    return value.split(',').map(Number);\n  },\n  targeting: function targeting(value, _targeting) {\n    value = _index.default.hash(value, ';', '=');\n\n    _index.default.extend(_targeting, value);\n\n    return _targeting;\n  },\n  base: function base(value) {\n    /* istanbul ignore else\t*/\n    if (value === '' || value === 'true') {\n      value = true;\n    } else if (value === 'false') {\n      value = false;\n    }\n\n    return value;\n  },\n  collapseEmpty: function collapseEmpty(value) {\n    var isUnknownAttribute = VALID_COLLAPSE_MODES.indexOf(value) === -1;\n\n    if (isUnknownAttribute) {\n      _index.default.log.warn(\"Invalid attribute \".concat(value, \" used for collapse-empty attribute, please use 'before', 'after' or 'never'\"));\n\n      return undefined;\n    }\n\n    return value;\n  }\n};\n\nvar convertLazyLoadBooleanToObject = obj => {\n  if (obj.lazyLoad === true) {\n    obj.lazyLoad = {};\n  }\n};\n\nvar onChangeBreakpoint = event => {\n  var slot = event.detail.slot;\n  slot.screensize = event.detail.screensize;\n\n  if (slot.hasValidSize()) {\n    slot.uncollapse();\n  } else {\n    slot.collapse();\n    slot.clear();\n  }\n};\n/**\n * The Slot class.\n * @class\n * @constructor\n */\n\n\nfunction Slot(container, screensize, initLazyLoading) {\n  var renderEvent = 'slotRenderStart';\n  var cfg = (0, _config.default)();\n  var slotConfig = (0, _config.default)('slots') || {}; // store the container\n\n  this.container = container; // the current responsive screensize\n\n  /* istanbul ignore else\t*/\n\n  if (screensize) {\n    this.screensize = screensize;\n  } // init slot dom structure\n\n\n  this.outer = this.addContainer(container, {\n    'class': 'o-ads__outer',\n    'aria-hidden': 'true',\n    'tabindex': '-1'\n  });\n  this.inner = this.addContainer(this.outer, {\n    'class': 'o-ads__inner'\n  }); // make sure the slot has a name\n\n  this.setName();\n  slotConfig = slotConfig[this.name] || {}; // default configuration properties\n\n  this.server = 'gpt';\n  this.defer = false; // global slots configuration\n\n  this.targeting = slotConfig.targeting || {};\n  this.sizes = slotConfig.sizes || [];\n  this.center = slotConfig.center || false;\n  this.label = slotConfig.label || false;\n  this.outOfPage = slotConfig.outOfPage || false;\n  this.companion = slotConfig.companion === false ? false : true;\n  this.collapseEmpty = slotConfig.collapseEmpty;\n  /* istanbul ignore else */\n\n  if (_index.default.isArray(slotConfig.formats)) {\n    attributeParsers.formats(slotConfig.formats, this.sizes);\n  } else if (_index.default.isPlainObject(slotConfig.formats)) {\n    this.sizes = {};\n    Object.keys(slotConfig.formats).forEach(screenName => {\n      this.sizes[screenName] = attributeParsers.formats(slotConfig.formats[screenName], []);\n    });\n  }\n\n  if (typeof slotConfig.lazyLoad !== 'undefined') {\n    this.lazyLoad = slotConfig.lazyLoad;\n  } else {\n    this.lazyLoad = (0, _config.default)('lazyLoad') || false;\n  }\n\n  var outerEl = container.querySelector('.o-ads__outer');\n\n  if (outerEl && cfg.displayLabelWithBorders && this.container.getAttribute('data-o-ads-label')) {\n    _index.default.once(renderEvent, () => {\n      outerEl.classList.add('o-ads--label-with-borders');\n    });\n  } // extend with imperative configuration options\n\n\n  this.parseAttributeConfig();\n  /* istanbul ignore else\t*/\n\n  if (!this.sizes.length && !_index.default.isPlainObject(this.sizes)) {\n    _index.default.log.error('slot %s has no configured sizes!', this.name);\n\n    return false;\n  } // Either retrieve the existing IntersectionObserver, or tell slots.js to create a new one.\n\n\n  this.lazyLoadObserver = initLazyLoading(this.lazyLoad);\n  this.initLazyLoad();\n  this.centerContainer();\n  this.labelContainer();\n  this.initResponsive();\n}\n/**\n * parse slot attribute config\n */\n\n\nSlot.prototype.parseAttributeConfig = function () {\n  Array.from(this.container.attributes).forEach(attribute => {\n    var name = _index.default.parseAttributeName(attribute.name);\n\n    var value = attribute.value;\n\n    if (name === 'formats') {\n      this[name] = attributeParsers[name](value, this.sizes);\n    } else if (name === 'collapseEmpty') {\n      this.collapseEmpty = attributeParsers.collapseEmpty(value);\n    } else if (name === 'lazyLoadThreshold' && this.lazyLoad) {\n      convertLazyLoadBooleanToObject(this);\n      this.lazyLoad.threshold = attributeParsers.lazyLoadThreshold(value);\n    } else if (name === 'lazyLoadViewportMargin' && this.lazyLoad) {\n      convertLazyLoadBooleanToObject(this);\n      this.lazyLoad.viewportMargin = attributeParsers.base(value);\n    } else if (attributeParsers[name]) {\n      this[name] = attributeParsers[name](value, this[name]);\n    } else if (/^formats\\w*/.test(name)) {\n      this.sizes = attributeParsers.responsiveFormats(name, value, this.sizes);\n    } else if (/^sizes\\w*/.test(name)) {\n      this.sizes = attributeParsers.responsiveSizes(name, value, this.sizes);\n    } else if (this.hasOwnProperty(name)) {\n      this[name] = attributeParsers.base(value);\n    }\n  });\n};\n\nSlot.prototype.getAttributes = function () {\n  var attributes = {};\n  Array.from(this.container.attributes).forEach(attribute => {\n    attributes[_index.default.parseAttributeName(attribute)] = attribute.value;\n  });\n  this.attributes = attributes;\n  return this;\n};\n/**\n *\tLoad a slot when it appears in the viewport\n */\n\n\nSlot.prototype.initLazyLoad = function () {\n  /* istanbul ignore else  */\n  if (this.lazyLoadObserver && this.lazyLoad) {\n    this.defer = true;\n    this.lazyLoadObserver.observe(this.container); //Master/Companion ads don't work with lazy loading, so if a master ad loads trigger\n\n    /* istanbul ignore else */\n\n    if (this.companion) {\n      _index.default.once('masterLoaded', () => {\n        if (this.hasValidSize()) {\n          this.render();\n        }\n      }, this.container);\n    }\n  }\n\n  return this;\n};\n\nSlot.prototype.render = function () {\n  this.fire('slotCanRender');\n  /* istanbul ignore else  */\n\n  if (this.lazyLoadObserver) {\n    this.lazyLoadObserver.unobserve(this.container);\n  }\n};\n/**\n *\tListen to responsive breakpoints and collapse slots\n * where the configured size is set to false\n */\n\n\nSlot.prototype.initResponsive = function () {\n  /* istanbul ignore else */\n  if (_index.default.isPlainObject(this.sizes)) {\n    /* istanbul ignore else */\n    if (!this.hasValidSize()) {\n      this.collapse();\n    }\n\n    _index.default.on('breakpoint', onChangeBreakpoint, this.container);\n  }\n\n  return this;\n};\n/**\n * Maximise the slot when size is 100x100\n */\n\n\nSlot.prototype.maximise = function (size) {\n  if (size && Number(size[0]) === 100 && Number(size[1]) === 100) {\n    this.fire('resize', {\n      size: ['100%', '100%']\n    });\n  }\n};\n/**\n *\tIf the slot doesn't have a name give it one\n */\n\n\nSlot.prototype.setName = function () {\n  this.name = this.container.getAttribute('data-o-ads-name') || this.container.getAttribute('o-ads-name');\n\n  if (!this.name) {\n    this.name = \"o-ads-slot-\".concat(Math.floor(Math.random() * 10000));\n    this.container.setAttribute('data-o-ads-name', this.name);\n  }\n\n  return this;\n};\n/**\n * add the empty class to the slot\n */\n\n\nSlot.prototype.collapse = function () {\n  this.container.classList.add('o-ads--empty');\n  this.setFormatLoaded(false);\n  document.body.classList.add(\"o-ads-no-\".concat(this.name));\n\n  _index.default.broadcast('collapsed', this);\n\n  return this;\n};\n/**\n * add the additional class to the slot\n */\n\n\nSlot.prototype.addClass = function (className) {\n  this.container.classList.add(\"o-ads-\".concat(className));\n\n  _index.default.broadcast('slotClassAdded', this);\n\n  return this;\n};\n/**\n * sets a classname of the format\n */\n\n\nSlot.prototype.setFormatLoaded = function (format) {\n  this.container.setAttribute('data-o-ads-loaded', format);\n  return this;\n};\n/**\n * remove the empty class from the slot\n */\n\n\nSlot.prototype.uncollapse = function () {\n  this.container.classList.remove('o-ads--empty');\n  document.body.classList.remove(\"o-ads-no-\".concat(this.name));\n  return this;\n};\n/**\n * call the ad server clear method on the slot if one exists\n */\n\n\nSlot.prototype.clear = function () {\n  /* istanbul ignore else  */\n  if (_index.default.isFunction(this['clearSlot'])) {\n    this.clearSlot();\n  }\n\n  return this;\n};\n/**\n * call the ad server destroySlot method on the slot if one exists\n */\n\n\nSlot.prototype.destroy = function () {\n  /* istanbul ignore else  */\n  if (_index.default.isFunction(this['destroySlot'])) {\n    _index.default.off('breakpoint', onChangeBreakpoint, this.container);\n\n    this.destroySlot();\n\n    if (this.outer.parentElement === this.container) {\n      this.container.removeChild(this.outer);\n    } else {\n      console.error('Error destroying ad slot. The parent node has already been removed.'); // eslint-disable-line no-console\n    }\n  }\n\n  return this;\n};\n/**\n * call the ad server impression URL for an out of page slot if it has been configured correctly for delayed impressions\n */\n\n\nSlot.prototype.submitImpression = function () {\n  /* istanbul ignore else  */\n  if (_index.default.isFunction(this['submitGptImpression'])) {\n    this.submitGptImpression();\n  }\n\n  return this;\n};\n/**\n *\tfire an event on the slot\n */\n\n\nSlot.prototype.fire = function (name, data) {\n  var gpt = this.gpt || {};\n  var details = {\n    name: this.name || '',\n    pos: this.targeting && this.targeting.pos || '',\n    size: gpt.size || '',\n    creativeId: gpt.creativeId || '',\n    slot: this\n  };\n\n  if (typeof gpt.isEmpty === 'boolean') {\n    details.isEmpty = gpt.isEmpty;\n  }\n\n  if (_index.default.isPlainObject(data)) {\n    _index.default.extend(details, data);\n  }\n\n  _index.default.broadcast(name, details, this.container);\n\n  return this;\n};\n/**\n *\tadd a div tag into the current slot container\n **/\n\n\nSlot.prototype.addContainer = function (node, attrs) {\n  var container = '<div ';\n  /* istanbul ignore else  */\n\n  if (attrs) {\n    Object.keys(attrs).forEach(function (attr) {\n      var value = attrs[attr];\n      container += \"\".concat(attr, \"=\").concat(value, \" \");\n    });\n  }\n\n  container += '></div>';\n  node.insertAdjacentHTML('beforeend', container);\n  return node.lastChild;\n};\n\nSlot.prototype.hasValidSize = function (screensize) {\n  screensize = screensize || this.screensize;\n\n  if (screensize && _index.default.isPlainObject(this.sizes)) {\n    return this.sizes[screensize] !== false;\n  }\n\n  return true;\n};\n/**\n * Add a center class to the main container\n */\n\n\nSlot.prototype.centerContainer = function () {\n  if (this.center) {\n    this.container.classList.add('o-ads--center');\n  }\n\n  return this;\n};\n/**\n * Add a label class to the main container\n */\n\n\nSlot.prototype.labelContainer = function () {\n  var className;\n\n  if (this.label === true || this.label === 'left') {\n    className = 'label-left';\n  } else if (this.label === 'right') {\n    className = 'label-right';\n  }\n\n  if (className && !(0, _config.default)('displayLabelWithBorders')) {\n    this.container.classList.add(\"o-ads--\".concat(className));\n  }\n\n  return this;\n};\n\nvar _default = Slot;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.DEFAULT_LAZY_LOAD = void 0;\n\nvar _config = _interopRequireDefault(require(\"../config.js\"));\n\nvar _index = _interopRequireDefault(require(\"../utils/index.js\"));\n\nvar _targeting = _interopRequireDefault(require(\"../targeting.js\"));\n\nvar _url = require(\"../utils/url.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*globals googletag: true */\n\n/* eslint no-inner-declarations: 1 */\n\n/**\n * @fileOverview\n * ad server modules for o-ads implementing Google publisher tags ad requests.\n *\n * @author Robin Marr, robin.marr@ft.com\n */\nvar DEFAULT_LAZY_LOAD = {\n  fetchMarginPercent: 500,\n  renderMarginPercent: 200,\n  mobileScaling: 2.0\n};\nexports.DEFAULT_LAZY_LOAD = DEFAULT_LAZY_LOAD;\nvar DEFAULT_COLLAPSE_MODE = 'never';\nvar breakpoints = false;\n/*\n//###########################\n// Initialisation handlers ##\n//###########################\n*/\n\n/*\n * Initialise Google publisher tags functionality\n */\n\nfunction init() {\n  var gptConfig = (0, _config.default)('gpt') || {};\n  breakpoints = (0, _config.default)('responsive');\n  loadGPT();\n\n  _index.default.on('slotReady', onReady.bind(null, slotMethods));\n\n  _index.default.on('slotCanRender', onRender);\n\n  _index.default.on('refresh', onRefresh);\n\n  _index.default.on('resize', onResize);\n\n  googletag.cmd.push(setup.bind(null, gptConfig));\n}\n/*\n * initalise the googletag global namespace and add the google publish tags library to the page\n */\n\n\nfunction loadGPT() {\n  if (!window.googletag) {\n    // set up a place holder for the gpt code downloaded from google\n    window.googletag = {}; // this is a command queue used by GPT any methods added to it will be\n    // executed when GPT code is available, if GPT is already available they\n    // will be executed immediately\n\n    window.googletag.cmd = [];\n  }\n\n  _index.default.attach('//securepubads.g.doubleclick.net/tag/js/gpt.js', true, () => {\n    _index.default.broadcast('serverScriptLoaded');\n  }, err => {\n    _index.default.broadcast('adServerLoadError', err);\n  });\n}\n/*\n//#################################\n// Global configuration handlers ##\n//#################################\n*/\n\n/*\n * Configure the GPT library for the current page\n * this method is pushed onto the googletag command queue and run\n * when the library is available\n */\n\n\nfunction setup(gptConfig) {\n  var nonPersonalized = (0, _config.default)('nonPersonalized') ? 1 : 0;\n  googletag.pubads().addEventListener('slotRenderEnded', onRenderEnded);\n  enableCompanions(gptConfig);\n  setRenderingMode(gptConfig);\n  setPageTargeting(_targeting.default.get());\n  setPageCollapseEmpty();\n\n  if (gptConfig.hasOwnProperty('enableLazyLoad')) {\n    enableLazyLoad(gptConfig.enableLazyLoad);\n  }\n\n  var url = (0, _url.stripUrlParams)({\n    href: window.location.href,\n    filters: {\n      root: _url.SEARCH_PARAMS\n    }\n  });\n  googletag.enableServices();\n  googletag.pubads().setTargeting('url', url);\n  googletag.pubads().setRequestNonPersonalizedAds(nonPersonalized);\n  return true;\n}\n/**\n * Enables GPT's Lazy Loading for serving ads only when it's necessary.\n * \t\tThe lazy load config ooptions are:\n *\n * \t\t\t- fetchMarginPercent,\t\tminimum distance from the current viewport a slot\n * \t\t\t\t\tmust be before we fetch the ad as a percentage of viewport size.\n * \t\t\t\t\t0 means \"when the slot enters the viewport\",\n * \t\t\t\t\t100 means \"when the ad is 1 viewport away\"\n *\n * \t\t\t- renderMarginPercent,\tminimum distance from the current viewport a slot\n * \t\t\t\t\tmust be before we render an ad.\n * \t\t\t\t\tThis allows for prefetching the ad, but waiting to render and\n * \t\t\t\t\tdownload other subresources. The value works just like\n * \t\t\t\t\tfetchMarginPercent as a percentage of viewport.\n *\n * \t\t\t- mobileScaling,\t\t\t\ta multiplier applied to margins on mobile devices.\n * \t\t\t\t\tThis allows varying margins on mobile vs. desktop. For example,\n * \t\t\t\t\ta mobileScaling of 2.0 will multiply all margins by 2 on mobile\n * \t\t\t\t\tdevices, increasing the minimum distance a slot can be before\n * \t\t\t\t\tfetching and rendering.\n *\n * @param {object|boolean} lazyLoadConf The lazy load config object or a boolean.\n * @returns {boolean} true if the object is of type Array, otherwise false\n */\n\n\nfunction enableLazyLoad(lazyLoadConf) {\n  if (lazyLoadConf && (typeof lazyLoadConf === 'object' || typeof lazyLoadConf === 'boolean')) {\n    var opts = Object.assign({}, DEFAULT_LAZY_LOAD, typeof lazyLoadConf === 'object' ? lazyLoadConf : {});\n    window.googletag.pubads().enableLazyLoad(opts);\n  } else {\n    _index.default.log.warn('lazyLoadConf must be either an object or a boolean', lazyLoadConf);\n  }\n}\n/*\n * set the gpt rendering mode to either sync or async\n * default is async\n */\n\n\nfunction setRenderingMode(gptConfig) {\n  var rendering = gptConfig.rendering;\n\n  if (rendering === 'sync') {\n    googletag.pubads().enableSyncRendering();\n  } else if (rendering === 'sra') {\n    googletag.pubads().enableSingleRequest();\n  } else {\n    googletag.pubads().enableAsyncRendering();\n  }\n}\n/**\n * Adds page targeting to GPT ad calls\n * @name setPageTargeting\n * @memberof GPT\n * @lends GPT\n */\n\n\nfunction setPageTargeting(targetingData) {\n  if (_index.default.isPlainObject(targetingData)) {\n    googletag.cmd.push(() => {\n      var pubads = googletag.pubads();\n      Object.keys(targetingData).forEach(key => {\n        // Convert to string as boolean values are invalid arguments for GPT setTargeting()\n        pubads.setTargeting(key, String(targetingData[key]));\n      });\n    });\n  } else {\n    /* istanbul ignore next  */\n    _index.default.log.warn('invalid targeting object passed', targetingData);\n  }\n\n  return targetingData;\n}\n/**\n * Removes page targeting for a specified key from GPT ad calls\n */\n\n\nfunction clearPageTargetingForKey(key) {\n  if (!window.googletag) {\n    _index.default.log.warn('Attempting to clear page targeting before the GPT library has initialized');\n\n    return;\n  }\n\n  if (!key) {\n    _index.default.log.warn('Refusing to unset all keys - a key must be specified');\n\n    return;\n  }\n\n  googletag.cmd.push(() => {\n    googletag.pubads().clearTargeting(key);\n  });\n}\n/**\n * Sets behaviour of empty slots can be 'after', 'before' or 'never'\n * * 'after' collapse slots that return an empty ad\n * * 'before' collapses all slots and only displays them when an ad is found\n * * 'never' does not collapse any empty slot, the collapseEmptyDivs method is not called in that case\n */\n\n\nfunction setPageCollapseEmpty() {\n  var mode = (0, _config.default)('collapseEmpty');\n\n  if (mode === 'before') {\n    googletag.pubads().collapseEmptyDivs(true);\n  }\n\n  if (mode === 'after') {\n    googletag.pubads().collapseEmptyDivs(false);\n  }\n}\n/**\n * When companions are enabled we delay the rendering of ad slots until\n * either a master is returned or all slots are returned without a master\n */\n\n\nfunction enableCompanions(gptConfig) {\n  if (gptConfig.companions) {\n    googletag.pubads().disableInitialLoad();\n    googletag.companionAds().setRefreshUnfilledSlots(true);\n  }\n}\n/*\n//##################\n// Event handlers ##\n//##################\n*/\n\n/*\n * Event handler for when a slot is ready for an ad to rendered\n */\n\n\nfunction onReady(slotMethods, event) {\n  var slot = event.detail.slot;\n  /* istanbul ignore else  */\n\n  if (slot.server === 'gpt') {\n    slot.gpt = {}; // extend the slot with gpt methods\n\n    _index.default.extend(slot, slotMethods); // setup the gpt configuration the ad\n\n\n    googletag.cmd.push(() => {\n      slot.defineSlot().addServices().setCollapseEmpty().setTargeting().setURL();\n\n      if (!slot.defer && slot.hasValidSize()) {\n        slot.display();\n      }\n    });\n  }\n}\n/*\n * Render is called when a slot is not rendered when the ready event fires\n */\n\n\nfunction onRender(event) {\n  var slot = event.detail.slot;\n  /* istanbul ignore else  */\n\n  if (_index.default.isFunction(slot.display)) {\n    slot.display();\n  }\n}\n/*\n * refresh is called when a slot requests the ad be flipped\n */\n\n\nfunction onRefresh(event) {\n  window.googletag.cmd.push(() => {\n    var targeting = event.detail.targeting;\n\n    if (_index.default.isPlainObject(targeting)) {\n      Object.keys(targeting).forEach(name => {\n        event.detail.slot.gpt.slot.setTargeting(name, targeting[name]);\n      });\n    }\n\n    googletag.pubads().refresh([event.detail.slot.gpt.slot]);\n  });\n  return this;\n}\n\nfunction onResize(event) {\n  var iframe = event.detail.slot.gpt.iframe;\n  var size = event.detail.size;\n  iframe.width = size[0];\n  iframe.height = size[1];\n}\n/*\n * function passed to the gpt library that is run when an ad completes rendering\n */\n\n\nfunction onRenderEnded(event) {\n  var data = {\n    gpt: {}\n  };\n  var gptSlotId = event.slot.getSlotId();\n  var domId = gptSlotId.getDomId().split('-');\n  var iframeId = \"google_ads_iframe_\".concat(gptSlotId.getId());\n  data.type = domId.pop();\n  data.name = domId.join('-');\n  data.size = event.size && event.size.length ? event.size.join() : '';\n  data.creativeId = event.creativeId;\n  var slotTargeting = event.slot.getTargetingMap && event.slot.getTargetingMap();\n\n  if (slotTargeting && slotTargeting.pos) {\n    data.pos = slotTargeting.pos.length ? slotTargeting.pos.join() : '';\n  }\n\n  var detail = data.gpt;\n  detail.isEmpty = event.isEmpty;\n  detail.size = event.size;\n  detail.creativeId = event.creativeId;\n  detail.lineItemId = event.lineItemId;\n  detail.serviceName = event.serviceName;\n  var iFrameEl = document.getElementById(iframeId);\n\n  if (iFrameEl) {\n    iFrameEl.setAttribute('tabindex', '-1');\n    iFrameEl.setAttribute('aria-hidden', 'true');\n    iFrameEl.setAttribute('role', 'presentation');\n    iFrameEl.setAttribute('title', 'Advertisement');\n    detail.iframe = iFrameEl;\n  } else {\n    /* istanbul ignore next */\n    _index.default.log.warn('No iFrame found matching GPT SlotID');\n  }\n\n  _index.default.broadcast('slotRenderStart', data);\n}\n/*\n//################\n// Slot methods ##\n//################\n* Set of methods extended on to the slot constructor for GPT served slots\n*/\n\n\nvar slotMethods = {\n  /**\n   * define a GPT slot\n   */\n  defineSlot: function defineSlot() {\n    window.googletag.cmd.push(() => {\n      this.gpt.id = \"\".concat(this.name, \"-gpt\");\n      this.inner.setAttribute('id', this.gpt.id);\n      this.setUnitName();\n\n      if (!this.outOfPage) {\n        if (breakpoints && _index.default.isObject(this.sizes)) {\n          this.initResponsive();\n          this.gpt.slot = googletag.defineSlot(this.gpt.unitName, [0, 0], this.gpt.id).defineSizeMapping(this.gpt.sizes);\n        } else {\n          this.gpt.slot = googletag.defineSlot(this.gpt.unitName, this.sizes, this.gpt.id);\n        }\n      } else {\n        this.gpt.slot = googletag.defineOutOfPageSlot(this.gpt.unitName, this.gpt.id);\n      }\n    });\n    return this;\n  },\n  clearSlot: function clearSlot(gptSlot) {\n    if (window.googletag.pubadsReady && window.googletag.pubads) {\n      gptSlot = gptSlot || this.gpt.slot;\n      return googletag.pubads().clear([gptSlot]);\n    } else {\n      return false;\n    }\n  },\n  initResponsive: function initResponsive() {\n    window.googletag.cmd.push(() => {\n      _index.default.on('breakpoint', event => {\n        var slot = event.detail.slot;\n        var screensize = event.detail.screensize;\n        updatePageTargeting({\n          res: screensize\n        });\n\n        if (slot.hasValidSize(screensize)) {\n          /* istanbul ignore else  */\n          if (slot.gpt.iframe) {\n            slot.fire('refresh');\n          } else if (!this.defer) {\n            slot.display();\n          }\n        }\n      }, this.container);\n\n      var mapping = googletag.sizeMapping();\n      Object.keys(breakpoints).forEach(breakpoint => {\n        if (this.sizes[breakpoint]) {\n          mapping.addSize(breakpoints[breakpoint], this.sizes[breakpoint]);\n        }\n      });\n      this.gpt.sizes = mapping.build();\n    });\n    return this;\n  },\n\n  /**\n   * Tell gpt to destroy the slot and its metadata\n   */\n  destroySlot: function destroySlot(gptSlot) {\n    if (window.googletag.pubadsReady && window.googletag.pubads) {\n      gptSlot = gptSlot || this.gpt.slot;\n      return googletag.destroySlots([gptSlot]);\n    } else {\n      return false;\n    }\n  },\n\n  /*\n   *\tTell gpt to request an ad\n   */\n  display: function display() {\n    window.googletag.cmd.push(() => {\n      this.fire('slotGoRender');\n      googletag.display(this.gpt.id);\n    });\n    return this;\n  },\n\n  /**\n   * Set the DFP unit name for the slot.\n   */\n  setUnitName: function setUnitName() {\n    window.googletag.cmd.push(() => {\n      var unitName;\n      var gpt = (0, _config.default)('gpt') || {};\n      var attr = this.container.getAttribute('data-o-ads-gpt-unit-name');\n\n      if (_index.default.isNonEmptyString(attr)) {\n        unitName = attr;\n      } else if (_index.default.isNonEmptyString(gpt.unitName)) {\n        unitName = gpt.unitName;\n      } else {\n        var network = gpt.network;\n        var site = gpt.site;\n        var zone = gpt.zone;\n        unitName = \"/\".concat(network);\n        unitName += _index.default.isNonEmptyString(site) ? \"/\".concat(site) : '';\n        unitName += _index.default.isNonEmptyString(zone) ? \"/\".concat(zone) : '';\n      }\n\n      this.gpt.unitName = unitName;\n    });\n    return this;\n  },\n\n  /**\n   * Add the slot to the pub ads service and add a companion service if configured\n   */\n  addServices: function addServices(gptSlot) {\n    window.googletag.cmd.push(() => {\n      var gpt = (0, _config.default)('gpt') || {};\n      gptSlot = gptSlot || this.gpt.slot;\n      gptSlot.addService(googletag.pubads());\n\n      if (gpt.companions && this.companion !== false) {\n        gptSlot.addService(googletag.companionAds());\n      }\n    });\n    return this;\n  },\n\n  /**\n   * Sets the GPT collapse empty mode for a given slot\n   * values can be 'after', 'before', 'never'\n   */\n  setCollapseEmpty: function setCollapseEmpty() {\n    window.googletag.cmd.push(() => {\n      var mode = this.collapseEmpty || (0, _config.default)('collapseEmpty') || DEFAULT_COLLAPSE_MODE;\n\n      if (mode === 'before') {\n        this.gpt.slot.setCollapseEmptyDiv(true, true);\n      } else if (mode === 'after') {\n        this.gpt.slot.setCollapseEmptyDiv(true);\n      } else if (mode === 'never') {\n        this.gpt.slot.setCollapseEmptyDiv(false);\n      }\n    });\n    return this;\n  },\n  submitGptImpression: function submitGptImpression() {\n    /* istanbul ignore next  */\n    function getImpressionURL(iframe) {\n      var trackingUrlElement = iframe.contentWindow.document.querySelector('[data-o-ads-impression-url]');\n\n      if (trackingUrlElement) {\n        return trackingUrlElement.dataset.oAdsImpressionUrl;\n      } else {\n        _index.default.log.warn('Impression URL not found, this is set via a creative template.');\n\n        return false;\n      }\n    }\n\n    if (this.outOfPage && this.gpt.iframe) {\n      var impressionURL = getImpressionURL(this.gpt.iframe);\n      /* istanbul ignore next  */\n\n      if (impressionURL) {\n        _index.default.attach(impressionURL, true, () => {\n          _index.default.log.info('Impression Url requested');\n        }, () => {\n          _index.default.log.info('CORS request to submit an impression failed');\n        }, true);\n      }\n    } else {\n      _index.default.log.warn('Attempting to call submitImpression on a non-oop slot');\n    }\n  },\n\n  /**\n   * Sets page url to be sent to google\n   * prevents later url changes via javascript from breaking the ads\n   */\n  setURL: function setURL(gptSlot) {\n    window.googletag.cmd.push(() => {\n      gptSlot = gptSlot || this.gpt.slot;\n      var canonical = (0, _config.default)('canonical');\n      gptSlot.set('page_url', canonical ? canonical : _index.default.getLocation());\n    });\n    return this;\n  },\n\n  /**\n   * Adds key values from a given object to the slot targeting\n   */\n  setTargeting: function setTargeting(gptSlot) {\n    window.googletag.cmd.push(() => {\n      gptSlot = gptSlot || this.gpt.slot;\n      /* istanbul ignore else  */\n\n      if (_index.default.isPlainObject(this.targeting)) {\n        Object.keys(this.targeting).forEach(param => {\n          gptSlot.setTargeting(param, this.targeting[param]);\n        });\n      }\n    });\n    return this;\n  }\n};\n/*\n//####################\n// External methods ##\n//####################\n*/\n\n/**\n * The correlator is a random number added to ad calls.\n * It is used by the ad server to determine which impressions where served to the same page\n * Updating is used to tell the ad server to treat subsequent ad calls as being on a new page\n */\n\nfunction updateCorrelator() {\n  _index.default.log.warn('[DEPRECATED]: Updatecorrelator is being phased out by google and removed from o-ads in future releases.');\n\n  googletag.cmd.push(() => {\n    googletag.pubads().updateCorrelator();\n  });\n}\n\nfunction clearPageTargeting() {\n  if (window.googletag) {\n    googletag.cmd.push(() => {\n      googletag.pubads().clearTargeting();\n    });\n  } else {\n    _index.default.log.warn('Attempting to clear page targeting before the GPT library has initialized');\n  }\n}\n\nfunction updatePageTargeting(override) {\n  if (window.googletag) {\n    var params = _index.default.isPlainObject(override) ? override : _targeting.default.get();\n    setPageTargeting(params);\n  } else {\n    _index.default.log.warn('Attempting to set page targeting before the GPT library has initialized');\n  }\n} //https://developers.google.com/doubleclick-gpt/common_implementation_mistakes#scenario-2:-checking-the-googletag-object-to-know-whether-gpt-is-ready\n\n\nfunction hasGPTLoaded() {\n  if (window.googletag && window.googletag.apiReady) {\n    return true;\n  } else {\n    return false;\n  }\n}\n\nfunction debug() {\n  var log = _index.default.log;\n  var conf = (0, _config.default)('gpt');\n\n  if (!conf) {\n    return;\n  }\n\n  log.start('gpt');\n  log.attributeTable(conf);\n  log.end();\n}\n\nvar _default = {\n  init,\n  setup,\n  updateCorrelator,\n  updatePageTargeting,\n  clearPageTargeting,\n  clearPageTargetingForKey,\n  hasGPTLoaded,\n  loadGPT,\n  debug\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.filterNestedParams = filterNestedParams;\nexports.stripUrlParams = stripUrlParams;\nexports.SEARCH_PARAMS = void 0;\nvar SEARCH_PARAMS = ['q', 'kw'];\n/**\n * @typedef {{ [key: string]: string[] }} FilterDict\n */\n\n/**\n * Remove unwanted params from nested query strings\n *\n * @param   {string}   nestedParams the URIencoded nested params\n * @param   {string[]} keysToStrip  the parameters to remove\n *\n * @return  {string}               [return description]\n */\n\nexports.SEARCH_PARAMS = SEARCH_PARAMS;\n\nfunction filterNestedParams(nestedParams, keysToStrip) {\n  if (!keysToStrip || keysToStrip.length < 1) {\n    return nestedParams;\n  }\n\n  var childParams = new URLSearchParams(nestedParams);\n\n  for (var key of keysToStrip) {\n    childParams.delete(key);\n  }\n\n  return childParams.toString();\n}\n/**\n * Purge a URL of sensitive data in query strings\n *\n * Given the URL\n * ```url\n * https://www.ft.com/search?q=goog&cust_params=a%3D1%26b%3D2%26c%3D3%26d%3D4\n * ```\n * Supplying an object in the form\n * ```\n * {\n *   root: ['q', 'kw'],\n *   cust_params: ['a', 'c']\n * }\n * ```\n * will remove `q` from the main query string and `a`, `c` from the nested params\n * under `cust_params`:\n * ```url\n * https://www.ft.com/search?cust_params=b=2%26d%3D4\n * ```\n *\n * @param   {Object}  params\n * @param   {string | Location}  params.href     The base URL or `window.location`\n * @param   {FilterDict}         params.filters  The dictionary of params to be removed\n *\n * @return  {string}              A URL that has been stripped of the supplied params\n */\n\n\nfunction stripUrlParams(_ref) {\n  var {\n    href,\n    filters\n  } = _ref;\n  // @ts-ignore: URL absolutely accepts Location!\n  var url = new URL(href);\n\n  for (var [param, filter] of Object.entries(filters)) {\n    if (param === 'root') {\n      // Strip parameters from the main query string\n      for (var key of filter) {\n        url.searchParams.delete(key);\n      }\n    } else {\n      // Handle nested parameters\n      var nestedParams = url.searchParams.get(param);\n\n      if (nestedParams) {\n        url.searchParams.set(param, filterNestedParams(nestedParams, filter));\n      }\n    }\n  }\n\n  return url.href;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _ftdomdelegate = _interopRequireDefault(require(\"ftdomdelegate\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar socialUrls = {\n  twitter: \"https://twitter.com/intent/tweet?url={{url}}&text={{title}}&related={{relatedTwitterAccounts}}&via=FT\",\n  facebook: \"http://www.facebook.com/sharer.php?u={{url}}\",\n  linkedin: \"http://www.linkedin.com/shareArticle?mini=true&url={{url}}&title={{title}}+%7C+{{titleExtra}}&summary={{summary}}&source=Financial+Times\",\n  pinterest: \"http://www.pinterest.com/pin/create/button/?url={{url}}&description={{title}}\",\n  whatsapp: \"whatsapp://send?text={{title}}%20({{titleExtra}})%20-%20{{url}}\",\n  link: \"{{url}}\",\n  enterpriseSharing: \"{{url}}\"\n};\nvar descriptiveLinkText = {\n  twitter: 'Share {{title}} on Twitter (opens a new window)',\n  facebook: 'Share {{title}} on Facebook (opens a new window)',\n  linkedin: 'Share {{title}} on LinkedIn (opens a new window)',\n  pinterest: 'Share {{title}} on Pinterest (opens a new window)',\n  whatsapp: 'Share {{title}} on Whatsapp (opens a new window)',\n  link: 'Open link in new window',\n  enterpriseSharing: 'Share {{title}} with your Enterprise Sharing tools (opens a new window)'\n};\n/**\n * The `oShare.open` open event fires when a social network share action is\n * triggered, to open a new window.\n *\n * @event \"oShare.open\"\n * @type {object}\n * @property {boolean} share - The o-share instance.\n * @property {boolean} action - The kind of share i.e. \"social\".\n * @property {boolean} url - The social share url opened.\n */\n\n/**\n * The `oShare.ready` fires when a o-share instance has been initialised.\n *\n * @event \"oShare.ready\"\n * @type {object}\n * @property {boolean} share - The initialised o-share instance.\n */\n\n/**\n  * @class Share\n  *\n  * @param {(HTMLElement|string)} rootEl [el=document.body] - Element where to search for an o-share component. You can pass an HTMLElement or a selector string\n  * @param {Object} config - Optional\n  * @param {string} config.url - Optional, url to share\n  * @param {string} config.title - Optional, title to be used in social network sharing\n  * @param {string} config.titleExtra - Optional, extra bit to add to the title for some social networks\n  * @param {string} config.summary - Optional, summary of the page that's being shared\n  * @param {string} config.relatedTwitterAccounts - Optional, extra information for sharing on Twitter\n  * @param {Object[]} config.links - Optional, array of strings of supported social network names that you want rendered\n  */\n\nfunction Share(rootEl, config) {\n  var oShare = this;\n  var openWindows = {};\n  /**\n    * Helper function to dispatch namespaced events, namespace defaults to oShare\n    *\n    * @private\n    */\n\n  function dispatchCustomEvent(event) {\n    var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var namespace = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'oShare';\n    oShare.rootEl.dispatchEvent(new CustomEvent(namespace + '.' + event, {\n      detail: data,\n      bubbles: true\n    }));\n  }\n  /**\n    * Click event handler that checks the event target is an o-share action\n    *\n    * @param {Event} ev - The event to handle\n    * @return {undefined}\n    * @private\n    */\n\n\n  function handleClick(ev) {\n    var actionEl = ev.target.closest('li.o-share__action');\n\n    if (oShare.rootEl.contains(actionEl) && actionEl.querySelector('a[href]')) {\n      ev.preventDefault();\n      ev.stopPropagation();\n      var url = actionEl.querySelector('a[href]').href;\n      var shareLocation = oShare.rootEl.dataset.oShareLocation || '';\n      dispatchCustomEvent('event', {\n        category: 'share',\n        action: 'click',\n        button: actionEl.textContent.trim().toLowerCase(),\n        location: shareLocation\n      }, 'oTracking');\n      shareSocial(url);\n    }\n  }\n  /**\n    * Event handler for social network actions. Opens up a new window for that social network and dispatched the 'oShare.open' event\n    *\n    * @private\n    * @param {string} url - URL to be loaded in the new window\n    * @returns {undefined}\n    * @fires \"oShare.open\"\n    */\n\n\n  function shareSocial(url) {\n    if (url) {\n      if (openWindows[url] && !openWindows[url].closed) {\n        openWindows[url].focus();\n      } else {\n        openWindows[url] = window.open(url, '', 'width=646,height=436');\n        openWindows[url].opener = null;\n      }\n\n      dispatchCustomEvent('open', {\n        share: oShare,\n        action: \"social\",\n        url: url\n      });\n    }\n  }\n  /**\n    * Transforms the default social urls\n    *\n    * @private\n    * @param {string} socialNetwork - Name of the social network that we support (e.g. twitter, facebook, linkedin, pinterest)\n    * @returns {string}\n    */\n\n\n  function generateSocialUrl(socialNetwork) {\n    var templateUrl = socialUrls[socialNetwork];\n    templateUrl = templateUrl.replace('{{url}}', encodeURIComponent(config.url)).replace('{{title}}', encodeURIComponent(config.title)).replace('{{titleExtra}}', encodeURIComponent(config.titleExtra)).replace('{{summary}}', encodeURIComponent(config.summary)).replace('{{relatedTwitterAccounts}}', encodeURIComponent(config.relatedTwitterAccounts));\n    return templateUrl;\n  }\n  /**\n    * Transforms the descriptive text for social links\n    *\n    * @private\n    * @param {string} socialNetwork - Name of the social network that we support (e.g. twitter, facebook, linkedin, pinterest)\n    * @returns {string}\n    */\n\n\n  function generateDesriptiveLinkText(socialNetwork) {\n    var templateLinkText = descriptiveLinkText[socialNetwork];\n    templateLinkText = templateLinkText.replace('{{title}}', config.title);\n    return templateLinkText;\n  }\n  /**\n    * Renders the list of social networks in {@link config.links}\n    *\n    * @returns {undefined}\n    * @private\n    */\n\n\n  function render() {\n    normaliseConfig();\n    var ulElement = document.createElement('ul');\n\n    for (var i = 0; i < config.links.length; i++) {\n      var liElement = document.createElement('li');\n      var spanElement = document.createElement('span');\n      var aElement = document.createElement('a');\n      liElement.classList.add('o-share__action', \"o-share__action--\".concat(config.links[i]));\n      spanElement.classList.add('o-share__text');\n      spanElement.innerText = generateDesriptiveLinkText(config.links[i]);\n      aElement.classList.add('o-share__icon', \"o-share__icon--\".concat(config.links[i]));\n      aElement.href = generateSocialUrl(config.links[i]);\n      aElement.setAttribute('target', '_blank');\n      aElement.setAttribute('rel', 'noopener');\n      aElement.appendChild(spanElement);\n      liElement.appendChild(aElement);\n      ulElement.appendChild(liElement);\n    }\n\n    oShare.rootEl.appendChild(ulElement);\n  }\n  /**\n    * Normalises any data in the configuration, converting relative URLs to ready-to-share\n    * absolute versions\n    *\n    * @return {undefined}\n    * @private\n    */\n\n\n  function normaliseConfig() {\n    var link = document.createElement('a');\n    link.href = config.url;\n    config.url = link.protocol + '//' + link.host + link.pathname + link.search + link.hash;\n  }\n  /**\n    * Initialises the Share class, rendering the o-share element if it's empty with {@link config} options,\n    * or from corresponding data attributes and sets up dom-delegates.\n    * Dispatches 'oShare.ready' at the end\n    *\n    * @return {undefined}\n    * @fires \"oShare.ready\"\n    */\n\n\n  function init() {\n    if (!rootEl) {\n      rootEl = document.body;\n    } else if (!(rootEl instanceof HTMLElement)) {\n      rootEl = document.querySelector(rootEl);\n    }\n\n    var rootDelegate = new _ftdomdelegate.default(rootEl);\n    rootDelegate.on('click', handleClick);\n    rootEl.setAttribute('data-o-share--js', '');\n    oShare.rootDomDelegate = rootDelegate;\n    oShare.rootEl = rootEl;\n\n    if (rootEl.children.length === 0) {\n      if (!config) {\n        config = {};\n        config.links = rootEl.hasAttribute('data-o-share-links') ? rootEl.getAttribute('data-o-share-links').split(' ') : [];\n        config.url = rootEl.getAttribute('data-o-share-url') || '';\n        config.title = rootEl.getAttribute('data-o-share-title') || '';\n        config.titleExtra = rootEl.getAttribute('data-o-share-titleExtra') || '';\n        config.summary = rootEl.getAttribute('data-o-share-summary') || '';\n        config.relatedTwitterAccounts = rootEl.getAttribute('data-o-share-relatedTwitterAccounts') || '';\n      }\n\n      render();\n    }\n\n    dispatchCustomEvent('ready', {\n      share: oShare\n    });\n  }\n\n  init();\n}\n/**\n  * Destroys the Share instance, disables dom-delegates\n  *\n  * @return {undefined}\n  */\n\n\nShare.prototype.destroy = function () {\n  this.rootDomDelegate.destroy(); // Should destroy remove its children? Maybe setting .innerHTML to '' is faster\n\n  for (var i = 0; i < this.rootEl.children; i++) {\n    this.rootEl.removeChild(this.rootEl.children[i]);\n  }\n\n  this.rootEl.removeAttribute('data-o-share--js');\n  this.rootEl = undefined;\n};\n/**\n  * Initialises all o-share components inside the element passed as the first parameter\n  *\n  * @param {(HTMLElement|string)} rootEl [el=document.body] - Element where to search for o-share components. You can pass an HTMLElement or a selector string\n  * @returns {Array} - An array of Share instances\n  */\n\n\nShare.init = function () {\n  var rootEl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document.body;\n\n  if (!(rootEl instanceof HTMLElement)) {\n    rootEl = document.querySelector(rootEl);\n  }\n\n  if (rootEl instanceof HTMLElement && rootEl.matches('[data-o-component=o-share]')) {\n    return new Share(rootEl);\n  }\n\n  return Array.from(rootEl.querySelectorAll('[data-o-component=o-share]'), rootEl => new Share(rootEl));\n};\n\nvar _default = Share;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _ftDateFormat = _interopRequireDefault(require(\"@financial-times/ft-date-format\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar updateEventName = 'update';\nvar interval;\n\nfunction ftDateFormatWarning(methodName) {\n  // eslint-disable-next-line no-console\n  console.warn(\"The o-date method \\\"\".concat(methodName, \"\\\" is deprecated. Use the \\\"ft-date-format\\\" package instead or contact the Origami team for help: https://github.com/Financial-Times/ft-date-format\"));\n}\n/**\n * Initialise the o-date component.\n * @param {HTMLElement|String} rootElement - The root element or CSS selector to initialise\n */\n\n\nclass ODate {\n  constructor(rootEl) {\n    if (!rootEl) {\n      // eslint-disable-next-line no-console\n      console.warn('To initialise all o-date elements on the page use ' + 'the `init` method. Passing no arguments to the constructor ' + 'is deprecated.');\n    }\n\n    if (rootEl && !(rootEl instanceof HTMLElement)) {\n      // eslint-disable-next-line no-console\n      console.warn('Using the constructor to initialise one or more ' + 'o-date elements with a query selector is deprecated. ' + 'Pass a single o-date HTMLElement to initialise or use the ' + '`init` method.');\n    }\n\n    if (!rootEl) {\n      rootEl = document.body;\n    } else if (!(rootEl instanceof HTMLElement)) {\n      rootEl = document.querySelector(rootEl);\n    }\n\n    if (rootEl.getAttribute('data-o-component') === \"o-date\") {\n      this.el = rootEl;\n    } else {\n      this.el = rootEl.querySelector('[data-o-component~=\"o-date\"]');\n    }\n\n    if (this.el) {\n      document.body.addEventListener(updateEventName, this);\n      this.update();\n      this.el.setAttribute('data-o-date-js', '');\n    }\n\n    if (this.el && !interval) {\n      interval = setInterval(function () {\n        document.body.dispatchEvent(new CustomEvent(updateEventName));\n      }, 60000);\n    }\n  } // Use object-level event listener method so a new function doesn't need to be bound for each instance\n\n\n  handleEvent(e) {\n    if (e.type === updateEventName) {\n      this.update();\n    }\n  }\n  /**\n   * Re-render the formatted date within the `time` element.\n   * @returns {undefined}\n   */\n\n\n  update() {\n    var el = this.el; // Find the date to render.\n    // Use the current date if the `datetime` attribute is not set and\n    // the o-date `time` element has no text content.\n\n    var dateTime = el.getAttribute('datetime');\n    var date = dateTime ? _ftDateFormat.default.toDate(dateTime) : null;\n\n    if (!date && this.el.textContent === '') {\n      date = new Date();\n    }\n\n    if (!date) {\n      return;\n    } // Find elements to render formatted dates to.\n    // @deprecated - The class `.o-date__printer` is deprecated.\n    // `.o-date__printer` should be removed in the next major.\n    // Use `[data-o-date-printer]` instead of `.o-date__printer`.\n\n\n    var printers = el.querySelectorAll('.o-date__printer,[data-o-date-printer]');\n    printers = printers.length ? printers : [el]; // Render the found date in each printer element.\n\n    for (var printer of printers) {\n      this._renderDateFor(printer, date);\n    } // If no printers result in output, e.g. because the,\n    // format chosen does not output the time after x hours,\n    // then hide the `time` element.\n\n\n    if (el.textContent) {\n      el.setAttribute('title', _ftDateFormat.default.format(date, 'datetime'));\n      el.removeAttribute('aria-hidden');\n    } else {\n      el.setAttribute('aria-hidden', true);\n    }\n  }\n  /**\n   * Remove o-date from the `time` element i.e. remove event\n   * listeners and drop references to the element.\n   * @returns {undefined}\n   */\n\n\n  destroy() {\n    document.body.removeEventListener(updateEventName, this);\n    this.el = null;\n  }\n  /**\n   * Initialise the o-date component.\n   * @param {HTMLElement|String} el - The root element or CSS selector to initialise\n   * @returns {Array<ODate> | ODate} - An o-date instance or array of o-date instances.\n   */\n\n\n  static init(el) {\n    if (!el) {\n      el = document.body;\n    }\n\n    if (!(el instanceof HTMLElement)) {\n      el = document.querySelector(el);\n    }\n    /* If el's data-o-component has \\bo-date\\b in it, ie it is itself a date,\n     return a new o-date */\n\n\n    if (/\\bo-date\\b/.test(el.getAttribute('data-o-component'))) {\n      return new ODate(el);\n    } // If el contains date components, return o-dates\n\n\n    var dateEls = el.querySelectorAll('[data-o-component~=\"o-date\"]');\n    return [].map.call(dateEls, function (el) {\n      return new ODate(el);\n    });\n  }\n  /**\n   * Render the date to the \"printer\" element in the requested format.\n   * @param {HTMLElement} printer - The element to render the date in\n   * @param {Date} date - The date to format\n   * @returns {undefined}\n   */\n\n\n  _renderDateFor(printer, date) {\n    // Use the printer `data-o-date-format` if found or fallback to the\n    // root element if not found.\n    var format = printer.getAttribute('data-o-date-format') || this.el.getAttribute('data-o-date-format');\n    var dateString;\n    var labelString;\n\n    if (format === 'today-or-yesterday-or-nothing') {\n      dateString = _ftDateFormat.default.asTodayOrYesterdayOrNothing(date);\n    } else if (format === 'date-only') {\n      dateString = _ftDateFormat.default.format(date, 'date');\n    } else if (format === 'time-ago-limit-4-hours') {\n      dateString = _ftDateFormat.default.timeAgo(date, {\n        limit: 4 * _ftDateFormat.default.inSeconds.hour\n      });\n    } else if (format === 'time-ago-limit-24-hours') {\n      dateString = _ftDateFormat.default.timeAgo(date, {\n        limit: 24 * _ftDateFormat.default.inSeconds.hour\n      });\n    } else if (format === 'time-ago-abbreviated') {\n      dateString = _ftDateFormat.default.timeAgo(date, {\n        abbreviated: true\n      });\n      labelString = _ftDateFormat.default.timeAgo(date);\n    } else if (format === 'time-ago-abbreviated-limit-4-hours') {\n      dateString = _ftDateFormat.default.timeAgo(date, {\n        abbreviated: true,\n        limit: 4 * _ftDateFormat.default.inSeconds.hour\n      });\n      labelString = _ftDateFormat.default.timeAgo(date, {\n        limit: 4 * _ftDateFormat.default.inSeconds.hour\n      });\n    } else if (format === 'time-ago-no-seconds') {\n      dateString = _ftDateFormat.default.timeAgoNoSeconds(date);\n    } else if (format !== null) {\n      dateString = _ftDateFormat.default.format(date, format);\n    } else {\n      dateString = _ftDateFormat.default.ftTime(date);\n    } // To avoid triggering a parent live region unnecessarily\n    // <https://github.com/Financial-Times/o-date/pull/43>\n\n\n    var hasSingleTextNode = printer.childNodes.length === 1 && printer.firstChild && printer.firstChild.nodeType === 3;\n\n    if (hasSingleTextNode) {\n      printer.firstChild.nodeValue = dateString;\n    } else {\n      printer.innerHTML = dateString;\n    }\n\n    if (dateString) {\n      printer.setAttribute('aria-label', labelString || dateString);\n    } else {\n      printer.removeAttribute('aria-label');\n    }\n  }\n  /**\n   * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n   * @return {String} - A formatted date or empty string.\n   */\n\n\n  static toDate() {\n    ftDateFormatWarning('toDate');\n    return _ftDateFormat.default.toDate(...arguments);\n  }\n  /**\n   * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n   * @return {String} - A formatted date or empty string.\n   */\n\n\n  static format() {\n    ftDateFormatWarning('format');\n    return _ftDateFormat.default.format(...arguments);\n  }\n  /**\n   * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n   * @return {String} - A formatted date or empty string.\n   */\n\n\n  static getSecondsBetween() {\n    ftDateFormatWarning('getSecondsBetween');\n    return _ftDateFormat.default.getSecondsBetween(...arguments);\n  }\n  /**\n   * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n   * @return {String} - A formatted date or empty string.\n   */\n\n\n  static ftTime() {\n    ftDateFormatWarning('ftTime');\n    return _ftDateFormat.default.ftTime(...arguments);\n  }\n  /**\n   * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n   * @return {String} - A formatted date or empty string.\n   */\n\n\n  static isNearFuture() {\n    ftDateFormatWarning('isNearFuture');\n    return _ftDateFormat.default.isNearFuture(...arguments);\n  }\n  /**\n   * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n   * @return {String} - A formatted date or empty string.\n   */\n\n\n  static isFarFuture() {\n    ftDateFormatWarning('isFarFuture');\n    return _ftDateFormat.default.isFarFuture(...arguments);\n  }\n  /**\n   * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n   * @return {String} - A formatted date or empty string.\n   */\n\n\n  static isToday() {\n    ftDateFormatWarning('isToday');\n    return _ftDateFormat.default.isToday(...arguments);\n  }\n  /**\n   * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n   * @return {String} - A formatted date or empty string.\n   */\n\n\n  static isYesterday() {\n    ftDateFormatWarning('isYesterday');\n    return _ftDateFormat.default.isYesterday(...arguments);\n  }\n  /**\n   * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n   * @return {String} - A formatted date or empty string.\n   */\n\n\n  static timeAgo() {\n    ftDateFormatWarning('timeAgo');\n    return _ftDateFormat.default.timeAgo(...arguments);\n  }\n  /**\n   * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n   * @return {String} - A formatted date or empty string.\n   */\n\n\n  static asTodayOrYesterdayOrNothing() {\n    ftDateFormatWarning('asTodayOrYesterdayOrNothing');\n    return _ftDateFormat.default.asTodayOrYesterdayOrNothing(...arguments);\n  }\n  /**\n   * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n   * @return {String} - A formatted date or empty string.\n   */\n\n\n  static timeAgoNoSeconds() {\n    ftDateFormatWarning('timeAgoNoSeconds');\n    return _ftDateFormat.default.timeAgoNoSeconds(...arguments);\n  }\n\n}\n\nvar _default = ODate;\nexports.default = _default;\nmodule.exports = exports.default;","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;","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;","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;","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n  var context = new Axios(defaultConfig);\n  var instance = bind(Axios.prototype.request, context);\n\n  // Copy axios.prototype to instance\n  utils.extend(instance, Axios.prototype, context);\n\n  // Copy context to instance\n  utils.extend(instance, context);\n\n  return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n  return createInstance(utils.merge(defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n  return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","/*!\n * Determine if an object is a Buffer\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */\n\nmodule.exports = function isBuffer (obj) {\n  return obj != null && obj.constructor != null &&\n    typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n","'use strict';\n\nvar defaults = require('./../defaults');\nvar utils = require('./../utils');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n  this.defaults = instanceConfig;\n  this.interceptors = {\n    request: new InterceptorManager(),\n    response: new InterceptorManager()\n  };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n  /*eslint no-param-reassign:0*/\n  // Allow for axios('example/url'[, config]) a la fetch API\n  if (typeof config === 'string') {\n    config = utils.merge({\n      url: arguments[0]\n    }, arguments[1]);\n  }\n\n  config = utils.merge(defaults, {method: 'get'}, this.defaults, config);\n  config.method = config.method.toLowerCase();\n\n  // Hook up interceptors middleware\n  var chain = [dispatchRequest, undefined];\n  var promise = Promise.resolve(config);\n\n  this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n    chain.unshift(interceptor.fulfilled, interceptor.rejected);\n  });\n\n  this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n    chain.push(interceptor.fulfilled, interceptor.rejected);\n  });\n\n  while (chain.length) {\n    promise = promise.then(chain.shift(), chain.shift());\n  }\n\n  return promise;\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n  /*eslint func-names:0*/\n  Axios.prototype[method] = function(url, config) {\n    return this.request(utils.merge(config || {}, {\n      method: method,\n      url: url\n    }));\n  };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  /*eslint func-names:0*/\n  Axios.prototype[method] = function(url, data, config) {\n    return this.request(utils.merge(config || {}, {\n      method: method,\n      url: url,\n      data: data\n    }));\n  };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n  utils.forEach(headers, function processHeader(value, name) {\n    if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n      headers[normalizedName] = value;\n      delete headers[name];\n    }\n  });\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n  var validateStatus = response.config.validateStatus;\n  // Note: status is not exposed by XDomainRequest\n  if (!response.status || !validateStatus || validateStatus(response.status)) {\n    resolve(response);\n  } else {\n    reject(createError(\n      'Request failed with status code ' + response.status,\n      response.config,\n      null,\n      response.request,\n      response\n    ));\n  }\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n  error.config = config;\n  if (code) {\n    error.code = code;\n  }\n  error.request = request;\n  error.response = response;\n  return error;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n  return encodeURIComponent(val).\n    replace(/%40/gi, '@').\n    replace(/%3A/gi, ':').\n    replace(/%24/g, '$').\n    replace(/%2C/gi, ',').\n    replace(/%20/g, '+').\n    replace(/%5B/gi, '[').\n    replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n  /*eslint no-param-reassign:0*/\n  if (!params) {\n    return url;\n  }\n\n  var serializedParams;\n  if (paramsSerializer) {\n    serializedParams = paramsSerializer(params);\n  } else if (utils.isURLSearchParams(params)) {\n    serializedParams = params.toString();\n  } else {\n    var parts = [];\n\n    utils.forEach(params, function serialize(val, key) {\n      if (val === null || typeof val === 'undefined') {\n        return;\n      }\n\n      if (utils.isArray(val)) {\n        key = key + '[]';\n      } else {\n        val = [val];\n      }\n\n      utils.forEach(val, function parseValue(v) {\n        if (utils.isDate(v)) {\n          v = v.toISOString();\n        } else if (utils.isObject(v)) {\n          v = JSON.stringify(v);\n        }\n        parts.push(encode(key) + '=' + encode(v));\n      });\n    });\n\n    serializedParams = parts.join('&');\n  }\n\n  if (serializedParams) {\n    url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n  }\n\n  return url;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n  'age', 'authorization', 'content-length', 'content-type', 'etag',\n  'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n  'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n  'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n  var parsed = {};\n  var key;\n  var val;\n  var i;\n\n  if (!headers) { return parsed; }\n\n  utils.forEach(headers.split('\\n'), function parser(line) {\n    i = line.indexOf(':');\n    key = utils.trim(line.substr(0, i)).toLowerCase();\n    val = utils.trim(line.substr(i + 1));\n\n    if (key) {\n      if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n        return;\n      }\n      if (key === 'set-cookie') {\n        parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n      } else {\n        parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n      }\n    }\n  });\n\n  return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n  utils.isStandardBrowserEnv() ?\n\n  // Standard browser envs have full support of the APIs needed to test\n  // whether the request URL is of the same origin as current location.\n  (function standardBrowserEnv() {\n    var msie = /(msie|trident)/i.test(navigator.userAgent);\n    var urlParsingNode = document.createElement('a');\n    var originURL;\n\n    /**\n    * Parse a URL to discover it's components\n    *\n    * @param {String} url The URL to be parsed\n    * @returns {Object}\n    */\n    function resolveURL(url) {\n      var href = url;\n\n      if (msie) {\n        // IE needs attribute set twice to normalize properties\n        urlParsingNode.setAttribute('href', href);\n        href = urlParsingNode.href;\n      }\n\n      urlParsingNode.setAttribute('href', href);\n\n      // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n      return {\n        href: urlParsingNode.href,\n        protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n        host: urlParsingNode.host,\n        search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n        hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n        hostname: urlParsingNode.hostname,\n        port: urlParsingNode.port,\n        pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n                  urlParsingNode.pathname :\n                  '/' + urlParsingNode.pathname\n      };\n    }\n\n    originURL = resolveURL(window.location.href);\n\n    /**\n    * Determine if a URL shares the same origin as the current location\n    *\n    * @param {String} requestURL The URL to test\n    * @returns {boolean} True if URL shares the same origin, otherwise false\n    */\n    return function isURLSameOrigin(requestURL) {\n      var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n      return (parsed.protocol === originURL.protocol &&\n            parsed.host === originURL.host);\n    };\n  })() :\n\n  // Non standard browser envs (web workers, react-native) lack needed support.\n  (function nonStandardBrowserEnv() {\n    return function isURLSameOrigin() {\n      return true;\n    };\n  })()\n);\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n  utils.isStandardBrowserEnv() ?\n\n  // Standard browser envs support document.cookie\n  (function standardBrowserEnv() {\n    return {\n      write: function write(name, value, expires, path, domain, secure) {\n        var cookie = [];\n        cookie.push(name + '=' + encodeURIComponent(value));\n\n        if (utils.isNumber(expires)) {\n          cookie.push('expires=' + new Date(expires).toGMTString());\n        }\n\n        if (utils.isString(path)) {\n          cookie.push('path=' + path);\n        }\n\n        if (utils.isString(domain)) {\n          cookie.push('domain=' + domain);\n        }\n\n        if (secure === true) {\n          cookie.push('secure');\n        }\n\n        document.cookie = cookie.join('; ');\n      },\n\n      read: function read(name) {\n        var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n        return (match ? decodeURIComponent(match[3]) : null);\n      },\n\n      remove: function remove(name) {\n        this.write(name, '', Date.now() - 86400000);\n      }\n    };\n  })() :\n\n  // Non standard browser env (web workers, react-native) lack needed support.\n  (function nonStandardBrowserEnv() {\n    return {\n      write: function write() {},\n      read: function read() { return null; },\n      remove: function remove() {}\n    };\n  })()\n);\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n  this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n  this.handlers.push({\n    fulfilled: fulfilled,\n    rejected: rejected\n  });\n  return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n  if (this.handlers[id]) {\n    this.handlers[id] = null;\n  }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n  utils.forEach(this.handlers, function forEachHandler(h) {\n    if (h !== null) {\n      fn(h);\n    }\n  });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar isAbsoluteURL = require('./../helpers/isAbsoluteURL');\nvar combineURLs = require('./../helpers/combineURLs');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n  if (config.cancelToken) {\n    config.cancelToken.throwIfRequested();\n  }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n  throwIfCancellationRequested(config);\n\n  // Support baseURL config\n  if (config.baseURL && !isAbsoluteURL(config.url)) {\n    config.url = combineURLs(config.baseURL, config.url);\n  }\n\n  // Ensure headers exist\n  config.headers = config.headers || {};\n\n  // Transform request data\n  config.data = transformData(\n    config.data,\n    config.headers,\n    config.transformRequest\n  );\n\n  // Flatten headers\n  config.headers = utils.merge(\n    config.headers.common || {},\n    config.headers[config.method] || {},\n    config.headers || {}\n  );\n\n  utils.forEach(\n    ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n    function cleanHeaderConfig(method) {\n      delete config.headers[method];\n    }\n  );\n\n  var adapter = config.adapter || defaults.adapter;\n\n  return adapter(config).then(function onAdapterResolution(response) {\n    throwIfCancellationRequested(config);\n\n    // Transform response data\n    response.data = transformData(\n      response.data,\n      response.headers,\n      config.transformResponse\n    );\n\n    return response;\n  }, function onAdapterRejection(reason) {\n    if (!isCancel(reason)) {\n      throwIfCancellationRequested(config);\n\n      // Transform response data\n      if (reason && reason.response) {\n        reason.response.data = transformData(\n          reason.response.data,\n          reason.response.headers,\n          config.transformResponse\n        );\n      }\n    }\n\n    return Promise.reject(reason);\n  });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n  /*eslint no-param-reassign:0*/\n  utils.forEach(fns, function transform(fn) {\n    data = fn(data, headers);\n  });\n\n  return data;\n};\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n  // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n  // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n  // by any combination of letters, digits, plus, period, or hyphen.\n  return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n  return relativeURL\n    ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n    : baseURL;\n};\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n  if (typeof executor !== 'function') {\n    throw new TypeError('executor must be a function.');\n  }\n\n  var resolvePromise;\n  this.promise = new Promise(function promiseExecutor(resolve) {\n    resolvePromise = resolve;\n  });\n\n  var token = this;\n  executor(function cancel(message) {\n    if (token.reason) {\n      // Cancellation has already been requested\n      return;\n    }\n\n    token.reason = new Cancel(message);\n    resolvePromise(token.reason);\n  });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n  if (this.reason) {\n    throw this.reason;\n  }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n  var cancel;\n  var token = new CancelToken(function executor(c) {\n    cancel = c;\n  });\n  return {\n    token: token,\n    cancel: cancel\n  };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n *  ```js\n *  function f(x, y, z) {}\n *  var args = [1, 2, 3];\n *  f.apply(null, args);\n *  ```\n *\n * With `spread` this example can be re-written.\n *\n *  ```js\n *  spread(function(x, y, z) {})([1, 2, 3]);\n *  ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n  return function wrap(arr) {\n    return callback.apply(null, arr);\n  };\n};\n"],"sourceRoot":""}