{"version":3,"sources":["../node_modules/lodash/isInteger.js","../node_modules/lodash/toInteger.js","../node_modules/lodash/toFinite.js","../node_modules/lodash/toNumber.js","../node_modules/lodash/_baseTrim.js","../node_modules/lodash/_trimmedEndIndex.js","../node_modules/lodash/isSymbol.js","../node_modules/d3-contour/node_modules/d3-array/src/ascending.js","../node_modules/d3-contour/node_modules/d3-array/src/bisect.js","../node_modules/d3-contour/node_modules/d3-array/src/bisector.js","../node_modules/d3-contour/node_modules/d3-array/src/cross.js","../node_modules/d3-contour/node_modules/d3-array/src/array.js","../node_modules/d3-contour/node_modules/d3-array/src/ticks.js","../node_modules/d3-contour/src/array.js","../node_modules/canvas-heatmap/node_modules/d3-contour/src/array.js","../node_modules/canvas-heatmap/node_modules/d3-contour/src/ascending.js","../node_modules/canvas-heatmap/node_modules/d3-contour/src/constant.js","../node_modules/canvas-heatmap/node_modules/d3-contour/src/contains.js","../node_modules/canvas-heatmap/node_modules/d3-contour/src/noop.js","../node_modules/canvas-heatmap/node_modules/d3-contour/src/contours.js","../node_modules/canvas-heatmap/node_modules/d3-contour/src/area.js","../node_modules/canvas-heatmap/src/verify.js","../node_modules/canvas-heatmap/src/functions.js","../node_modules/canvas-heatmap/src/fillcanvas.js","../node_modules/canvas-heatmap/src/canvas-heatmap.js","../node_modules/interactive-slider/src/verify.js","../node_modules/interactive-slider/src/functions.js","../node_modules/interactive-slider/src/interactive-slider.js","../node_modules/detect-element-overflow/dist/esm/index.js","../node_modules/react-fit/dist/esm/shared/utils.js","../node_modules/react-fit/dist/esm/Fit.js","../node_modules/unist-util-stringify-position/index.js","../node_modules/vfile-message/index.js","../node_modules/vfile/lib/minpath.browser.js","../node_modules/vfile/lib/minproc.browser.js","../node_modules/vfile/lib/minurl.shared.js","../node_modules/vfile/lib/minurl.browser.js","../node_modules/vfile/lib/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/bail/index.js","../node_modules/unified/node_modules/is-plain-obj/index.js","../node_modules/trough/index.js","../node_modules/unified/lib/index.js","../node_modules/mdast-util-to-string/index.js","../node_modules/micromark-util-chunked/index.js","../node_modules/micromark-util-combine-extensions/index.js","../node_modules/micromark-util-character/lib/unicode-punctuation-regex.js","../node_modules/micromark-util-character/index.js","../node_modules/micromark-factory-space/index.js","../node_modules/micromark/lib/initialize/content.js","../node_modules/micromark/lib/initialize/document.js","../node_modules/micromark-core-commonmark/lib/blank-line.js","../node_modules/micromark-util-subtokenize/index.js","../node_modules/micromark-core-commonmark/lib/content.js","../node_modules/micromark/lib/initialize/flow.js","../node_modules/micromark/lib/initialize/text.js","../node_modules/micromark-util-resolve-all/index.js","../node_modules/micromark/lib/create-tokenizer.js","../node_modules/micromark-core-commonmark/lib/thematic-break.js","../node_modules/micromark-core-commonmark/lib/list.js","../node_modules/micromark-core-commonmark/lib/block-quote.js","../node_modules/micromark-factory-destination/index.js","../node_modules/micromark-factory-label/index.js","../node_modules/micromark-factory-title/index.js","../node_modules/micromark-factory-whitespace/index.js","../node_modules/micromark-util-normalize-identifier/index.js","../node_modules/micromark-core-commonmark/lib/definition.js","../node_modules/micromark-core-commonmark/lib/code-indented.js","../node_modules/micromark-core-commonmark/lib/heading-atx.js","../node_modules/micromark-core-commonmark/lib/setext-underline.js","../node_modules/micromark-util-html-tag-name/index.js","../node_modules/micromark-core-commonmark/lib/html-flow.js","../node_modules/micromark-core-commonmark/lib/code-fenced.js","../node_modules/decode-named-character-reference/node_modules/character-entities/index.js","../node_modules/decode-named-character-reference/index.js","../node_modules/micromark-core-commonmark/lib/character-reference.js","../node_modules/micromark-core-commonmark/lib/character-escape.js","../node_modules/micromark-core-commonmark/lib/line-ending.js","../node_modules/micromark-core-commonmark/lib/label-end.js","../node_modules/micromark-core-commonmark/lib/label-start-image.js","../node_modules/micromark-util-classify-character/index.js","../node_modules/micromark-core-commonmark/lib/attention.js","../node_modules/micromark-core-commonmark/lib/autolink.js","../node_modules/micromark-core-commonmark/lib/html-text.js","../node_modules/micromark-core-commonmark/lib/label-start-link.js","../node_modules/micromark-core-commonmark/lib/hard-break-escape.js","../node_modules/micromark-core-commonmark/lib/code-text.js","../node_modules/micromark/lib/constructs.js","../node_modules/micromark/lib/preprocess.js","../node_modules/micromark-util-decode-numeric-character-reference/index.js","../node_modules/micromark-util-decode-string/index.js","../node_modules/mdast-util-from-markdown/lib/index.js","../node_modules/micromark/lib/postprocess.js","../node_modules/micromark/lib/parse.js","../node_modules/remark-parse/index.js","../node_modules/remark-parse/lib/index.js","../node_modules/unist-builder/index.js","../node_modules/unist-util-is/index.js","../node_modules/unist-util-visit-parents/index.js","../node_modules/unist-util-visit/index.js","../node_modules/unist-util-position/index.js","../node_modules/mdast-util-definitions/index.js","../node_modules/mdast-util-to-hast/lib/traverse.js","../node_modules/micromark-util-encode/index.js","../node_modules/micromark-util-sanitize-uri/index.js","../node_modules/mdast-util-to-hast/lib/wrap.js","../node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js","../node_modules/mdast-util-to-hast/lib/revert.js","../node_modules/mdast-util-to-hast/lib/handlers/list-item.js","../node_modules/trim-lines/index.js","../node_modules/mdast-util-to-hast/lib/handlers/index.js","../node_modules/mdast-util-to-hast/lib/handlers/blockquote.js","../node_modules/mdast-util-to-hast/lib/handlers/break.js","../node_modules/mdast-util-to-hast/lib/handlers/code.js","../node_modules/mdast-util-to-hast/lib/handlers/delete.js","../node_modules/mdast-util-to-hast/lib/handlers/emphasis.js","../node_modules/mdast-util-to-hast/lib/handlers/footnote.js","../node_modules/mdast-util-to-hast/lib/handlers/heading.js","../node_modules/mdast-util-to-hast/lib/handlers/html.js","../node_modules/mdast-util-to-hast/lib/handlers/image-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/image.js","../node_modules/mdast-util-to-hast/lib/handlers/inline-code.js","../node_modules/mdast-util-to-hast/lib/handlers/link-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/link.js","../node_modules/mdast-util-to-hast/lib/handlers/list.js","../node_modules/mdast-util-to-hast/lib/handlers/paragraph.js","../node_modules/mdast-util-to-hast/lib/handlers/root.js","../node_modules/mdast-util-to-hast/lib/handlers/strong.js","../node_modules/mdast-util-to-hast/lib/handlers/table.js","../node_modules/mdast-util-to-hast/lib/handlers/text.js","../node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js","../node_modules/mdast-util-to-hast/lib/index.js","../node_modules/unist-util-generated/index.js","../node_modules/mdast-util-to-hast/lib/footer.js","../node_modules/remark-rehype/lib/index.js","../node_modules/react-markdown/node_modules/property-information/lib/util/schema.js","../node_modules/react-markdown/node_modules/property-information/lib/util/merge.js","../node_modules/react-markdown/node_modules/property-information/lib/normalize.js","../node_modules/react-markdown/node_modules/property-information/lib/util/info.js","../node_modules/react-markdown/node_modules/property-information/lib/util/types.js","../node_modules/react-markdown/node_modules/property-information/lib/util/defined-info.js","../node_modules/react-markdown/node_modules/property-information/lib/util/create.js","../node_modules/react-markdown/node_modules/property-information/lib/xlink.js","../node_modules/react-markdown/node_modules/property-information/lib/xml.js","../node_modules/react-markdown/node_modules/property-information/lib/util/case-sensitive-transform.js","../node_modules/react-markdown/node_modules/property-information/lib/util/case-insensitive-transform.js","../node_modules/react-markdown/node_modules/property-information/lib/xmlns.js","../node_modules/react-markdown/node_modules/property-information/lib/aria.js","../node_modules/react-markdown/node_modules/property-information/lib/html.js","../node_modules/react-markdown/node_modules/property-information/lib/svg.js","../node_modules/react-markdown/node_modules/property-information/index.js","../node_modules/react-markdown/lib/rehype-filter.js","../node_modules/react-markdown/lib/uri-transformer.js","../node_modules/hast-util-whitespace/index.js","../node_modules/react-markdown/node_modules/property-information/lib/find.js","../node_modules/react-markdown/node_modules/property-information/lib/hast-to-react.js","../node_modules/react-markdown/lib/ast-to-react.js","../node_modules/react-markdown/node_modules/comma-separated-tokens/index.js","../node_modules/react-markdown/node_modules/space-separated-tokens/index.js","../node_modules/react-markdown/lib/react-markdown.js","../node_modules/date-fns/esm/_lib/requiredArgs/index.js","../node_modules/date-fns/esm/isDate/index.js","../node_modules/date-fns/esm/toDate/index.js","../node_modules/date-fns/esm/isValid/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","../node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","../node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","../node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","../node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","../node_modules/date-fns/esm/locale/en-US/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","../node_modules/date-fns/esm/_lib/toInteger/index.js","../node_modules/date-fns/esm/addMilliseconds/index.js","../node_modules/date-fns/esm/subMilliseconds/index.js","../node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","../node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","../node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","../node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","../node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","../node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","../node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","../node_modules/date-fns/esm/_lib/format/formatters/index.js","../node_modules/date-fns/esm/_lib/getUTCWeek/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","../node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","../node_modules/date-fns/esm/_lib/format/longFormatters/index.js","../node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","../node_modules/date-fns/esm/_lib/protectedTokens/index.js","../node_modules/date-fns/esm/format/index.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/shared/propTypes.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/shared/dates.js","../node_modules/react-time-picker/dist/shared/propTypes.js","../node_modules/react-time-picker/dist/shared/utils.js","../node_modules/react-date-picker/dist/shared/utils.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/shared/dateFormatter.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/TileGroup.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/Tile.js","../node_modules/react-date-picker/dist/shared/propTypes.js","../node_modules/react-time-picker/dist/TimeInput/Input.js","../node_modules/mdurl/encode.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/Flex.js","../node_modules/react-clock/dist/shared/propTypes.js","../node_modules/react-date-picker/dist/DateInput/Input.js","../node_modules/react-time-picker/dist/shared/dates.js","../node_modules/react-datetime-picker/dist/shared/propTypes.js","../node_modules/react-datetime-picker/dist/entry.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/CenturyView.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/shared/utils.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/DecadeView.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/YearView.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/MonthView.js","../node_modules/update-input-width/dist/esm/index.js","../node_modules/react-datetime-picker/dist/shared/utils.js","../node_modules/react-datetime-picker/dist/DateTimePicker.js","../node_modules/make-event-props/dist/esm/index.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/entry.nostyle.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/Calendar.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/Calendar/Navigation.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/CenturyView/Decades.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/CenturyView/Decade.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/DecadeView/Years.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/DecadeView/Year.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/YearView/Months.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/YearView/Month.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/MonthView/Days.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/MonthView/Day.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/MonthView/Weekdays.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/MonthView/WeekNumbers.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/MonthView/WeekNumber.js","../node_modules/react-clock/dist/entry.nostyle.js","../node_modules/react-clock/dist/Clock.js","../node_modules/react-clock/dist/Hand.js","../node_modules/react-clock/dist/shared/utils.js","../node_modules/react-clock/dist/Mark.js","../node_modules/react-clock/dist/shared/dates.js","../node_modules/react-datetime-picker/dist/DateTimeInput.js","../node_modules/react-date-picker/dist/DateInput/DayInput.js","../node_modules/react-date-picker/dist/DateInput/MonthInput.js","../node_modules/react-date-picker/dist/DateInput/MonthSelect.js","../node_modules/react-date-picker/dist/shared/dateFormatter.js","../node_modules/react-date-picker/dist/DateInput/YearInput.js","../node_modules/react-time-picker/dist/TimeInput/Hour12Input.js","../node_modules/react-time-picker/dist/shared/dateFormatter.js","../node_modules/react-time-picker/dist/TimeInput/Hour24Input.js","../node_modules/react-time-picker/dist/TimeInput/MinuteInput.js","../node_modules/react-time-picker/dist/TimeInput/SecondInput.js","../node_modules/react-time-picker/dist/TimeInput/AmPm.js","../node_modules/react-datetime-picker/dist/Divider.js","../node_modules/react-datetime-picker/dist/DateTimeInput/NativeInput.js","../node_modules/react-datetime-picker/dist/shared/dateFormatter.js","../node_modules/react-datetime-picker/dist/shared/dates.js","../node_modules/unified/node_modules/is-buffer/index.js","../node_modules/extend/index.js","../node_modules/vfile/node_modules/is-buffer/index.js","../node_modules/react-markdown/node_modules/react-is/index.js","../node_modules/react-markdown/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/style-to-object/index.js","../node_modules/inline-style-parser/index.js","../node_modules/react-syntax-highlighter/dist/esm/languages/hljs/javascript.js","../node_modules/react-syntax-highlighter/dist/esm/languages/hljs/python.js","../node_modules/react-syntax-highlighter/dist/esm/languages/hljs/r.js","../node_modules/react-syntax-highlighter/dist/esm/styles/hljs/github.js"],"names":["toInteger","require","module","exports","value","toFinite","result","remainder","toNumber","baseTrim","isObject","isSymbol","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","other","valueOf","isBinary","test","slice","trimmedEndIndex","reTrimStart","string","replace","reWhitespace","index","length","charAt","baseGetTag","isObjectLike","a","b","NaN","ascendingBisect","compare","f","d","x","ascending","left","lo","hi","mid","right","bisector","array","Array","prototype","map","Math","sqrt","ring","hole","c","i","n","ringContains","point","y","contains","j","pi","xi","yi","pj","xj","yj","segmentContains","p","q","r","collinear","cases","dx","dy","threshold","thresholdSturges","smooth","smoothLinear","contours","values","tz","isArray","sort","domain","extent","start","stop","tickStep","range","floor","contour","polygons","holes","callback","t0","t1","t2","t3","fragmentByStart","fragmentByEnd","forEach","stitch","line","g","end","startIndex","endIndex","push","concat","unshift","isorings","area","polygon","type","coordinates","v0","xt","yt","v1","size","_","arguments","_0","_1","Error","thresholds","constant","call","noop","verifyString","verifyNumber","number","isNaN","verifyNone","verifyBool","bool","verifyColors","colors","verifyFunction","verifyDiv","div","select","_groups","verifyData","data","z","hex","s","round","min","max","getRGBAColor","colorCache","cacheKey","has","get","loc","set","low","high","color1","rgba","color2","factor","rgb","closest","num","arr","curr","diff","abs","val","newdiff","isNumeric","parseFloat","isFinite","indexOfClosest","filter","getFileIndex","scales","formatDate","lang","months","shortMonths","year","getFullYear","month","getMonth","date","getDate","hour","getHours","getMinutes","String","formatNumber","decimals","fact","toExponential","languageOptions","name","de","decimal","thousands","grouping","currency","dateTime","time","periods","days","shortDays","en","fr","es","it","console","error","scientificNotation","canvasGrid","scaleX","scaleY","xDomain","yDomain","context","options","putImgDataSingleMatrix","putImgDataMultMatrix","canvasContour","prepContours","fill","baseContour","mainContour","nanContour","geometry","plotdata","fixedColor","color","v","step","zMin","zMax","fillStyle","beginPath","moveTo","getXfromIndex","getYfromIndex","lineTo","closePath","e","highh","lowh","highw","loww","l","rgbacolor","dataypix","dataxpix","indexypix","indexxpix","canvasHeight","canvasWidth","pixelMapping","imgData","createImageData","yReverse","xReverse","putImageData","ypix","xpix","xstart","ceil","xend","ystart","yend","k","pixelMappingArray","xTime","Date","getTime","yTime","processOptions","userOptions","defaultOptions","default","verify","node","getBoundingClientRect","width","height","undefined","marginLeft","fontSize","legendRight","marginRight","marginBottom","title","marginTop","JSON","parse","stringify","trim","substring","convertToRGB","Map","prepareContours","nullData","zDomain","thresholdStep","cr","flat","nullValues","replaceNull","getDomain","minarr","maxarr","dataExtents","xFileDomain","yFileDomain","zFileDomain","h","xext","yext","includes","apply","addSVG","append","attr","style","addCanvas","getContext","addXAxis","svg","ax","xrange","xAxisLabel","xLabel","xUnit","scaleTime","xLog","scaleLog","scaleLinear","ref","copy","base","axis","axisBottom","ticks","tickFormat","multiFormat","format","text","addYAxis","yrange","yAxisLabel","yLabel","yUnit","yLog","axisLeft","addTitle","addBackground","backgroundColor","addLegendRight","defs","ndp","t5","t4","svgGradient","zLabel","zAxisLabel","zUnit","addTooltip","zoombox","xAxis","yAxis","tooltip","symbolGenerator","symbol","symbolTriangle","vpi","levels","language","on","event","xval","yval","hoverX","invert","layerX","offsetX","hoverY","layerY","offsetY","idx","process","xu","yu","zu","zval","html","decimalPlaces","hover","mousex","mousey","selectAll","remove","yp","click","addZoom","zoom","d3zoom","t","transform","zoomIdentity","rescaleX","scale","rescaleY","clearRect","zoomx","zoomboxx","zoomy","zoomboxy","downloadGraph","str","XMLSerializer","serializeToString","document","getElementById","canvasout","createElement","contextout","image","Image","onerror","alert","onload","drawImage","download","href","toDataURL","src","encodeURIComponent","autoDownSample","ads","l1","l2","d1","d2","z_ds","y_ds","zz_ds","x_ds","formatMillisecond","timeFormat","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","formatYear","timeSecond","timeMinute","timeHour","timeDay","timeMonth","timeWeek","timeYear","heatmap","timeFormatDefaultLocale","setDownloadGraph","setDownloadGraphDiv","autoDownsample","setTimeout","verifyType","verifyInput","input","optionList","warn","handleWidth","addAxis","tickPadding","addAvailability","plotAvailability","availability","enter","barHeight","barColor","addFocus","handleHeight","addHandles","drag","d3drag","id","this","upper","lower","plotTooltip","onChange","plotHandles","handles","mouseover","mousemove","mouseout","pointer","tooltipText","tooltipwidth","addEventbox","Axis","gX","zoomed","zoomEnd","onclick","onZoom","moveHandles","focushandle","slider","getRect","element","detectElementOverflow","container","top","bottom","consoleOnDev","method","warnOnDev","_len2","message","_key2","_excluded","_classCallCheck","instance","Constructor","TypeError","_defineProperties","target","props","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_setPrototypeOf","o","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","constructor","_possibleConstructorReturn","self","_typeof","_assertThisInitialized","ReferenceError","getPrototypeOf","_objectWithoutProperties","source","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","ownKeys","object","enumerableOnly","symbols","sym","getOwnPropertyDescriptor","_objectSpread","_defineProperty","getOwnPropertyDescriptors","defineProperties","obj","Symbol","iterator","isBrowser","window","isDisplayContentsSupported","CSS","supports","isMutationObserverSupported","capitalize","toUpperCase","findScrollContainer","parent","parentElement","getComputedStyle","overflow","split","every","documentElement","alignAxis","_ref","invertAxis","secondary","scrollContainer","spacing","scrollContainerCollisions","documentCollisions","isX","startProperty","endProperty","sizeProperty","overflowStartProperty","overflowEndProperty","scrollProperty","uppercasedSizeProperty","offsetSizeProperty","clientSizeProperty","minSizeProperty","scrollbarWidth","startSpacing","availableStartSpace","endSpacing","availableEndSpace","offsetSize","displayStart","displayEnd","displayIfFits","availableSpace","display","fits","displayStartIfFits","displayEndIfFits","moreSpaceStart","minSize","shrinkToSize","newSize","displayWhereverShrinkedFits","alignBothAxis","args","invertSecondaryAxis","commonArgs","alignMainAxis","alignSecondaryAxis","Fit","_Component","subClass","superClass","create","_inherits","protoProps","staticProps","_super","_this","_len","_key","fit","MutationObserver","onMutation","_assertThisInitialize","elementWidth","clientWidth","elementHeight","clientHeight","position","parentPosition","_this$props","mainAxis","findDOMNode","mutationObserver","observe","attributes","attributeFilter","_this2","children","child","React","Children","only","firstChild","Component","propTypes","PropTypes","oneOf","oneOfType","shape","isRequired","defaultProps","stringifyPosition","column","pos","VFileMessage","reason","place","origin","parts","stack","fatal","ruleId","actual","expected","file","url","note","path","basename","ext","assertPath","seenNonSlash","charCodeAt","firstNonSlashEnd","extIndex","dirname","unmatchedSlash","extname","startPart","startDot","preDotState","code","join","joined","segments","normalize","sep","absolute","allowAboveRoot","lastSlashIndex","lastSegmentLength","lastSlash","dots","lastIndexOf","normalizeString","proc","cwd","isUrl","fileURLOrPath","urlToPath","URL","protocol","hostname","pathname","third","decodeURIComponent","getPathFromURLPosix","order","VFile","buffer","messages","history","stored","prop","assertNonEmpty","assertPart","stem","encoding","toString","part","_toArray","arrayWithHoles","iterableToArray","unsupportedIterableToArray","nonIterableRest","bail","isPlainObject","toStringTag","wrap","middleware","called","parameters","fnExpectsCallback","done","exception","Promise","then","output","unified","frozen","transformers","fns","pipeline","run","middlewareIndex","pop","next","fn","use","middelware","trough","attachers","namespace","freezeIndex","processor","assertUnfrozen","own","Parser","Compiler","freeze","attacher","transformer","Number","POSITIVE_INFINITY","settings","addPlugin","addList","addPreset","assign","add","plugin","plugins","entry","isPlainObj","extend","doc","vfile","assertParser","newable","assertCompiler","assertNode","compile","executor","resolve","reject","tree","runSync","complete","assertDone","isBuffer","processSync","destination","hasOwnProperty","asyncName","looksLikeAVFile","includeImageAlt","one","alt","all","splice","list","items","chunkStart","from","combineExtensions","extensions","syntaxExtension","extension","hook","constructs","existing","before","asciiAlpha","regexCheck","asciiDigit","asciiHexDigit","asciiAlphanumeric","asciiPunctuation","asciiAtext","asciiControl","markdownLineEndingOrSpace","markdownLineEnding","markdownSpace","unicodeWhitespace","unicodePunctuation","regex","fromCharCode","factorySpace","effects","ok","limit","prefix","consume","exit","content","tokenize","previous","contentStart","attempt","parser","contentInitial","lineStart","token","contentType","childFlow","childToken","lineStartOffset","continued","item","containerState","continuation","documentContinue","checkNewContainers","_closeFlow","closeFlow","indexBeforeExits","events","indexBeforeFlow","exitContainers","documentContinued","currentConstruct","concrete","flowStart","interrupt","_gfmTableDynamicInterruptHack","check","containerConstruct","thereIsANewContainer","thereIsNoNewContainer","lazy","now","offset","containerContinue","flow","_tokenizer","flowContinue","writeToChild","eof","stream","sliceStream","defineSkip","write","seen","nok","disable","null","blankLine","partial","subtokenize","lineIndex","otherIndex","otherEvent","subevents","more","jumps","_isInFirstContentOfListItem","subcontent","_container","eventIndex","startPosition","startPositions","tokenizer","childEvents","gaps","current","adjust","breaks","_gfmTasklistFirstContentOfListItem","contentEnd","continuationConstruct","contentContinue","prefixed","tail","sliceSerialize","initial","flowInitial","afterConstruct","resolver","resolveAll","createResolver","initializeFactory","field","notText","atBreak","resolveAllLineSuffixes","extraResolver","chunks","bufferIndex","tabs","chunk","_index","_bufferIndex","createTokenizer","initialize","columnStart","resolveAllConstructs","accountForPotentialSkip","fields","constructFactory","info","addResult","onsuccessfulcheck","expandTabs","atTab","serializeChunks","main","state","view","startBufferIndex","endBufferIndex","sliceChunks","chunkIndex","go","restore","onreturn","returnState","bogusState","listOfConstructs","constructIndex","handleListOfConstructs","def","handleConstruct","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","store","resolveTo","thematicBreak","marker","sequence","initialSize","kind","atMarker","inside","onBlank","listItemPrefixWhitespaceConstruct","endOfPrefix","otherPrefix","initialBlankLine","furtherBlankLines","notInCurrentItem","indentConstruct","blockQuote","open","after","factoryDestination","literalType","literalMarkerType","rawType","stringType","balance","destinationEnclosedBefore","destinationRaw","destinationEnclosed","destinationEnclosedEscape","destinationRawEscape","factoryLabel","markerType","label","labelEscape","factoryTitle","atFirstTitleBreak","atTitleBreak","titleEscape","factoryWhitespace","normalizeIdentifier","toLowerCase","definition","identifier","labelAfter","titleConstruct","defined","codeIndented","afterStartPrefix","afterPrefix","indentedContent","headingAtx","fenceOpenInside","headingBreak","setextUnderline","paragraph","closingSequence","closingSequenceEnd","heading","htmlBlockNames","htmlRawNames","htmlFlow","startTag","declarationStart","tagCloseStart","continuationDeclarationInside","tagName","commentOpenInside","cdataOpenInside","basicSelfClosing","completeAttributeNameBefore","completeClosingTagAfter","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCharacterDataInside","continuationAtLineEnding","nextBlankConstruct","htmlContinueStart","htmlLineEnd","continuationRawEndTag","codeFenced","closingFenceConstruct","sizeOpen","nonLazyLine","initialPrefix","sequenceOpen","infoOpen","openAfter","infoAfter","meta","characterEntities","AElig","AMP","Aacute","Abreve","Acirc","Acy","Afr","Agrave","Alpha","Amacr","And","Aogon","Aopf","ApplyFunction","Aring","Ascr","Assign","Atilde","Auml","Backslash","Barv","Barwed","Bcy","Because","Bernoullis","Beta","Bfr","Bopf","Breve","Bscr","Bumpeq","CHcy","COPY","Cacute","Cap","CapitalDifferentialD","Cayleys","Ccaron","Ccedil","Ccirc","Cconint","Cdot","Cedilla","CenterDot","Cfr","Chi","CircleDot","CircleMinus","CirclePlus","CircleTimes","ClockwiseContourIntegral","CloseCurlyDoubleQuote","CloseCurlyQuote","Colon","Colone","Congruent","Conint","ContourIntegral","Copf","Coproduct","CounterClockwiseContourIntegral","Cross","Cscr","Cup","CupCap","DD","DDotrahd","DJcy","DScy","DZcy","Dagger","Darr","Dashv","Dcaron","Dcy","Del","Delta","Dfr","DiacriticalAcute","DiacriticalDot","DiacriticalDoubleAcute","DiacriticalGrave","DiacriticalTilde","Diamond","DifferentialD","Dopf","Dot","DotDot","DotEqual","DoubleContourIntegral","DoubleDot","DoubleDownArrow","DoubleLeftArrow","DoubleLeftRightArrow","DoubleLeftTee","DoubleLongLeftArrow","DoubleLongLeftRightArrow","DoubleLongRightArrow","DoubleRightArrow","DoubleRightTee","DoubleUpArrow","DoubleUpDownArrow","DoubleVerticalBar","DownArrow","DownArrowBar","DownArrowUpArrow","DownBreve","DownLeftRightVector","DownLeftTeeVector","DownLeftVector","DownLeftVectorBar","DownRightTeeVector","DownRightVector","DownRightVectorBar","DownTee","DownTeeArrow","Downarrow","Dscr","Dstrok","ENG","ETH","Eacute","Ecaron","Ecirc","Ecy","Edot","Efr","Egrave","Element","Emacr","EmptySmallSquare","EmptyVerySmallSquare","Eogon","Eopf","Epsilon","Equal","EqualTilde","Equilibrium","Escr","Esim","Eta","Euml","Exists","ExponentialE","Fcy","Ffr","FilledSmallSquare","FilledVerySmallSquare","Fopf","ForAll","Fouriertrf","Fscr","GJcy","GT","Gamma","Gammad","Gbreve","Gcedil","Gcirc","Gcy","Gdot","Gfr","Gg","Gopf","GreaterEqual","GreaterEqualLess","GreaterFullEqual","GreaterGreater","GreaterLess","GreaterSlantEqual","GreaterTilde","Gscr","Gt","HARDcy","Hacek","Hat","Hcirc","Hfr","HilbertSpace","Hopf","HorizontalLine","Hscr","Hstrok","HumpDownHump","HumpEqual","IEcy","IJlig","IOcy","Iacute","Icirc","Icy","Idot","Ifr","Igrave","Im","Imacr","ImaginaryI","Implies","Int","Integral","Intersection","InvisibleComma","InvisibleTimes","Iogon","Iopf","Iota","Iscr","Itilde","Iukcy","Iuml","Jcirc","Jcy","Jfr","Jopf","Jscr","Jsercy","Jukcy","KHcy","KJcy","Kappa","Kcedil","Kcy","Kfr","Kopf","Kscr","LJcy","LT","Lacute","Lambda","Lang","Laplacetrf","Larr","Lcaron","Lcedil","Lcy","LeftAngleBracket","LeftArrow","LeftArrowBar","LeftArrowRightArrow","LeftCeiling","LeftDoubleBracket","LeftDownTeeVector","LeftDownVector","LeftDownVectorBar","LeftFloor","LeftRightArrow","LeftRightVector","LeftTee","LeftTeeArrow","LeftTeeVector","LeftTriangle","LeftTriangleBar","LeftTriangleEqual","LeftUpDownVector","LeftUpTeeVector","LeftUpVector","LeftUpVectorBar","LeftVector","LeftVectorBar","Leftarrow","Leftrightarrow","LessEqualGreater","LessFullEqual","LessGreater","LessLess","LessSlantEqual","LessTilde","Lfr","Ll","Lleftarrow","Lmidot","LongLeftArrow","LongLeftRightArrow","LongRightArrow","Longleftarrow","Longleftrightarrow","Longrightarrow","Lopf","LowerLeftArrow","LowerRightArrow","Lscr","Lsh","Lstrok","Lt","Mcy","MediumSpace","Mellintrf","Mfr","MinusPlus","Mopf","Mscr","Mu","NJcy","Nacute","Ncaron","Ncedil","Ncy","NegativeMediumSpace","NegativeThickSpace","NegativeThinSpace","NegativeVeryThinSpace","NestedGreaterGreater","NestedLessLess","NewLine","Nfr","NoBreak","NonBreakingSpace","Nopf","Not","NotCongruent","NotCupCap","NotDoubleVerticalBar","NotElement","NotEqual","NotEqualTilde","NotExists","NotGreater","NotGreaterEqual","NotGreaterFullEqual","NotGreaterGreater","NotGreaterLess","NotGreaterSlantEqual","NotGreaterTilde","NotHumpDownHump","NotHumpEqual","NotLeftTriangle","NotLeftTriangleBar","NotLeftTriangleEqual","NotLess","NotLessEqual","NotLessGreater","NotLessLess","NotLessSlantEqual","NotLessTilde","NotNestedGreaterGreater","NotNestedLessLess","NotPrecedes","NotPrecedesEqual","NotPrecedesSlantEqual","NotReverseElement","NotRightTriangle","NotRightTriangleBar","NotRightTriangleEqual","NotSquareSubset","NotSquareSubsetEqual","NotSquareSuperset","NotSquareSupersetEqual","NotSubset","NotSubsetEqual","NotSucceeds","NotSucceedsEqual","NotSucceedsSlantEqual","NotSucceedsTilde","NotSuperset","NotSupersetEqual","NotTilde","NotTildeEqual","NotTildeFullEqual","NotTildeTilde","NotVerticalBar","Nscr","Ntilde","Nu","OElig","Oacute","Ocirc","Ocy","Odblac","Ofr","Ograve","Omacr","Omega","Omicron","Oopf","OpenCurlyDoubleQuote","OpenCurlyQuote","Or","Oscr","Oslash","Otilde","Otimes","Ouml","OverBar","OverBrace","OverBracket","OverParenthesis","PartialD","Pcy","Pfr","Phi","Pi","PlusMinus","Poincareplane","Popf","Pr","Precedes","PrecedesEqual","PrecedesSlantEqual","PrecedesTilde","Prime","Product","Proportion","Proportional","Pscr","Psi","QUOT","Qfr","Qopf","Qscr","RBarr","REG","Racute","Rang","Rarr","Rarrtl","Rcaron","Rcedil","Rcy","Re","ReverseElement","ReverseEquilibrium","ReverseUpEquilibrium","Rfr","Rho","RightAngleBracket","RightArrow","RightArrowBar","RightArrowLeftArrow","RightCeiling","RightDoubleBracket","RightDownTeeVector","RightDownVector","RightDownVectorBar","RightFloor","RightTee","RightTeeArrow","RightTeeVector","RightTriangle","RightTriangleBar","RightTriangleEqual","RightUpDownVector","RightUpTeeVector","RightUpVector","RightUpVectorBar","RightVector","RightVectorBar","Rightarrow","Ropf","RoundImplies","Rrightarrow","Rscr","Rsh","RuleDelayed","SHCHcy","SHcy","SOFTcy","Sacute","Sc","Scaron","Scedil","Scirc","Scy","Sfr","ShortDownArrow","ShortLeftArrow","ShortRightArrow","ShortUpArrow","Sigma","SmallCircle","Sopf","Sqrt","Square","SquareIntersection","SquareSubset","SquareSubsetEqual","SquareSuperset","SquareSupersetEqual","SquareUnion","Sscr","Star","Sub","Subset","SubsetEqual","Succeeds","SucceedsEqual","SucceedsSlantEqual","SucceedsTilde","SuchThat","Sum","Sup","Superset","SupersetEqual","Supset","THORN","TRADE","TSHcy","TScy","Tab","Tau","Tcaron","Tcedil","Tcy","Tfr","Therefore","Theta","ThickSpace","ThinSpace","Tilde","TildeEqual","TildeFullEqual","TildeTilde","Topf","TripleDot","Tscr","Tstrok","Uacute","Uarr","Uarrocir","Ubrcy","Ubreve","Ucirc","Ucy","Udblac","Ufr","Ugrave","Umacr","UnderBar","UnderBrace","UnderBracket","UnderParenthesis","Union","UnionPlus","Uogon","Uopf","UpArrow","UpArrowBar","UpArrowDownArrow","UpDownArrow","UpEquilibrium","UpTee","UpTeeArrow","Uparrow","Updownarrow","UpperLeftArrow","UpperRightArrow","Upsi","Upsilon","Uring","Uscr","Utilde","Uuml","VDash","Vbar","Vcy","Vdash","Vdashl","Vee","Verbar","Vert","VerticalBar","VerticalLine","VerticalSeparator","VerticalTilde","VeryThinSpace","Vfr","Vopf","Vscr","Vvdash","Wcirc","Wedge","Wfr","Wopf","Wscr","Xfr","Xi","Xopf","Xscr","YAcy","YIcy","YUcy","Yacute","Ycirc","Ycy","Yfr","Yopf","Yscr","Yuml","ZHcy","Zacute","Zcaron","Zcy","Zdot","ZeroWidthSpace","Zeta","Zfr","Zopf","Zscr","aacute","abreve","ac","acE","acd","acirc","acute","acy","aelig","af","afr","agrave","alefsym","aleph","alpha","amacr","amalg","amp","and","andand","andd","andslope","andv","ang","ange","angle","angmsd","angmsdaa","angmsdab","angmsdac","angmsdad","angmsdae","angmsdaf","angmsdag","angmsdah","angrt","angrtvb","angrtvbd","angsph","angst","angzarr","aogon","aopf","ap","apE","apacir","ape","apid","apos","approx","approxeq","aring","ascr","ast","asymp","asympeq","atilde","auml","awconint","awint","bNot","backcong","backepsilon","backprime","backsim","backsimeq","barvee","barwed","barwedge","bbrk","bbrktbrk","bcong","bcy","bdquo","becaus","because","bemptyv","bepsi","bernou","beta","beth","between","bfr","bigcap","bigcirc","bigcup","bigodot","bigoplus","bigotimes","bigsqcup","bigstar","bigtriangledown","bigtriangleup","biguplus","bigvee","bigwedge","bkarow","blacklozenge","blacksquare","blacktriangle","blacktriangledown","blacktriangleleft","blacktriangleright","blank","blk12","blk14","blk34","block","bne","bnequiv","bnot","bopf","bot","bowtie","boxDL","boxDR","boxDl","boxDr","boxH","boxHD","boxHU","boxHd","boxHu","boxUL","boxUR","boxUl","boxUr","boxV","boxVH","boxVL","boxVR","boxVh","boxVl","boxVr","boxbox","boxdL","boxdR","boxdl","boxdr","boxh","boxhD","boxhU","boxhd","boxhu","boxminus","boxplus","boxtimes","boxuL","boxuR","boxul","boxur","boxv","boxvH","boxvL","boxvR","boxvh","boxvl","boxvr","bprime","breve","brvbar","bscr","bsemi","bsim","bsime","bsol","bsolb","bsolhsub","bull","bullet","bump","bumpE","bumpe","bumpeq","cacute","cap","capand","capbrcup","capcap","capcup","capdot","caps","caret","caron","ccaps","ccaron","ccedil","ccirc","ccups","ccupssm","cdot","cedil","cemptyv","cent","centerdot","cfr","chcy","checkmark","chi","cir","cirE","circ","circeq","circlearrowleft","circlearrowright","circledR","circledS","circledast","circledcirc","circleddash","cire","cirfnint","cirmid","cirscir","clubs","clubsuit","colon","colone","coloneq","comma","commat","comp","compfn","complement","complexes","cong","congdot","conint","copf","coprod","copysr","crarr","cross","cscr","csub","csube","csup","csupe","ctdot","cudarrl","cudarrr","cuepr","cuesc","cularr","cularrp","cup","cupbrcap","cupcap","cupcup","cupdot","cupor","cups","curarr","curarrm","curlyeqprec","curlyeqsucc","curlyvee","curlywedge","curren","curvearrowleft","curvearrowright","cuvee","cuwed","cwconint","cwint","cylcty","dArr","dHar","dagger","daleth","darr","dash","dashv","dbkarow","dblac","dcaron","dcy","dd","ddagger","ddarr","ddotseq","deg","delta","demptyv","dfisht","dfr","dharl","dharr","diam","diamond","diamondsuit","diams","die","digamma","disin","divide","divideontimes","divonx","djcy","dlcorn","dlcrop","dollar","dopf","dot","doteq","doteqdot","dotminus","dotplus","dotsquare","doublebarwedge","downarrow","downdownarrows","downharpoonleft","downharpoonright","drbkarow","drcorn","drcrop","dscr","dscy","dsol","dstrok","dtdot","dtri","dtrif","duarr","duhar","dwangle","dzcy","dzigrarr","eDDot","eDot","eacute","easter","ecaron","ecir","ecirc","ecolon","ecy","edot","ee","efDot","efr","eg","egrave","egs","egsdot","el","elinters","ell","els","elsdot","emacr","empty","emptyset","emptyv","emsp13","emsp14","emsp","eng","ensp","eogon","eopf","epar","eparsl","eplus","epsi","epsilon","epsiv","eqcirc","eqcolon","eqsim","eqslantgtr","eqslantless","equals","equest","equiv","equivDD","eqvparsl","erDot","erarr","escr","esdot","esim","eta","eth","euml","euro","excl","exist","expectation","exponentiale","fallingdotseq","fcy","female","ffilig","fflig","ffllig","ffr","filig","fjlig","fllig","fltns","fnof","fopf","forall","fork","forkv","fpartint","frac12","frac13","frac14","frac15","frac16","frac18","frac23","frac25","frac34","frac35","frac38","frac45","frac56","frac58","frac78","frasl","frown","fscr","gE","gEl","gacute","gamma","gammad","gap","gbreve","gcirc","gcy","gdot","ge","gel","geq","geqq","geqslant","ges","gescc","gesdot","gesdoto","gesdotol","gesl","gesles","gfr","gg","ggg","gimel","gjcy","gl","glE","gla","glj","gnE","gnap","gnapprox","gne","gneq","gneqq","gnsim","gopf","grave","gscr","gsim","gsime","gsiml","gt","gtcc","gtcir","gtdot","gtlPar","gtquest","gtrapprox","gtrarr","gtrdot","gtreqless","gtreqqless","gtrless","gtrsim","gvertneqq","gvnE","hArr","hairsp","half","hamilt","hardcy","harr","harrcir","harrw","hbar","hcirc","hearts","heartsuit","hellip","hercon","hfr","hksearow","hkswarow","hoarr","homtht","hookleftarrow","hookrightarrow","hopf","horbar","hscr","hslash","hstrok","hybull","hyphen","iacute","ic","icirc","icy","iecy","iexcl","iff","ifr","igrave","ii","iiiint","iiint","iinfin","iiota","ijlig","imacr","imagline","imagpart","imath","imof","imped","in","incare","infin","infintie","inodot","int","intcal","integers","intercal","intlarhk","intprod","iocy","iogon","iopf","iota","iprod","iquest","iscr","isin","isinE","isindot","isins","isinsv","isinv","itilde","iukcy","iuml","jcirc","jcy","jfr","jmath","jopf","jscr","jsercy","jukcy","kappa","kappav","kcedil","kcy","kfr","kgreen","khcy","kjcy","kopf","kscr","lAarr","lArr","lAtail","lBarr","lE","lEg","lHar","lacute","laemptyv","lagran","lambda","langd","langle","lap","laquo","larr","larrb","larrbfs","larrfs","larrhk","larrlp","larrpl","larrsim","larrtl","lat","latail","late","lates","lbarr","lbbrk","lbrace","lbrack","lbrke","lbrksld","lbrkslu","lcaron","lcedil","lceil","lcub","lcy","ldca","ldquo","ldquor","ldrdhar","ldrushar","ldsh","le","leftarrow","leftarrowtail","leftharpoondown","leftharpoonup","leftleftarrows","leftrightarrow","leftrightarrows","leftrightharpoons","leftrightsquigarrow","leftthreetimes","leg","leq","leqq","leqslant","les","lescc","lesdot","lesdoto","lesdotor","lesg","lesges","lessapprox","lessdot","lesseqgtr","lesseqqgtr","lessgtr","lesssim","lfisht","lfloor","lfr","lg","lgE","lhard","lharu","lharul","lhblk","ljcy","ll","llarr","llcorner","llhard","lltri","lmidot","lmoust","lmoustache","lnE","lnap","lnapprox","lne","lneq","lneqq","lnsim","loang","loarr","lobrk","longleftarrow","longleftrightarrow","longmapsto","longrightarrow","looparrowleft","looparrowright","lopar","lopf","loplus","lotimes","lowast","lowbar","loz","lozenge","lozf","lpar","lparlt","lrarr","lrcorner","lrhar","lrhard","lrm","lrtri","lsaquo","lscr","lsh","lsim","lsime","lsimg","lsqb","lsquo","lsquor","lstrok","lt","ltcc","ltcir","ltdot","lthree","ltimes","ltlarr","ltquest","ltrPar","ltri","ltrie","ltrif","lurdshar","luruhar","lvertneqq","lvnE","mDDot","macr","male","malt","maltese","mapsto","mapstodown","mapstoleft","mapstoup","mcomma","mcy","mdash","measuredangle","mfr","mho","micro","midast","midcir","middot","minus","minusb","minusd","minusdu","mlcp","mldr","mnplus","models","mopf","mp","mscr","mstpos","mu","multimap","mumap","nGg","nGt","nGtv","nLeftarrow","nLeftrightarrow","nLl","nLt","nLtv","nRightarrow","nVDash","nVdash","nabla","nacute","nang","nap","napE","napid","napos","napprox","natur","natural","naturals","nbsp","nbump","nbumpe","ncap","ncaron","ncedil","ncong","ncongdot","ncup","ncy","ndash","ne","neArr","nearhk","nearr","nearrow","nedot","nequiv","nesear","nesim","nexist","nexists","nfr","ngE","nge","ngeq","ngeqq","ngeqslant","nges","ngsim","ngt","ngtr","nhArr","nharr","nhpar","ni","nis","nisd","niv","njcy","nlArr","nlE","nlarr","nldr","nle","nleftarrow","nleftrightarrow","nleq","nleqq","nleqslant","nles","nless","nlsim","nlt","nltri","nltrie","nmid","nopf","not","notin","notinE","notindot","notinva","notinvb","notinvc","notni","notniva","notnivb","notnivc","npar","nparallel","nparsl","npart","npolint","npr","nprcue","npre","nprec","npreceq","nrArr","nrarr","nrarrc","nrarrw","nrightarrow","nrtri","nrtrie","nsc","nsccue","nsce","nscr","nshortmid","nshortparallel","nsim","nsime","nsimeq","nsmid","nspar","nsqsube","nsqsupe","nsub","nsubE","nsube","nsubset","nsubseteq","nsubseteqq","nsucc","nsucceq","nsup","nsupE","nsupe","nsupset","nsupseteq","nsupseteqq","ntgl","ntilde","ntlg","ntriangleleft","ntrianglelefteq","ntriangleright","ntrianglerighteq","nu","numero","numsp","nvDash","nvHarr","nvap","nvdash","nvge","nvgt","nvinfin","nvlArr","nvle","nvlt","nvltrie","nvrArr","nvrtrie","nvsim","nwArr","nwarhk","nwarr","nwarrow","nwnear","oS","oacute","oast","ocir","ocirc","ocy","odash","odblac","odiv","odot","odsold","oelig","ofcir","ofr","ogon","ograve","ogt","ohbar","ohm","oint","olarr","olcir","olcross","oline","olt","omacr","omega","omicron","omid","ominus","oopf","opar","operp","oplus","or","orarr","ord","orderof","ordf","ordm","origof","oror","orslope","orv","oscr","oslash","osol","otilde","otimes","otimesas","ouml","ovbar","par","para","parallel","parsim","parsl","pcy","percnt","period","permil","perp","pertenk","pfr","phi","phiv","phmmat","phone","pitchfork","piv","planck","planckh","plankv","plus","plusacir","plusb","pluscir","plusdo","plusdu","pluse","plusmn","plussim","plustwo","pm","pointint","popf","pound","pr","prE","prap","prcue","pre","prec","precapprox","preccurlyeq","preceq","precnapprox","precneqq","precnsim","precsim","prime","primes","prnE","prnap","prnsim","prod","profalar","profline","profsurf","propto","prsim","prurel","pscr","psi","puncsp","qfr","qint","qopf","qprime","qscr","quaternions","quatint","quest","questeq","quot","rAarr","rArr","rAtail","rBarr","rHar","race","racute","radic","raemptyv","rang","rangd","rangle","raquo","rarr","rarrap","rarrb","rarrbfs","rarrc","rarrfs","rarrhk","rarrlp","rarrpl","rarrsim","rarrtl","rarrw","ratail","ratio","rationals","rbarr","rbbrk","rbrace","rbrack","rbrke","rbrksld","rbrkslu","rcaron","rcedil","rceil","rcub","rcy","rdca","rdldhar","rdquo","rdquor","rdsh","real","realine","realpart","reals","rect","reg","rfisht","rfloor","rfr","rhard","rharu","rharul","rho","rhov","rightarrow","rightarrowtail","rightharpoondown","rightharpoonup","rightleftarrows","rightleftharpoons","rightrightarrows","rightsquigarrow","rightthreetimes","risingdotseq","rlarr","rlhar","rlm","rmoust","rmoustache","rnmid","roang","roarr","robrk","ropar","ropf","roplus","rotimes","rpar","rpargt","rppolint","rrarr","rsaquo","rscr","rsh","rsqb","rsquo","rsquor","rthree","rtimes","rtri","rtrie","rtrif","rtriltri","ruluhar","rx","sacute","sbquo","sc","scE","scap","scaron","sccue","sce","scedil","scirc","scnE","scnap","scnsim","scpolint","scsim","scy","sdot","sdotb","sdote","seArr","searhk","searr","searrow","sect","semi","seswar","setminus","setmn","sext","sfr","sfrown","sharp","shchcy","shcy","shortmid","shortparallel","shy","sigma","sigmaf","sigmav","sim","simdot","sime","simeq","simg","simgE","siml","simlE","simne","simplus","simrarr","slarr","smallsetminus","smashp","smeparsl","smid","smile","smt","smte","smtes","softcy","sol","solb","solbar","sopf","spades","spadesuit","spar","sqcap","sqcaps","sqcup","sqcups","sqsub","sqsube","sqsubset","sqsubseteq","sqsup","sqsupe","sqsupset","sqsupseteq","squ","square","squarf","squf","srarr","sscr","ssetmn","ssmile","sstarf","star","starf","straightepsilon","straightphi","strns","sub","subE","subdot","sube","subedot","submult","subnE","subne","subplus","subrarr","subset","subseteq","subseteqq","subsetneq","subsetneqq","subsim","subsub","subsup","succ","succapprox","succcurlyeq","succeq","succnapprox","succneqq","succnsim","succsim","sum","sung","sup1","sup2","sup3","sup","supE","supdot","supdsub","supe","supedot","suphsol","suphsub","suplarr","supmult","supnE","supne","supplus","supset","supseteq","supseteqq","supsetneq","supsetneqq","supsim","supsub","supsup","swArr","swarhk","swarr","swarrow","swnwar","szlig","tau","tbrk","tcaron","tcedil","tcy","tdot","telrec","tfr","there4","therefore","theta","thetasym","thetav","thickapprox","thicksim","thinsp","thkap","thksim","thorn","tilde","times","timesb","timesbar","timesd","tint","toea","topbot","topcir","topf","topfork","tosa","tprime","trade","triangle","triangledown","triangleleft","trianglelefteq","triangleq","triangleright","trianglerighteq","tridot","trie","triminus","triplus","trisb","tritime","trpezium","tscr","tscy","tshcy","tstrok","twixt","twoheadleftarrow","twoheadrightarrow","uArr","uHar","uacute","uarr","ubrcy","ubreve","ucirc","ucy","udarr","udblac","udhar","ufisht","ufr","ugrave","uharl","uharr","uhblk","ulcorn","ulcorner","ulcrop","ultri","umacr","uml","uogon","uopf","uparrow","updownarrow","upharpoonleft","upharpoonright","uplus","upsi","upsih","upsilon","upuparrows","urcorn","urcorner","urcrop","uring","urtri","uscr","utdot","utilde","utri","utrif","uuarr","uuml","uwangle","vArr","vBar","vBarv","vDash","vangrt","varepsilon","varkappa","varnothing","varphi","varpi","varpropto","varr","varrho","varsigma","varsubsetneq","varsubsetneqq","varsupsetneq","varsupsetneqq","vartheta","vartriangleleft","vartriangleright","vcy","vdash","vee","veebar","veeeq","vellip","verbar","vert","vfr","vltri","vnsub","vnsup","vopf","vprop","vrtri","vscr","vsubnE","vsubne","vsupnE","vsupne","vzigzag","wcirc","wedbar","wedge","wedgeq","weierp","wfr","wopf","wp","wr","wreath","wscr","xcap","xcirc","xcup","xdtri","xfr","xhArr","xharr","xlArr","xlarr","xmap","xnis","xodot","xopf","xoplus","xotime","xrArr","xrarr","xscr","xsqcup","xuplus","xutri","xvee","xwedge","yacute","yacy","ycirc","ycy","yen","yfr","yicy","yopf","yscr","yucy","yuml","zacute","zcaron","zcy","zdot","zeetrf","zeta","zfr","zhcy","zigrarr","zopf","zscr","zwj","zwnj","decodeNamedCharacterReference","characterReference","numeric","characterEscape","lineEnding","labelEnd","labelStart","_balanced","_inactive","balanced","afterLabelEnd","resourceConstruct","fullReferenceConstruct","collapsedReferenceConstruct","close","media","group","insideSpan","destinationAfter","afterLabel","labelStartImage","classifyCharacter","attention","attentionMarkers","_open","_close","openingSequence","nextEvents","movePoint","autolink","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","htmlText","declarationOpen","instruction","tagOpen","commentOpen","cdataOpen","declaration","commentStart","commentStartDash","comment","commentClose","atLineEnding","cdata","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","labelStartLink","hardBreakEscape","codeText","tailExitIndex","headEnterIndex","resolveText","search","decodeNumericCharacterReference","characterEscapeOrReference","decodeString","decode","$0","$1","$2","head","fromMarkdown","config","configure","transforms","canContainEols","opener","link","autolinkProtocol","onenterdata","autolinkEmail","atxHeading","codeFlow","codeFencedFenceInfo","codeFencedFenceMeta","codeTextData","codeFlowValue","definitionDestinationString","definitionLabelString","definitionTitleString","emphasis","hardBreak","hardBreakTrailing","htmlFlowData","htmlTextData","listItem","listItemValue","onenterlistitemvalue","listOrdered","onenterlistordered","listUnordered","reference","onenterreference","referenceString","resourceDestinationString","resourceTitleString","setextHeading","strong","closer","atxHeadingSequence","onexitatxheadingsequence","onexitautolinkemail","onexitautolinkprotocol","characterEscapeValue","onexitdata","characterReferenceMarkerHexadecimal","onexitcharacterreferencemarker","characterReferenceMarkerNumeric","characterReferenceValue","onexitcharacterreferencevalue","onexitcodefenced","codeFencedFence","onexitcodefencedfence","onexitcodefencedfenceinfo","onexitcodefencedfencemeta","onexitcodeindented","onexitcodetext","onexitdefinitiondestinationstring","onexitdefinitionlabelstring","onexitdefinitiontitlestring","onexithardbreak","onexithtmlflow","onexithtmltext","onexitimage","onexitlabel","labelText","onexitlabeltext","onexitlineending","onexitlink","onexitreferencestring","onexitresourcedestinationstring","onexitresourcetitlestring","resource","onexitresource","onexitsetextheading","setextHeadingLineSequence","onexitsetextheadinglinesequence","setextHeadingText","onexitsetextheadingtext","mdastExtensions","tokenStack","listStack","resume","setData","getData","prepareList","handler","defaultOnError","firstBlankLineIndex","containerBalance","listSpread","tailIndex","tailEvent","_spread","errorHandler","onExitError","depth","referenceType","ancestor","fragment","ordered","spread","checked","compiler","postprocess","defaultConstructs","atCarriageReturn","match","endPosition","lastIndex","exec","preprocess","combined","remarkParse","u","convert","castFactory","anyFactory","propsFactory","tests","checks","visitParents","visitor","reverse","is","factory","parents","visit","subresult","grandparents","toResult","pointStart","pointEnd","clean","unknown","augment","handlers","passThrough","returnNode","unknownHandler","nodes","characterReferences","sanitizeUri","encode","skip","normalizeUri","questionMark","numberSign","slash","loose","footnoteReference","counter","safeId","footnoteOrder","footnoteCounts","reuseCounter","clobberPrefix","dataFootnoteRef","ariaDescribedBy","revert","subtype","suffix","contents","listItemLoose","trimLine","codePointAt","blockquote","break","className","delete","footnote","footnoteById","no","dangerous","imageReference","inlineCode","linkReference","listLoose","wrapped","disabled","properties","root","table","rows","align","row","out","cellIndex","cell","last","lines","trimLines","toml","ignore","yaml","footnoteDefinition","allowDangerousHtml","footnoteLabel","footnoteLabelTagName","footnoteLabelProperties","footnoteBackLabel","cache","definitions","hName","hProperties","hChildren","ctx","toHast","foot","listItems","referenceIndex","backReferences","backReference","dataFootnoteBackref","ariaLabel","tailTail","dataFootnotes","footer","remarkRehype","bridge","mutate","Schema","property","normal","space","merge","Info","attribute","boolean","booleanish","overloadedBoolean","commaSeparated","spaceSeparated","commaOrSpaceSeparated","mustUseProperty","powers","increment","types","DefinedInfo","mask","mark","xlink","xLinkActuate","xLinkArcRole","xLinkHref","xLinkRole","xLinkShow","xLinkTitle","xLinkType","xml","xmlLang","xmlBase","xmlSpace","caseSensitiveTransform","caseInsensitiveTransform","xmlns","xmlnsxlink","xmlnsXLink","aria","ariaActiveDescendant","ariaAtomic","ariaAutoComplete","ariaBusy","ariaChecked","ariaColCount","ariaColIndex","ariaColSpan","ariaControls","ariaCurrent","ariaDetails","ariaDisabled","ariaDropEffect","ariaErrorMessage","ariaExpanded","ariaFlowTo","ariaGrabbed","ariaHasPopup","ariaHidden","ariaInvalid","ariaKeyShortcuts","ariaLabelledBy","ariaLevel","ariaLive","ariaModal","ariaMultiLine","ariaMultiSelectable","ariaOrientation","ariaOwns","ariaPlaceholder","ariaPosInSet","ariaPressed","ariaReadOnly","ariaRelevant","ariaRequired","ariaRoleDescription","ariaRowCount","ariaRowIndex","ariaRowSpan","ariaSelected","ariaSetSize","ariaSort","ariaValueMax","ariaValueMin","ariaValueNow","ariaValueText","role","acceptcharset","classname","htmlfor","httpequiv","abbr","accept","acceptCharset","accessKey","action","allow","allowFullScreen","allowPaymentRequest","allowUserMedia","as","async","autoCapitalize","autoComplete","autoFocus","autoPlay","capture","charSet","cite","cols","colSpan","contentEditable","controls","controlsList","coords","crossOrigin","decoding","defer","dir","dirName","draggable","encType","enterKeyHint","form","formAction","formEncType","formMethod","formNoValidate","formTarget","headers","hidden","hrefLang","htmlFor","httpEquiv","imageSizes","imageSrcSet","inputMode","integrity","isMap","itemId","itemProp","itemRef","itemScope","itemType","loading","loop","manifest","maxLength","minLength","multiple","muted","nonce","noModule","noValidate","onAbort","onAfterPrint","onAuxClick","onBeforePrint","onBeforeUnload","onBlur","onCancel","onCanPlay","onCanPlayThrough","onClick","onClose","onContextLost","onContextMenu","onContextRestored","onCopy","onCueChange","onCut","onDblClick","onDrag","onDragEnd","onDragEnter","onDragExit","onDragLeave","onDragOver","onDragStart","onDrop","onDurationChange","onEmptied","onEnded","onError","onFocus","onFormData","onHashChange","onInput","onInvalid","onKeyDown","onKeyPress","onKeyUp","onLanguageChange","onLoad","onLoadedData","onLoadedMetadata","onLoadEnd","onLoadStart","onMessage","onMessageError","onMouseDown","onMouseEnter","onMouseLeave","onMouseMove","onMouseOut","onMouseOver","onMouseUp","onOffline","onOnline","onPageHide","onPageShow","onPaste","onPause","onPlay","onPlaying","onPopState","onProgress","onRateChange","onRejectionHandled","onReset","onResize","onScroll","onSecurityPolicyViolation","onSeeked","onSeeking","onSelect","onSlotChange","onStalled","onStorage","onSubmit","onSuspend","onTimeUpdate","onToggle","onUnhandledRejection","onUnload","onVolumeChange","onWaiting","onWheel","optimum","pattern","ping","placeholder","playsInline","poster","preload","readOnly","referrerPolicy","rel","required","reversed","rowSpan","sandbox","scope","scoped","seamless","selected","sizes","slot","span","spellCheck","srcDoc","srcLang","srcSet","tabIndex","translate","typeMustMatch","useMap","aLink","archive","background","bgColor","border","borderColor","bottomMargin","cellPadding","cellSpacing","char","charOff","classId","clear","codeBase","codeType","compact","declare","face","frame","frameBorder","hSpace","leftMargin","longDesc","lowSrc","marginHeight","marginWidth","noResize","noHref","noShade","noWrap","profile","prompt","rev","rightMargin","rules","scheme","scrolling","standby","summary","topMargin","valueType","version","vAlign","vLink","vSpace","allowTransparency","autoCorrect","autoSave","disablePictureInPicture","disableRemotePlayback","results","security","unselectable","accentHeight","alignmentBaseline","arabicForm","baselineShift","capHeight","clipPath","clipRule","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","dataType","dominantBaseline","enableBackground","fillOpacity","fillRule","floodColor","floodOpacity","fontFamily","fontSizeAdjust","fontStretch","fontStyle","fontVariant","fontWeight","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","horizAdvX","horizOriginX","horizOriginY","imageRendering","letterSpacing","lightingColor","markerEnd","markerMid","markerStart","navDown","navDownLeft","navDownRight","navLeft","navNext","navPrev","navRight","navUp","navUpLeft","navUpRight","onActivate","onBegin","onEnd","onFocusIn","onFocusOut","onMouseWheel","onRepeat","onShow","overlinePosition","overlineThickness","paintOrder","panose1","pointerEvents","renderingIntent","shapeRendering","stopColor","stopOpacity","strikethroughPosition","strikethroughThickness","strokeDashArray","strokeDashOffset","strokeLineCap","strokeLineJoin","strokeMiterLimit","strokeOpacity","strokeWidth","textAnchor","textDecoration","textRendering","typeOf","underlinePosition","underlineThickness","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","vHanging","vIdeographic","vMathematical","vectorEffect","vertAdvY","vertOriginX","vertOriginY","wordSpacing","writingMode","xHeight","playbackOrder","timelineBegin","about","accumulate","additive","alphabetic","amplitude","ascent","attributeName","attributeType","azimuth","bandwidth","baseFrequency","baseProfile","bbox","begin","bias","by","calcMode","clip","clipPathUnits","contentScriptType","contentStyleType","cursor","cx","cy","defaultAction","descent","diffuseConstant","direction","dur","divisor","edgeMode","editable","elevation","exponent","externalResourcesRequired","filterRes","filterUnits","focusable","focusHighlight","fx","fy","g1","g2","glyphRef","gradientTransform","gradientUnits","hanging","hatchContentUnits","hatchUnits","ideographic","initialVisibility","in2","intercept","k1","k2","k3","k4","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","kerning","lengthAdjust","limitingConeAngle","local","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","mathematical","mediaCharacterEncoding","mediaContentEncodings","mediaSize","mediaTime","mode","numOctaves","observer","opacity","operator","orient","orientation","overlay","pathLength","patternContentUnits","patternTransform","patternUnits","phase","pitch","points","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","propagate","radius","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","requiredFonts","requiredFormats","restart","rotate","ry","seed","side","slope","snapshotTime","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stemh","stemv","stitchTiles","stroke","surfaceScale","syncBehavior","syncBehaviorDefault","syncMaster","syncTolerance","syncToleranceDefault","systemLanguage","tableValues","targetX","targetY","textLength","transformBehavior","to","u1","u2","unicode","viewBox","viewTarget","visibility","widths","x1","x2","xChannelSelector","y1","y2","yChannelSelector","zoomAndPan","htmlBase","svgBase","rehypeFilter","allowedElements","disallowedElements","allowElement","parent_","unwrapDisallowed","protocols","whitespace","thing","valid","kebab","camelcase","hastToReact","tableElements","Set","childrenToReact","childIndex","toReact","skipHtml","parentSchema","schema","addProperty","listDepth","component","components","basic","Fragment","ReactIs","isValidElementType","linkTarget","transformLinkUri","inline","level","transformImageUri","getInputElement","getElementsBeforeCount","textAlign","isHeader","sourcePos","rawSourcePos","sourcePosition","includeElementIndex","siblingCount","count","Type","rest","dashes","find","padRight","padLeft","commas","styleReplacer","parseStyle","deprecated","renderers","astPlugins","escapeHtml","allowNode","allowedTypes","disallowedTypes","includeNodeIndex","ReactMarkdown","deprecation","remarkPlugins","remarkRehypeOptions","rehypePlugins","hastNode","uri","first","func","arrayOf","any","requiredArgs","isDate","toDate","argument","argStr","isValid","dirtyDate","formatDistanceLocale","lessThanXSeconds","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","formatDistance","tokenValue","addSuffix","comparison","buildFormatLongFn","defaultWidth","formats","formatLong","full","long","medium","short","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","buildLocalizeFn","dirtyIndex","dirtyOptions","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","_width","argumentCallback","buildMatchFn","matchPattern","matchPatterns","defaultMatchWidth","matchResult","matchedString","parsePatterns","defaultParseWidth","findIndex","findKey","valueCallback","predicate","locale","formatRelative","_date","_baseDate","_options","localize","ordinalNumber","dirtyNumber","rem100","era","narrow","abbreviated","wide","quarter","day","dayPeriod","am","midnight","noon","morning","afternoon","evening","night","parsePattern","parseResult","weekStartsOn","firstWeekContainsDate","addMilliseconds","dirtyAmount","timestamp","amount","subMilliseconds","addLeadingZeros","targetLength","sign","formatters","signedYear","getUTCFullYear","M","getUTCMonth","getUTCDate","dayPeriodEnumValue","getUTCHours","H","m","getUTCMinutes","getUTCSeconds","S","numberOfDigits","milliseconds","getUTCMilliseconds","pow","startOfUTCISOWeek","getUTCDay","setUTCDate","setUTCHours","getUTCISOWeekYear","fourthOfJanuaryOfNextYear","setUTCFullYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfUTCISOWeekYear","fourthOfJanuary","startOfUTCWeek","localeWeekStartsOn","defaultWeekStartsOn","RangeError","getUTCWeekYear","localeFirstWeekContainsDate","defaultFirstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfUTCWeekYear","firstWeek","dayPeriodEnum","formatTimezoneShort","dirtyDelimiter","absOffset","hours","minutes","delimiter","formatTimezoneWithOptionalMinutes","formatTimezone","G","unit","lightFormatters","Y","signedWeekYear","weekYear","R","Q","L","w","week","getUTCWeek","I","isoWeek","getUTCISOWeek","D","dayOfYear","setUTCMonth","startOfYearTimestamp","difference","getUTCDayOfYear","E","dayOfWeek","localDayOfWeek","isoDayOfWeek","B","K","X","_localize","timezoneOffset","_originalDate","getTimezoneOffset","O","originalDate","T","dateLongFormatter","timeLongFormatter","longFormatters","P","dateTimeFormat","datePattern","timePattern","getTimezoneOffsetInMilliseconds","utcDate","UTC","getSeconds","getMilliseconds","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","formatStr","defaultLocale","formatterOptions","firstCharacter","longFormatter","cleanEscapedString","formatter","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","tileProps","tileGroupProps","isView","isClassName","isViews","isValue","isMaxDate","isMinDate","isCalendarType","_propTypes","__esModule","allViews","propName","componentName","minDate","maxDate","instanceOf","allowedViews","views","activeStartDate","tileClassName","tileContent","classes","objectOf","tileDisabled","_slicedToArray","_arrayWithHoles","_arr","_n","_d","_e","_s","_i","err","_iterableToArrayLimit","_nonIterableRest","getYear","getMonthIndex","getDay","getDayOfWeek","getBeginOfCenturyYear","getBeginOfCentury","getEndOfCentury","getCenturyRange","getBeginOfPreviousCentury","getEndOfPreviousCentury","getBeginOfNextCentury","getBeginOfDecadeYear","getBeginOfDecade","getEndOfDecade","getDecadeRange","getBeginOfPreviousDecade","getEndOfPreviousDecade","getBeginOfNextDecade","getBeginOfYear","getEndOfYear","getYearRange","getBeginOfPreviousYear","getEndOfPreviousYear","getBeginOfNextYear","getBeginOfMonth","getEndOfMonth","getBeginOfWeek","getMonthRange","getBeginOfPreviousMonth","getEndOfPreviousMonth","getBeginOfNextMonth","getBeginOfDay","getEndOfDay","getDayRange","getWeekNumber","dayInWeekOne","beginOfFirstWeek","calendarType","calendarTypeForWeekNumber","beginOfWeek","getBegin","getBeginPrevious","rangeType","getBeginNext","getEnd","getEndPrevious","getRange","getValueRange","date1","date2","rawNextValue","getDaysInMonth","monthIndex","getCenturyLabel","toYearLabel","getDecadeLabel","isWeekend","weekday","FRIDAY","SATURDAY","SUNDAY","getISOLocalMonth","getISOLocalDate","getEndPrevious2","getBeginNext2","getBeginPrevious2","_map2","arr2","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","beginOfCenturyYear","beginOfDecadeYear","previousDecadeYear","nextDecadeYear","previousYear","nextYear","getDifferentMonth","previousMonthIndex","previousMonth","nextMonth","_ref2","isValueType","isTime","allValueTypes","hourOptionalSecondsRegExp","callIfDefined","getAmPmLabels","_dateFormatter","_toConsumableArray","isValidNumber","ninesRegExp","RegExp","amPmFormatter","getFormatter","amString","pmString","_amString$split2","am1","am2","_pmString$split2","pm1","pm2","_len3","_key3","safeMin","safeMax","formatShortWeekday","formatWeekday","formatMonthYear","formatLongDate","_getUserLocale","getSafeFormatter","toLocaleString","safeDate","setHours","toSafeHour","TileGroup","_react","_interopRequireDefault","_Flex","_utils","_propTypes2","_extends","dateTransform","dateType","Tile","tile","tiles","getTileClasses","newObj","desc","_interopRequireWildcard","_mergeClassNames","_getPrototypeOf2","nextProps","prevState","nextState","tileClassNameProps","tileContentProps","formatAbbr","maxDateTransform","minDateTransform","_this$state","Input","_updateInputWidth","requestAnimationFrame","makeOnKeyPress","getSelection","preventDefault","nameForClass","_onKeyUp","_ref$placeholder","showLeadingZeros","hasLeadingZero","fonts","font","getFontShorthand","addEventListener","updateInputWidthOnFontLoad","encodeCache","exclude","keepEscaped","nextCode","defaultChars","ch","getEncodeCache","componentChars","componentWillMount","getDerivedStateFromProps","setState","componentWillReceiveProps","bind","componentWillUpdate","prevProps","__reactInternalSnapshotFlag","__reactInternalSnapshot","getSnapshotBeforeUpdate","polyfill","isReactComponent","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate","displayName","newApiName","componentDidUpdate","maybeSnapshot","snapshot","__suppressDeprecationWarning","Flex","toPercent","otherProps","flexDirection","flexWrap","cloneElement","flexBasis","maxWidth","isMarkWidth","isMarkLength","isHandWidth","isOppositeHandLength","isHandLength","isNumberBetween","isDefined","_getRequireWildcardCache","hasPropertyDescriptor","WeakMap","convert12to24","hour12","amPm","hour24","convert24to12","_DateTimePicker","_default","_Decades","doRangesOverlap","isRangeWithinRange","isValueWithinRange","mergeFunctions","_dates","functions","greaterRange","smallerRange","range1","range2","dateRange","valueRange","isRangeStart","isRangeEnd","_Years","_Months","MonthView","_Days","_Weekdays","_WeekNumbers","showFixedNumberOfWeeks","calendarTypeProps","onClickWeekNumber","showWeekNumbers","childProps","alignItems","flexGrow","setActiveRange","showNeighboringMonth","allowedVariants","measureText","canvas","updateInputWidth","_utils2","_reactLifecyclesCompat","_makeEventProps","_reactFit","_entry","_entry2","_DateTimeInput","baseClassName","outsideActionEvents","DateTimePicker","_PureComponent","wrapper","closeWidgets","prevValue","valueWithHour","isCalendarOpen","isClockOpen","openCalendar","openClock","stopPropagation","isCalendarOpenProps","isClockOpenProps","handleOutsideActionListeners","_this$props2","onCalendarClose","onCalendarOpen","onClockClose","onClockOpen","shouldListen","_this$state2","fnName","eventName","onOutsideAction","_this$props3","amPmAriaLabel","calendarAriaLabel","calendarIcon","clearAriaLabel","clearIcon","dayAriaLabel","dayPlaceholder","disableCalendar","hourAriaLabel","hourPlaceholder","maxDetail","minuteAriaLabel","minutePlaceholder","monthAriaLabel","monthPlaceholder","nativeInputAriaLabel","secondAriaLabel","secondPlaceholder","yearAriaLabel","yearPlaceholder","_this$state3","valueFrom","ariaLabelProps","placeholderProps","isWidgetOpen","resetValue","toggleCalendar","_this$props4","calendarClassName","calendarProps","onDateChange","disableClock","_this$props5","clockClassName","clockProps","maxDetailIndex","renderMinuteHand","renderSecondHand","_this3","_this$props6","_this$state4","eventProps","renderInputs","renderCalendar","renderClock","PureComponent","iconProps","CalendarIcon","ClearIcon","clipboardEvents","compositionEvents","keyboardEvents","focusEvents","formEvents","genericEvents","mouseEvents","selectionEvents","touchEvents","uiEvents","wheelEvents","mediaEvents","imageEvents","animationEvents","transitionEvents","otherEvents","allEvents","makeEventProps","getArgs","_Calendar","_CenturyView","_DecadeView","_YearView","_MonthView","_Navigation","datesAreDifferent","getLimitedViews","minDetail","isViewAllowed","getView","getValueType","getValueFrom","rawValueFrom","valueFromDate","getDetailValueFrom","detailValueFrom","getValueTo","rawValueTo","valueToDate","getDetailValueTo","valueTo","detailValueTo","getDetailValueArray","Calendar","onActiveDateChange","drillDownAvailable","onDrillDown","nextView","drillUpAvailable","onDrillUp","nextValue","selectRange","previousValue","getProcessedValue","nextActiveStartDate","getActiveStartDate","activeStartDateProps","viewProps","valueProps","returnValue","processFunction","renderChildren","commonProps","clickAction","drillDown","onClickDecade","onClickYear","onClickMonth","_this$props7","onClickDay","showNavigation","_this$props8","navigationAriaLabel","navigationLabel","next2AriaLabel","next2Label","nextAriaLabel","nextLabel","prev2AriaLabel","prev2Label","prevAriaLabel","prevLabel","drillUp","setActiveStartDate","_this$props9","valueArray","renderNavigation","renderContent","_this$props10","_this$props11","Navigation","shouldShowPrevNext2Buttons","previousActiveStartDate","previousActiveStartDate2","nextActiveStartDate2","prevButtonDisabled","previousActiveEndDate","prev2ButtonDisabled","nextButtonDisabled","next2ButtonDisabled","Decades","_TileGroup","_Decade","Decade","_Tile","Years","_Year","Year","Months","_Month","Month","Days","_Day","hasFixedNumberOfWeeks","daysInMonth","activeEndDate","currentMonthIndex","Day","Weekdays","anyDate","beginOfMonth","weekdays","weekdayDate","WeekNumbers","_WeekNumber","numberOfWeeks","dates","weekNumbers","flexShrink","weekNumber","weekIndex","WeekNumber","_Clock","Clock","_Hand","_Mark","hourHandLength","hourHandOppositeLength","hourHandWidth","hourMarksLength","hourMarksWidth","minuteHandLength","minuteHandOppositeLength","minuteHandWidth","minuteMarksLength","minuteMarksWidth","renderHourMarks","renderMinuteMarks","renderNumbers","secondHandLength","secondHandOppositeLength","secondHandWidth","toISOString","minuteMarks","renderMinuteMarksFn","hourMarks","renderHourMarksFn","oppositeLength","renderHourHandFn","renderMinuteHandFn","renderSecondHandFn","Hand","variable","Mark","hourString","minuteString","hourRegExp","secondString","_dateUtils","_DayInput","_MonthInput","_MonthSelect","_YearInput","_Hour12Input","_Hour24Input","_MinuteInput","_SecondInput","_AmPm","_Divider","_NativeInput","defaultMinDate","defaultMaxDate","isSameDate","getMonthHuman","getValueFromRange","valueOrArrayOfValues","parseAndValidateDate","rawValue","valueDate","getDetailValue","isValidInput","findInput","nextElement","focus","DateTimeInput","minute","second","currentTarget","dateDivider","timeDivider","getAttribute","_event$target","onChangeExternal","_value$split2","valueTime","_valueDate$split2","yearString","monthString","dayString","_valueTime$split2","formElements","dayInput","monthInput","yearInput","hour12Input","hour24Input","minuteInput","secondInput","amPmInput","formElementsWithoutSelect","formElement","checkValidity","currentMatch","showLeadingZerosFromFormat","commonInputProps","renderHour12","renderHour24","_this$state5","onChangeAmPm","_convert24to2","elementFunctions","allowMultipleInstances","usedFunctions","matches","reduce","divider","res","renderFunction","elementFunction","_renderCustomInputs","renderDay","renderMonth","renderYear","renderHour","renderMinute","renderSecond","renderAmPm","onChangeNative","renderNativeInput","renderCustomInputs","useGrouping","datePlaceholder","timePlaceholder","formatTime","_this$state6","getHoursMinutesSeconds","_this$state7","maxTime","minTime","DayInput","_Input","currentMonthMaxDays","isSameMonth","maxDay","minDay","MonthInput","isSameYear","maxMonth","minMonth","MonthSelect","_short","formatShortMonth","YearInput","maxYear","minYear","yearStep","Hour12Input","maxHour","maxHourResult","minHour","_convert24to4","minHourResult","value12","Hour24Input","MinuteInput","_ref$showLeadingZeros","isSameHour","maxMinute","minMinute","SecondInput","isSameMinute","maxSecond","minSecond","AmPm","amDisabled","pmDisabled","_getAmPmLabels2","amLabel","pmLabel","Divider","NativeInput","nativeValueParser","receivedValue","getHoursMinutes","getISOLocalDateTime","hasOwn","toStr","gOPD","hasOwnConstructor","hasIsPrototypeOf","setProperty","newValue","getProperty","copyIsArray","clone","deep","for","$$typeof","ContextConsumer","ContextProvider","ForwardRef","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","SuspenseList","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isSuspenseList","getModuleId","declarations","hasIterator","len","COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","lineno","updatePosition","Position","errorsList","msg","filename","silent","re","comments","ret","decl","decls","javascript","python"],"mappings":"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A,UAEFC,UAAW,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAChD3B,OAAQ,CACN,UACA,aACA,OACA,QACA,MACA,OACA,UACA,UACA,YACA,UACA,WACA,eAEFC,YAAa,CACX,OACA,UACA,OACA,MACA,MACA,OACA,OACA,UACA,OACA,MACA,MACA,WAGJ6B,GAAI,CACFX,QAAS,IACTC,UAAW,IACXC,SAAU,CAAC,GACXC,SAAU,CAAC,SAAK,IAChBC,SAAU,iBACVjB,KAAM,WACNkB,KAAM,WACNC,QAAS,CAAC,KAAM,MAChBC,KAAM,CACJ,UACA,QACA,SACA,eACA,SACA,UACA,aAEFC,UAAW,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAChD3B,OAAQ,CACN,QACA,UACA,QACA,QACA,OACA,QACA,QACA,SACA,aACA,UACA,YACA,aAEFC,YAAa,CACX,QACA,MACA,MACA,MACA,OACA,MACA,MACA,SACA,OACA,MACA,MACA,QAGJ8B,GAAI,CACFZ,QAAS,IACTC,UAAW,IACXC,SAAU,CAAC,GACXC,SAAU,CAAC,SAAK,IAChBC,SAAU,iBACVjB,KAAM,WACNkB,KAAM,WACNC,QAAS,CAAC,KAAM,MAChBC,KAAM,CACJ,WACA,YACA,aACA,eACA,aACA,aACA,UAEFC,UAAW,CAAC,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,OACrD3B,OAAQ,CACN,UACA,WACA,QACA,SACA,SACA,SACA,SACA,SACA,YACA,UACA,WACA,YAEFC,YAAa,CACX,OACA,QACA,MACA,MACA,OACA,SACA,SACA,KACA,OACA,MACA,MACA,SAIN,OAAIgB,KAAQlB,EACHA,EAAKkB,IAEZe,QAAQC,MAAM,aAAehB,EAAO,oBAC7BlB,EAAI,KAIFmC,EAAqB,SAACnE,EAAKC,GACtC,OAAQD,GAAO,MAAUC,EAAM,MAAYD,GAAO,KAASC,EAAM,KC5XtDmE,EAAa,SACxBzE,EACA0E,EACAC,EACAC,EACAC,EACAC,EACAC,GAEoB,IAAhB/E,EAAKvH,OACPuM,EACEhF,EAAK,GACL0E,EACAC,EACAC,EACAC,E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,IACTC,UAAW,IACXC,SAAU,CAAC,GACXC,SAAU,CAAC,SAAK,IAChBC,SAAU,iBACVjB,KAAM,WACNkB,KAAM,WACNC,QAAS,CAAC,YAAa,cACvBC,KAAM,CACJ,UACA,SACA,WACA,WACA,aACA,UACA,WAEFC,UAAW,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAChD3B,OAAQ,CACN,SACA,UACA,UACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,YAEFC,YAAa,CACX,MACA,MACA,SACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,QAGJ2B,GAAI,CACFT,QAAS,IACTC,UAAW,IACXC,SAAU,CAAC,GACXC,SAAU,CAAC,SAAK,IAChBC,SAAU,iBACVjB,KAAM,WACNkB,KAAM,WACNC,QAAS,CAAC,KAAM,MAChBC,KAAM,CACJ,SACA,SACA,UACA,YACA,WACA,SACA,YAEFC,UAAW,CAAC,MAAO,MAAO,OAAQ,OAAQ,QAAS,MAAO,OAC1D3B,OAAQ,CACN,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,YAEFC,YAAa,CACX,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,QAGJ4B,GAAI,CACFV,QAAS,IACTC,UAAW,IACXC,SAAU,CAAC,GACXC,SAAU,CAAC,SAAK,IAChBC,SAAU,iBACVjB,KAAM,WACNkB,KAAM,WACNC,QAAS,CAAC,KAAM,MAChBC,KAAM,CACJ,WACA,QACA,QACA,WACA,QACA,WACA,UAEFC,UAAW,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAChD3B,OAAQ,CACN,UACA,aACA,OACA,QACA,MACA,OACA,UACA,UACA,YACA,UACA,WACA,eAEFC,YAAa,CACX,OACA,UACA,OACA,MACA,MACA,OACA,OACA,UACA,OACA,MACA,MACA,WAGJ6B,GAAI,CACFX,QAAS,IACTC,UAAW,IACXC,SAAU,CAAC,GACXC,SAAU,CAAC,SAAK,IAChBC,SAAU,iBACVjB,KAAM,WACNkB,KAAM,WACNC,QAAS,CAAC,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","file":"static/js/4.00f9fb89.chunk.js","sourcesContent":["var toInteger = require('./toInteger');\n\n/**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\nfunction isInteger(value) {\n  return typeof value == 'number' && value == toInteger(value);\n}\n\nmodule.exports = isInteger;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n  var result = toFinite(value),\n      remainder = result % 1;\n\n  return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n  if (!value) {\n    return value === 0 ? value : 0;\n  }\n  value = toNumber(value);\n  if (value === INFINITY || value === -INFINITY) {\n    var sign = (value < 0 ? -1 : 1);\n    return sign * MAX_INTEGER;\n  }\n  return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var baseTrim = require('./_baseTrim'),\n    isObject = require('./isObject'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = baseTrim(value);\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n  return string\n    ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n    : string;\n}\n\nmodule.exports = baseTrim;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n  var index = string.length;\n\n  while (index-- && reWhitespace.test(string.charAt(index))) {}\n  return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","export default function(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n  if (compare.length === 1) compare = ascendingComparator(compare);\n  return {\n    left: function(a, x, lo, hi) {\n      if (lo == null) lo = 0;\n      if (hi == null) hi = a.length;\n      while (lo < hi) {\n        var mid = lo + hi >>> 1;\n        if (compare(a[mid], x) < 0) lo = mid + 1;\n        else hi = mid;\n      }\n      return lo;\n    },\n    right: function(a, x, lo, hi) {\n      if (lo == null) lo = 0;\n      if (hi == null) hi = a.length;\n      while (lo < hi) {\n        var mid = lo + hi >>> 1;\n        if (compare(a[mid], x) > 0) hi = mid;\n        else lo = mid + 1;\n      }\n      return lo;\n    }\n  };\n}\n\nfunction ascendingComparator(f) {\n  return function(d, x) {\n    return ascending(f(d), x);\n  };\n}\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n  var n0 = values0.length,\n      n1 = values1.length,\n      values = new Array(n0 * n1),\n      i0,\n      i1,\n      i,\n      value0;\n\n  if (reduce == null) reduce = pair;\n\n  for (i0 = i = 0; i0 < n0; ++i0) {\n    for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n      values[i] = reduce(value0, values1[i1]);\n    }\n  }\n\n  return values;\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","var e10 = Math.sqrt(50),\n    e5 = Math.sqrt(10),\n    e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n  var reverse,\n      i = -1,\n      n,\n      ticks,\n      step;\n\n  stop = +stop, start = +start, count = +count;\n  if (start === stop && count > 0) return [start];\n  if (reverse = stop < start) n = start, start = stop, stop = n;\n  if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n  if (step > 0) {\n    start = Math.ceil(start / step);\n    stop = Math.floor(stop / step);\n    ticks = new Array(n = Math.ceil(stop - start + 1));\n    while (++i < n) ticks[i] = (start + i) * step;\n  } else {\n    start = Math.floor(start * step);\n    stop = Math.ceil(stop * step);\n    ticks = new Array(n = Math.ceil(start - stop + 1));\n    while (++i < n) ticks[i] = (start - i) / step;\n  }\n\n  if (reverse) ticks.reverse();\n\n  return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n  var step = (stop - start) / Math.max(0, count),\n      power = Math.floor(Math.log(step) / Math.LN10),\n      error = step / Math.pow(10, power);\n  return power >= 0\n      ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n      : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n  var step0 = Math.abs(stop - start) / Math.max(0, count),\n      step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n      error = step0 / step1;\n  if (error >= e10) step1 *= 10;\n  else if (error >= e5) step1 *= 5;\n  else if (error >= e2) step1 *= 2;\n  return stop < start ? -step1 : step1;\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export default function(a, b) {\n  return a - b;\n}\n","export default x => () => x;\n","export default function(ring, hole) {\n  var i = -1, n = hole.length, c;\n  while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n  return 0;\n}\n\nfunction ringContains(ring, point) {\n  var x = point[0], y = point[1], contains = -1;\n  for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n    var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1];\n    if (segmentContains(pi, pj, point)) return 0;\n    if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains;\n  }\n  return contains;\n}\n\nfunction segmentContains(a, b, c) {\n  var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\n\nfunction collinear(a, b, c) {\n  return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\n\nfunction within(p, q, r) {\n  return p <= q && q <= r || r <= q && q <= p;\n}\n","export default function() {}\n","import {extent, thresholdSturges, tickStep, range} from \"d3-array\";\nimport {slice} from \"./array.js\";\nimport ascending from \"./ascending.js\";\nimport area from \"./area.js\";\nimport constant from \"./constant.js\";\nimport contains from \"./contains.js\";\nimport noop from \"./noop.js\";\n\nvar cases = [\n  [],\n  [[[1.0, 1.5], [0.5, 1.0]]],\n  [[[1.5, 1.0], [1.0, 1.5]]],\n  [[[1.5, 1.0], [0.5, 1.0]]],\n  [[[1.0, 0.5], [1.5, 1.0]]],\n  [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]],\n  [[[1.0, 0.5], [1.0, 1.5]]],\n  [[[1.0, 0.5], [0.5, 1.0]]],\n  [[[0.5, 1.0], [1.0, 0.5]]],\n  [[[1.0, 1.5], [1.0, 0.5]]],\n  [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]],\n  [[[1.5, 1.0], [1.0, 0.5]]],\n  [[[0.5, 1.0], [1.5, 1.0]]],\n  [[[1.0, 1.5], [1.5, 1.0]]],\n  [[[0.5, 1.0], [1.0, 1.5]]],\n  []\n];\n\nexport default function() {\n  var dx = 1,\n      dy = 1,\n      threshold = thresholdSturges,\n      smooth = smoothLinear;\n\n  function contours(values) {\n    var tz = threshold(values);\n\n    // Convert number of thresholds into uniform thresholds.\n    if (!Array.isArray(tz)) {\n      var domain = extent(values), start = domain[0], stop = domain[1];\n      tz = tickStep(start, stop, tz);\n      tz = range(Math.floor(start / tz) * tz, Math.floor(stop / tz) * tz, tz);\n    } else {\n      tz = tz.slice().sort(ascending);\n    }\n\n    return tz.map(function(value) {\n      return contour(values, value);\n    });\n  }\n\n  // Accumulate, smooth contour rings, assign holes to exterior rings.\n  // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n  function contour(values, value) {\n    var polygons = [],\n        holes = [];\n\n    isorings(values, value, function(ring) {\n      smooth(ring, values, value);\n      if (area(ring) > 0) polygons.push([ring]);\n      else holes.push(ring);\n    });\n\n    holes.forEach(function(hole) {\n      for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n        if (contains((polygon = polygons[i])[0], hole) !== -1) {\n          polygon.push(hole);\n          return;\n        }\n      }\n    });\n\n    return {\n      type: \"MultiPolygon\",\n      value: value,\n      coordinates: polygons\n    };\n  }\n\n  // Marching squares with isolines stitched into rings.\n  // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n  function isorings(values, value, callback) {\n    var fragmentByStart = new Array,\n        fragmentByEnd = new Array,\n        x, y, t0, t1, t2, t3;\n\n    // Special case for the first row (y = -1, t2 = t3 = 0).\n    x = y = -1;\n    t1 = values[0] >= value;\n    cases[t1 << 1].forEach(stitch);\n    while (++x < dx - 1) {\n      t0 = t1, t1 = values[x + 1] >= value;\n      cases[t0 | t1 << 1].forEach(stitch);\n    }\n    cases[t1 << 0].forEach(stitch);\n\n    // General case for the intermediate rows.\n    while (++y < dy - 1) {\n      x = -1;\n      t1 = values[y * dx + dx] >= value;\n      t2 = values[y * dx] >= value;\n      cases[t1 << 1 | t2 << 2].forEach(stitch);\n      while (++x < dx - 1) {\n        t0 = t1, t1 = values[y * dx + dx + x + 1] >= value;\n        t3 = t2, t2 = values[y * dx + x + 1] >= value;\n        cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n      }\n      cases[t1 | t2 << 3].forEach(stitch);\n    }\n\n    // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n    x = -1;\n    t2 = values[y * dx] >= value;\n    cases[t2 << 2].forEach(stitch);\n    while (++x < dx - 1) {\n      t3 = t2, t2 = values[y * dx + x + 1] >= value;\n      cases[t2 << 2 | t3 << 3].forEach(stitch);\n    }\n    cases[t2 << 3].forEach(stitch);\n\n    function stitch(line) {\n      var start = [line[0][0] + x, line[0][1] + y],\n          end = [line[1][0] + x, line[1][1] + y],\n          startIndex = index(start),\n          endIndex = index(end),\n          f, g;\n      if (f = fragmentByEnd[startIndex]) {\n        if (g = fragmentByStart[endIndex]) {\n          delete fragmentByEnd[f.end];\n          delete fragmentByStart[g.start];\n          if (f === g) {\n            f.ring.push(end);\n            callback(f.ring);\n          } else {\n            fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)};\n          }\n        } else {\n          delete fragmentByEnd[f.end];\n          f.ring.push(end);\n          fragmentByEnd[f.end = endIndex] = f;\n        }\n      } else if (f = fragmentByStart[endIndex]) {\n        if (g = fragmentByEnd[startIndex]) {\n          delete fragmentByStart[f.start];\n          delete fragmentByEnd[g.end];\n          if (f === g) {\n            f.ring.push(end);\n            callback(f.ring);\n          } else {\n            fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)};\n          }\n        } else {\n          delete fragmentByStart[f.start];\n          f.ring.unshift(start);\n          fragmentByStart[f.start = startIndex] = f;\n        }\n      } else {\n        fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]};\n      }\n    }\n  }\n\n  function index(point) {\n    return point[0] * 2 + point[1] * (dx + 1) * 4;\n  }\n\n  function smoothLinear(ring, values, value) {\n    ring.forEach(function(point) {\n      var x = point[0],\n          y = point[1],\n          xt = x | 0,\n          yt = y | 0,\n          v0,\n          v1 = values[yt * dx + xt];\n      if (x > 0 && x < dx && xt === x) {\n        v0 = values[yt * dx + xt - 1];\n        point[0] = x + (value - v0) / (v1 - v0) - 0.5;\n      }\n      if (y > 0 && y < dy && yt === y) {\n        v0 = values[(yt - 1) * dx + xt];\n        point[1] = y + (value - v0) / (v1 - v0) - 0.5;\n      }\n    });\n  }\n\n  contours.contour = contour;\n\n  contours.size = function(_) {\n    if (!arguments.length) return [dx, dy];\n    var _0 = Math.floor(_[0]), _1 = Math.floor(_[1]);\n    if (!(_0 >= 0 && _1 >= 0)) throw new Error(\"invalid size\");\n    return dx = _0, dy = _1, contours;\n  };\n\n  contours.thresholds = function(_) {\n    return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), contours) : threshold;\n  };\n\n  contours.smooth = function(_) {\n    return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n  };\n\n  return contours;\n}\n","export default function(ring) {\n  var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n  while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n  return area;\n}\n","import { select } from \"d3\";\n\nexport const verifyString = (string) => {\n  if (string === false) return true;\n  return typeof string === \"string\";\n};\n\nexport const verifyNumber = (number) => {\n  return typeof number === \"number\" && !isNaN(number);\n};\n\nexport const verifyNone = (number) => {\n  return true;\n};\n\nexport const verifyBool = (bool) => {\n  return typeof bool === \"boolean\";\n};\n\nexport const verifyColors = (colors) => {\n  return true;\n};\n\nexport const verifyFunction = (f) => {\n  return typeof f === \"function\";\n};\n\nexport const verifyDiv = (div) => {\n  if (select(\"#\" + div)._groups[0][0] === null) {\n    throw new Error(\n      \"Div with ID: \" + div + \" not found, graph could not be added.\"\n    );\n  }\n};\n\nexport const verifyData = (data) => {\n  for (let i = 0; i < data.length; i++) {\n    if (typeof data[i] !== \"object\" || data[i] === null) {\n      throw new Error(\n        \"Input data in not an object, data input must conform to {x: [], y: [], z: [[]]}.\"\n      );\n    }\n    if (!(\"x\" in data[i] && \"y\" in data[i] && \"z\" in data[i])) {\n      throw new Error(\n        \"Input data is badly formatted, data input must conform to {x: [], y: [], z: [[]]}.\"\n      );\n    }\n    if (data[i].x.length !== data[i].z[0].length) {\n      throw new Error(\n        \"Input data is badly formatted, x-array length must equal z-array dimension.\"\n      );\n    }\n    if (data[i].y.length !== data[i].z.length) {\n      throw new Error(\n        \"Input data is badly formatted, y-array length must equal z-array dimension.\"\n      );\n    }\n  }\n};\n","export const convertToRGB = (hex) => {\n  function trim(s) {\n    return s.charAt(0) === \"#\" ? s.substring(1, 7) : s;\n  }\n  var color = [];\n  color[0] = parseInt(trim(hex).substring(0, 2), 16);\n  color[1] = parseInt(trim(hex).substring(2, 4), 16);\n  color[2] = parseInt(trim(hex).substring(4, 6), 16);\n  color[3] = 255;\n  return color;\n};\n\nexport const convertToHex = (rgb) => {\n  return \"#\" + hex(rgb[0]) + hex(rgb[1]) + hex(rgb[2]);\n}\n\nconst hex = (c) => {\n  var s = \"0123456789abcdef\";\n  var i = parseInt(c, 10);\n  if (i === 0 || isNaN(c)) return \"00\";\n  i = Math.round(Math.min(Math.max(0, i), 255));\n  return s.charAt((i - (i % 16)) / 16) + s.charAt(i % 16);\n}\n\nexport const getRGBAColor = (value, min, max, colors, colorCache) => {\n  if (value === null || isNaN(value)) return [255, 255, 255, 0];\n  if (value < min || value > max) return [0, 0, 0, 0];\n  const cacheKey = `${value}`;\n  if (colorCache.has(cacheKey)) {\n    return colorCache.get(cacheKey);\n  }\n  const range = max - min;\n  const loc = (value - min) / range;\n  if (loc < 0 || loc > 1) {\n    colorCache.set(cacheKey, [255, 255, 255, 0]);\n    return [255, 255, 255, 0];\n  }\n  let low = 0;\n  let high = colors.length - 1;\n  while (low < high) {\n    const mid = Math.floor((low + high) / 2);\n    if (loc < colors[mid].point) {\n      high = mid - 1;\n    } else if (loc > colors[mid + 1].point) {\n      low = mid + 1;\n    } else {\n      low = mid;\n      break;\n    }\n  }\n  const index = low;\n  const { rgba: color1 } = colors[index];\n  const { rgba: color2 } = colors[index + 1];\n  const factor = (loc - colors[index].point) / (colors[index + 1].point - colors[index].point);\n  const rgb = [\n    color1[0] + (color2[0] - color1[0]) * factor,\n    color1[1] + (color2[1] - color1[1]) * factor,\n    color1[2] + (color2[2] - color1[2]) * factor,\n    255\n  ];\n  colorCache.set(cacheKey, rgb);\n  return rgb;\n};\n\nexport const closest = (num, arr) => {\n  var curr = 0;\n  var diff = Math.abs(num - arr[curr]);\n  for (var val = 0; val < arr.length; val++) {\n    var newdiff = Math.abs(num - arr[val]);\n    if (newdiff < diff) {\n      diff = newdiff;\n      curr = val;\n    }\n  }\n  return curr;\n};\n\nexport const isNumeric = (n) => {\n  return !isNaN(parseFloat(n)) && isFinite(n);\n};\n\nexport const indexOfClosest = (num, arr) => {\n  if (!isNumeric(num)) {\n    return false;\n  }\n  arr = arr.filter((a) => isNumeric(a));\n  var index = 0;\n  var diff = Math.abs(num - arr[0]);\n  for (var val = 0; val < arr.length; val++) {\n    var newdiff = Math.abs(num - arr[val]);\n    if (newdiff < diff) {\n      diff = newdiff;\n      index = val;\n    }\n  }\n  return index;\n};\n\nexport const getFileIndex = (scales, p) => {\n  for (var i = 0; i < scales.length; i++) {\n    if (p >= Math.min(...scales[i]) && p <= Math.max(...scales[i])) {\n      return i;\n    }\n  }\n  return NaN;\n};\n\nexport const formatDate = (a, lang) => {\n  var months = lang.shortMonths\n  var year = a.getFullYear();\n  var month = months[a.getMonth()];\n  var date = a.getDate();\n  var hour = a.getHours();\n  var min = a.getMinutes();\n  return `${hour < 10 ? \"0\" + hour : hour}:${\n    min < 10 ? \"0\" + min : min\n  } ${date} ${month} ${String(year).slice(-2)}`;\n};\n\nexport const formatNumber = (num, decimals = 3) => {\n  num = parseFloat(num);\n  var fact = 10 ** Math.round(parseFloat(decimals))\n  if (num > 9999 || (num < 0.01 && num > -0.01) || num < -9999) {\n    num = num.toExponential(decimals);\n  } else {\n    num = Math.round(num * fact) / fact;\n  }\n  return num;\n};\n\nexport const languageOptions = (name) => {\n  var lang = {\n    de: {\n      decimal: \",\",\n      thousands: \".\",\n      grouping: [3],\n      currency: [\"€\", \"\"],\n      dateTime: \"%a %b %e %X %Y\",\n      date: \"%d.%m.%Y\",\n      time: \"%H:%M:%S\",\n      periods: ['Vormittag', 'Nachmittag'],\n      days: [\n        \"Sonntag\",\n        \"Montag\",\n        \"Dienstag\",\n        \"Mittwoch\",\n        \"Donnerstag\",\n        \"Freitag\",\n        \"Samstag\",\n      ],\n      shortDays: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"],\n      months: [\n        \"Januar\",\n        \"Februar\",\n        \"März\",\n        \"April\",\n        \"Mai\",\n        \"Juni\",\n        \"Juli\",\n        \"August\",\n        \"September\",\n        \"Oktober\",\n        \"November\",\n        \"Dezember\",\n      ],\n      shortMonths: [\n        \"Jan\",\n        \"Feb\",\n        \"Mär\",\n        \"Apr\",\n        \"Mai\",\n        \"Jun\",\n        \"Jul\",\n        \"Aug\",\n        \"Sep\",\n        \"Okt\",\n        \"Nov\",\n        \"Dez\",\n      ],\n    },\n    en: {\n      decimal: \",\",\n      thousands: \".\",\n      grouping: [3],\n      currency: [\"€\", \"\"],\n      dateTime: \"%a %b %e %X %Y\",\n      date: \"%d.%m.%Y\",\n      time: \"%H:%M:%S\",\n      periods: [\"AM\", \"PM\"],\n      days: [\n        \"Sunday\",\n        \"Monday\",\n        \"Tuesday\",\n        \"Wednesday\",\n        \"Thursday\",\n        \"Friday\",\n        \"Saturday\",\n      ],\n      shortDays: [\"Sun\", \"Mon\", \"Tues\", \"Weds\", \"Thurs\", \"Fri\", \"Sat\"],\n      months: [\n        \"January\",\n        \"February\",\n        \"March\",\n        \"April\",\n        \"May\",\n        \"June\",\n        \"July\",\n        \"August\",\n        \"September\",\n        \"October\",\n        \"November\",\n        \"December\",\n      ],\n      shortMonths: [\n        \"Jan\",\n        \"Feb\",\n        \"Mar\",\n        \"Apr\",\n        \"May\",\n        \"Jun\",\n        \"Jul\",\n        \"Aug\",\n        \"Sep\",\n        \"Oct\",\n        \"Nov\",\n        \"Dec\",\n      ],\n    },\n    fr: {\n      decimal: \",\",\n      thousands: \".\",\n      grouping: [3],\n      currency: [\"€\", \"\"],\n      dateTime: \"%a %b %e %X %Y\",\n      date: \"%d.%m.%Y\",\n      time: \"%H:%M:%S\",\n      periods: [\"AM\", \"PM\"],\n      days: [\n        \"Dimanche\",\n        \"Lundi\",\n        \"Mardi\",\n        \"Mercredi\",\n        \"Jeudi\",\n        \"Vendredi\",\n        \"Samedi\",\n      ],\n      shortDays: [\"Di\", \"Lu\", \"Ma\", \"Me\", \"Je\", \"Ve\", \"Sa\"],\n      months: [\n        \"Janvier\",\n        \"Février\",\n        \"Mars\",\n        \"Avril\",\n        \"Mai\",\n        \"Juin\",\n        \"Juillet\",\n        \"Août\",\n        \"Septembre\",\n        \"Octobre\",\n        \"Novembre\",\n        \"Décembre\",\n      ],\n      shortMonths: [\n        \"Janv\",\n        \"Févr\",\n        \"Mars\",\n        \"Avr\",\n        \"Mai\",\n        \"Juin\",\n        \"Juil\",\n        \"Août\",\n        \"Sept\",\n        \"Oct\",\n        \"Nov\",\n        \"Déc\",\n      ],\n    },\n    es: {\n      decimal: \",\",\n      thousands: \".\",\n      grouping: [3],\n      currency: [\"€\", \"\"],\n      dateTime: \"%a %b %e %X %Y\",\n      date: \"%d.%m.%Y\",\n      time: \"%H:%M:%S\",\n      periods: [\"AM\", \"PM\"],\n      days: [\n        \"Domingo\",\n        \"Lunes\",\n        \"Martes\",\n        \"Miércoles\",\n        \"Jueves\",\n        \"Viernes\",\n        \"Sábado\",\n      ],\n      shortDays: [\"Do\", \"Lu\", \"Ma\", \"Mi\", \"Ju\", \"Vi\", \"Sa\"],\n      months: [\n        \"Enero\",\n        \"Febrero\",\n        \"Marzo\",\n        \"Abril\",\n        \"Mayo\",\n        \"Junio\",\n        \"Julio\",\n        \"Agosto\",\n        \"Septiembre\",\n        \"Octubre\",\n        \"Noviembre\",\n        \"Diciembre\",\n      ],\n      shortMonths: [\n        \"Enero\",\n        \"Feb\",\n        \"Mar\",\n        \"Abr\",\n        \"Mayo\",\n        \"Jun\",\n        \"Jul\",\n        \"Agosto\",\n        \"Sept\",\n        \"Oct\",\n        \"Nov\",\n        \"Dic\",\n      ],\n    },\n    it: {\n      decimal: \",\",\n      thousands: \".\",\n      grouping: [3],\n      currency: [\"€\", \"\"],\n      dateTime: \"%a %b %e %X %Y\",\n      date: \"%d.%m.%Y\",\n      time: \"%H:%M:%S\",\n      periods: [\"AM\", \"PM\"],\n      days: [\n        \"Domenica\",\n        \"Lunedì\",\n        \"Martedì\",\n        \"Mercoledì\",\n        \"Giovedì\",\n        \"Venerdì\",\n        \"Sabato\",\n      ],\n      shortDays: [\"Do\", \"Lun\", \"Mar\", \"Mer\", \"Gio\", \"Ven\", \"Sab\"],\n      months: [\n        \"Gennaio\",\n        \"Febbraio\",\n        \"Marzo\",\n        \"Aprile\",\n        \"Maggio\",\n        \"Giugno\",\n        \"Luglio\",\n        \"Agosto\",\n        \"Settembre\",\n        \"Ottobre\",\n        \"Novembre\",\n        \"Dicembre\",\n      ],\n      shortMonths: [\n        \"Genn\",\n        \"Febbr\",\n        \"Mar\",\n        \"Apr\",\n        \"Magg\",\n        \"Giugno\",\n        \"Luglio\",\n        \"Ag\",\n        \"Sett\",\n        \"Ott\",\n        \"Nov\",\n        \"Dic\",\n      ],\n    },\n  };\n  if (name in lang) {\n    return lang[name];\n  } else {\n    console.error(\"Language: \" + name + \" not recognised.\");\n    return lang[\"en\"];\n  }\n};\n\nexport const scientificNotation = (min, max) => {\n  return (min > -0.0001 && max < 0.0001) || (min < -10000 || max > 10000)\n};\n","import { getRGBAColor, indexOfClosest, isNumeric } from \"./functions\";\n\nexport const canvasGrid = (\n  data,\n  scaleX,\n  scaleY,\n  xDomain,\n  yDomain,\n  context,\n  options\n) => {\n  if (data.length === 1) {\n    putImgDataSingleMatrix(\n      data[0],\n      scaleX,\n      scaleY,\n      xDomain,\n      yDomain,\n      context,\n      options\n    );\n  } else {\n    putImgDataMultMatrix(\n      data,\n      scaleX,\n      scaleY,\n      xDomain,\n      yDomain,\n      context,\n      options\n    );\n  }\n};\n\nexport const canvasContour = (\n  data,\n  scaleX,\n  scaleY,\n  context,\n  options,\n  prepContours\n) => {\n  const colorScale = (v) => {\n    return getRGBAColor(v, options.zMin, options.zMax, options.colors, options.colorCache);\n  };\n\n  for (var i = 0; i < data.length; i++) {\n    fill(prepContours.baseContour[i], data[i], false);\n    prepContours.mainContour[i].forEach((contour, index) => {\n      if (index !== 0) fill(contour, data[i], false);\n    });\n    fill(prepContours.nanContour[i], data[i], [255, 255, 255]);\n  }\n\n  function fill(geometry, plotdata, fixedColor) {\n    try {\n      var color = colorScale(geometry.value + prepContours.step);\n      if (fixedColor) color = fixedColor;\n      context.fillStyle = `rgb(\n        ${color[0]},\n        ${color[1]},\n        ${color[2]})`;\n      geometry.coordinates.forEach((a) => {\n        a.forEach((b) => {\n          context.beginPath();\n          context.moveTo(\n            scaleX(getXfromIndex(b[0][0], plotdata, options)),\n            scaleY(getYfromIndex(b[0][1], plotdata, options))\n          );\n          b.forEach((c) => {\n            context.lineTo(\n              scaleX(getXfromIndex(c[0], plotdata, options)),\n              scaleY(getYfromIndex(c[1], plotdata, options))\n            );\n          });\n          context.closePath();\n          context.fill();\n        });\n      });\n    } catch (e) {\n      console.error(\"Failed to plot contour\");\n    }\n  }\n};\n\nconst pixelMapping = (data, scaleX, scaleY, options) => {\n  var dataypix = data.y.map((dy) => scaleY(dy));\n  var dataxpix = data.x.map((dx) => scaleX(dx));\n\n  var indexypix = [];\n  var indexxpix = [];\n\n  // Currently using closest (needs to be improved)\n  for (var i = 0; i < options.canvasHeight; i++) {\n    indexypix.push(indexOfClosest(i, dataypix));\n  }\n\n  for (var j = 0; j < options.canvasWidth; j++) {\n    indexxpix.push(indexOfClosest(j, dataxpix));\n  }\n  return { indexxpix, indexypix };\n};\n\nfunction pixelMappingArray(\n  data,\n  scaleX,\n  scaleY,\n  highh,\n  lowh,\n  highw,\n  loww,\n  options\n) {\n  // Currently using closest (needs to be improved)\n\n  var index = [];\n  for (var i = 0; i < data.length; i++) {\n    let ypix = data[i].y.map((dy) => scaleY(dy));\n    let xpix = data[i].x.map((dx) => scaleX(dx));\n\n    let indexxpix = [];\n    let xstart = Math.max(...[0, Math.ceil(Math.min(...xpix)), loww]);\n    let xend = Math.min(\n      ...[options.canvasWidth, Math.floor(Math.max(...xpix)), highw]\n    );\n\n    let indexypix = [];\n    let ystart = Math.max(...[0, Math.ceil(Math.min(...ypix)), lowh]);\n    let yend = Math.min(\n      ...[options.canvasHeight, Math.floor(Math.max(...ypix)), highh]\n    );\n\n    for (var j = xstart; j < xend; j++) {\n      indexxpix.push([j, indexOfClosest(j, xpix)]);\n    }\n\n    for (var k = ystart; k < yend; k++) {\n      indexypix.push([k, indexOfClosest(k, ypix)]);\n    }\n\n    index.push({ indexxpix, indexypix });\n  }\n  return index;\n}\n\nconst putImgDataSingleMatrix = (\n  arr,\n  scaleX,\n  scaleY,\n  xDomain,\n  yDomain,\n  context,\n  options\n) => {\n  const colorScale = (v) => {\n    return getRGBAColor(v, options.zMin, options.zMax, options.colors, options.colorCache);\n  };\n  var { indexxpix, indexypix } = pixelMapping(arr, scaleX, scaleY, options);\n  var imgData = context.createImageData(\n    options.canvasWidth,\n    options.canvasHeight\n  );\n  var highh, lowh, highw, loww;\n  if (options.yReverse) {\n    highh = Math.min(options.canvasHeight, Math.floor(scaleY(yDomain[1])));\n    lowh = Math.max(0, Math.floor(scaleY(yDomain[0])));\n  } else {\n    highh = Math.min(options.canvasHeight, Math.floor(scaleY(yDomain[0])));\n    lowh = Math.max(0, Math.floor(scaleY(yDomain[1])));\n  }\n  if (options.xReverse) {\n    highw = Math.min(options.canvasWidth, Math.floor(scaleX(xDomain[0])));\n    loww = Math.max(0, Math.floor(scaleX(xDomain[1])));\n  } else {\n    highw = Math.min(options.canvasWidth, Math.floor(scaleX(xDomain[1])));\n    loww = Math.max(0, Math.floor(scaleX(xDomain[0])));\n  }\n  var i, j, l, rgbacolor;\n  for (j = lowh; j < highh; j++) {\n    for (l = loww; l < highw; l++) {\n      if (isNumeric(indexypix[j]) && isNumeric(indexxpix[l])) {\n        rgbacolor = colorScale(arr.z[indexypix[j]][indexxpix[l]]);\n        i = (options.canvasWidth * j + l) * 4;\n        imgData.data[i + 0] = rgbacolor[0];\n        imgData.data[i + 1] = rgbacolor[1];\n        imgData.data[i + 2] = rgbacolor[2];\n        imgData.data[i + 3] = rgbacolor[3];\n      }\n    }\n  }\n  context.putImageData(imgData, 1, 0);\n};\n\nconst putImgDataMultMatrix = (\n  arr,\n  scaleX,\n  scaleY,\n  xDomain,\n  yDomain,\n  context,\n  options\n) => {\n  const colorScale = (v) => {\n    return getRGBAColor(v, options.zMin, options.zMax, options.colors, options.colorCache);\n  };\n  var imgData = context.createImageData(\n    options.canvasWidth,\n    options.canvasHeight\n  );\n  var highh, lowh, highw, loww;\n  if (options.yReverse) {\n    highh = Math.min(options.canvasHeight, Math.floor(scaleY(yDomain[1])));\n    lowh = Math.max(0, Math.floor(scaleY(yDomain[0])));\n  } else {\n    highh = Math.min(options.canvasHeight, Math.floor(scaleY(yDomain[0])));\n    lowh = Math.max(0, Math.floor(scaleY(yDomain[1])));\n  }\n  if (options.xReverse) {\n    highw = Math.min(options.canvasWidth, Math.floor(scaleX(xDomain[0])));\n    loww = Math.max(0, Math.floor(scaleX(xDomain[1])));\n  } else {\n    highw = Math.min(options.canvasWidth, Math.floor(scaleX(xDomain[1])));\n    loww = Math.max(0, Math.floor(scaleX(xDomain[0])));\n  }\n  var index = pixelMappingArray(\n    arr,\n    scaleX,\n    scaleY,\n    highh,\n    lowh,\n    highw,\n    loww,\n    options\n  );\n  var rgbacolor, l;\n  for (var i = 0; i < index.length; i++) {\n    for (var j = 0; j < index[i].indexypix.length; j++) {\n      for (var k = 0; k < index[i].indexxpix.length; k++) {\n        if ((index[i].indexypix[j], index[i].indexxpix[k])) {\n          rgbacolor = colorScale(\n            arr[i].z[index[i].indexypix[j][1]][index[i].indexxpix[k][1]]\n          );\n          l =\n            (options.canvasWidth * index[i].indexypix[j][0] +\n              index[i].indexxpix[k][0]) *\n            4;\n          imgData.data[l + 0] = rgbacolor[0];\n          imgData.data[l + 1] = rgbacolor[1];\n          imgData.data[l + 2] = rgbacolor[2];\n          imgData.data[l + 3] = rgbacolor[3];\n        }\n      }\n    }\n  }\n  context.putImageData(imgData, 1, 0);\n};\n\nconst getXfromIndex = (index, plotdata, options) => {\n  if (index <= plotdata.x.length - 1) {\n    if (options.xTime) {\n      return new Date(\n        (plotdata.x[Math.ceil(index)].getTime() -\n          plotdata.x[Math.floor(index)].getTime()) *\n          (index - Math.floor(index)) +\n          plotdata.x[Math.floor(index)].getTime()\n      );\n    } else {\n      return (\n        (plotdata.x[Math.ceil(index)] - plotdata.x[Math.floor(index)]) *\n          (index - Math.floor(index)) +\n        plotdata.x[Math.floor(index)]\n      );\n    }\n  } else {\n    return plotdata.x[plotdata.x.length - 1];\n  }\n};\n\nconst getYfromIndex = (index, plotdata, options) => {\n  if (index <= plotdata.y.length - 1) {\n    if (options.yTime) {\n      return new Date(\n        (plotdata.y[Math.ceil(index)].getTime() -\n          plotdata.y[Math.floor(index)].getTime()) *\n          (index - Math.floor(index)) +\n          plotdata.y[Math.floor(index)].getTime()\n      );\n    } else {\n      return (\n        (plotdata.y[Math.ceil(index)] - plotdata.y[Math.floor(index)]) *\n          (index - Math.floor(index)) +\n        plotdata.y[Math.floor(index)]\n      );\n    }\n  } else {\n    return plotdata.y[plotdata.y.length - 1];\n  }\n};\n","import {\n  select,\n  extent,\n  scaleTime,\n  scaleLog,\n  scaleLinear,\n  axisBottom,\n  axisLeft,\n  timeFormat,\n  timeSecond,\n  timeMinute,\n  timeHour,\n  timeDay,\n  timeMonth,\n  timeYear,\n  timeWeek,\n  symbol,\n  symbolTriangle,\n  zoomIdentity,\n  range,\n  format,\n  zoom as d3zoom,\n  timeFormatDefaultLocale,\n} from \"d3\";\nimport { contours } from \"d3-contour\";\nimport {\n  verifyString,\n  verifyBool,\n  verifyNumber,\n  verifyNone,\n  verifyColors,\n  verifyDiv,\n  verifyData,\n  verifyFunction,\n} from \"./verify\";\nimport {\n  convertToRGB,\n  convertToHex,\n  getFileIndex,\n  closest,\n  formatDate,\n  formatNumber,\n  isNumeric,\n  languageOptions,\n  scientificNotation,\n} from \"./functions\";\nimport { canvasGrid, canvasContour } from \"./fillcanvas\";\n\nconst heatmap = (div, data, options = {}) => {\n  if (!Array.isArray(data)) data = [data];\n  try {\n    select(\"#svg_\" + div).remove();\n    select(\"#canvas_\" + div).remove();\n    select(\"#tooltip_\" + div).remove();\n  } catch (e) {}\n\n  try {\n    verifyDiv(div);\n    verifyData(data);\n\n    options = processOptions(div, data, options);\n\n    const { xDomain, yDomain, zDomain, xFileDomain, yFileDomain } =\n      dataExtents(data);\n\n    if (options.zMin === false) options.zMin = zDomain[0];\n    if (options.zMax === false) options.zMax = zDomain[1];\n\n    const context = addCanvas(div, options);\n    const svg = addSVG(div, options);\n\n    timeFormatDefaultLocale(languageOptions(options.language));\n\n    var xAxis = addXAxis(svg, xDomain, options);\n    var yAxis = addYAxis(svg, yDomain, options);\n\n    if (options.addTitle) addTitle(svg, div, options);\n    if (options.backgroundColor) addBackground(div, options);\n    if (options.legendRight) addLegendRight(svg, div, options);\n    if (options.setDownloadGraph)\n      options.setDownloadGraph(() => downloadGraph(div, options));\n    if (options.setDownloadGraphDiv)\n      select(\"#\" + options.setDownloadGraphDiv).on(\"click\", function () {\n        downloadGraph(div, options);\n      });\n\n    var contour;\n    var nullData;\n    var prepContours;\n    if (options.contour) {\n      contour = options.autoDownsample\n        ? data.map((d) => autoDownSample(d, options.autoDownsample))\n        : data;\n      nullData = replaceNull(contour, options.zMax);\n      prepContours = prepareContours(contour, nullData, zDomain, options);\n    }\n\n    var { zoombox } = addZoom(\n      svg,\n      data,\n      contour,\n      prepContours,\n      div,\n      xAxis,\n      yAxis,\n      xDomain,\n      yDomain,\n      zDomain,\n      context,\n      options\n    );\n\n    if (options.tooltip)\n      addTooltip(\n        svg,\n        data,\n        div,\n        zoombox,\n        xAxis,\n        yAxis,\n        xFileDomain,\n        yFileDomain,\n        options\n      );\n\n    setTimeout(() => {\n      context.clearRect(0, 0, options.canvasWidth, options.canvasHeight);\n      if (options.contour) {\n        canvasContour(\n          contour,\n          xAxis.ax,\n          yAxis.ax,\n          context,\n          options,\n          prepContours\n        );\n      } else {\n        canvasGrid(\n          data,\n          xAxis.ax,\n          yAxis.ax,\n          xDomain,\n          yDomain,\n          context,\n          options\n        );\n      }\n    }, 0);\n  } catch (e) {\n    console.error(e);\n  }\n};\n\nconst processOptions = (div, data, userOptions) => {\n  var defaultOptions = [\n    { name: \"language\", default: \"en\", verify: verifyString },\n    { name: \"xLabel\", default: false, verify: verifyString },\n    { name: \"yLabel\", default: false, verify: verifyString },\n    { name: \"zLabel\", default: false, verify: verifyString },\n    { name: \"xUnit\", default: false, verify: verifyString },\n    { name: \"yUnit\", default: false, verify: verifyString },\n    { name: \"zUnit\", default: false, verify: verifyString },\n    { name: \"xLog\", default: false, verify: verifyBool },\n    { name: \"yLog\", default: false, verify: verifyBool },\n    { name: \"decimalPlaces\", default: 3, verify: verifyNumber },\n    { name: \"tooltip\", default: true, verify: verifyBool },\n    { name: \"levels\", default: false, verify: verifyBool },\n    { name: \"title\", default: false, verify: verifyString },\n    { name: \"zMin\", default: false, verify: verifyNone },\n    { name: \"zMax\", default: false, verify: verifyNone },\n    { name: \"fontSize\", default: 12, verify: verifyNumber },\n    { name: \"contour\", default: false, verify: verifyBool },\n    { name: \"yReverse\", default: false, verify: verifyBool },\n    { name: \"xReverse\", default: false, verify: verifyBool },\n    { name: \"marginTop\", default: 10, verify: verifyNumber },\n    { name: \"marginLeft\", default: 46, verify: verifyNumber },\n    { name: \"marginBottom\", default: 46, verify: verifyNumber },\n    { name: \"marginRight\", default: 70, verify: verifyNumber },\n    { name: \"legendRight\", default: true, verify: verifyBool },\n    { name: \"thresholdStep\", default: 20, verify: verifyNumber },\n    { name: \"backgroundColor\", default: false, verify: verifyString },\n    { name: \"autoDownsample\", default: false, verify: verifyNumber },\n    { name: \"setDownloadGraph\", default: false, verify: verifyFunction },\n    { name: \"setDownloadGraphDiv\", default: false, verify: verifyString },\n    { name: \"hover\", default: false, verify: verifyFunction },\n    { name: \"click\", default: false, verify: verifyFunction },\n\n    {\n      name: \"colors\",\n      default: [\n        { color: \"#0000ff\", point: 0 },\n        { color: \"#ff0000\", point: 1 },\n      ],\n      verify: verifyColors,\n    },\n    {\n      name: \"width\",\n      default: select(\"#\" + div)\n        .node()\n        .getBoundingClientRect().width,\n      verify: verifyNumber,\n    },\n    {\n      name: \"height\",\n      default:\n        select(\"#\" + div)\n          .node()\n          .getBoundingClientRect().height - 5,\n      verify: verifyNumber,\n    },\n  ];\n\n  var options = {};\n  for (let i = 0; i < defaultOptions.length; i++) {\n    if (defaultOptions[i].name in userOptions) {\n      if (userOptions[defaultOptions[i].name] === undefined) {\n        options[defaultOptions[i].name] = defaultOptions[i].default;\n      } else if (\n        defaultOptions[i].verify(userOptions[defaultOptions[i].name])\n      ) {\n        options[defaultOptions[i].name] = userOptions[defaultOptions[i].name];\n      } else {\n        console.error(\n          `${userOptions[defaultOptions[i].name]} is not a valid input for ${\n            defaultOptions[i].name\n          }`\n        );\n        options[defaultOptions[i].name] = defaultOptions[i].default;\n      }\n    } else {\n      options[defaultOptions[i].name] = defaultOptions[i].default;\n    }\n  }\n\n  if (!(\"marginLeft\" in userOptions))\n    options.marginLeft = options.fontSize * 4 + 10;\n  if (!(\"marginRight\" in userOptions)) {\n    if (options.legendRight) {\n      options.marginRight = options.fontSize * 5 + 12;\n    } else {\n      options.marginRight = 10;\n    }\n  }\n  if (!(\"marginBottom\" in userOptions))\n    options.marginBottom = options.fontSize * 3 + 10;\n  if (!(\"marginTop\" in userOptions)) {\n    if (options.title) {\n      options.marginTop = options.fontSize + 2;\n    } else {\n      options.marginTop = 10;\n    }\n  }\n\n  if (!(typeof options.zMin === \"number\" && !isNaN(options.zMin)))\n    options.zMin = false;\n\n  if (!(typeof options.zMax === \"number\" && !isNaN(options.zMax)))\n    options.zMax = false;\n\n  options.xTime = false;\n  options.yTime = false;\n  if (data[0].x[0] instanceof Date) options.xTime = true;\n  if (data[0].y[0] instanceof Date) options.yTime = true;\n\n  options.colors = JSON.parse(JSON.stringify(options.colors));\n  options.colors = options.colors.map((c) => {\n    if (Array.isArray(c.color)) {\n      c.rgba = JSON.parse(JSON.stringify(c.color));\n      c.color = convertToHex(c.color);\n    } else {\n      c.rgba = convertToRGB(c.color);\n    }\n    return c;\n  });\n  options.colorCache = new Map();\n\n  options.canvasWidth = Math.floor(\n    options.width - options.marginLeft - options.marginRight\n  );\n  options.canvasHeight = Math.floor(\n    options.height - options.marginTop - options.marginBottom\n  );\n  return options;\n};\n\nconst prepareContours = (data, nullData, zDomain, options) => {\n  var thresholds = range(\n    zDomain[0],\n    zDomain[1],\n    (zDomain[1] - zDomain[0]) / options.thresholdStep\n  );\n  var step = (zDomain[1] - zDomain[0]) / options.thresholdStep;\n\n  var baseContour = [];\n  var mainContour = [];\n  var nanContour = [];\n\n  for (var i = 0; i < data.length; i++) {\n    let cr = contours()\n      .size([data[i].z[0].length, data[i].z.length])\n      .smooth(false);\n    let c = contours().size([data[i].z[0].length, data[i].z.length]);\n    let values = data[i].z.flat();\n    let nullValues = nullData[i].z.flat();\n    baseContour.push(cr.thresholds(thresholds)(values)[0]);\n    mainContour.push(c.thresholds(thresholds)(values));\n    nanContour.push(cr.thresholds([options.zMax * 1000])(nullValues)[0]);\n  }\n  return { baseContour, mainContour, nanContour, step };\n};\n\nconst replaceNull = (data, zMax) => {\n  var nullData = JSON.parse(JSON.stringify(data));\n  for (var i = 0; i < data.length; i++) {\n    for (var y = 1; y < data[i].z.length - 1; y++) {\n      for (var x = 1; x < data[i].z[y].length - 1; x++) {\n        if (data[i].z[y][x] === null || !isNumeric(data[i].z[y][x])) {\n          if (data[i].z[y][x] !== null) data[i].z[y][x] = null;\n          nullData[i].z[y][x] = zMax * 10;\n          nullData[i].z[y][x + 1] = zMax * 10;\n          nullData[i].z[y - 1][x + 1] = zMax * 10;\n          nullData[i].z[y - 1][x] = zMax * 10;\n          nullData[i].z[y - 1][x - 1] = zMax * 10;\n          nullData[i].z[y][x - 1] = zMax * 10;\n          nullData[i].z[y + 1][x - 1] = zMax * 10;\n          nullData[i].z[y + 1][x] = zMax * 10;\n          nullData[i].z[y + 1][x + 1] = zMax * 10;\n        }\n      }\n    }\n  }\n  return nullData;\n};\n\nconst getDomain = (domain) => {\n  var minarr = domain.map((d) => d[0]);\n  var maxarr = domain.map((d) => d[1]);\n  var min = extent(minarr)[0];\n  var max = extent(maxarr)[1];\n  return [min, max];\n};\n\nconst dataExtents = (data) => {\n  var xDomain, yDomain, zDomain;\n  var xFileDomain = [];\n  var yFileDomain = [];\n  var zFileDomain = [];\n  for (var h = 0; h < data.length; h++) {\n    let xext = extent(data[h].x);\n    let yext = extent(data[h].y);\n    if (\n      !xFileDomain.map((x) => x[0]).includes(xext[0]) ||\n      !xFileDomain.map((x) => x[1]).includes(xext[1])\n    ) {\n      xFileDomain.push(xext);\n    }\n    if (\n      !yFileDomain.map((y) => y[0]).includes(yext[0]) ||\n      !yFileDomain.map((y) => y[1]).includes(yext[1])\n    ) {\n      yFileDomain.push(yext);\n    }\n\n    zFileDomain.push(\n      extent(\n        [].concat.apply([], data[h].z).filter((f) => {\n          return !isNaN(parseFloat(f)) && isFinite(f);\n        })\n      )\n    );\n  }\n  xDomain = getDomain(xFileDomain);\n  yDomain = getDomain(yFileDomain);\n  zDomain = getDomain(zFileDomain);\n  return { xDomain, yDomain, zDomain, xFileDomain, yFileDomain, zFileDomain };\n};\n\nconst addSVG = (div, options) => {\n  return select(\"#\" + div)\n    .append(\"svg\")\n    .attr(\"id\", \"svg_\" + div)\n    .attr(\"width\", options.width)\n    .style(\"z-index\", 2)\n    .style(\"position\", \"absolute\")\n    .attr(\"height\", options.height)\n    .append(\"g\")\n    .attr(\n      \"transform\",\n      \"translate(\" + options.marginLeft + \",\" + options.marginTop + \")\"\n    );\n};\n\nconst addCanvas = (div, options) => {\n  var left = \"0px\";\n  if (options.contour) left = \"1px\";\n  const canvas = select(\"#\" + div)\n    .append(\"canvas\")\n    .attr(\"width\", options.canvasWidth)\n    .attr(\"height\", options.canvasHeight)\n    .style(\"margin-left\", options.marginLeft + \"px\")\n    .style(\"margin-top\", options.marginTop + \"px\")\n    .style(\"pointer-events\", \"none\")\n    .style(\"z-index\", 1)\n    .style(\"position\", \"absolute\")\n    .style(\"left\", left)\n    .style(\"cursor\", \"grab\")\n    .attr(\"id\", \"canvas_\" + div)\n    .attr(\"class\", \"canvas-plot\");\n  return canvas.node().getContext(\"2d\");\n};\n\nconst addXAxis = (svg, xDomain, options) => {\n  var ax;\n  var xrange = [0, options.canvasWidth];\n  var xAxisLabel =\n    \"\" +\n    (options.xLabel ? options.xLabel : \"\") +\n    (options.xUnit ? \" (\" + options.xUnit + \")\" : \"\");\n  if (options.xReverse) xrange = [options.canvasWidth, 0];\n  if (options.xTime) {\n    xAxisLabel = \"\";\n    ax = scaleTime().range(xrange).domain(xDomain);\n  } else if (options.xLog) {\n    ax = scaleLog().range(xrange).domain(xDomain);\n  } else {\n    ax = scaleLinear().range(xrange).domain(xDomain);\n  }\n  var ref = ax.copy();\n  var base = ax.copy();\n  var axis = axisBottom(ax).ticks(3);\n  if (options.xTime) {\n    axis.tickFormat(multiFormat);\n  } else if (scientificNotation(xDomain[0], xDomain[1])) {\n    axis.tickFormat(format(\".1e\"));\n  }\n\n  var g = svg\n    .append(\"g\")\n    .attr(\"class\", \"x axis\")\n    .attr(\"id\", \"axis--x\")\n    .attr(\"transform\", \"translate(0,\" + options.canvasHeight + \")\")\n    .style(\"font-size\", `${options.fontSize}px`)\n    .call(axis);\n\n  if (xAxisLabel !== \"\") {\n    svg\n      .append(\"text\")\n      .attr(\n        \"transform\",\n        \"translate(\" +\n          options.canvasWidth / 2 +\n          \" ,\" +\n          (options.canvasHeight + options.marginBottom / 1.5) +\n          \")\"\n      )\n      .attr(\"x\", 6)\n      .attr(\"dx\", `${options.fontSize}px`)\n      .style(\"font-size\", `${options.fontSize}px`)\n      .style(\"text-anchor\", \"end\")\n      .text(xAxisLabel);\n\n    /*gX.selectAll(\"text\").attr(\"transform\", function (d) {\n      return (\n        \"rotate(-45)translate(-\" +\n        this.getBBox().width * (3 / 4) +\n        \",-\" +\n        this.getBBox().height * (3 / 4) +\n        \")\"\n      );\n    });*/\n  }\n\n  return { ax, ref, base, axis, g };\n};\n\nconst addYAxis = (svg, yDomain, options) => {\n  var ax;\n  var yrange = [options.canvasHeight, 0];\n  var yAxisLabel =\n    \"\" +\n    (options.yLabel ? options.yLabel : \"\") +\n    (options.yUnit ? \" (\" + options.yUnit + \")\" : \"\");\n  if (options.yReverse) yrange = [0, options.canvasHeight];\n  if (options.yTime) {\n    yAxisLabel = \"\";\n    ax = scaleTime().range(yrange).domain(yDomain);\n  } else if (options.yLog) {\n    ax = scaleLog().range(yrange).domain(yDomain);\n  } else {\n    ax = scaleLinear().range(yrange).domain(yDomain);\n  }\n  var ref = ax.copy();\n  var base = ax.copy();\n  var axis = axisLeft(ax).ticks(3);\n  if (options.yTime) {\n    axis.tickFormat(multiFormat);\n  } else if (scientificNotation(yDomain[0], yDomain[1])) {\n    axis.tickFormat(format(\".1e\"));\n  }\n\n  var g = svg\n    .append(\"g\")\n    .attr(\"class\", \"y axis\")\n    .attr(\"id\", \"axis--y\")\n    .style(\"font-size\", `${options.fontSize}px`)\n    .call(axis);\n\n  if (yAxisLabel !== \"\") {\n    svg\n      .append(\"text\")\n      .attr(\"transform\", \"rotate(-90)\")\n      .attr(\"y\", 0 - options.marginLeft)\n      .attr(\"x\", 0 - options.canvasHeight / 2)\n      .attr(\"dy\", `${options.fontSize}px`)\n      .style(\"font-size\", `${options.fontSize}px`)\n      .style(\"text-anchor\", \"middle\")\n      .text(yAxisLabel);\n  }\n  return { ax, ref, base, axis, g };\n};\n\nconst addTitle = (svg, div, options) => {\n  svg\n    .append(\"text\")\n    .attr(\"x\", options.canvasWidth / 2)\n    .attr(\"y\", 2 - options.marginTop / 2)\n    .attr(\"id\", \"title_\" + div)\n    .attr(\"text-anchor\", \"middle\")\n    .style(\"font-size\", `${options.fontSize}px`)\n    .style(\"text-decoration\", \"underline\")\n    .style(\"opacity\", \"0\")\n    .text(options.title);\n};\n\nconst addBackground = (div, options) => {\n  select(\"#\" + div)\n    .append(\"svg\")\n    .attr(\"id\", \"background_\" + div)\n    .attr(\"width\", options.width)\n    .style(\"z-index\", 0)\n    .style(\"position\", \"absolute\")\n    .attr(\"height\", options.height)\n    .append(\"g\")\n    .append(\"rect\")\n    .attr(\"x\", 1)\n    .attr(\"width\", options.width)\n    .attr(\"height\", options.height)\n    .attr(\"fill\", options.backgroundColor);\n};\n\nconst addLegendRight = (svg, div, options) => {\n  var defs = svg.append(\"defs\");\n  var ndp = 100;\n  if (options.zMax - options.zMin < 0.1) ndp = 1000;\n  if (options.zMax - options.zMin < 0.01) ndp = 10000;\n  var t1 = Math.round(options.zMax * ndp) / ndp,\n    t5 = Math.round(options.zMin * ndp) / ndp,\n    t3 = Math.round(((t1 + t5) / 2) * ndp) / ndp,\n    t2 = Math.round(((t1 + t3) / 2) * ndp) / ndp,\n    t4 = Math.round(((t3 + t5) / 2) * ndp) / ndp;\n\n  if (scientificNotation(options.zMin, options.zMax)) {\n    t1 = t1.toExponential();\n    t2 = t2.toExponential();\n    t3 = t3.toExponential();\n    t4 = t4.toExponential();\n    t5 = t5.toExponential();\n  }\n\n  var svgGradient = defs\n    .append(\"linearGradient\")\n    .attr(\"id\", \"svgGradient_\" + div)\n    .attr(\"x1\", \"0\")\n    .attr(\"x2\", \"0\")\n    .attr(\"y1\", \"0\")\n    .attr(\"y2\", \"1\");\n\n  for (var g = options.colors.length - 1; g > -1; g--) {\n    svgGradient\n      .append(\"stop\")\n      .attr(\"class\", \"end\")\n      .attr(\"offset\", 1 - options.colors[g].point)\n      .attr(\"stop-color\", options.colors[g].color)\n      .attr(\"stop-opacity\", 1);\n  }\n\n  svg\n    .append(\"g\")\n    .append(\"rect\")\n    .attr(\"width\", options.marginRight / 6)\n    .attr(\"height\", options.canvasHeight)\n    .attr(\"x\", options.canvasWidth + options.marginRight / 6)\n    .attr(\"y\", 0)\n    .attr(\"fill\", `url(#svgGradient_${div})`);\n\n  svg\n    .append(\"text\")\n    .attr(\"x\", options.canvasWidth + 2 + options.marginRight / 3)\n    .attr(\"y\", 10)\n    .style(\"font-size\", `${options.fontSize}px`)\n    .text(t1);\n\n  svg\n    .append(\"text\")\n    .attr(\"x\", options.canvasWidth + 2 + options.marginRight / 3)\n    .attr(\"y\", options.canvasHeight * 0.25 + 3)\n    .style(\"font-size\", `${options.fontSize}px`)\n    .text(t2);\n\n  svg\n    .append(\"text\")\n    .attr(\"x\", options.canvasWidth + 2 + options.marginRight / 3)\n    .attr(\"y\", options.canvasHeight * 0.75 + 3)\n    .style(\"font-size\", `${options.fontSize}px`)\n    .text(t4);\n\n  svg\n    .append(\"text\")\n    .attr(\"x\", options.canvasWidth + 2 + options.marginRight / 3)\n    .attr(\"y\", options.canvasHeight)\n    .style(\"font-size\", `${options.fontSize}px`)\n    .text(t5);\n\n  if (options.zLabel) {\n    var zAxisLabel =\n      options.zLabel + (options.zUnit ? \" (\" + options.zUnit + \")\" : \"\");\n    svg\n      .append(\"text\")\n      .attr(\"transform\", \"rotate(-90)\")\n      .attr(\"y\", options.canvasWidth + options.marginRight - 5)\n      .attr(\"x\", 0 - options.canvasHeight / 2)\n      .attr(\"dz\", \"1em\")\n      .style(\"text-anchor\", \"middle\")\n      .style(\"font-size\", `${options.fontSize}px`)\n      .text(zAxisLabel);\n  }\n};\n\nconst addTooltip = (\n  svg,\n  data,\n  div,\n  zoombox,\n  xAxis,\n  yAxis,\n  xFileDomain,\n  yFileDomain,\n  options\n) => {\n  var tooltip = select(\"#\" + div)\n    .append(\"div\")\n    .style(\"opacity\", 0)\n    .style(\"z-index\", 2)\n    .style(\"pointer-events\", \"none\")\n    .attr(\"id\", \"tooltip_\" + div)\n    .attr(\"class\", \"tooltip\");\n\n  // Add axis locators\n  var symbolGenerator = symbol().type(symbolTriangle).size(25);\n  svg\n    .append(\"g\")\n    .attr(\"transform\", \"rotate(90)\")\n    .append(\"g\")\n    .style(\"opacity\", 0)\n    .attr(\"id\", \"zpointer_\" + div)\n    .attr(\n      \"transform\",\n      \"translate(\" +\n        options.canvasHeight +\n        \",-\" +\n        (options.canvasWidth - 16 + options.marginRight / 3) +\n        \")\"\n    )\n    .append(\"path\")\n    .attr(\"d\", symbolGenerator());\n\n  // Add vertical point identifier\n  var vpi = svg\n    .append(\"g\")\n    .style(\"opacity\", 0)\n    .style(\"pointer-events\", \"none\")\n    .attr(\"id\", \"xline_\" + div);\n  if (options.levels)\n    vpi\n      .append(\"line\")\n      .attr(\"y1\", 0)\n      .attr(\"y2\", options.canvasHeight)\n      .style(\"stroke-width\", 1)\n      .style(\"stroke\", \"white\")\n      .style(\"fill\", \"none\");\n\n  var lang = languageOptions(options.language);\n\n  zoombox.on(\"mousemove\", (event) => {\n    try {\n      var hoverX = xAxis.ax.invert(\n        event.layerX - options.marginLeft || event.offsetX - options.marginLeft\n      );\n      var hoverY = yAxis.ax.invert(\n        event.layerY - options.marginTop || event.offsetY - options.marginTop\n      );\n\n      var idx = Math.max(\n        getFileIndex(xFileDomain, hoverX),\n        getFileIndex(yFileDomain, hoverY)\n      );\n      var process = data[idx];\n\n      var yi = closest(hoverY, process.y);\n      var xi = closest(hoverX, process.x);\n\n      var xval, yval;\n      var xu = \"\";\n      var yu = \"\";\n      var zu = \"\";\n      var zval = process.z[yi][xi];\n\n      if (options.xTime) {\n        xval = formatDate(process.x[xi], lang);\n      } else {\n        xval = formatNumber(process.x[xi]);\n        if (typeof options.xUnit === \"string\") xu = options.xUnit;\n      }\n\n      if (options.yTime) {\n        yval = formatDate(process.y[yi], lang);\n      } else {\n        yval = formatNumber(process.y[yi]);\n        if (typeof options.yUnit === \"string\") yu = options.yUnit;\n      }\n\n      if (typeof options.zUnit === \"string\") zu = options.zUnit;\n\n      var html =\n        \"<table><tbody>\" +\n        `<tr><td>x:</td><td>${xval} ${xu}</td></tr>` +\n        `<tr><td>y:</td><td>${yval} ${yu}</td></tr>` +\n        `<tr><td>z:</td><td>${formatNumber(\n          zval,\n          options.decimalPlaces\n        )} ${zu}</td></tr>` +\n        \"</tbody></table>\";\n\n      tooltip\n        .html(html)\n        .style(\"left\", xAxis.ax(process.x[xi]) + options.marginLeft + 10 + \"px\")\n        .style(\"top\", yAxis.ax(process.y[yi]) + options.marginTop - 20 + \"px\")\n        .style(\"opacity\", 1);\n\n      select(\"#zpointer_\" + div)\n        .attr(\n          \"transform\",\n          \"translate(\" +\n            ((zval - options.zMax) / (options.zMin - options.zMax)) *\n              options.canvasHeight +\n            \",-\" +\n            (options.canvasWidth - 16 + options.marginRight / 3) +\n            \")\"\n        )\n        .style(\"opacity\", 1);\n      if (options.hover) options.hover({ mousex: xi, mousey: yi, idx });\n\n      // Add vertical point identifier\n      if (options.levels) {\n        vpi.selectAll(\"circle\").remove();\n        for (var yp of process.y) {\n          if (yAxis.ax(yp) >= 0 && yAxis.ax(yp) <= options.canvasHeight) {\n            vpi\n              .append(\"circle\")\n              .attr(\"cy\", yAxis.ax(yp))\n              .attr(\"r\", 2)\n              .style(\"fill\", \"white\");\n          }\n        }\n        vpi\n          .attr(\n            \"transform\",\n            \"translate(\" +\n              xAxis.ax(process.x[xi]) +\n              options.marginLeft +\n              10 +\n              \",0)\"\n          )\n          .style(\"opacity\", 0.7);\n      }\n    } catch (e) {\n      vpi.style(\"opacity\", 0);\n      tooltip.style(\"opacity\", 0);\n      select(\"#zpointer_\" + div).style(\"opacity\", 0);\n      if (options.hover) options.hover({ mousex: false, mousey: false });\n    }\n  });\n\n  zoombox.on(\"click\", (event) => {\n    try {\n      var hoverX = xAxis.ax.invert(\n        event.layerX - options.marginLeft || event.offsetX - options.marginLeft\n      );\n      var hoverY = yAxis.ax.invert(\n        event.layerY - options.marginTop || event.offsetY - options.marginTop\n      );\n      var idx = Math.max(\n        getFileIndex(xFileDomain, hoverX),\n        getFileIndex(yFileDomain, hoverY)\n      );\n      var process = data[idx];\n      var yi = closest(hoverY, process.y);\n      var xi = closest(hoverX, process.x);\n      if (options.click) options.click({ mousex: xi, mousey: yi, idx });\n    } catch (e) {\n      if (options.click) options.click({ mousex: false, mousey: false });\n    }\n  });\n\n  zoombox.on(\"mouseout\", () => {\n    vpi.style(\"opacity\", 0);\n    tooltip.style(\"opacity\", 0);\n    select(\"#zpointer_\" + div).style(\"opacity\", 0);\n    if (options.hover) options.hover({ mousex: false, mousey: false });\n  });\n};\n\nconst addZoom = (\n  svg,\n  data,\n  contour,\n  prepContours,\n  div,\n  xAxis,\n  yAxis,\n  xDomain,\n  yDomain,\n  zDomain,\n  context,\n  options\n) => {\n  var zoom = d3zoom()\n    .extent([\n      [0, 0],\n      [options.canvasWidth, options.canvasHeight],\n    ])\n    .on(\"zoom\", normalzoom);\n\n  var zoomx = d3zoom()\n    .extent([\n      [0, 0],\n      [options.canvasWidth, options.canvasHeight],\n    ])\n    .on(\"zoom\", normalzoomx);\n\n  var zoomy = d3zoom()\n    .extent([\n      [0, 0],\n      [options.canvasWidth, options.canvasHeight],\n    ])\n    .on(\"zoom\", normalzoomy);\n\n  var zoombox = svg\n    .append(\"rect\")\n    .attr(\"id\", \"zoombox_\" + div)\n    .attr(\"width\", options.canvasWidth)\n    .attr(\"height\", options.canvasHeight)\n    .style(\"fill\", \"none\")\n    .style(\"cursor\", \"pointer\")\n    .attr(\"pointer-events\", \"all\")\n    .call(zoom);\n\n  var zoomboxx = svg\n    .append(\"rect\")\n    .attr(\"id\", \"zoomboxx_\" + div)\n    .attr(\"width\", options.canvasWidth)\n    .attr(\"height\", options.marginBottom)\n    .style(\"fill\", \"none\")\n    .style(\"cursor\", \"col-resize\")\n    .attr(\"pointer-events\", \"all\")\n    .attr(\"y\", options.canvasHeight)\n    .call(zoomx);\n\n  var zoomboxy = svg\n    .append(\"rect\")\n    .attr(\"id\", \"zoomboxy_\" + div)\n    .attr(\"width\", options.marginLeft)\n    .attr(\"height\", options.canvasHeight)\n    .style(\"fill\", \"none\")\n    .style(\"cursor\", \"row-resize\")\n    .attr(\"pointer-events\", \"all\")\n    .attr(\"x\", -options.marginLeft)\n    .call(zoomy);\n\n  function normalzoom(event) {\n    let t = event.transform;\n    if (t !== zoomIdentity) {\n      xAxis.ax = t.rescaleX(xAxis.ref);\n      xAxis.axis.scale(xAxis.ax);\n      xAxis.g.call(xAxis.axis);\n      yAxis.ax = t.rescaleY(yAxis.ref);\n      yAxis.axis.scale(yAxis.ax);\n      yAxis.g.call(yAxis.axis);\n      context.clearRect(0, 0, options.canvasWidth, options.canvasHeight);\n      if (options.contour) {\n        canvasContour(\n          contour,\n          xAxis.ax,\n          yAxis.ax,\n          context,\n          options,\n          prepContours\n        );\n      } else {\n        canvasGrid(\n          data,\n          xAxis.ax,\n          yAxis.ax,\n          xDomain,\n          yDomain,\n          context,\n          options\n        );\n      }\n      xAxis.ref = xAxis.ax;\n      yAxis.ref = yAxis.ax;\n      zoombox.call(zoom.transform, zoomIdentity);\n    }\n  }\n\n  function normalzoomx(event) {\n    let t = event.transform;\n    if (t !== zoomIdentity) {\n      xAxis.ax = t.rescaleX(xAxis.ref);\n      xAxis.axis.scale(xAxis.ax);\n      xAxis.g.call(xAxis.axis);\n      context.clearRect(0, 0, options.canvasWidth, options.canvasHeight);\n      if (options.contour) {\n        canvasContour(\n          contour,\n          xAxis.ax,\n          yAxis.ax,\n          context,\n          options,\n          prepContours\n        );\n      } else {\n        canvasGrid(\n          data,\n          xAxis.ax,\n          yAxis.ax,\n          xDomain,\n          yDomain,\n          context,\n          options\n        );\n      }\n      xAxis.ref = xAxis.ax;\n      zoomboxx.call(zoom.transform, zoomIdentity);\n    }\n  }\n\n  function normalzoomy(event) {\n    let t = event.transform;\n    if (t !== zoomIdentity) {\n      yAxis.ax = t.rescaleY(yAxis.ref);\n      yAxis.axis.scale(yAxis.ax);\n      yAxis.g.call(yAxis.axis);\n      context.clearRect(0, 0, options.canvasWidth, options.canvasHeight);\n      if (options.contour) {\n        canvasContour(\n          contour,\n          xAxis.ax,\n          yAxis.ax,\n          context,\n          options,\n          prepContours\n        );\n      } else {\n        canvasGrid(\n          data,\n          xAxis.ax,\n          yAxis.ax,\n          xDomain,\n          yDomain,\n          context,\n          options\n        );\n      }\n      yAxis.ref = yAxis.ax;\n      zoomboxy.call(zoom.transform, zoomIdentity);\n    }\n  }\n\n  zoombox.on(\"dblclick.zoom\", null).on(\"dblclick\", () => {\n    xAxis.ax = xAxis.base;\n    yAxis.ax = yAxis.base;\n    xAxis.ref = xAxis.base;\n    yAxis.ref = yAxis.base;\n    yAxis.axis.scale(yAxis.base);\n    yAxis.g.call(yAxis.axis);\n    xAxis.axis.scale(xAxis.base);\n    xAxis.g.call(xAxis.axis);\n    context.clearRect(0, 0, options.canvasWidth, options.canvasHeight);\n    if (options.contour) {\n      canvasContour(\n        contour,\n        xAxis.ax,\n        yAxis.ax,\n        context,\n        options,\n        prepContours\n      );\n    } else {\n      canvasGrid(data, xAxis.ax, yAxis.ax, xDomain, yDomain, context, options);\n    }\n  });\n  zoomboxx.on(\"dblclick.zoom\", null);\n  zoomboxy.on(\"dblclick.zoom\", null);\n  return { zoombox };\n};\n\nconst downloadGraph = (div, options) => {\n  var title = select(\"#title_\" + div);\n  title.style(\"opacity\", \"1\");\n  var s = new XMLSerializer();\n  var str = s.serializeToString(document.getElementById(\"svg_\" + div));\n\n  var canvasout = document.createElement(\"canvas\"),\n    contextout = canvasout.getContext(\"2d\");\n\n  canvasout.width = options.width;\n  canvasout.height = options.height;\n\n  var image = new Image();\n  image.onerror = function () {\n    alert(\"Appologies .png download failed. Please download as .svg.\");\n  };\n  image.onload = function () {\n    contextout.drawImage(image, 0, 0);\n    contextout.drawImage(\n      document.getElementById(\"canvas_\" + div),\n      options.marginLeft,\n      options.marginTop\n    );\n    var a = document.createElement(\"a\");\n    a.download = \"heatmap_\" + div + \".png\";\n    a.href = canvasout.toDataURL(\"image/png\");\n    a.click();\n  };\n  image.src = \"data:image/svg+xml;charset=utf8,\" + encodeURIComponent(str);\n  title.style(\"opacity\", \"0\");\n};\n\nconst autoDownSample = (arr, ads) => {\n  var l1 = arr.z.length;\n  var l2 = arr.z[0].length;\n  if (l1 <= ads && l2 <= ads) {\n    return arr;\n  } else {\n    var d1 = Math.max(1, Math.floor(l1 / ads));\n    var d2 = Math.max(1, Math.floor(l2 / ads));\n    var z_ds = [];\n    var y_ds = [];\n    for (let i = 0; i < l1; i = i + d1) {\n      let zz_ds = [];\n      var x_ds = [];\n      for (let j = 0; j < l2; j = j + d2) {\n        zz_ds.push(arr.z[i][j]);\n        x_ds.push(arr.x[j]);\n      }\n      y_ds.push(arr.y[i]);\n      z_ds.push(zz_ds);\n    }\n    return { x: x_ds, y: y_ds, z: z_ds };\n  }\n};\n\nconst multiFormat = (date) => {\n  var formatMillisecond = timeFormat(\".%L\"),\n    formatSecond = timeFormat(\":%S\"),\n    formatMinute = timeFormat(\"%H:%M\"),\n    formatHour = timeFormat(\"%H:%M\"),\n    formatDay = timeFormat(\"%d.%m\"),\n    formatWeek = timeFormat(\"%d.%m\"),\n    formatMonth = timeFormat(\"%B\"),\n    formatYear = timeFormat(\"%Y\");\n  return (\n    timeSecond(date) < date\n      ? formatMillisecond\n      : timeMinute(date) < date\n      ? formatSecond\n      : timeHour(date) < date\n      ? formatMinute\n      : timeDay(date) < date\n      ? formatHour\n      : timeMonth(date) < date\n      ? timeWeek(date) < date\n        ? formatDay\n        : formatWeek\n      : timeYear(date) < date\n      ? formatMonth\n      : formatYear\n  )(date);\n};\n\nexport default heatmap;\n","import { select } from \"d3\";\n\nexport const verifyString = (string) => {\n  return typeof string === \"string\";\n};\n\nexport const verifyType = (type) => {\n  return [\"single\", \"double\"].includes(type);\n};\n\nexport const verifyInput = (input) => {\n  return typeof input === \"number\" && !isNaN(input) || typeof input.getMonth === 'function'; \n};\n\nexport const verifyNumber = (number) => {\n  return typeof number === \"number\" && !isNaN(number);\n};\n\nexport const verifyBool = (bool) => {\n  return typeof bool === \"boolean\";\n};\n\nexport const verifyFunction = (f) => {\n  return typeof f === \"function\";\n};\n\nexport const verifyDiv = (div) => {\n  if (select(\"#\" + div)._groups[0][0] === null) {\n    throw new Error(\n      \"Div with ID: \" + div + \" not found, slider could not be added.\"\n    );\n  }\n};\n\nexport const verifyData = (data) => {\n  return true\n};\n","export const languageOptions = (name) => {\n  var lang = {\n    de: {\n      decimal: \",\",\n      thousands: \".\",\n      grouping: [3],\n      currency: [\"€\", \"\"],\n      dateTime: \"%a %b %e %X %Y\",\n      date: \"%d.%m.%Y\",\n      time: \"%H:%M:%S\",\n      periods: ['Vormittag', 'Nachmittag'],\n      days: [\n        \"Sonntag\",\n        \"Montag\",\n        \"Dienstag\",\n        \"Mittwoch\",\n        \"Donnerstag\",\n        \"Freitag\",\n        \"Samstag\",\n      ],\n      shortDays: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"],\n      months: [\n        \"Januar\",\n        \"Februar\",\n        \"März\",\n        \"April\",\n        \"Mai\",\n        \"Juni\",\n        \"Juli\",\n        \"August\",\n        \"September\",\n        \"Oktober\",\n        \"November\",\n        \"Dezember\",\n      ],\n      shortMonths: [\n        \"Jan\",\n        \"Feb\",\n        \"Mär\",\n        \"Apr\",\n        \"Mai\",\n        \"Jun\",\n        \"Jul\",\n        \"Aug\",\n        \"Sep\",\n        \"Okt\",\n        \"Nov\",\n        \"Dez\",\n      ],\n    },\n    en: {\n      decimal: \",\",\n      thousands: \".\",\n      grouping: [3],\n      currency: [\"€\", \"\"],\n      dateTime: \"%a %b %e %X %Y\",\n      date: \"%d.%m.%Y\",\n      time: \"%H:%M:%S\",\n      periods: [\"AM\", \"PM\"],\n      days: [\n        \"Sunday\",\n        \"Monday\",\n        \"Tuesday\",\n        \"Wednesday\",\n        \"Thursday\",\n        \"Friday\",\n        \"Saturday\",\n      ],\n      shortDays: [\"Sun\", \"Mon\", \"Tues\", \"Weds\", \"Thurs\", \"Fri\", \"Sat\"],\n      months: [\n        \"January\",\n        \"February\",\n        \"March\",\n        \"April\",\n        \"May\",\n        \"June\",\n        \"July\",\n        \"August\",\n        \"September\",\n        \"October\",\n        \"November\",\n        \"December\",\n      ],\n      shortMonths: [\n        \"Jan\",\n        \"Feb\",\n        \"Mar\",\n        \"Apr\",\n        \"May\",\n        \"Jun\",\n        \"Jul\",\n        \"Aug\",\n        \"Sep\",\n        \"Oct\",\n        \"Nov\",\n        \"Dec\",\n      ],\n    },\n    fr: {\n      decimal: \",\",\n      thousands: \".\",\n      grouping: [3],\n      currency: [\"€\", \"\"],\n      dateTime: \"%a %b %e %X %Y\",\n      date: \"%d.%m.%Y\",\n      time: \"%H:%M:%S\",\n      periods: [\"AM\", \"PM\"],\n      days: [\n        \"Dimanche\",\n        \"Lundi\",\n        \"Mardi\",\n        \"Mercredi\",\n        \"Jeudi\",\n        \"Vendredi\",\n        \"Samedi\",\n      ],\n      shortDays: [\"Di\", \"Lu\", \"Ma\", \"Me\", \"Je\", \"Ve\", \"Sa\"],\n      months: [\n        \"Janvier\",\n        \"Février\",\n        \"Mars\",\n        \"Avril\",\n        \"Mai\",\n        \"Juin\",\n        \"Juillet\",\n        \"Août\",\n        \"Septembre\",\n        \"Octobre\",\n        \"Novembre\",\n        \"Décembre\",\n      ],\n      shortMonths: [\n        \"Janv\",\n        \"Févr\",\n        \"Mars\",\n        \"Avr\",\n        \"Mai\",\n        \"Juin\",\n        \"Juil\",\n        \"Août\",\n        \"Sept\",\n        \"Oct\",\n        \"Nov\",\n        \"Déc\",\n      ],\n    },\n    es: {\n      decimal: \",\",\n      thousands: \".\",\n      grouping: [3],\n      currency: [\"€\", \"\"],\n      dateTime: \"%a %b %e %X %Y\",\n      date: \"%d.%m.%Y\",\n      time: \"%H:%M:%S\",\n      periods: [\"AM\", \"PM\"],\n      days: [\n        \"Domingo\",\n        \"Lunes\",\n        \"Martes\",\n        \"Miércoles\",\n        \"Jueves\",\n        \"Viernes\",\n        \"Sábado\",\n      ],\n      shortDays: [\"Do\", \"Lu\", \"Ma\", \"Mi\", \"Ju\", \"Vi\", \"Sa\"],\n      months: [\n        \"Enero\",\n        \"Febrero\",\n        \"Marzo\",\n        \"Abril\",\n        \"Mayo\",\n        \"Junio\",\n        \"Julio\",\n        \"Agosto\",\n        \"Septiembre\",\n        \"Octubre\",\n        \"Noviembre\",\n        \"Diciembre\",\n      ],\n      shortMonths: [\n        \"Enero\",\n        \"Feb\",\n        \"Mar\",\n        \"Abr\",\n        \"Mayo\",\n        \"Jun\",\n        \"Jul\",\n        \"Agosto\",\n        \"Sept\",\n        \"Oct\",\n        \"Nov\",\n        \"Dic\",\n      ],\n    },\n    it: {\n      decimal: \",\",\n      thousands: \".\",\n      grouping: [3],\n      currency: [\"€\", \"\"],\n      dateTime: \"%a %b %e %X %Y\",\n      date: \"%d.%m.%Y\",\n      time: \"%H:%M:%S\",\n      periods: [\"AM\", \"PM\"],\n      days: [\n        \"Domenica\",\n        \"Lunedì\",\n        \"Martedì\",\n        \"Mercoledì\",\n        \"Giovedì\",\n        \"Venerdì\",\n        \"Sabato\",\n      ],\n      shortDays: [\"Do\", \"Lun\", \"Mar\", \"Mer\", \"Gio\", \"Ven\", \"Sab\"],\n      months: [\n        \"Gennaio\",\n        \"Febbraio\",\n        \"Marzo\",\n        \"Aprile\",\n        \"Maggio\",\n        \"Giugno\",\n        \"Luglio\",\n        \"Agosto\",\n        \"Settembre\",\n        \"Ottobre\",\n        \"Novembre\",\n        \"Dicembre\",\n      ],\n      shortMonths: [\n        \"Genn\",\n        \"Febbr\",\n        \"Mar\",\n        \"Apr\",\n        \"Magg\",\n        \"Giugno\",\n        \"Luglio\",\n        \"Ag\",\n        \"Sett\",\n        \"Ott\",\n        \"Nov\",\n        \"Dic\",\n      ],\n    },\n  };\n  if (name in lang) {\n    return lang[name];\n  } else {\n    console.error(\"Language: \" + name + \" not recognised.\");\n    return lang[\"en\"];\n  }\n};\n","import {\n  select,\n  scaleTime,\n  scaleLinear,\n  axisBottom,\n  pointer,\n  timeFormat,\n  timeSecond,\n  timeMinute,\n  timeHour,\n  timeDay,\n  timeMonth,\n  timeYear,\n  timeWeek,\n  drag as d3drag,\n  zoom as d3zoom,\n  timeFormatDefaultLocale,\n} from \"d3\";\nimport {\n  verifyString,\n  verifyBool,\n  verifyNumber,\n  verifyDiv,\n  verifyData,\n  verifyFunction,\n  verifyType,\n  verifyInput,\n} from \"./verify\";\nimport { languageOptions } from \"./functions\";\n\nconst slider = (div, options = {}) => {\n  try {\n    select(\"#svg_\" + div).remove();\n    select(\"#tooltip_\" + div).remove();\n  } catch (e) {}\n  try {\n    verifyDiv(div);\n    options = processOptions(div, options);\n    timeFormatDefaultLocale(languageOptions(options.language));\n\n    const svg = addSVG(div, options);\n    var Axis = xAxis(options);\n\n    addAvailability(div, svg);\n    var gX = addAxis(div, svg, Axis.axis, options);\n    addFocus(div, svg, Axis.ax, options);\n    addTooltip(div, options);\n    addEventbox(div, svg, Axis, gX, options);\n    const drag = addHandles(div, svg, Axis.ax, options);\n\n    plotAvailability(div, Axis.ax, options);\n    plotHandles(div, drag, Axis.ax, options);\n  } catch (e) {\n    console.error(e);\n  }\n};\n\nconst processOptions = (div, userOptions) => {\n  var defaultOptions = [\n    { name: \"onChange\", default: false, verify: verifyFunction },\n    { name: \"onZoom\", default: false, verify: verifyFunction },\n    { name: \"language\", default: \"en\", verify: verifyString },\n    { name: \"min\", default: 0, verify: verifyInput },\n    { name: \"max\", default: 1, verify: verifyInput },\n    { name: \"upper\", default: \"max\", verify: verifyInput },\n    { name: \"lower\", default: \"min\", verify: verifyInput },\n    { name: \"value\", default: \"max\", verify: verifyInput },\n    { name: \"availability\", default: [], verify: verifyData },\n    { name: \"barColor\", default: \"#28b5f5\", verify: verifyString },\n    { name: \"type\", default: \"single\", verify: verifyType },\n    { name: \"tooltip\", default: true, verify: verifyBool },\n    { name: \"fontSize\", default: 10, verify: verifyNumber },\n    { name: \"marginTop\", default: 25, verify: verifyNumber },\n    { name: \"marginLeft\", default: 10, verify: verifyNumber },\n    { name: \"marginBottom\", default: 30, verify: verifyNumber },\n    { name: \"marginRight\", default: 10, verify: verifyNumber },\n    { name: \"barHeight\", default: 4, verify: verifyNumber },\n    { name: \"handleHeight\", default: 20, verify: verifyNumber },\n    { name: \"handleWidth\", default: 2, verify: verifyNumber },\n    {\n      name: \"width\",\n      default: select(\"#\" + div)\n        .node()\n        .getBoundingClientRect().width,\n      verify: verifyNumber,\n    },\n  ];\n  var optionList = defaultOptions.map((d) => d.name);\n  var options = {};\n  for (let i = 0; i < defaultOptions.length; i++) {\n    if (defaultOptions[i].name in userOptions) {\n      if (defaultOptions[i].verify(userOptions[defaultOptions[i].name])) {\n        options[defaultOptions[i].name] = userOptions[defaultOptions[i].name];\n      } else {\n        console.warn(\n          `${userOptions[defaultOptions[i].name]} is not a valid input for ${\n            defaultOptions[i].name\n          }`\n        );\n        if (optionList.includes(defaultOptions[i].default)) {\n          options[defaultOptions[i].name] = options[defaultOptions[i].default];\n        } else {\n          options[defaultOptions[i].name] = defaultOptions[i].default;\n        }\n      }\n    } else {\n      if (optionList.includes(defaultOptions[i].default)) {\n        options[defaultOptions[i].name] = options[defaultOptions[i].default];\n      } else {\n        options[defaultOptions[i].name] = defaultOptions[i].default;\n      }\n    }\n  }\n  options[\"width\"] = Math.max(\n    100,\n    options[\"width\"] - options.marginLeft - options.marginRight\n  );\n  options[\"height\"] = options.fontSize * 2;\n  return options;\n};\n\nconst addSVG = (div, options) => {\n  var svg = select(\"#\" + div)\n    .append(\"svg\")\n    .attr(\"id\", \"svg_\" + div)\n    .attr(\"width\", options.width + options.marginLeft + options.marginRight)\n    .attr(\"height\", options.height + options.marginTop + options.marginBottom)\n    .append(\"g\")\n    .attr(\n      \"transform\",\n      \"translate(\" + options.marginLeft + \",\" + options.marginTop + \")\"\n    )\n    .attr(\"width\", options.width);\n\n  svg\n    .append(\"defs\")\n    .append(\"svg:clipPath\")\n    .attr(\"id\", \"clip_\" + div)\n    .append(\"svg:rect\")\n    .attr(\"width\", options.width)\n    .attr(\"height\", options.height + options.marginBottom + options.marginTop)\n    .attr(\"x\", 0)\n    .attr(\"y\", 0);\n\n  svg\n    .append(\"defs\")\n    .append(\"svg:clipPath\")\n    .attr(\"id\", \"cliphandle_\" + div)\n    .append(\"svg:rect\")\n    .attr(\"width\", options.width + options.handleWidth * 2)\n    .attr(\"height\", options.height + options.marginBottom + options.marginTop)\n    .attr(\"x\", -options.handleWidth)\n    .attr(\"y\", 0);\n  return svg;\n};\n\nconst addAxis = (div, svg, axis, options) => {\n  return svg\n    .append(\"g\")\n    .attr(\"class\", \"interactive-slider-xaxis\")\n    .attr(\"id\", \"xAxis_\" + div)\n    .style(\"font-size\", `${options.fontSize}px`)\n    .attr(\"transform\", \"translate(0,\" + options.height + \")\")\n    .call(axis);\n};\n\nconst xAxis = (options) => {\n  var ax;\n  if (options.min instanceof Date) {\n    ax = scaleTime()\n      .range([0, options.width])\n      .domain([options.min, options.max]);\n  } else {\n    ax = scaleLinear()\n      .range([0, options.width])\n      .domain([options.min, options.max]);\n  }\n  var ref = ax.copy();\n  var base = ax.copy();\n  var axis = axisBottom(ax).ticks(4).tickPadding(10);\n  if (options.min instanceof Date) {\n    axis.tickFormat(multiFormat);\n  }\n  return { ax, ref, base, axis };\n};\n\nconst addAvailability = (div, svg) => {\n  svg\n    .append(\"g\")\n    .attr(\"class\", \"interactive-slider-availability\")\n    .attr(\"id\", \"availability_\" + div)\n    .attr(\"clip-path\", \"url(#clip_\" + div + \")\");\n};\n\nconst plotAvailability = (div, x, options) => {\n  select(\"#availability_\" + div)\n    .selectAll(\"*\")\n    .remove();\n  select(\"#availability_\" + div)\n    .selectAll(\"dot\")\n    .data(options.availability)\n    .enter()\n    .append(\"rect\")\n    .attr(\"height\", options.barHeight)\n    .attr(\"width\", function (d) {\n      return Math.max(1, x(d[1]) - x(d[0]));\n    })\n    .attr(\"stroke\", options.barColor)\n    .attr(\"fill\", options.barColor)\n    .attr(\"x\", function (d) {\n      return x(d[0]);\n    })\n    .attr(\"y\", options.height - options.barHeight / 2);\n};\n\nconst addFocus = (div, svg, x, options) => {\n  var focus = svg\n    .append(\"g\")\n    .attr(\"class\", \"interactive-slider-focus\")\n    .attr(\"id\", \"focus_\" + div);\n  focus\n    .append(\"rect\")\n    .attr(\"id\", \"focushandle_\" + div)\n    .attr(\"height\", 0.9 * options.handleHeight)\n    .attr(\"width\", 0.2)\n    .style(\"fill\", \"#989c9e\")\n    .attr(\"stroke\", \"#989c9e\")\n    .attr(\"x\", x(options.min))\n    .attr(\"y\", options.height - 0.45 * options.handleHeight)\n    .style(\"opacity\", 0);\n};\n\nconst addHandles = (div, svg, x, options) => {\n  function dragstarted() {\n    select(\"#focus_\" + div).style(\"opacity\", 0);\n  }\n  function dragged(event) {\n    var id = select(this).attr(\"id\");\n    if (id === \"handles-lower_\" + div && event.x < x(options.upper)) {\n      select(this).attr(\"x\", event.x);\n      plotTooltip(div, x, event, options, (drag = true));\n    } else if (id === \"handles-upper_\" + div && event.x > x(options.lower)) {\n      select(this).attr(\"x\", event.x);\n      plotTooltip(div, x, event, options, (drag = true));\n    } else if (id === \"handles-value_\" + div) {\n      select(this).attr(\"x\", event.x);\n      plotTooltip(div, x, event, options, (drag = true));\n    }\n  }\n  function dragended(event) {\n    select(\"#focus_\" + div).style(\"opacity\", 1);\n    try {\n      var id = select(this).attr(\"id\");\n      var v = x.invert(select(\"#\" + id).attr(\"x\"));\n      if (id === \"handles-lower_\" + div) {\n        options.lower = v;\n        if (options.onChange) {\n          options.onChange([v, options.upper]);\n        }\n      } else if (id === \"handles-upper_\" + div) {\n        options.upper = v;\n        if (options.onChange) {\n          options.onChange([options.lower, v]);\n        }\n      } else if (id === \"handles-value_\" + div) {\n        options.value = v;\n        if (options.onChange) {\n          options.onChange([v]);\n        }\n      }\n    } catch (e) {\n      console.error(e);\n    }\n  }\n\n  svg\n    .append(\"g\")\n    .attr(\"class\", \"interactive-slider-handles\")\n    .attr(\"id\", \"handles_\" + div)\n    .attr(\"clip-path\", \"url(#cliphandle_\" + div + \")\");\n\n  var drag = d3drag()\n    .on(\"start\", dragstarted)\n    .on(\"drag\", dragged)\n    .on(\"end\", dragended);\n\n  return drag;\n};\n\nconst plotHandles = (div, drag, x, options) => {\n  var handles = select(\"#handles_\" + div);\n  handles.selectAll(\"*\").remove();\n  if (options.type === \"single\") {\n    handles\n      .append(\"rect\")\n      .attr(\"id\", \"handles-value_\" + div)\n      .attr(\"class\", \"interactive-slider-handles\")\n      .attr(\"cursor\", \"pointer\")\n      .attr(\"height\", options.handleHeight)\n      .attr(\"width\", options.handleWidth)\n      .attr(\"x\", x(options.value))\n      .attr(\"y\", options.height - 1 - options.handleHeight / 2)\n      .on(\"mouseover\", function (event) {\n        mouseover(event, div, options);\n      })\n      .on(\"mousemove\", function (event) {\n        mousemove(event, div, x, options);\n      })\n      .on(\"mouseout\", function () {\n        mouseout(div);\n      })\n      .call(drag);\n  } else if (options.type === \"double\") {\n    handles\n      .append(\"rect\")\n      .attr(\"id\", \"handles-lower_\" + div)\n      .attr(\"class\", \"interactive-slider-handles\")\n      .attr(\"cursor\", \"pointer\")\n      .attr(\"height\", options.handleHeight)\n      .attr(\"width\", options.handleWidth)\n      .attr(\"x\", x(options.lower))\n      .attr(\"y\", options.height - 1 - options.handleHeight / 2)\n      .on(\"mouseover\", function (event) {\n        mouseover(event, div, options);\n      })\n      .on(\"mousemove\", function (event) {\n        mousemove(event, div, x, options);\n      })\n      .on(\"mouseout\", function () {\n        mouseout(div);\n      })\n      .call(drag);\n    handles\n      .append(\"rect\")\n      .attr(\"id\", \"handles-upper_\" + div)\n      .attr(\"class\", \"interactive-slider-handles\")\n      .attr(\"cursor\", \"pointer\")\n      .attr(\"height\", options.handleHeight)\n      .attr(\"width\", options.handleWidth)\n      .attr(\"x\", x(options.upper))\n      .attr(\"y\", options.height - 1 - options.handleHeight / 2)\n      .on(\"mouseover\", function (event) {\n        mouseover(event, div, options);\n      })\n      .on(\"mousemove\", function (event) {\n        mousemove(event, div, x, options);\n      })\n      .on(\"mouseout\", function () {\n        mouseout(div);\n      })\n      .call(drag);\n  }\n};\n\nconst moveHandles = (div, x, options) => {\n  if (options.type === \"single\") {\n    select(\"#handles-value_\" + div).attr(\"x\", x(options.value));\n  } else if (options.type === \"double\") {\n    select(\"#handles-lower_\" + div).attr(\"x\", x(options.lower));\n    select(\"#handles-upper_\" + div).attr(\"x\", x(options.upper));\n  }\n};\n\nconst addTooltip = (div, options) => {\n  select(\"#\" + div)\n    .append(\"div\")\n    .attr(\"id\", \"tooltip_\" + div)\n    .style(\"font-size\", `${options.fontSize}px`)\n    .style(\"position\", \"absolute\")\n    .style(\"bottom\", options.marginBottom + options.height + \"px\")\n    .style(\"left\", options.marginLeft)\n    .attr(\"class\", \"interactive-slider-tooltip\");\n};\n\nconst plotTooltip = (div, x, event, options, drag = false) => {\n  try {\n    var tooltip = select(\"#tooltip_\" + div);\n    var e = drag ? event.x : pointer(event)[0];\n    tooltip.html(tooltipText(x.invert(e), options));\n    let tooltipwidth = tooltip.node().getBoundingClientRect().width;\n    tooltip.style(\n      \"left\",\n      Math.max(\n        Math.min(options.width - tooltipwidth, e - tooltipwidth / 2),\n        0\n      ) +\n        options.marginLeft +\n        \"px\"\n    );\n  } catch (e) {}\n};\n\nconst tooltipText = (text, options) => {\n  var months = languageOptions(options.language).shortMonths;\n  if (text instanceof Date) {\n    return `${text.getHours() < 10 ? \"0\" + text.getHours() : text.getHours()}:${\n      text.getMinutes() < 10 ? \"0\" + text.getMinutes() : text.getMinutes()\n    } ${text.getDate()}-${months[text.getMonth()]} ${text.getFullYear()}`;\n  } else {\n    return Math.round(text * 1000) / 1000;\n  }\n};\n\nconst addEventbox = (div, svg, Axis, gX, options) => {\n  var zoom = d3zoom()\n    .extent([\n      [0, 0],\n      [options.width, options.height],\n    ])\n    .on(\"zoom\", function (event) {\n      zoomed(event, div, Axis.ax, Axis.ref, gX, Axis.axis, options);\n    })\n    .on(\"end\", function (event) {\n      zoomEnd(event, Axis.ax, options);\n    });\n\n  var eventbox = svg\n    .append(\"rect\")\n    .attr(\"id\", \"eventbox_\" + div)\n    .attr(\"width\", options.width)\n    .attr(\"height\", options.height + options.marginTop + options.marginBottom)\n    .style(\"fill\", \"none\")\n    .style(\"cursor\", \"pointer\")\n    .attr(\"y\", -options.marginTop)\n    .attr(\"pointer-events\", \"all\")\n    .call(zoom);\n\n  eventbox\n    .on(\"dblclick.zoom\", null)\n    .on(\"mouseover\", function (event) {\n      mouseover(event, div, options);\n    })\n    .on(\"mousemove\", function (event) {\n      mousemove(event, div, Axis.ax, options);\n    })\n    .on(\"mouseout\", function () {\n      mouseout(div);\n    })\n    .on(\"click\", function (event) {\n      onclick(event, div, Axis.ax, options);\n    });\n};\n\nconst zoomEnd = (event, x, options) => {\n  if (event) {\n    if (options.onZoom) {\n      options.onZoom(x.domain());\n    }\n  }\n};\n\nconst zoomed = (event, div, x, ref, gX, axis, options) => {\n  if (event) {\n    let d = event.transform.rescaleX(ref).domain();\n    x.domain(d);\n  }\n  gX.call(axis);\n  plotAvailability(div, x, options);\n  moveHandles(div, x, options);\n};\n\nconst onclick = (event, div, x, options) => {\n  var value = x.invert(event.layerX - options.marginLeft);\n  if (options.type === \"single\") {\n    select(\"#handles-value_\" + div).attr(\n      \"x\",\n      event.layerX - options.marginLeft\n    );\n    options.value = value;\n    if (options.onChange) {\n      options.onChange([options.value]);\n    }\n  } else if (options.type === \"double\") {\n    if (value <= options.lower) {\n      select(\"#handles-lower_\" + div).attr(\n        \"x\",\n        event.layerX - options.marginLeft\n      );\n      options.lower = value;\n      if (options.onChange) {\n        options.onChange([options.lower, options.upper]);\n      }\n    } else if (value >= options.upper) {\n      select(\"#handles-upper_\" + div).attr(\n        \"x\",\n        event.layerX - options.marginLeft\n      );\n      options.upper = value;\n      if (options.onChange) {\n        options.onChange([options.lower, options.upper]);\n      }\n    } else if (\n      Math.abs(value - options.lower) > Math.abs(value - options.upper)\n    ) {\n      select(\"#handles-upper_\" + div).attr(\n        \"x\",\n        event.layerX - options.marginLeft\n      );\n      options.upper = value;\n      if (options.onChange) {\n        options.onChange([options.lower, options.upper]);\n      }\n    } else {\n      select(\"#handles-lower_\" + div).attr(\n        \"x\",\n        event.layerX - options.marginLeft\n      );\n      options.lower = value;\n      if (options.onChange) {\n        options.onChange([options.lower, options.upper]);\n      }\n    }\n  }\n};\n\nconst mouseover = (event, div, options) => {\n  try {\n    var focushandle = select(\"#focushandle_\" + div);\n    focushandle.attr(\"x\", pointer(event)[0]);\n    focushandle.style(\"opacity\", 1);\n    if (options.tooltip) {\n      select(\"#tooltip_\" + div).style(\"visibility\", \"visible\");\n    }\n  } catch (e) {\n    console.error(e);\n  }\n};\n\nconst mousemove = (event, div, x, options) => {\n  try {\n    var focushandle = select(\"#focushandle_\" + div);\n    focushandle.attr(\"x\", pointer(event)[0]);\n  } catch (e) {}\n  try {\n    plotTooltip(div, x, event, options);\n  } catch (e) {}\n};\n\nconst mouseout = (div) => {\n  try {\n    select(\"#focushandle_\" + div).style(\"opacity\", 0);\n    select(\"#tooltip_\" + div).style(\"visibility\", \"hidden\");\n  } catch (e) {}\n};\n\nconst multiFormat = (date) => {\n  var formatMillisecond = timeFormat(\".%L\"),\n    formatSecond = timeFormat(\":%S\"),\n    formatMinute = timeFormat(\"%H:%M\"),\n    formatHour = timeFormat(\"%H:%M\"),\n    formatDay = timeFormat(\"%d.%m\"),\n    formatWeek = timeFormat(\"%d.%m\"),\n    formatMonth = timeFormat(\"%B\"),\n    formatYear = timeFormat(\"%Y\");\n  return (\n    timeSecond(date) < date\n      ? formatMillisecond\n      : timeMinute(date) < date\n      ? formatSecond\n      : timeHour(date) < date\n      ? formatMinute\n      : timeDay(date) < date\n      ? formatHour\n      : timeMonth(date) < date\n      ? timeWeek(date) < date\n        ? formatDay\n        : formatWeek\n      : timeYear(date) < date\n      ? formatMonth\n      : formatYear\n  )(date);\n};\n\nexport default slider;\n","var getRect = function getRect(element) {\n  return element.getBoundingClientRect();\n};\n\nvar detectElementOverflow = function detectElementOverflow(element, container) {\n  return {\n    get collidedTop() {\n      return getRect(element).top < getRect(container).top;\n    },\n\n    get collidedBottom() {\n      return getRect(element).bottom > getRect(container).bottom;\n    },\n\n    get collidedLeft() {\n      return getRect(element).left < getRect(container).left;\n    },\n\n    get collidedRight() {\n      return getRect(element).right > getRect(container).right;\n    },\n\n    get overflowTop() {\n      return getRect(container).top - getRect(element).top;\n    },\n\n    get overflowBottom() {\n      return getRect(element).bottom - getRect(container).bottom;\n    },\n\n    get overflowLeft() {\n      return getRect(container).left - getRect(element).left;\n    },\n\n    get overflowRight() {\n      return getRect(element).right - getRect(container).right;\n    }\n\n  };\n};\n\nexport default detectElementOverflow;","/**\n * Checks whether we're running on a production build or not.\n */\nexport var isProduction = process.env.NODE_ENV === 'production';\n\nvar consoleOnDev = function consoleOnDev(method) {\n  if (!isProduction) {\n    var _console;\n\n    for (var _len = arguments.length, message = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      message[_key - 1] = arguments[_key];\n    }\n\n    // eslint-disable-next-line no-console\n    (_console = console)[method].apply(_console, message);\n  }\n};\n\nexport var warnOnDev = function warnOnDev() {\n  for (var _len2 = arguments.length, message = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    message[_key2] = arguments[_key2];\n  }\n\n  return consoleOnDev.apply(void 0, ['warn'].concat(message));\n};","var _excluded = [\"invertAxis\", \"invertSecondaryAxis\"];\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport React, { Component } from 'react';\nimport { findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport detectElementOverflow from 'detect-element-overflow';\nimport { warnOnDev } from './shared/utils';\nvar isBrowser = typeof window !== 'undefined';\nvar isDisplayContentsSupported = isBrowser && 'CSS' in window && 'supports' in window.CSS && CSS.supports('display', 'contents');\nvar isMutationObserverSupported = isBrowser && 'MutationObserver' in window;\n\nfunction capitalize(a) {\n  return a[0].toUpperCase() + a.slice(1);\n}\n\nfunction findScrollContainer(element) {\n  if (!element) {\n    return undefined;\n  }\n\n  var parent = element.parentElement;\n\n  while (parent) {\n    var _window$getComputedSt = window.getComputedStyle(parent),\n        overflow = _window$getComputedSt.overflow;\n\n    if (overflow.split(' ').every(function (o) {\n      return o === 'auto' || o === 'scroll';\n    })) {\n      return parent;\n    }\n\n    parent = parent.parentElement;\n  }\n\n  return document.documentElement;\n}\n\nfunction alignAxis(_ref) {\n  var axis = _ref.axis,\n      container = _ref.container,\n      element = _ref.element,\n      invertAxis = _ref.invertAxis,\n      secondary = _ref.secondary,\n      scrollContainer = _ref.scrollContainer,\n      spacing = _ref.spacing;\n  var style = window.getComputedStyle(element);\n  var parent = container.parentElement;\n  var scrollContainerCollisions = detectElementOverflow(parent, scrollContainer);\n  var documentCollisions = detectElementOverflow(parent, document.documentElement);\n  var isX = axis === 'x';\n  var startProperty = isX ? 'left' : 'top';\n  var endProperty = isX ? 'right' : 'bottom';\n  var sizeProperty = isX ? 'width' : 'height';\n  var overflowStartProperty = \"overflow\".concat(capitalize(startProperty));\n  var overflowEndProperty = \"overflow\".concat(capitalize(endProperty));\n  var scrollProperty = \"scroll\".concat(capitalize(startProperty));\n  var uppercasedSizeProperty = capitalize(sizeProperty);\n  var offsetSizeProperty = \"offset\".concat(uppercasedSizeProperty);\n  var clientSizeProperty = \"client\".concat(uppercasedSizeProperty);\n  var minSizeProperty = \"min-\".concat(sizeProperty);\n  var scrollbarWidth = scrollContainer[offsetSizeProperty] - scrollContainer[clientSizeProperty];\n  var startSpacing = _typeof(spacing) === 'object' ? spacing[startProperty] : spacing;\n  var availableStartSpace = -Math.max(scrollContainerCollisions[overflowStartProperty], documentCollisions[overflowStartProperty] + document.documentElement[scrollProperty]) - startSpacing;\n  var endSpacing = _typeof(spacing) === 'object' ? spacing[endProperty] : spacing;\n  var availableEndSpace = -Math.max(scrollContainerCollisions[overflowEndProperty], documentCollisions[overflowEndProperty] - document.documentElement[scrollProperty]) - endSpacing - scrollbarWidth;\n\n  if (secondary) {\n    availableStartSpace += parent[clientSizeProperty];\n    availableEndSpace += parent[clientSizeProperty];\n  }\n\n  var offsetSize = element[offsetSizeProperty];\n\n  function displayStart() {\n    element.style[startProperty] = 'auto';\n    element.style[endProperty] = secondary ? '0' : '100%';\n  }\n\n  function displayEnd() {\n    element.style[startProperty] = secondary ? '0' : '100%';\n    element.style[endProperty] = 'auto';\n  }\n\n  function displayIfFits(availableSpace, display) {\n    var fits = offsetSize <= availableSpace;\n\n    if (fits) {\n      display();\n    }\n\n    return fits;\n  }\n\n  function displayStartIfFits() {\n    return displayIfFits(availableStartSpace, displayStart);\n  }\n\n  function displayEndIfFits() {\n    return displayIfFits(availableEndSpace, displayEnd);\n  }\n\n  function displayWhereverShrinkedFits() {\n    var moreSpaceStart = availableStartSpace > availableEndSpace;\n    var minSize = style[minSizeProperty] && parseInt(style[minSizeProperty], 10);\n\n    function shrinkToSize(size) {\n      if (minSize && size < minSize) {\n        warnOnDev(\"<Fit />'s child will not fit anywhere with its current \".concat(minSizeProperty, \" of \").concat(minSize, \"px.\"));\n      }\n\n      var newSize = Math.max(size, minSize || 0);\n      warnOnDev(\"<Fit />'s child needed to have its \".concat(sizeProperty, \" decreased to \").concat(newSize, \"px.\"));\n      element.style[sizeProperty] = \"\".concat(newSize, \"px\");\n    }\n\n    if (moreSpaceStart) {\n      shrinkToSize(availableStartSpace);\n      displayStart();\n    } else {\n      shrinkToSize(availableEndSpace);\n      displayEnd();\n    }\n  }\n\n  var fits;\n\n  if (invertAxis) {\n    fits = displayStartIfFits() || displayEndIfFits();\n  } else {\n    fits = displayEndIfFits() || displayStartIfFits();\n  }\n\n  if (!fits) {\n    displayWhereverShrinkedFits();\n  }\n}\n\nfunction alignMainAxis(args) {\n  alignAxis(args);\n}\n\nfunction alignSecondaryAxis(args) {\n  alignAxis(_objectSpread(_objectSpread({}, args), {}, {\n    axis: args.axis === 'x' ? 'y' : 'x',\n    secondary: true\n  }));\n}\n\nfunction alignBothAxis(args) {\n  var invertAxis = args.invertAxis,\n      invertSecondaryAxis = args.invertSecondaryAxis,\n      commonArgs = _objectWithoutProperties(args, _excluded);\n\n  alignMainAxis(_objectSpread(_objectSpread({}, commonArgs), {}, {\n    invertAxis: invertAxis\n  }));\n  alignSecondaryAxis(_objectSpread(_objectSpread({}, commonArgs), {}, {\n    invertAxis: invertSecondaryAxis\n  }));\n}\n\nvar Fit = /*#__PURE__*/function (_Component) {\n  _inherits(Fit, _Component);\n\n  var _super = _createSuper(Fit);\n\n  function Fit() {\n    var _this;\n\n    _classCallCheck(this, Fit);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"onMutation\", function () {\n      _this.fit();\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"mutationObserver\", isMutationObserverSupported && new MutationObserver(_this.onMutation));\n\n    _defineProperty(_assertThisInitialized(_this), \"fit\", function () {\n      var _assertThisInitialize = _assertThisInitialized(_this),\n          scrollContainer = _assertThisInitialize.scrollContainer,\n          container = _assertThisInitialize.container,\n          element = _assertThisInitialize.element;\n\n      if (!element) {\n        return;\n      }\n\n      var elementWidth = element.clientWidth;\n      var elementHeight = element.clientHeight; // No need to recalculate - already did that for current dimensions\n\n      if (_this.elementWidth === elementWidth && _this.elementHeight === elementHeight) {\n        return;\n      } // Save the dimensions so that we know we don't need to repeat the function if unchanged\n\n\n      _this.elementWidth = elementWidth;\n      _this.elementHeight = elementHeight;\n      var parent = container.parentElement; // Container was unmounted\n\n      if (!parent) {\n        return;\n      }\n      /**\n       * We need to ensure that <Fit />'s child has a absolute position. Otherwise,\n       * we wouldn't be able to place the child in the correct position.\n       */\n\n\n      var style = window.getComputedStyle(element);\n      var position = style.position;\n\n      if (position !== 'absolute') {\n        warnOnDev('<Fit />\\'s child does not have absolute position. You should apply `position: absolute` to it.');\n        element.style.position = 'absolute';\n      }\n      /**\n       * We need to ensure that <Fit />'s parent has a relative position. Otherwise,\n       * we wouldn't be able to place the child in the correct position.\n       */\n\n\n      var parentStyle = window.getComputedStyle(parent);\n      var parentPosition = parentStyle.position;\n\n      if (parentPosition !== 'relative' && parentPosition !== 'absolute') {\n        warnOnDev('<Fit />\\'s parent does not have relative position. You should apply `position: relative` to it.');\n        parent.style.position = 'relative';\n      }\n\n      var _this$props = _this.props,\n          invertAxis = _this$props.invertAxis,\n          invertSecondaryAxis = _this$props.invertSecondaryAxis,\n          mainAxis = _this$props.mainAxis,\n          spacing = _this$props.spacing;\n      alignBothAxis({\n        container: container,\n        element: element,\n        invertAxis: invertAxis,\n        invertSecondaryAxis: invertSecondaryAxis,\n        axis: mainAxis,\n        scrollContainer: scrollContainer,\n        spacing: spacing\n      });\n    });\n\n    return _this;\n  }\n\n  _createClass(Fit, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      if (!isDisplayContentsSupported) {\n        // eslint-disable-next-line react/no-find-dom-node\n        var element = findDOMNode(this);\n        this.container = element;\n        this.element = element;\n        this.scrollContainer = findScrollContainer(element);\n      }\n\n      this.fit();\n\n      if (isMutationObserverSupported) {\n        this.mutationObserver.observe(this.element, {\n          attributes: true,\n          attributeFilter: ['class', 'style']\n        });\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      var children = this.props.children;\n      var child = React.Children.only(children);\n\n      if (isDisplayContentsSupported) {\n        return /*#__PURE__*/React.createElement(\"span\", {\n          ref: function ref(container) {\n            _this2.container = container;\n            var element = container && container.firstChild;\n            _this2.element = element;\n            _this2.scrollContainer = findScrollContainer(element);\n          },\n          style: {\n            display: 'contents'\n          }\n        }, child);\n      }\n\n      return child;\n    }\n  }]);\n\n  return Fit;\n}(Component);\n\nexport { Fit as default };\nFit.propTypes = {\n  children: PropTypes.node,\n  invertAxis: PropTypes.bool,\n  invertSecondaryAxis: PropTypes.bool,\n  mainAxis: PropTypes.oneOf(['x', 'y']),\n  spacing: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n    bottom: PropTypes.number.isRequired,\n    left: PropTypes.number.isRequired,\n    right: PropTypes.number.isRequired,\n    top: PropTypes.number.isRequired\n  })])\n};\nFit.defaultProps = {\n  mainAxis: 'y',\n  spacing: 8\n};","/**\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Position} Position\n * @typedef {object & {type: string, position?: Position|undefined}} NodeLike\n */\n\n/**\n * Stringify one point, a position (start and end points), or a node’s\n * positional information.\n *\n * @param {Node|NodeLike|Position|Point|null} [value]\n * @returns {string}\n */\nexport function stringifyPosition(value) {\n  // Nothing.\n  if (!value || typeof value !== 'object') {\n    return ''\n  }\n\n  // Node.\n  if ('position' in value || 'type' in value) {\n    return position(value.position)\n  }\n\n  // Position.\n  if ('start' in value || 'end' in value) {\n    return position(value)\n  }\n\n  // Point.\n  if ('line' in value || 'column' in value) {\n    return point(value)\n  }\n\n  // ?\n  return ''\n}\n\n/**\n * @param {Point|undefined} point\n * @returns {string}\n */\nfunction point(point) {\n  return index(point && point.line) + ':' + index(point && point.column)\n}\n\n/**\n * @param {Position|undefined} pos\n * @returns {string}\n */\nfunction position(pos) {\n  return point(pos && pos.start) + '-' + point(pos && pos.end)\n}\n\n/**\n * @param {number|undefined} value\n * @returns {number}\n */\nfunction index(value) {\n  return value && typeof value === 'number' ? value : 1\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Point} Point\n * @typedef {object & {type: string, position?: Position|undefined}} NodeLike\n */\n\nimport {stringifyPosition} from 'unist-util-stringify-position'\n\nexport class VFileMessage extends Error {\n  /**\n   * Constructor of a message for `reason` at `place` from `origin`.\n   * When an error is passed in as `reason`, copies the `stack`.\n   *\n   * @param {string|Error} reason Reason for message (`string` or `Error`). Uses the stack and message of the error if given.\n   * @param {Node|NodeLike|Position|Point} [place] Place at which the message occurred in a file (`Node`, `Position`, or `Point`, optional).\n   * @param {string} [origin] Place in code the message originates from (`string`, optional).\n   */\n  constructor(reason, place, origin) {\n    /** @type {[string|null, string|null]} */\n    const parts = [null, null]\n    /** @type {Position} */\n    let position = {\n      // @ts-expect-error: we always follows the structure of `position`.\n      start: {line: null, column: null},\n      // @ts-expect-error: \"\n      end: {line: null, column: null}\n    }\n\n    super()\n\n    if (typeof place === 'string') {\n      origin = place\n      place = undefined\n    }\n\n    if (typeof origin === 'string') {\n      const index = origin.indexOf(':')\n\n      if (index === -1) {\n        parts[1] = origin\n      } else {\n        parts[0] = origin.slice(0, index)\n        parts[1] = origin.slice(index + 1)\n      }\n    }\n\n    if (place) {\n      // Node.\n      if ('type' in place || 'position' in place) {\n        if (place.position) {\n          position = place.position\n        }\n      }\n      // Position.\n      else if ('start' in place || 'end' in place) {\n        position = place\n      }\n      // Point.\n      else if ('line' in place || 'column' in place) {\n        position.start = place\n      }\n    }\n\n    // Fields from `Error`\n    this.name = stringifyPosition(place) || '1:1'\n    this.message = typeof reason === 'object' ? reason.message : reason\n    this.stack = typeof reason === 'object' ? reason.stack : ''\n\n    /**\n     * Reason for message.\n     * @type {string}\n     */\n    this.reason = this.message\n    /**\n     * If true, marks associated file as no longer processable.\n     * @type {boolean?}\n     */\n    // eslint-disable-next-line no-unused-expressions\n    this.fatal\n    /**\n     * Starting line of error.\n     * @type {number?}\n     */\n    this.line = position.start.line\n    /**\n     * Starting column of error.\n     * @type {number?}\n     */\n    this.column = position.start.column\n    /**\n     * Namespace of warning.\n     * @type {string?}\n     */\n    this.source = parts[0]\n    /**\n     * Category of message.\n     * @type {string?}\n     */\n    this.ruleId = parts[1]\n    /**\n     * Full range information, when available.\n     * Has start and end properties, both set to an object with line and column, set to number?.\n     * @type {Position?}\n     */\n    this.position = position\n\n    // The following fields are “well known”.\n    // Not standard.\n    // Feel free to add other non-standard fields to your messages.\n\n    /* eslint-disable no-unused-expressions */\n    /**\n     * You can use this to specify the source value that’s being reported, which\n     * is deemed incorrect.\n     * @type {string?}\n     */\n    this.actual\n    /**\n     * You can use this to suggest values that should be used instead of\n     * `actual`, one or more values that are deemed as acceptable.\n     * @type {Array<string>?}\n     */\n    this.expected\n    /**\n     * You may add a file property with a path of a file (used throughout the VFile ecosystem).\n     * @type {string?}\n     */\n    this.file\n    /**\n     * You may add a url property with a link to documentation for the message.\n     * @type {string?}\n     */\n    this.url\n    /**\n     * You may add a note property with a long form description of the message (supported by vfile-reporter).\n     * @type {string?}\n     */\n    this.note\n    /* eslint-enable no-unused-expressions */\n  }\n}\n\nVFileMessage.prototype.file = ''\nVFileMessage.prototype.name = ''\nVFileMessage.prototype.reason = ''\nVFileMessage.prototype.message = ''\nVFileMessage.prototype.stack = ''\nVFileMessage.prototype.fatal = null\nVFileMessage.prototype.column = null\nVFileMessage.prototype.line = null\nVFileMessage.prototype.source = null\nVFileMessage.prototype.ruleId = null\nVFileMessage.prototype.position = null\n","// A derivative work based on:\n// <https://github.com/browserify/path-browserify>.\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// <https://github.com/nodejs/node/blob/master/lib/path.js>.\n// Which is licensed:\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\nexport const path = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * @param {string} path\n * @param {string} [ext]\n * @returns {string}\n */\nfunction basename(path, ext) {\n  if (ext !== undefined && typeof ext !== 'string') {\n    throw new TypeError('\"ext\" argument must be a string')\n  }\n\n  assertPath(path)\n  let start = 0\n  let end = -1\n  let index = path.length\n  /** @type {boolean|undefined} */\n  let seenNonSlash\n\n  if (ext === undefined || ext.length === 0 || ext.length > path.length) {\n    while (index--) {\n      if (path.charCodeAt(index) === 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 (seenNonSlash) {\n          start = index + 1\n          break\n        }\n      } else if (end < 0) {\n        // We saw the first non-path separator, mark this as the end of our\n        // path component.\n        seenNonSlash = true\n        end = index + 1\n      }\n    }\n\n    return end < 0 ? '' : path.slice(start, end)\n  }\n\n  if (ext === path) {\n    return ''\n  }\n\n  let firstNonSlashEnd = -1\n  let extIndex = ext.length - 1\n\n  while (index--) {\n    if (path.charCodeAt(index) === 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 (seenNonSlash) {\n        start = index + 1\n        break\n      }\n    } else {\n      if (firstNonSlashEnd < 0) {\n        // We saw the first non-path separator, remember this index in case\n        // we need it if the extension ends up not matching.\n        seenNonSlash = true\n        firstNonSlashEnd = index + 1\n      }\n\n      if (extIndex > -1) {\n        // Try to match the explicit extension.\n        if (path.charCodeAt(index) === ext.charCodeAt(extIndex--)) {\n          if (extIndex < 0) {\n            // We matched the extension, so mark this as the end of our path\n            // component\n            end = index\n          }\n        } else {\n          // Extension does not match, so our result is the entire path\n          // component\n          extIndex = -1\n          end = firstNonSlashEnd\n        }\n      }\n    }\n  }\n\n  if (start === end) {\n    end = firstNonSlashEnd\n  } else if (end < 0) {\n    end = path.length\n  }\n\n  return path.slice(start, end)\n}\n\n/**\n * @param {string} path\n * @returns {string}\n */\nfunction dirname(path) {\n  assertPath(path)\n\n  if (path.length === 0) {\n    return '.'\n  }\n\n  let end = -1\n  let index = path.length\n  /** @type {boolean|undefined} */\n  let unmatchedSlash\n\n  // Prefix `--` is important to not run on `0`.\n  while (--index) {\n    if (path.charCodeAt(index) === 47 /* `/` */) {\n      if (unmatchedSlash) {\n        end = index\n        break\n      }\n    } else if (!unmatchedSlash) {\n      // We saw the first non-path separator\n      unmatchedSlash = true\n    }\n  }\n\n  return end < 0\n    ? path.charCodeAt(0) === 47 /* `/` */\n      ? '/'\n      : '.'\n    : end === 1 && path.charCodeAt(0) === 47 /* `/` */\n    ? '//'\n    : path.slice(0, end)\n}\n\n/**\n * @param {string} path\n * @returns {string}\n */\nfunction extname(path) {\n  assertPath(path)\n\n  let index = path.length\n\n  let end = -1\n  let startPart = 0\n  let startDot = -1\n  // Track the state of characters (if any) we see before our first dot and\n  // after any path separator we find.\n  let preDotState = 0\n  /** @type {boolean|undefined} */\n  let unmatchedSlash\n\n  while (index--) {\n    const code = path.charCodeAt(index)\n\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 (unmatchedSlash) {\n        startPart = index + 1\n        break\n      }\n\n      continue\n    }\n\n    if (end < 0) {\n      // We saw the first non-path separator, mark this as the end of our\n      // extension.\n      unmatchedSlash = true\n      end = index + 1\n    }\n\n    if (code === 46 /* `.` */) {\n      // If this is our first dot, mark it as the start of our extension.\n      if (startDot < 0) {\n        startDot = index\n      } else if (preDotState !== 1) {\n        preDotState = 1\n      }\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 (\n    startDot < 0 ||\n    end < 0 ||\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  ) {\n    return ''\n  }\n\n  return path.slice(startDot, end)\n}\n\n/**\n * @param {Array<string>} segments\n * @returns {string}\n */\nfunction join(...segments) {\n  let index = -1\n  /** @type {string|undefined} */\n  let joined\n\n  while (++index < segments.length) {\n    assertPath(segments[index])\n\n    if (segments[index]) {\n      joined =\n        joined === undefined ? segments[index] : joined + '/' + segments[index]\n    }\n  }\n\n  return joined === undefined ? '.' : normalize(joined)\n}\n\n/**\n * Note: `normalize` is not exposed as `path.normalize`, so some code is\n * manually removed from it.\n *\n * @param {string} path\n * @returns {string}\n */\nfunction normalize(path) {\n  assertPath(path)\n\n  const absolute = path.charCodeAt(0) === 47 /* `/` */\n\n  // Normalize the path according to POSIX rules.\n  let value = normalizeString(path, !absolute)\n\n  if (value.length === 0 && !absolute) {\n    value = '.'\n  }\n\n  if (value.length > 0 && path.charCodeAt(path.length - 1) === 47 /* / */) {\n    value += '/'\n  }\n\n  return absolute ? '/' + value : value\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n * @param {boolean} allowAboveRoot\n * @returns {string}\n */\nfunction normalizeString(path, allowAboveRoot) {\n  let result = ''\n  let lastSegmentLength = 0\n  let lastSlash = -1\n  let dots = 0\n  let index = -1\n  /** @type {number|undefined} */\n  let code\n  /** @type {number} */\n  let lastSlashIndex\n\n  while (++index <= path.length) {\n    if (index < path.length) {\n      code = path.charCodeAt(index)\n    } else if (code === 47 /* `/` */) {\n      break\n    } else {\n      code = 47 /* `/` */\n    }\n\n    if (code === 47 /* `/` */) {\n      if (lastSlash === index - 1 || dots === 1) {\n        // Empty.\n      } else if (lastSlash !== index - 1 && dots === 2) {\n        if (\n          result.length < 2 ||\n          lastSegmentLength !== 2 ||\n          result.charCodeAt(result.length - 1) !== 46 /* `.` */ ||\n          result.charCodeAt(result.length - 2) !== 46 /* `.` */\n        ) {\n          if (result.length > 2) {\n            lastSlashIndex = result.lastIndexOf('/')\n\n            if (lastSlashIndex !== result.length - 1) {\n              if (lastSlashIndex < 0) {\n                result = ''\n                lastSegmentLength = 0\n              } else {\n                result = result.slice(0, lastSlashIndex)\n                lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n              }\n\n              lastSlash = index\n              dots = 0\n              continue\n            }\n          } else if (result.length > 0) {\n            result = ''\n            lastSegmentLength = 0\n            lastSlash = index\n            dots = 0\n            continue\n          }\n        }\n\n        if (allowAboveRoot) {\n          result = result.length > 0 ? result + '/..' : '..'\n          lastSegmentLength = 2\n        }\n      } else {\n        if (result.length > 0) {\n          result += '/' + path.slice(lastSlash + 1, index)\n        } else {\n          result = path.slice(lastSlash + 1, index)\n        }\n\n        lastSegmentLength = index - lastSlash - 1\n      }\n\n      lastSlash = index\n      dots = 0\n    } else if (code === 46 /* `.` */ && dots > -1) {\n      dots++\n    } else {\n      dots = -1\n    }\n  }\n\n  return result\n}\n\n/**\n * @param {string} path\n */\nfunction assertPath(path) {\n  if (typeof path !== 'string') {\n    throw new TypeError(\n      'Path must be a string. Received ' + JSON.stringify(path)\n    )\n  }\n}\n\n/* eslint-enable max-depth, complexity */\n","// Somewhat based on:\n// <https://github.com/defunctzombie/node-process/blob/master/browser.js>.\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexport const proc = {cwd}\n\nfunction cwd() {\n  return '/'\n}\n","/**\n * @typedef URL\n * @property {string} hash\n * @property {string} host\n * @property {string} hostname\n * @property {string} href\n * @property {string} origin\n * @property {string} password\n * @property {string} pathname\n * @property {string} port\n * @property {string} protocol\n * @property {string} search\n * @property {any} searchParams\n * @property {string} username\n * @property {() => string} toString\n * @property {() => string} toJSON\n */\n\n/**\n * @param {unknown} fileURLOrPath\n * @returns {fileURLOrPath is URL}\n */\n// From: <https://github.com/nodejs/node/blob/fcf8ba4/lib/internal/url.js#L1501>\nexport function isUrl(fileURLOrPath) {\n  return (\n    fileURLOrPath !== null &&\n    typeof fileURLOrPath === 'object' &&\n    // @ts-expect-error: indexable.\n    fileURLOrPath.href &&\n    // @ts-expect-error: indexable.\n    fileURLOrPath.origin\n  )\n}\n","/// <reference lib=\"dom\" />\n\nimport {isUrl} from './minurl.shared.js'\n\n// See: <https://github.com/nodejs/node/blob/fcf8ba4/lib/internal/url.js>\n\n/**\n * @param {string|URL} path\n */\nexport function urlToPath(path) {\n  if (typeof path === 'string') {\n    path = new URL(path)\n  } else if (!isUrl(path)) {\n    /** @type {NodeJS.ErrnoException} */\n    const error = new TypeError(\n      'The \"path\" argument must be of type string or an instance of URL. Received `' +\n        path +\n        '`'\n    )\n    error.code = 'ERR_INVALID_ARG_TYPE'\n    throw error\n  }\n\n  if (path.protocol !== 'file:') {\n    /** @type {NodeJS.ErrnoException} */\n    const error = new TypeError('The URL must be of scheme file')\n    error.code = 'ERR_INVALID_URL_SCHEME'\n    throw error\n  }\n\n  return getPathFromURLPosix(path)\n}\n\n/**\n * @param {URL} url\n */\nfunction getPathFromURLPosix(url) {\n  if (url.hostname !== '') {\n    /** @type {NodeJS.ErrnoException} */\n    const error = new TypeError(\n      'File URL host must be \"localhost\" or empty on darwin'\n    )\n    error.code = 'ERR_INVALID_FILE_URL_HOST'\n    throw error\n  }\n\n  const pathname = url.pathname\n  let index = -1\n\n  while (++index < pathname.length) {\n    if (\n      pathname.charCodeAt(index) === 37 /* `%` */ &&\n      pathname.charCodeAt(index + 1) === 50 /* `2` */\n    ) {\n      const third = pathname.charCodeAt(index + 2)\n      if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n        /** @type {NodeJS.ErrnoException} */\n        const error = new TypeError(\n          'File URL path must not include encoded / characters'\n        )\n        error.code = 'ERR_INVALID_FILE_URL_PATH'\n        throw error\n      }\n    }\n  }\n\n  return decodeURIComponent(pathname)\n}\n\nexport {isUrl} from './minurl.shared.js'\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Point} Point\n * @typedef {Record<string, unknown> & {type: string, position?: Position|undefined}} NodeLike\n * @typedef {import('./minurl.shared.js').URL} URL\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Value} Value\n *\n * @typedef {'ascii'|'utf8'|'utf-8'|'utf16le'|'ucs2'|'ucs-2'|'base64'|'base64url'|'latin1'|'binary'|'hex'} BufferEncoding\n *   Encodings supported by the buffer class.\n *   This is a copy of the typing from Node, copied to prevent Node globals from\n *   being needed.\n *   Copied from: <https://github.com/DefinitelyTyped/DefinitelyTyped/blob/90a4ec8/types/node/buffer.d.ts#L170>\n *\n * @typedef {Value|Options|VFile|URL} Compatible\n *   Things that can be passed to the constructor.\n *\n * @typedef VFileCoreOptions\n * @property {Value} [value]\n * @property {string} [cwd]\n * @property {Array<string>} [history]\n * @property {string|URL} [path]\n * @property {string} [basename]\n * @property {string} [stem]\n * @property {string} [extname]\n * @property {string} [dirname]\n * @property {Data} [data]\n *\n * @typedef Map\n *   Raw source map, see:\n *   <https://github.com/mozilla/source-map/blob/58819f0/source-map.d.ts#L15-L23>.\n * @property {number} version\n * @property {Array<string>} sources\n * @property {Array<string>} names\n * @property {string|undefined} [sourceRoot]\n * @property {Array<string>|undefined} [sourcesContent]\n * @property {string} mappings\n * @property {string} file\n *\n * @typedef {{[key: string]: unknown} & VFileCoreOptions} Options\n *   Configuration: a bunch of keys that will be shallow copied over to the new\n *   file.\n *\n * @typedef {Record<string, unknown>} ReporterSettings\n * @typedef {<T = ReporterSettings>(files: Array<VFile>, options: T) => string} Reporter\n */\n\nimport buffer from 'is-buffer'\nimport {VFileMessage} from 'vfile-message'\nimport {path} from './minpath.js'\nimport {proc} from './minproc.js'\nimport {urlToPath, isUrl} from './minurl.js'\n\n// Order of setting (least specific to most), we need this because otherwise\n// `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n// stem can be set.\nconst order = ['history', 'path', 'basename', 'stem', 'extname', 'dirname']\n\nexport class VFile {\n  /**\n   * Create a new virtual file.\n   *\n   * If `options` is `string` or `Buffer`, it’s treated as `{value: options}`.\n   * If `options` is a `URL`, it’s treated as `{path: options}`.\n   * If `options` is a `VFile`, shallow copies its data over to the new file.\n   * All fields in `options` are set on the newly created `VFile`.\n   *\n   * Path related fields are set in the following order (least specific to\n   * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n   * `dirname`.\n   *\n   * It’s not possible to set either `dirname` or `extname` without setting\n   * either `history`, `path`, `basename`, or `stem` as well.\n   *\n   * @param {Compatible} [value]\n   */\n  constructor(value) {\n    /** @type {Options} */\n    let options\n\n    if (!value) {\n      options = {}\n    } else if (typeof value === 'string' || buffer(value)) {\n      // @ts-expect-error Looks like a buffer.\n      options = {value}\n    } else if (isUrl(value)) {\n      options = {path: value}\n    } else {\n      // @ts-expect-error Looks like file or options.\n      options = value\n    }\n\n    /**\n     * Place to store custom information (default: `{}`).\n     * It’s OK to store custom data directly on the file but moving it to\n     * `data` is recommended.\n     * @type {Data}\n     */\n    this.data = {}\n\n    /**\n     * List of messages associated with the file.\n     * @type {Array<VFileMessage>}\n     */\n    this.messages = []\n\n    /**\n     * List of filepaths the file moved between.\n     * The first is the original path and the last is the current path.\n     * @type {Array<string>}\n     */\n    this.history = []\n\n    /**\n     * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n     * @type {string}\n     */\n    this.cwd = proc.cwd()\n\n    /* eslint-disable no-unused-expressions */\n    /**\n     * Raw value.\n     * @type {Value}\n     */\n    this.value\n\n    // The below are non-standard, they are “well-known”.\n    // As in, used in several tools.\n\n    /**\n     * Whether a file was saved to disk.\n     * This is used by vfile reporters.\n     * @type {boolean}\n     */\n    this.stored\n\n    /**\n     * Sometimes files have a non-string, compiled, representation.\n     * This can be stored in the `result` field.\n     * One example is when turning markdown into React nodes.\n     * This is used by unified to store non-string results.\n     * @type {unknown}\n     */\n    this.result\n\n    /**\n     * Sometimes files have a source map associated with them.\n     * This can be stored in the `map` field.\n     * This should be a `Map` type, which is equivalent to the `RawSourceMap`\n     * type from the `source-map` module.\n     * @type {Map|undefined}\n     */\n    this.map\n    /* eslint-enable no-unused-expressions */\n\n    // Set path related properties in the correct order.\n    let index = -1\n\n    while (++index < order.length) {\n      const prop = order[index]\n\n      // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n      // `vfile`s too.\n      if (prop in options && options[prop] !== undefined) {\n        // @ts-expect-error: TS is confused by the different types for `history`.\n        this[prop] = prop === 'history' ? [...options[prop]] : options[prop]\n      }\n    }\n\n    /** @type {string} */\n    let prop\n\n    // Set non-path related properties.\n    for (prop in options) {\n      // @ts-expect-error: fine to set other things.\n      if (!order.includes(prop)) this[prop] = options[prop]\n    }\n  }\n\n  /**\n   * Get the full path (example: `'~/index.min.js'`).\n   * @returns {string}\n   */\n  get path() {\n    return this.history[this.history.length - 1]\n  }\n\n  /**\n   * Set the full path (example: `'~/index.min.js'`).\n   * Cannot be nullified.\n   * You can set a file URL (a `URL` object with a `file:` protocol) which will\n   * be turned into a path with `url.fileURLToPath`.\n   * @param {string|URL} path\n   */\n  set path(path) {\n    if (isUrl(path)) {\n      path = urlToPath(path)\n    }\n\n    assertNonEmpty(path, 'path')\n\n    if (this.path !== path) {\n      this.history.push(path)\n    }\n  }\n\n  /**\n   * Get the parent path (example: `'~'`).\n   */\n  get dirname() {\n    return typeof this.path === 'string' ? path.dirname(this.path) : undefined\n  }\n\n  /**\n   * Set the parent path (example: `'~'`).\n   * Cannot be set if there’s no `path` yet.\n   */\n  set dirname(dirname) {\n    assertPath(this.basename, 'dirname')\n    this.path = path.join(dirname || '', this.basename)\n  }\n\n  /**\n   * Get the basename (including extname) (example: `'index.min.js'`).\n   */\n  get basename() {\n    return typeof this.path === 'string' ? path.basename(this.path) : undefined\n  }\n\n  /**\n   * Set basename (including extname) (`'index.min.js'`).\n   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n   * on windows).\n   * Cannot be nullified (use `file.path = file.dirname` instead).\n   */\n  set basename(basename) {\n    assertNonEmpty(basename, 'basename')\n    assertPart(basename, 'basename')\n    this.path = path.join(this.dirname || '', basename)\n  }\n\n  /**\n   * Get the extname (including dot) (example: `'.js'`).\n   */\n  get extname() {\n    return typeof this.path === 'string' ? path.extname(this.path) : undefined\n  }\n\n  /**\n   * Set the extname (including dot) (example: `'.js'`).\n   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n   * on windows).\n   * Cannot be set if there’s no `path` yet.\n   */\n  set extname(extname) {\n    assertPart(extname, 'extname')\n    assertPath(this.dirname, 'extname')\n\n    if (extname) {\n      if (extname.charCodeAt(0) !== 46 /* `.` */) {\n        throw new Error('`extname` must start with `.`')\n      }\n\n      if (extname.includes('.', 1)) {\n        throw new Error('`extname` cannot contain multiple dots')\n      }\n    }\n\n    this.path = path.join(this.dirname, this.stem + (extname || ''))\n  }\n\n  /**\n   * Get the stem (basename w/o extname) (example: `'index.min'`).\n   */\n  get stem() {\n    return typeof this.path === 'string'\n      ? path.basename(this.path, this.extname)\n      : undefined\n  }\n\n  /**\n   * Set the stem (basename w/o extname) (example: `'index.min'`).\n   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n   * on windows).\n   * Cannot be nullified (use `file.path = file.dirname` instead).\n   */\n  set stem(stem) {\n    assertNonEmpty(stem, 'stem')\n    assertPart(stem, 'stem')\n    this.path = path.join(this.dirname || '', stem + (this.extname || ''))\n  }\n\n  /**\n   * Serialize the file.\n   *\n   * @param {BufferEncoding} [encoding='utf8']\n   *   When `value` is a `Buffer`, `encoding` is a character encoding to\n   *   understand it as (default: `'utf8'`).\n   * @returns {string}\n   *   Serialized file.\n   */\n  toString(encoding) {\n    return (this.value || '').toString(encoding)\n  }\n\n  /**\n   * Constructs a new `VFileMessage`, where `fatal` is set to `false`, and\n   * associates it with the file by adding it to `vfile.messages` and setting\n   * `message.file` to the current filepath.\n   *\n   * @param {string|Error} reason\n   *   Human readable reason for the message, uses the stack and message of the error if given.\n   * @param {Node|NodeLike|Position|Point} [place]\n   *   Place where the message occurred in the file.\n   * @param {string} [origin]\n   *   Computer readable reason for the message\n   * @returns {VFileMessage}\n   *   Message.\n   */\n  message(reason, place, origin) {\n    const message = new VFileMessage(reason, place, origin)\n\n    if (this.path) {\n      message.name = this.path + ':' + message.name\n      message.file = this.path\n    }\n\n    message.fatal = false\n\n    this.messages.push(message)\n\n    return message\n  }\n\n  /**\n   * Like `VFile#message()`, but associates an informational message where\n   * `fatal` is set to `null`.\n   *\n   * @param {string|Error} reason\n   *   Human readable reason for the message, uses the stack and message of the error if given.\n   * @param {Node|NodeLike|Position|Point} [place]\n   *   Place where the message occurred in the file.\n   * @param {string} [origin]\n   *   Computer readable reason for the message\n   * @returns {VFileMessage}\n   *   Message.\n   */\n  info(reason, place, origin) {\n    const message = this.message(reason, place, origin)\n\n    message.fatal = null\n\n    return message\n  }\n\n  /**\n   * Like `VFile#message()`, but associates a fatal message where `fatal` is\n   * set to `true`, and then immediately throws it.\n   *\n   * > 👉 **Note**: a fatal error means that a file is no longer processable.\n   *\n   * @param {string|Error} reason\n   *   Human readable reason for the message, uses the stack and message of the error if given.\n   * @param {Node|NodeLike|Position|Point} [place]\n   *   Place where the message occurred in the file.\n   * @param {string} [origin]\n   *   Computer readable reason for the message\n   * @returns {never}\n   *   Message.\n   */\n  fail(reason, place, origin) {\n    const message = this.message(reason, place, origin)\n\n    message.fatal = true\n\n    throw message\n  }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string|undefined} part\n * @param {string} name\n * @returns {void}\n */\nfunction assertPart(part, name) {\n  if (part && part.includes(path.sep)) {\n    throw new Error(\n      '`' + name + '` cannot be a path: did not expect `' + path.sep + '`'\n    )\n  }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string|undefined} part\n * @param {string} name\n * @returns {asserts part is string}\n */\nfunction assertNonEmpty(part, name) {\n  if (!part) {\n    throw new Error('`' + name + '` cannot be empty')\n  }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string|undefined} path\n * @param {string} name\n * @returns {asserts path is string}\n */\nfunction assertPath(path, name) {\n  if (!path) {\n    throw new Error('Setting `' + name + '` requires `path` to be set too')\n  }\n}\n","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _toArray(arr) {\n  return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n *   Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n  if (error) {\n    throw error\n  }\n}\n","export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n","/**\n * @typedef {(error?: Error|null|undefined, ...output: Array<any>) => void} Callback\n * @typedef {(...input: Array<any>) => any} Middleware\n *\n * @typedef {(...input: Array<any>) => void} Run\n *   Call all middleware.\n * @typedef {(fn: Middleware) => Pipeline} Use\n *   Add `fn` (middleware) to the list.\n * @typedef {{run: Run, use: Use}} Pipeline\n *   Middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n */\nexport function trough() {\n  /** @type {Array<Middleware>} */\n  const fns = []\n  /** @type {Pipeline} */\n  const pipeline = {run, use}\n\n  return pipeline\n\n  /** @type {Run} */\n  function run(...values) {\n    let middlewareIndex = -1\n    /** @type {Callback} */\n    const callback = values.pop()\n\n    if (typeof callback !== 'function') {\n      throw new TypeError('Expected function as last argument, not ' + callback)\n    }\n\n    next(null, ...values)\n\n    /**\n     * Run the next `fn`, or we’re done.\n     *\n     * @param {Error|null|undefined} error\n     * @param {Array<any>} output\n     */\n    function next(error, ...output) {\n      const fn = fns[++middlewareIndex]\n      let index = -1\n\n      if (error) {\n        callback(error)\n        return\n      }\n\n      // Copy non-nullish input into values.\n      while (++index < values.length) {\n        if (output[index] === null || output[index] === undefined) {\n          output[index] = values[index]\n        }\n      }\n\n      // Save the newly created `output` for the next call.\n      values = output\n\n      // Next or done.\n      if (fn) {\n        wrap(fn, next)(...output)\n      } else {\n        callback(null, ...output)\n      }\n    }\n  }\n\n  /** @type {Use} */\n  function use(middelware) {\n    if (typeof middelware !== 'function') {\n      throw new TypeError(\n        'Expected `middelware` to be a function, not ' + middelware\n      )\n    }\n\n    fns.push(middelware)\n    return pipeline\n  }\n}\n\n/**\n * Wrap `middleware`.\n * Can be sync or async; return a promise, receive a callback, or return new\n * values and errors.\n *\n * @param {Middleware} middleware\n * @param {Callback} callback\n */\nexport function wrap(middleware, callback) {\n  /** @type {boolean} */\n  let called\n\n  return wrapped\n\n  /**\n   * Call `middleware`.\n   * @this {any}\n   * @param {Array<any>} parameters\n   * @returns {void}\n   */\n  function wrapped(...parameters) {\n    const fnExpectsCallback = middleware.length > parameters.length\n    /** @type {any} */\n    let result\n\n    if (fnExpectsCallback) {\n      parameters.push(done)\n    }\n\n    try {\n      result = middleware.apply(this, parameters)\n    } catch (error) {\n      const exception = /** @type {Error} */ (error)\n\n      // Well, this is quite the pickle.\n      // `middleware` received a callback and called it synchronously, but that\n      // threw an error.\n      // The only thing left to do is to throw the thing instead.\n      if (fnExpectsCallback && called) {\n        throw exception\n      }\n\n      return done(exception)\n    }\n\n    if (!fnExpectsCallback) {\n      if (result instanceof Promise) {\n        result.then(then, done)\n      } else if (result instanceof Error) {\n        done(result)\n      } else {\n        then(result)\n      }\n    }\n  }\n\n  /**\n   * Call `callback`, only once.\n   * @type {Callback}\n   */\n  function done(error, ...output) {\n    if (!called) {\n      called = true\n      callback(error, ...output)\n    }\n  }\n\n  /**\n   * Call `done` with one value.\n   *\n   * @param {any} [value]\n   */\n  function then(value) {\n    done(null, value)\n  }\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('vfile').VFileCompatible} VFileCompatible\n * @typedef {import('vfile').VFileValue} VFileValue\n * @typedef {import('..').Processor} Processor\n * @typedef {import('..').Plugin} Plugin\n * @typedef {import('..').Preset} Preset\n * @typedef {import('..').Pluggable} Pluggable\n * @typedef {import('..').PluggableList} PluggableList\n * @typedef {import('..').Transformer} Transformer\n * @typedef {import('..').Parser} Parser\n * @typedef {import('..').Compiler} Compiler\n * @typedef {import('..').RunCallback} RunCallback\n * @typedef {import('..').ProcessCallback} ProcessCallback\n *\n * @typedef Context\n * @property {Node} tree\n * @property {VFile} file\n */\n\nimport {bail} from 'bail'\nimport isBuffer from 'is-buffer'\nimport extend from 'extend'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\n\n// Expose a frozen processor.\nexport const unified = base().freeze()\n\nconst own = {}.hasOwnProperty\n\n// Function to create the first processor.\n/**\n * @returns {Processor}\n */\nfunction base() {\n  const transformers = trough()\n  /** @type {Processor['attachers']} */\n  const attachers = []\n  /** @type {Record<string, unknown>} */\n  let namespace = {}\n  /** @type {boolean|undefined} */\n  let frozen\n  let freezeIndex = -1\n\n  // Data management.\n  // @ts-expect-error: overloads are handled.\n  processor.data = data\n  processor.Parser = undefined\n  processor.Compiler = undefined\n\n  // Lock.\n  processor.freeze = freeze\n\n  // Plugins.\n  processor.attachers = attachers\n  // @ts-expect-error: overloads are handled.\n  processor.use = use\n\n  // API.\n  processor.parse = parse\n  processor.stringify = stringify\n  // @ts-expect-error: overloads are handled.\n  processor.run = run\n  processor.runSync = runSync\n  // @ts-expect-error: overloads are handled.\n  processor.process = process\n  processor.processSync = processSync\n\n  // Expose.\n  return processor\n\n  // Create a new processor based on the processor in the current scope.\n  /** @type {Processor} */\n  function processor() {\n    const destination = base()\n    let index = -1\n\n    while (++index < attachers.length) {\n      destination.use(...attachers[index])\n    }\n\n    destination.data(extend(true, {}, namespace))\n\n    return destination\n  }\n\n  /**\n   * @param {string|Record<string, unknown>} [key]\n   * @param {unknown} [value]\n   * @returns {unknown}\n   */\n  function data(key, value) {\n    if (typeof key === 'string') {\n      // Set `key`.\n      if (arguments.length === 2) {\n        assertUnfrozen('data', frozen)\n        namespace[key] = value\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  /** @type {Processor['freeze']} */\n  function freeze() {\n    if (frozen) {\n      return processor\n    }\n\n    while (++freezeIndex < attachers.length) {\n      const [attacher, ...options] = attachers[freezeIndex]\n\n      if (options[0] === false) {\n        continue\n      }\n\n      if (options[0] === true) {\n        options[0] = undefined\n      }\n\n      /** @type {Transformer|void} */\n      const transformer = attacher.call(processor, ...options)\n\n      if (typeof transformer === 'function') {\n        transformers.use(transformer)\n      }\n    }\n\n    frozen = true\n    freezeIndex = Number.POSITIVE_INFINITY\n\n    return processor\n  }\n\n  /**\n   * @param {Pluggable|null|undefined} [value]\n   * @param {...unknown} options\n   * @returns {Processor}\n   */\n  function use(value, ...options) {\n    /** @type {Record<string, unknown>|undefined} */\n    let settings\n\n    assertUnfrozen('use', frozen)\n\n    if (value === null || value === undefined) {\n      // Empty.\n    } else if (typeof value === 'function') {\n      addPlugin(value, ...options)\n    } else if (typeof value === 'object') {\n      if (Array.isArray(value)) {\n        addList(value)\n      } else {\n        addPreset(value)\n      }\n    } else {\n      throw new TypeError('Expected usable value, not `' + value + '`')\n    }\n\n    if (settings) {\n      namespace.settings = Object.assign(namespace.settings || {}, settings)\n    }\n\n    return processor\n\n    /**\n     * @param {import('..').Pluggable<unknown[]>} value\n     * @returns {void}\n     */\n    function add(value) {\n      if (typeof value === 'function') {\n        addPlugin(value)\n      } else if (typeof value === 'object') {\n        if (Array.isArray(value)) {\n          const [plugin, ...options] = value\n          addPlugin(plugin, ...options)\n        } else {\n          addPreset(value)\n        }\n      } else {\n        throw new TypeError('Expected usable value, not `' + value + '`')\n      }\n    }\n\n    /**\n     * @param {Preset} result\n     * @returns {void}\n     */\n    function addPreset(result) {\n      addList(result.plugins)\n\n      if (result.settings) {\n        settings = Object.assign(settings || {}, result.settings)\n      }\n    }\n\n    /**\n     * @param {PluggableList|null|undefined} [plugins]\n     * @returns {void}\n     */\n    function addList(plugins) {\n      let index = -1\n\n      if (plugins === null || plugins === undefined) {\n        // Empty.\n      } else if (Array.isArray(plugins)) {\n        while (++index < plugins.length) {\n          const thing = plugins[index]\n          add(thing)\n        }\n      } else {\n        throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n      }\n    }\n\n    /**\n     * @param {Plugin} plugin\n     * @param {...unknown} [value]\n     * @returns {void}\n     */\n    function addPlugin(plugin, value) {\n      let index = -1\n      /** @type {Processor['attachers'][number]|undefined} */\n      let entry\n\n      while (++index < attachers.length) {\n        if (attachers[index][0] === plugin) {\n          entry = attachers[index]\n          break\n        }\n      }\n\n      if (entry) {\n        if (isPlainObj(entry[1]) && isPlainObj(value)) {\n          value = extend(true, entry[1], value)\n        }\n\n        entry[1] = value\n      } else {\n        // @ts-expect-error: fine.\n        attachers.push([...arguments])\n      }\n    }\n  }\n\n  /** @type {Processor['parse']} */\n  function parse(doc) {\n    processor.freeze()\n    const file = vfile(doc)\n    const Parser = processor.Parser\n    assertParser('parse', Parser)\n\n    if (newable(Parser, 'parse')) {\n      // @ts-expect-error: `newable` checks this.\n      return new Parser(String(file), file).parse()\n    }\n\n    // @ts-expect-error: `newable` checks this.\n    return Parser(String(file), file) // eslint-disable-line new-cap\n  }\n\n  /** @type {Processor['stringify']} */\n  function stringify(node, doc) {\n    processor.freeze()\n    const file = vfile(doc)\n    const Compiler = processor.Compiler\n    assertCompiler('stringify', Compiler)\n    assertNode(node)\n\n    if (newable(Compiler, 'compile')) {\n      // @ts-expect-error: `newable` checks this.\n      return new Compiler(node, file).compile()\n    }\n\n    // @ts-expect-error: `newable` checks this.\n    return Compiler(node, file) // eslint-disable-line new-cap\n  }\n\n  /**\n   * @param {Node} node\n   * @param {VFileCompatible|RunCallback} [doc]\n   * @param {RunCallback} [callback]\n   * @returns {Promise<Node>|void}\n   */\n  function run(node, doc, callback) {\n    assertNode(node)\n    processor.freeze()\n\n    if (!callback && typeof doc === 'function') {\n      callback = doc\n      doc = undefined\n    }\n\n    if (!callback) {\n      return new Promise(executor)\n    }\n\n    executor(null, callback)\n\n    /**\n     * @param {null|((node: Node) => void)} resolve\n     * @param {(error: Error) => void} reject\n     * @returns {void}\n     */\n    function executor(resolve, reject) {\n      // @ts-expect-error: `doc` can’t be a callback anymore, we checked.\n      transformers.run(node, vfile(doc), done)\n\n      /**\n       * @param {Error|null} error\n       * @param {Node} tree\n       * @param {VFile} file\n       * @returns {void}\n       */\n      function done(error, tree, file) {\n        tree = tree || node\n        if (error) {\n          reject(error)\n        } else if (resolve) {\n          resolve(tree)\n        } else {\n          // @ts-expect-error: `callback` is defined if `resolve` is not.\n          callback(null, tree, file)\n        }\n      }\n    }\n  }\n\n  /** @type {Processor['runSync']} */\n  function runSync(node, file) {\n    /** @type {Node|undefined} */\n    let result\n    /** @type {boolean|undefined} */\n    let complete\n\n    processor.run(node, file, done)\n\n    assertDone('runSync', 'run', complete)\n\n    // @ts-expect-error: we either bailed on an error or have a tree.\n    return result\n\n    /**\n     * @param {Error|null} [error]\n     * @param {Node} [tree]\n     * @returns {void}\n     */\n    function done(error, tree) {\n      bail(error)\n      result = tree\n      complete = true\n    }\n  }\n\n  /**\n   * @param {VFileCompatible} doc\n   * @param {ProcessCallback} [callback]\n   * @returns {Promise<VFile>|undefined}\n   */\n  function process(doc, callback) {\n    processor.freeze()\n    assertParser('process', processor.Parser)\n    assertCompiler('process', processor.Compiler)\n\n    if (!callback) {\n      return new Promise(executor)\n    }\n\n    executor(null, callback)\n\n    /**\n     * @param {null|((file: VFile) => void)} resolve\n     * @param {(error?: Error|null|undefined) => void} reject\n     * @returns {void}\n     */\n    function executor(resolve, reject) {\n      const file = vfile(doc)\n\n      processor.run(processor.parse(file), file, (error, tree, file) => {\n        if (error || !tree || !file) {\n          done(error)\n        } else {\n          /** @type {unknown} */\n          const result = processor.stringify(tree, file)\n\n          if (result === undefined || result === null) {\n            // Empty.\n          } else if (looksLikeAVFileValue(result)) {\n            file.value = result\n          } else {\n            file.result = result\n          }\n\n          done(error, file)\n        }\n      })\n\n      /**\n       * @param {Error|null|undefined} [error]\n       * @param {VFile|undefined} [file]\n       * @returns {void}\n       */\n      function done(error, file) {\n        if (error || !file) {\n          reject(error)\n        } else if (resolve) {\n          resolve(file)\n        } else {\n          // @ts-expect-error: `callback` is defined if `resolve` is not.\n          callback(null, file)\n        }\n      }\n    }\n  }\n\n  /** @type {Processor['processSync']} */\n  function processSync(doc) {\n    /** @type {boolean|undefined} */\n    let complete\n\n    processor.freeze()\n    assertParser('processSync', processor.Parser)\n    assertCompiler('processSync', processor.Compiler)\n\n    const file = vfile(doc)\n\n    processor.process(file, done)\n\n    assertDone('processSync', 'process', complete)\n\n    return file\n\n    /**\n     * @param {Error|null|undefined} [error]\n     * @returns {void}\n     */\n    function done(error) {\n      complete = true\n      bail(error)\n    }\n  }\n}\n\n/**\n * Check if `value` is a constructor.\n *\n * @param {unknown} value\n * @param {string} name\n * @returns {boolean}\n */\nfunction newable(value, name) {\n  return (\n    typeof value === 'function' &&\n    // Prototypes do exist.\n    // type-coverage:ignore-next-line\n    value.prototype &&\n    // A function with keys in its prototype is probably a constructor.\n    // Classes’ prototype methods are not enumerable, so we check if some value\n    // exists in the prototype.\n    // type-coverage:ignore-next-line\n    (keys(value.prototype) || name in value.prototype)\n  )\n}\n\n/**\n * Check if `value` is an object with keys.\n *\n * @param {Record<string, unknown>} value\n * @returns {boolean}\n */\nfunction keys(value) {\n  /** @type {string} */\n  let key\n\n  for (key in value) {\n    if (own.call(value, key)) {\n      return true\n    }\n  }\n\n  return false\n}\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n  if (typeof value !== 'function') {\n    throw new TypeError('Cannot `' + name + '` without `Parser`')\n  }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n  if (typeof value !== 'function') {\n    throw new TypeError('Cannot `' + name + '` without `Compiler`')\n  }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n  if (frozen) {\n    throw new Error(\n      'Cannot call `' +\n        name +\n        '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n    )\n  }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n  // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n  // type-coverage:ignore-next-line\n  if (!isPlainObj(node) || typeof node.type !== 'string') {\n    throw new TypeError('Expected node, got `' + node + '`')\n    // Fine.\n  }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n  if (!complete) {\n    throw new Error(\n      '`' + name + '` finished async. Use `' + asyncName + '` instead'\n    )\n  }\n}\n\n/**\n * @param {VFileCompatible} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n  return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {VFileCompatible} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n  return Boolean(\n    value &&\n      typeof value === 'object' &&\n      'message' in value &&\n      'messages' in value\n  )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is VFileValue}\n */\nfunction looksLikeAVFileValue(value) {\n  return typeof value === 'string' || isBuffer(value)\n}\n","/**\n * @typedef Options\n * @property {boolean} [includeImageAlt=true]\n */\n\n/**\n * Get the text content of a node.\n * Prefer the node’s plain-text fields, otherwise serialize its children,\n * and if the given value is an array, serialize the nodes in it.\n *\n * @param {unknown} node\n * @param {Options} [options]\n * @returns {string}\n */\nexport function toString(node, options) {\n  var {includeImageAlt = true} = options || {}\n  return one(node, includeImageAlt)\n}\n\n/**\n * @param {unknown} node\n * @param {boolean} includeImageAlt\n * @returns {string}\n */\nfunction one(node, includeImageAlt) {\n  return (\n    (node &&\n      typeof node === 'object' &&\n      // @ts-ignore looks like a literal.\n      (node.value ||\n        // @ts-ignore looks like an image.\n        (includeImageAlt ? node.alt : '') ||\n        // @ts-ignore looks like a parent.\n        ('children' in node && all(node.children, includeImageAlt)) ||\n        (Array.isArray(node) && all(node, includeImageAlt)))) ||\n    ''\n  )\n}\n\n/**\n * @param {Array.<unknown>} values\n * @param {boolean} includeImageAlt\n * @returns {string}\n */\nfunction all(values, includeImageAlt) {\n  /** @type {Array.<string>} */\n  var result = []\n  var index = -1\n\n  while (++index < values.length) {\n    result[index] = one(values[index], includeImageAlt)\n  }\n\n  return result.join('')\n}\n","/**\n * Like `Array#splice`, but smarter for giant arrays.\n *\n * `Array#splice` takes all items to be inserted as individual argument which\n * causes a stack overflow in V8 when trying to insert 100k items for instance.\n *\n * Otherwise, this does not return the removed items, and takes `items` as an\n * array instead of rest parameters.\n *\n * @template {unknown} T\n * @param {T[]} list\n * @param {number} start\n * @param {number} remove\n * @param {T[]} items\n * @returns {void}\n */\nexport function splice(list, start, remove, items) {\n  const end = list.length\n  let chunkStart = 0\n  /** @type {unknown[]} */\n\n  let parameters // Make start between zero and `end` (included).\n\n  if (start < 0) {\n    start = -start > end ? 0 : end + start\n  } else {\n    start = start > end ? end : start\n  }\n\n  remove = remove > 0 ? remove : 0 // No need to chunk the items if there’s only a couple (10k) items.\n\n  if (items.length < 10000) {\n    parameters = Array.from(items)\n    parameters.unshift(start, remove) // @ts-expect-error Hush, it’s fine.\n    ;[].splice.apply(list, parameters)\n  } else {\n    // Delete `remove` items starting from `start`\n    if (remove) [].splice.apply(list, [start, remove]) // Insert the items in chunks to not cause stack overflows.\n\n    while (chunkStart < items.length) {\n      parameters = items.slice(chunkStart, chunkStart + 10000)\n      parameters.unshift(start, 0) // @ts-expect-error Hush, it’s fine.\n      ;[].splice.apply(list, parameters)\n      chunkStart += 10000\n      start += 10000\n    }\n  }\n}\n/**\n * Append `items` (an array) at the end of `list` (another array).\n * When `list` was empty, returns `items` instead.\n *\n * This prevents a potentially expensive operation when `list` is empty,\n * and adds items in batches to prevent V8 from hanging.\n *\n * @template {unknown} T\n * @param {T[]} list\n * @param {T[]} items\n * @returns {T[]}\n */\n\nexport function push(list, items) {\n  if (list.length > 0) {\n    splice(list, list.length, 0, items)\n    return list\n  }\n\n  return items\n}\n","/**\n * @typedef {import('micromark-util-types').NormalizedExtension} NormalizedExtension\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n */\n\nimport {splice} from 'micromark-util-chunked'\n\nconst hasOwnProperty = {}.hasOwnProperty\n\n/**\n * Combine several syntax extensions into one.\n *\n * @param {Extension[]} extensions List of syntax extensions.\n * @returns {NormalizedExtension} A single combined extension.\n */\nexport function combineExtensions(extensions) {\n  /** @type {NormalizedExtension} */\n  const all = {}\n  let index = -1\n\n  while (++index < extensions.length) {\n    syntaxExtension(all, extensions[index])\n  }\n\n  return all\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {NormalizedExtension} all Extension to merge into.\n * @param {Extension} extension Extension to merge.\n * @returns {void}\n */\nfunction syntaxExtension(all, extension) {\n  /** @type {string} */\n  let hook\n\n  for (hook in extension) {\n    const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n    const left = maybe || (all[hook] = {})\n    const right = extension[hook]\n    /** @type {string} */\n    let code\n\n    for (code in right) {\n      if (!hasOwnProperty.call(left, code)) left[code] = []\n      const value = right[code]\n      constructs(\n        // @ts-expect-error Looks like a list.\n        left[code],\n        Array.isArray(value) ? value : value ? [value] : []\n      )\n    }\n  }\n}\n\n/**\n * Merge `list` into `existing` (both lists of constructs).\n * Mutates `existing`.\n *\n * @param {unknown[]} existing\n * @param {unknown[]} list\n * @returns {void}\n */\nfunction constructs(existing, list) {\n  let index = -1\n  /** @type {unknown[]} */\n  const before = []\n\n  while (++index < list.length) {\n    // @ts-expect-error Looks like an object.\n    ;(list[index].add === 'after' ? existing : before).push(list[index])\n  }\n\n  splice(existing, 0, 0, before)\n}\n\n/**\n * Combine several HTML extensions into one.\n *\n * @param {HtmlExtension[]} htmlExtensions List of HTML extensions.\n * @returns {HtmlExtension} A single combined extension.\n */\nexport function combineHtmlExtensions(htmlExtensions) {\n  /** @type {HtmlExtension} */\n  const handlers = {}\n  let index = -1\n\n  while (++index < htmlExtensions.length) {\n    htmlExtension(handlers, htmlExtensions[index])\n  }\n\n  return handlers\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {HtmlExtension} all Extension to merge into.\n * @param {HtmlExtension} extension Extension to merge.\n * @returns {void}\n */\nfunction htmlExtension(all, extension) {\n  /** @type {string} */\n  let hook\n\n  for (hook in extension) {\n    const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n    const left = maybe || (all[hook] = {})\n    const right = extension[hook]\n    /** @type {string} */\n    let type\n\n    if (right) {\n      for (type in right) {\n        left[type] = right[type]\n      }\n    }\n  }\n}\n","// This module is generated by `script/`.\n//\n// CommonMark handles attention (emphasis, strong) markers based on what comes\n// before or after them.\n// One such difference is if those characters are Unicode punctuation.\n// This script is generated from the Unicode data.\nexport const unicodePunctuationRegex =\n  /[!-/:-@[-`{-~\\u00A1\\u00A7\\u00AB\\u00B6\\u00B7\\u00BB\\u00BF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {unicodePunctuationRegex} from './lib/unicode-punctuation-regex.js'\n/**\n * Check whether the character code represents an ASCII alpha (`a` through `z`,\n * case insensitive).\n *\n * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha.\n *\n * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`)\n * to U+005A (`Z`).\n *\n * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`)\n * to U+007A (`z`).\n */\n\nexport const asciiAlpha = regexCheck(/[A-Za-z]/)\n/**\n * Check whether the character code represents an ASCII digit (`0` through `9`).\n *\n * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to\n * U+0039 (`9`).\n */\n\nexport const asciiDigit = regexCheck(/\\d/)\n/**\n * Check whether the character code represents an ASCII hex digit (`a` through\n * `f`, case insensitive, or `0` through `9`).\n *\n * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex\n * digit, or an ASCII lower hex digit.\n *\n * An **ASCII upper hex digit** is a character in the inclusive range U+0041\n * (`A`) to U+0046 (`F`).\n *\n * An **ASCII lower hex digit** is a character in the inclusive range U+0061\n * (`a`) to U+0066 (`f`).\n */\n\nexport const asciiHexDigit = regexCheck(/[\\dA-Fa-f]/)\n/**\n * Check whether the character code represents an ASCII alphanumeric (`a`\n * through `z`, case insensitive, or `0` through `9`).\n *\n * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha\n * (see `asciiAlpha`).\n */\n\nexport const asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/)\n/**\n * Check whether the character code represents ASCII punctuation.\n *\n * An **ASCII punctuation** is a character in the inclusive ranges U+0021\n * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT\n * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT\n * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`).\n */\n\nexport const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/)\n/**\n * Check whether the character code represents an ASCII atext.\n *\n * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in\n * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`),\n * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F\n * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E\n * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE\n * (`{`) to U+007E TILDE (`~`).\n *\n * See:\n * **\\[RFC5322]**:\n * [Internet Message Format](https://tools.ietf.org/html/rfc5322).\n * P. Resnick.\n * IETF.\n */\n\nexport const asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/)\n/**\n * Check whether a character code is an ASCII control character.\n *\n * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL)\n * to U+001F (US), or U+007F (DEL).\n *\n * @param {Code} code\n * @returns {code is number}\n */\n\nexport function asciiControl(code) {\n  return (\n    // Special whitespace codes (which have negative values), C0 and Control\n    // character DEL\n    code !== null && (code < 32 || code === 127)\n  )\n}\n/**\n * Check whether a character code is a markdown line ending (see\n * `markdownLineEnding`) or markdown space (see `markdownSpace`).\n *\n * @param {Code} code\n * @returns {code is number}\n */\n\nexport function markdownLineEndingOrSpace(code) {\n  return code !== null && (code < 0 || code === 32)\n}\n/**\n * Check whether a character code is a markdown line ending.\n *\n * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN\n * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR).\n *\n * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE\n * RETURN (CR) are replaced by these virtual characters depending on whether\n * they occurred together.\n *\n * @param {Code} code\n * @returns {code is number}\n */\n\nexport function markdownLineEnding(code) {\n  return code !== null && code < -2\n}\n/**\n * Check whether a character code is a markdown space.\n *\n * A **markdown space** is the concrete character U+0020 SPACE (SP) and the\n * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT).\n *\n * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is\n * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL\n * SPACE (VS) characters, depending on the column at which the tab occurred.\n *\n * @param {Code} code\n * @returns {code is number}\n */\n\nexport function markdownSpace(code) {\n  return code === -2 || code === -1 || code === 32\n}\n/**\n * Check whether the character code represents Unicode whitespace.\n *\n * Note that this does handle micromark specific markdown whitespace characters.\n * See `markdownLineEndingOrSpace` to check that.\n *\n * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator,\n * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF),\n * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\\[UNICODE]**).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n */\n\nexport const unicodeWhitespace = regexCheck(/\\s/)\n/**\n * Check whether the character code represents Unicode punctuation.\n *\n * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation,\n * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf`\n * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po`\n * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII\n * punctuation (see `asciiPunctuation`).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n */\n// Size note: removing ASCII from the regex and using `asciiPunctuation` here\n// In fact adds to the bundle size.\n\nexport const unicodePunctuation = regexCheck(unicodePunctuationRegex)\n/**\n * Create a code check from a regex.\n *\n * @param {RegExp} regex\n * @returns {(code: Code) => code is number}\n */\n\nfunction regexCheck(regex) {\n  return check\n  /**\n   * Check whether a code matches the bound regex.\n   *\n   * @param {Code} code Character code\n   * @returns {code is number} Whether the character code matches the bound regex\n   */\n\n  function check(code) {\n    return code !== null && regex.test(String.fromCharCode(code))\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownSpace} from 'micromark-util-character'\n/**\n * @param {Effects} effects\n * @param {State} ok\n * @param {string} type\n * @param {number} [max=Infinity]\n * @returns {State}\n */\n\nexport function factorySpace(effects, ok, type, max) {\n  const limit = max ? max - 1 : Number.POSITIVE_INFINITY\n  let size = 0\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    if (markdownSpace(code)) {\n      effects.enter(type)\n      return prefix(code)\n    }\n\n    return ok(code)\n  }\n  /** @type {State} */\n\n  function prefix(code) {\n    if (markdownSpace(code) && size++ < limit) {\n      effects.consume(code)\n      return prefix\n    }\n\n    effects.exit(type)\n    return ok(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {InitialConstruct} */\nexport const content = {\n  tokenize: initializeContent\n}\n/** @type {Initializer} */\n\nfunction initializeContent(effects) {\n  const contentStart = effects.attempt(\n    this.parser.constructs.contentInitial,\n    afterContentStartConstruct,\n    paragraphInitial\n  )\n  /** @type {Token} */\n\n  let previous\n  return contentStart\n  /** @type {State} */\n\n  function afterContentStartConstruct(code) {\n    if (code === null) {\n      effects.consume(code)\n      return\n    }\n\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    return factorySpace(effects, contentStart, 'linePrefix')\n  }\n  /** @type {State} */\n\n  function paragraphInitial(code) {\n    effects.enter('paragraph')\n    return lineStart(code)\n  }\n  /** @type {State} */\n\n  function lineStart(code) {\n    const token = effects.enter('chunkText', {\n      contentType: 'text',\n      previous\n    })\n\n    if (previous) {\n      previous.next = token\n    }\n\n    previous = token\n    return data(code)\n  }\n  /** @type {State} */\n\n  function data(code) {\n    if (code === null) {\n      effects.exit('chunkText')\n      effects.exit('paragraph')\n      effects.consume(code)\n      return\n    }\n\n    if (markdownLineEnding(code)) {\n      effects.consume(code)\n      effects.exit('chunkText')\n      return lineStart\n    } // Data.\n\n    effects.consume(code)\n    return data\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Point} Point\n */\n\n/**\n * @typedef {Record<string, unknown>} StackState\n * @typedef {[Construct, StackState]} StackItem\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {splice} from 'micromark-util-chunked'\n/** @type {InitialConstruct} */\n\nexport const document = {\n  tokenize: initializeDocument\n}\n/** @type {Construct} */\n\nconst containerConstruct = {\n  tokenize: tokenizeContainer\n}\n/** @type {Initializer} */\n\nfunction initializeDocument(effects) {\n  const self = this\n  /** @type {StackItem[]} */\n\n  const stack = []\n  let continued = 0\n  /** @type {TokenizeContext|undefined} */\n\n  let childFlow\n  /** @type {Token|undefined} */\n\n  let childToken\n  /** @type {number} */\n\n  let lineStartOffset\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    // First we iterate through the open blocks, starting with the root\n    // document, and descending through last children down to the last open\n    // block.\n    // Each block imposes a condition that the line must satisfy if the block is\n    // to remain open.\n    // For example, a block quote requires a `>` character.\n    // A paragraph requires a non-blank line.\n    // In this phase we may match all or just some of the open blocks.\n    // But we cannot close unmatched blocks yet, because we may have a lazy\n    // continuation line.\n    if (continued < stack.length) {\n      const item = stack[continued]\n      self.containerState = item[1]\n      return effects.attempt(\n        item[0].continuation,\n        documentContinue,\n        checkNewContainers\n      )(code)\n    } // Done.\n\n    return checkNewContainers(code)\n  }\n  /** @type {State} */\n\n  function documentContinue(code) {\n    continued++ // Note: this field is called `_closeFlow` but it also closes containers.\n    // Perhaps a good idea to rename it but it’s already used in the wild by\n    // extensions.\n\n    if (self.containerState._closeFlow) {\n      self.containerState._closeFlow = undefined\n\n      if (childFlow) {\n        closeFlow()\n      } // Note: this algorithm for moving events around is similar to the\n      // algorithm when dealing with lazy lines in `writeToChild`.\n\n      const indexBeforeExits = self.events.length\n      let indexBeforeFlow = indexBeforeExits\n      /** @type {Point|undefined} */\n\n      let point // Find the flow chunk.\n\n      while (indexBeforeFlow--) {\n        if (\n          self.events[indexBeforeFlow][0] === 'exit' &&\n          self.events[indexBeforeFlow][1].type === 'chunkFlow'\n        ) {\n          point = self.events[indexBeforeFlow][1].end\n          break\n        }\n      }\n\n      exitContainers(continued) // Fix positions.\n\n      let index = indexBeforeExits\n\n      while (index < self.events.length) {\n        self.events[index][1].end = Object.assign({}, point)\n        index++\n      } // Inject the exits earlier (they’re still also at the end).\n\n      splice(\n        self.events,\n        indexBeforeFlow + 1,\n        0,\n        self.events.slice(indexBeforeExits)\n      ) // Discard the duplicate exits.\n\n      self.events.length = index\n      return checkNewContainers(code)\n    }\n\n    return start(code)\n  }\n  /** @type {State} */\n\n  function checkNewContainers(code) {\n    // Next, after consuming the continuation markers for existing blocks, we\n    // look for new block starts (e.g. `>` for a block quote).\n    // If we encounter a new block start, we close any blocks unmatched in\n    // step 1 before creating the new block as a child of the last matched\n    // block.\n    if (continued === stack.length) {\n      // No need to `check` whether there’s a container, of `exitContainers`\n      // would be moot.\n      // We can instead immediately `attempt` to parse one.\n      if (!childFlow) {\n        return documentContinued(code)\n      } // If we have concrete content, such as block HTML or fenced code,\n      // we can’t have containers “pierce” into them, so we can immediately\n      // start.\n\n      if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n        return flowStart(code)\n      } // If we do have flow, it could still be a blank line,\n      // but we’d be interrupting it w/ a new container if there’s a current\n      // construct.\n\n      self.interrupt = Boolean(\n        childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack\n      )\n    } // Check if there is a new container.\n\n    self.containerState = {}\n    return effects.check(\n      containerConstruct,\n      thereIsANewContainer,\n      thereIsNoNewContainer\n    )(code)\n  }\n  /** @type {State} */\n\n  function thereIsANewContainer(code) {\n    if (childFlow) closeFlow()\n    exitContainers(continued)\n    return documentContinued(code)\n  }\n  /** @type {State} */\n\n  function thereIsNoNewContainer(code) {\n    self.parser.lazy[self.now().line] = continued !== stack.length\n    lineStartOffset = self.now().offset\n    return flowStart(code)\n  }\n  /** @type {State} */\n\n  function documentContinued(code) {\n    // Try new containers.\n    self.containerState = {}\n    return effects.attempt(\n      containerConstruct,\n      containerContinue,\n      flowStart\n    )(code)\n  }\n  /** @type {State} */\n\n  function containerContinue(code) {\n    continued++\n    stack.push([self.currentConstruct, self.containerState]) // Try another.\n\n    return documentContinued(code)\n  }\n  /** @type {State} */\n\n  function flowStart(code) {\n    if (code === null) {\n      if (childFlow) closeFlow()\n      exitContainers(0)\n      effects.consume(code)\n      return\n    }\n\n    childFlow = childFlow || self.parser.flow(self.now())\n    effects.enter('chunkFlow', {\n      contentType: 'flow',\n      previous: childToken,\n      _tokenizer: childFlow\n    })\n    return flowContinue(code)\n  }\n  /** @type {State} */\n\n  function flowContinue(code) {\n    if (code === null) {\n      writeToChild(effects.exit('chunkFlow'), true)\n      exitContainers(0)\n      effects.consume(code)\n      return\n    }\n\n    if (markdownLineEnding(code)) {\n      effects.consume(code)\n      writeToChild(effects.exit('chunkFlow')) // Get ready for the next line.\n\n      continued = 0\n      self.interrupt = undefined\n      return start\n    }\n\n    effects.consume(code)\n    return flowContinue\n  }\n  /**\n   * @param {Token} token\n   * @param {boolean} [eof]\n   * @returns {void}\n   */\n\n  function writeToChild(token, eof) {\n    const stream = self.sliceStream(token)\n    if (eof) stream.push(null)\n    token.previous = childToken\n    if (childToken) childToken.next = token\n    childToken = token\n    childFlow.defineSkip(token.start)\n    childFlow.write(stream) // Alright, so we just added a lazy line:\n    //\n    // ```markdown\n    // > a\n    // b.\n    //\n    // Or:\n    //\n    // > ~~~c\n    // d\n    //\n    // Or:\n    //\n    // > | e |\n    // f\n    // ```\n    //\n    // The construct in the second example (fenced code) does not accept lazy\n    // lines, so it marked itself as done at the end of its first line, and\n    // then the content construct parses `d`.\n    // Most constructs in markdown match on the first line: if the first line\n    // forms a construct, a non-lazy line can’t “unmake” it.\n    //\n    // The construct in the third example is potentially a GFM table, and\n    // those are *weird*.\n    // It *could* be a table, from the first line, if the following line\n    // matches a condition.\n    // In this case, that second line is lazy, which “unmakes” the first line\n    // and turns the whole into one content block.\n    //\n    // We’ve now parsed the non-lazy and the lazy line, and can figure out\n    // whether the lazy line started a new flow block.\n    // If it did, we exit the current containers between the two flow blocks.\n\n    if (self.parser.lazy[token.start.line]) {\n      let index = childFlow.events.length\n\n      while (index--) {\n        if (\n          // The token starts before the line ending…\n          childFlow.events[index][1].start.offset < lineStartOffset && // …and either is not ended yet…\n          (!childFlow.events[index][1].end || // …or ends after it.\n            childFlow.events[index][1].end.offset > lineStartOffset)\n        ) {\n          // Exit: there’s still something open, which means it’s a lazy line\n          // part of something.\n          return\n        }\n      } // Note: this algorithm for moving events around is similar to the\n      // algorithm when closing flow in `documentContinue`.\n\n      const indexBeforeExits = self.events.length\n      let indexBeforeFlow = indexBeforeExits\n      /** @type {boolean|undefined} */\n\n      let seen\n      /** @type {Point|undefined} */\n\n      let point // Find the previous chunk (the one before the lazy line).\n\n      while (indexBeforeFlow--) {\n        if (\n          self.events[indexBeforeFlow][0] === 'exit' &&\n          self.events[indexBeforeFlow][1].type === 'chunkFlow'\n        ) {\n          if (seen) {\n            point = self.events[indexBeforeFlow][1].end\n            break\n          }\n\n          seen = true\n        }\n      }\n\n      exitContainers(continued) // Fix positions.\n\n      index = indexBeforeExits\n\n      while (index < self.events.length) {\n        self.events[index][1].end = Object.assign({}, point)\n        index++\n      } // Inject the exits earlier (they’re still also at the end).\n\n      splice(\n        self.events,\n        indexBeforeFlow + 1,\n        0,\n        self.events.slice(indexBeforeExits)\n      ) // Discard the duplicate exits.\n\n      self.events.length = index\n    }\n  }\n  /**\n   * @param {number} size\n   * @returns {void}\n   */\n\n  function exitContainers(size) {\n    let index = stack.length // Exit open containers.\n\n    while (index-- > size) {\n      const entry = stack[index]\n      self.containerState = entry[1]\n      entry[0].exit.call(self, effects)\n    }\n\n    stack.length = size\n  }\n\n  function closeFlow() {\n    childFlow.write([null])\n    childToken = undefined\n    childFlow = undefined\n    self.containerState._closeFlow = undefined\n  }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeContainer(effects, ok, nok) {\n  return factorySpace(\n    effects,\n    effects.attempt(this.parser.constructs.document, ok, nok),\n    'linePrefix',\n    this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4\n  )\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const blankLine = {\n  tokenize: tokenizeBlankLine,\n  partial: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeBlankLine(effects, ok, nok) {\n  return factorySpace(effects, afterWhitespace, 'linePrefix')\n  /** @type {State} */\n\n  function afterWhitespace(code) {\n    return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Event} Event\n */\nimport {splice} from 'micromark-util-chunked'\n\n/**\n * Tokenize subcontent.\n *\n * @param {Event[]} events\n * @returns {boolean}\n */\nexport function subtokenize(events) {\n  /** @type {Record<string, number>} */\n  const jumps = {}\n  let index = -1\n  /** @type {Event} */\n\n  let event\n  /** @type {number|undefined} */\n\n  let lineIndex\n  /** @type {number} */\n\n  let otherIndex\n  /** @type {Event} */\n\n  let otherEvent\n  /** @type {Event[]} */\n\n  let parameters\n  /** @type {Event[]} */\n\n  let subevents\n  /** @type {boolean|undefined} */\n\n  let more\n\n  while (++index < events.length) {\n    while (index in jumps) {\n      index = jumps[index]\n    }\n\n    event = events[index] // Add a hook for the GFM tasklist extension, which needs to know if text\n    // is in the first content of a list item.\n\n    if (\n      index &&\n      event[1].type === 'chunkFlow' &&\n      events[index - 1][1].type === 'listItemPrefix'\n    ) {\n      subevents = event[1]._tokenizer.events\n      otherIndex = 0\n\n      if (\n        otherIndex < subevents.length &&\n        subevents[otherIndex][1].type === 'lineEndingBlank'\n      ) {\n        otherIndex += 2\n      }\n\n      if (\n        otherIndex < subevents.length &&\n        subevents[otherIndex][1].type === 'content'\n      ) {\n        while (++otherIndex < subevents.length) {\n          if (subevents[otherIndex][1].type === 'content') {\n            break\n          }\n\n          if (subevents[otherIndex][1].type === 'chunkText') {\n            subevents[otherIndex][1]._isInFirstContentOfListItem = true\n            otherIndex++\n          }\n        }\n      }\n    } // Enter.\n\n    if (event[0] === 'enter') {\n      if (event[1].contentType) {\n        Object.assign(jumps, subcontent(events, index))\n        index = jumps[index]\n        more = true\n      }\n    } // Exit.\n    else if (event[1]._container) {\n      otherIndex = index\n      lineIndex = undefined\n\n      while (otherIndex--) {\n        otherEvent = events[otherIndex]\n\n        if (\n          otherEvent[1].type === 'lineEnding' ||\n          otherEvent[1].type === 'lineEndingBlank'\n        ) {\n          if (otherEvent[0] === 'enter') {\n            if (lineIndex) {\n              events[lineIndex][1].type = 'lineEndingBlank'\n            }\n\n            otherEvent[1].type = 'lineEnding'\n            lineIndex = otherIndex\n          }\n        } else {\n          break\n        }\n      }\n\n      if (lineIndex) {\n        // Fix position.\n        event[1].end = Object.assign({}, events[lineIndex][1].start) // Switch container exit w/ line endings.\n\n        parameters = events.slice(lineIndex, index)\n        parameters.unshift(event)\n        splice(events, lineIndex, index - lineIndex + 1, parameters)\n      }\n    }\n  }\n\n  return !more\n}\n/**\n * Tokenize embedded tokens.\n *\n * @param {Event[]} events\n * @param {number} eventIndex\n * @returns {Record<string, number>}\n */\n\nfunction subcontent(events, eventIndex) {\n  const token = events[eventIndex][1]\n  const context = events[eventIndex][2]\n  let startPosition = eventIndex - 1\n  /** @type {number[]} */\n\n  const startPositions = []\n  const tokenizer =\n    token._tokenizer || context.parser[token.contentType](token.start)\n  const childEvents = tokenizer.events\n  /** @type {[number, number][]} */\n\n  const jumps = []\n  /** @type {Record<string, number>} */\n\n  const gaps = {}\n  /** @type {Chunk[]} */\n\n  let stream\n  /** @type {Token|undefined} */\n\n  let previous\n  let index = -1\n  /** @type {Token|undefined} */\n\n  let current = token\n  let adjust = 0\n  let start = 0\n  const breaks = [start] // Loop forward through the linked tokens to pass them in order to the\n  // subtokenizer.\n\n  while (current) {\n    // Find the position of the event for this token.\n    while (events[++startPosition][1] !== current) {\n      // Empty.\n    }\n\n    startPositions.push(startPosition)\n\n    if (!current._tokenizer) {\n      stream = context.sliceStream(current)\n\n      if (!current.next) {\n        stream.push(null)\n      }\n\n      if (previous) {\n        tokenizer.defineSkip(current.start)\n      }\n\n      if (current._isInFirstContentOfListItem) {\n        tokenizer._gfmTasklistFirstContentOfListItem = true\n      }\n\n      tokenizer.write(stream)\n\n      if (current._isInFirstContentOfListItem) {\n        tokenizer._gfmTasklistFirstContentOfListItem = undefined\n      }\n    } // Unravel the next token.\n\n    previous = current\n    current = current.next\n  } // Now, loop back through all events (and linked tokens), to figure out which\n  // parts belong where.\n\n  current = token\n\n  while (++index < childEvents.length) {\n    if (\n      // Find a void token that includes a break.\n      childEvents[index][0] === 'exit' &&\n      childEvents[index - 1][0] === 'enter' &&\n      childEvents[index][1].type === childEvents[index - 1][1].type &&\n      childEvents[index][1].start.line !== childEvents[index][1].end.line\n    ) {\n      start = index + 1\n      breaks.push(start) // Help GC.\n\n      current._tokenizer = undefined\n      current.previous = undefined\n      current = current.next\n    }\n  } // Help GC.\n\n  tokenizer.events = [] // If there’s one more token (which is the cases for lines that end in an\n  // EOF), that’s perfect: the last point we found starts it.\n  // If there isn’t then make sure any remaining content is added to it.\n\n  if (current) {\n    // Help GC.\n    current._tokenizer = undefined\n    current.previous = undefined\n  } else {\n    breaks.pop()\n  } // Now splice the events from the subtokenizer into the current events,\n  // moving back to front so that splice indices aren’t affected.\n\n  index = breaks.length\n\n  while (index--) {\n    const slice = childEvents.slice(breaks[index], breaks[index + 1])\n    const start = startPositions.pop()\n    jumps.unshift([start, start + slice.length - 1])\n    splice(events, start, 2, slice)\n  }\n\n  index = -1\n\n  while (++index < jumps.length) {\n    gaps[adjust + jumps[index][0]] = adjust + jumps[index][1]\n    adjust += jumps[index][1] - jumps[index][0] - 1\n  }\n\n  return gaps\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {subtokenize} from 'micromark-util-subtokenize'\n\n/**\n * No name because it must not be turned off.\n * @type {Construct}\n */\nexport const content = {\n  tokenize: tokenizeContent,\n  resolve: resolveContent\n}\n/** @type {Construct} */\n\nconst continuationConstruct = {\n  tokenize: tokenizeContinuation,\n  partial: true\n}\n/**\n * Content is transparent: it’s parsed right now. That way, definitions are also\n * parsed right now: before text in paragraphs (specifically, media) are parsed.\n *\n * @type {Resolver}\n */\n\nfunction resolveContent(events) {\n  subtokenize(events)\n  return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeContent(effects, ok) {\n  /** @type {Token} */\n  let previous\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('content')\n    previous = effects.enter('chunkContent', {\n      contentType: 'content'\n    })\n    return data(code)\n  }\n  /** @type {State} */\n\n  function data(code) {\n    if (code === null) {\n      return contentEnd(code)\n    }\n\n    if (markdownLineEnding(code)) {\n      return effects.check(\n        continuationConstruct,\n        contentContinue,\n        contentEnd\n      )(code)\n    } // Data.\n\n    effects.consume(code)\n    return data\n  }\n  /** @type {State} */\n\n  function contentEnd(code) {\n    effects.exit('chunkContent')\n    effects.exit('content')\n    return ok(code)\n  }\n  /** @type {State} */\n\n  function contentContinue(code) {\n    effects.consume(code)\n    effects.exit('chunkContent')\n    previous.next = effects.enter('chunkContent', {\n      contentType: 'content',\n      previous\n    })\n    previous = previous.next\n    return data\n  }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeContinuation(effects, ok, nok) {\n  const self = this\n  return startLookahead\n  /** @type {State} */\n\n  function startLookahead(code) {\n    effects.exit('chunkContent')\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    return factorySpace(effects, prefixed, 'linePrefix')\n  }\n  /** @type {State} */\n\n  function prefixed(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return nok(code)\n    }\n\n    const tail = self.events[self.events.length - 1]\n\n    if (\n      !self.parser.constructs.disable.null.includes('codeIndented') &&\n      tail &&\n      tail[1].type === 'linePrefix' &&\n      tail[2].sliceSerialize(tail[1], true).length >= 4\n    ) {\n      return ok(code)\n    }\n\n    return effects.interrupt(self.parser.constructs.flow, nok, ok)(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {blankLine, content} from 'micromark-core-commonmark'\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {InitialConstruct} */\nexport const flow = {\n  tokenize: initializeFlow\n}\n/** @type {Initializer} */\n\nfunction initializeFlow(effects) {\n  const self = this\n  const initial = effects.attempt(\n    // Try to parse a blank line.\n    blankLine,\n    atBlankEnding, // Try to parse initial flow (essentially, only code).\n    effects.attempt(\n      this.parser.constructs.flowInitial,\n      afterConstruct,\n      factorySpace(\n        effects,\n        effects.attempt(\n          this.parser.constructs.flow,\n          afterConstruct,\n          effects.attempt(content, afterConstruct)\n        ),\n        'linePrefix'\n      )\n    )\n  )\n  return initial\n  /** @type {State} */\n\n  function atBlankEnding(code) {\n    if (code === null) {\n      effects.consume(code)\n      return\n    }\n\n    effects.enter('lineEndingBlank')\n    effects.consume(code)\n    effects.exit('lineEndingBlank')\n    self.currentConstruct = undefined\n    return initial\n  }\n  /** @type {State} */\n\n  function afterConstruct(code) {\n    if (code === null) {\n      effects.consume(code)\n      return\n    }\n\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    self.currentConstruct = undefined\n    return initial\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nexport const resolver = {\n  resolveAll: createResolver()\n}\nexport const string = initializeFactory('string')\nexport const text = initializeFactory('text')\n/**\n * @param {'string'|'text'} field\n * @returns {InitialConstruct}\n */\n\nfunction initializeFactory(field) {\n  return {\n    tokenize: initializeText,\n    resolveAll: createResolver(\n      field === 'text' ? resolveAllLineSuffixes : undefined\n    )\n  }\n  /** @type {Initializer} */\n\n  function initializeText(effects) {\n    const self = this\n    const constructs = this.parser.constructs[field]\n    const text = effects.attempt(constructs, start, notText)\n    return start\n    /** @type {State} */\n\n    function start(code) {\n      return atBreak(code) ? text(code) : notText(code)\n    }\n    /** @type {State} */\n\n    function notText(code) {\n      if (code === null) {\n        effects.consume(code)\n        return\n      }\n\n      effects.enter('data')\n      effects.consume(code)\n      return data\n    }\n    /** @type {State} */\n\n    function data(code) {\n      if (atBreak(code)) {\n        effects.exit('data')\n        return text(code)\n      } // Data.\n\n      effects.consume(code)\n      return data\n    }\n    /**\n     * @param {Code} code\n     * @returns {boolean}\n     */\n\n    function atBreak(code) {\n      if (code === null) {\n        return true\n      }\n\n      const list = constructs[code]\n      let index = -1\n\n      if (list) {\n        while (++index < list.length) {\n          const item = list[index]\n\n          if (!item.previous || item.previous.call(self, self.previous)) {\n            return true\n          }\n        }\n      }\n\n      return false\n    }\n  }\n}\n/**\n * @param {Resolver} [extraResolver]\n * @returns {Resolver}\n */\n\nfunction createResolver(extraResolver) {\n  return resolveAllText\n  /** @type {Resolver} */\n\n  function resolveAllText(events, context) {\n    let index = -1\n    /** @type {number|undefined} */\n\n    let enter // A rather boring computation (to merge adjacent `data` events) which\n    // improves mm performance by 29%.\n\n    while (++index <= events.length) {\n      if (enter === undefined) {\n        if (events[index] && events[index][1].type === 'data') {\n          enter = index\n          index++\n        }\n      } else if (!events[index] || events[index][1].type !== 'data') {\n        // Don’t do anything if there is one data token.\n        if (index !== enter + 2) {\n          events[enter][1].end = events[index - 1][1].end\n          events.splice(enter + 2, index - enter - 2)\n          index = enter + 2\n        }\n\n        enter = undefined\n      }\n    }\n\n    return extraResolver ? extraResolver(events, context) : events\n  }\n}\n/**\n * A rather ugly set of instructions which again looks at chunks in the input\n * stream.\n * The reason to do this here is that it is *much* faster to parse in reverse.\n * And that we can’t hook into `null` to split the line suffix before an EOF.\n * To do: figure out if we can make this into a clean utility, or even in core.\n * As it will be useful for GFMs literal autolink extension (and maybe even\n * tables?)\n *\n * @type {Resolver}\n */\n\nfunction resolveAllLineSuffixes(events, context) {\n  let eventIndex = 0 // Skip first.\n\n  while (++eventIndex <= events.length) {\n    if (\n      (eventIndex === events.length ||\n        events[eventIndex][1].type === 'lineEnding') &&\n      events[eventIndex - 1][1].type === 'data'\n    ) {\n      const data = events[eventIndex - 1][1]\n      const chunks = context.sliceStream(data)\n      let index = chunks.length\n      let bufferIndex = -1\n      let size = 0\n      /** @type {boolean|undefined} */\n\n      let tabs\n\n      while (index--) {\n        const chunk = chunks[index]\n\n        if (typeof chunk === 'string') {\n          bufferIndex = chunk.length\n\n          while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n            size++\n            bufferIndex--\n          }\n\n          if (bufferIndex) break\n          bufferIndex = -1\n        } // Number\n        else if (chunk === -2) {\n          tabs = true\n          size++\n        } else if (chunk === -1) {\n          // Empty\n        } else {\n          // Replacement character, exit.\n          index++\n          break\n        }\n      }\n\n      if (size) {\n        const token = {\n          type:\n            eventIndex === events.length || tabs || size < 2\n              ? 'lineSuffix'\n              : 'hardBreakTrailing',\n          start: {\n            line: data.end.line,\n            column: data.end.column - size,\n            offset: data.end.offset - size,\n            _index: data.start._index + index,\n            _bufferIndex: index\n              ? bufferIndex\n              : data.start._bufferIndex + bufferIndex\n          },\n          end: Object.assign({}, data.end)\n        }\n        data.end = Object.assign({}, token.start)\n\n        if (data.start.offset === data.end.offset) {\n          Object.assign(data, token)\n        } else {\n          events.splice(\n            eventIndex,\n            0,\n            ['enter', token, context],\n            ['exit', token, context]\n          )\n          eventIndex += 2\n        }\n      }\n\n      eventIndex++\n    }\n  }\n\n  return events\n}\n","/**\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n */\n\n/**\n * Call all `resolveAll`s.\n *\n * @param {{resolveAll?: Resolver}[]} constructs\n * @param {Event[]} events\n * @param {TokenizeContext} context\n * @returns {Event[]}\n */\nexport function resolveAll(constructs, events, context) {\n  /** @type {Resolver[]} */\n  const called = []\n  let index = -1\n\n  while (++index < constructs.length) {\n    const resolve = constructs[index].resolveAll\n\n    if (resolve && !called.includes(resolve)) {\n      events = resolve(events, context)\n      called.push(resolve)\n    }\n  }\n\n  return events\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n */\n\n/**\n * @typedef Info\n * @property {() => void} restore\n * @property {number} from\n *\n * @callback ReturnHandle\n *   Handle a successful run.\n * @param {Construct} construct\n * @param {Info} info\n * @returns {void}\n */\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {resolveAll} from 'micromark-util-resolve-all'\n\n/**\n * Create a tokenizer.\n * Tokenizers deal with one type of data (e.g., containers, flow, text).\n * The parser is the object dealing with it all.\n * `initialize` works like other constructs, except that only its `tokenize`\n * function is used, in which case it doesn’t receive an `ok` or `nok`.\n * `from` can be given to set the point before the first character, although\n * when further lines are indented, they must be set with `defineSkip`.\n *\n * @param {ParseContext} parser\n * @param {InitialConstruct} initialize\n * @param {Omit<Point, '_index'|'_bufferIndex'>} [from]\n * @returns {TokenizeContext}\n */\nexport function createTokenizer(parser, initialize, from) {\n  /** @type {Point} */\n  let point = Object.assign(\n    from\n      ? Object.assign({}, from)\n      : {\n          line: 1,\n          column: 1,\n          offset: 0\n        },\n    {\n      _index: 0,\n      _bufferIndex: -1\n    }\n  )\n  /** @type {Record<string, number>} */\n\n  const columnStart = {}\n  /** @type {Construct[]} */\n\n  const resolveAllConstructs = []\n  /** @type {Chunk[]} */\n\n  let chunks = []\n  /** @type {Token[]} */\n\n  let stack = []\n  /** @type {boolean|undefined} */\n\n  let consumed = true\n  /**\n   * Tools used for tokenizing.\n   *\n   * @type {Effects}\n   */\n\n  const effects = {\n    consume,\n    enter,\n    exit,\n    attempt: constructFactory(onsuccessfulconstruct),\n    check: constructFactory(onsuccessfulcheck),\n    interrupt: constructFactory(onsuccessfulcheck, {\n      interrupt: true\n    })\n  }\n  /**\n   * State and tools for resolving and serializing.\n   *\n   * @type {TokenizeContext}\n   */\n\n  const context = {\n    previous: null,\n    code: null,\n    containerState: {},\n    events: [],\n    parser,\n    sliceStream,\n    sliceSerialize,\n    now,\n    defineSkip,\n    write\n  }\n  /**\n   * The state function.\n   *\n   * @type {State|void}\n   */\n\n  let state = initialize.tokenize.call(context, effects)\n  /**\n   * Track which character we expect to be consumed, to catch bugs.\n   *\n   * @type {Code}\n   */\n\n  let expectedCode\n\n  if (initialize.resolveAll) {\n    resolveAllConstructs.push(initialize)\n  }\n\n  return context\n  /** @type {TokenizeContext['write']} */\n\n  function write(slice) {\n    chunks = push(chunks, slice)\n    main() // Exit if we’re not done, resolve might change stuff.\n\n    if (chunks[chunks.length - 1] !== null) {\n      return []\n    }\n\n    addResult(initialize, 0) // Otherwise, resolve, and exit.\n\n    context.events = resolveAll(resolveAllConstructs, context.events, context)\n    return context.events\n  } //\n  // Tools.\n  //\n\n  /** @type {TokenizeContext['sliceSerialize']} */\n\n  function sliceSerialize(token, expandTabs) {\n    return serializeChunks(sliceStream(token), expandTabs)\n  }\n  /** @type {TokenizeContext['sliceStream']} */\n\n  function sliceStream(token) {\n    return sliceChunks(chunks, token)\n  }\n  /** @type {TokenizeContext['now']} */\n\n  function now() {\n    return Object.assign({}, point)\n  }\n  /** @type {TokenizeContext['defineSkip']} */\n\n  function defineSkip(value) {\n    columnStart[value.line] = value.column\n    accountForPotentialSkip()\n  } //\n  // State management.\n  //\n\n  /**\n   * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n   * `consume`).\n   * Here is where we walk through the chunks, which either include strings of\n   * several characters, or numerical character codes.\n   * The reason to do this in a loop instead of a call is so the stack can\n   * drain.\n   *\n   * @returns {void}\n   */\n\n  function main() {\n    /** @type {number} */\n    let chunkIndex\n\n    while (point._index < chunks.length) {\n      const chunk = chunks[point._index] // If we’re in a buffer chunk, loop through it.\n\n      if (typeof chunk === 'string') {\n        chunkIndex = point._index\n\n        if (point._bufferIndex < 0) {\n          point._bufferIndex = 0\n        }\n\n        while (\n          point._index === chunkIndex &&\n          point._bufferIndex < chunk.length\n        ) {\n          go(chunk.charCodeAt(point._bufferIndex))\n        }\n      } else {\n        go(chunk)\n      }\n    }\n  }\n  /**\n   * Deal with one code.\n   *\n   * @param {Code} code\n   * @returns {void}\n   */\n\n  function go(code) {\n    consumed = undefined\n    expectedCode = code\n    state = state(code)\n  }\n  /** @type {Effects['consume']} */\n\n  function consume(code) {\n    if (markdownLineEnding(code)) {\n      point.line++\n      point.column = 1\n      point.offset += code === -3 ? 2 : 1\n      accountForPotentialSkip()\n    } else if (code !== -1) {\n      point.column++\n      point.offset++\n    } // Not in a string chunk.\n\n    if (point._bufferIndex < 0) {\n      point._index++\n    } else {\n      point._bufferIndex++ // At end of string chunk.\n      // @ts-expect-error Points w/ non-negative `_bufferIndex` reference\n      // strings.\n\n      if (point._bufferIndex === chunks[point._index].length) {\n        point._bufferIndex = -1\n        point._index++\n      }\n    } // Expose the previous character.\n\n    context.previous = code // Mark as consumed.\n\n    consumed = true\n  }\n  /** @type {Effects['enter']} */\n\n  function enter(type, fields) {\n    /** @type {Token} */\n    // @ts-expect-error Patch instead of assign required fields to help GC.\n    const token = fields || {}\n    token.type = type\n    token.start = now()\n    context.events.push(['enter', token, context])\n    stack.push(token)\n    return token\n  }\n  /** @type {Effects['exit']} */\n\n  function exit(type) {\n    const token = stack.pop()\n    token.end = now()\n    context.events.push(['exit', token, context])\n    return token\n  }\n  /**\n   * Use results.\n   *\n   * @type {ReturnHandle}\n   */\n\n  function onsuccessfulconstruct(construct, info) {\n    addResult(construct, info.from)\n  }\n  /**\n   * Discard results.\n   *\n   * @type {ReturnHandle}\n   */\n\n  function onsuccessfulcheck(_, info) {\n    info.restore()\n  }\n  /**\n   * Factory to attempt/check/interrupt.\n   *\n   * @param {ReturnHandle} onreturn\n   * @param {Record<string, unknown>} [fields]\n   */\n\n  function constructFactory(onreturn, fields) {\n    return hook\n    /**\n     * Handle either an object mapping codes to constructs, a list of\n     * constructs, or a single construct.\n     *\n     * @param {Construct|Construct[]|ConstructRecord} constructs\n     * @param {State} returnState\n     * @param {State} [bogusState]\n     * @returns {State}\n     */\n\n    function hook(constructs, returnState, bogusState) {\n      /** @type {Construct[]} */\n      let listOfConstructs\n      /** @type {number} */\n\n      let constructIndex\n      /** @type {Construct} */\n\n      let currentConstruct\n      /** @type {Info} */\n\n      let info\n      return Array.isArray(constructs)\n        ? /* c8 ignore next 1 */\n          handleListOfConstructs(constructs)\n        : 'tokenize' in constructs // @ts-expect-error Looks like a construct.\n        ? handleListOfConstructs([constructs])\n        : handleMapOfConstructs(constructs)\n      /**\n       * Handle a list of construct.\n       *\n       * @param {ConstructRecord} map\n       * @returns {State}\n       */\n\n      function handleMapOfConstructs(map) {\n        return start\n        /** @type {State} */\n\n        function start(code) {\n          const def = code !== null && map[code]\n          const all = code !== null && map.null\n          const list = [\n            // To do: add more extension tests.\n\n            /* c8 ignore next 2 */\n            ...(Array.isArray(def) ? def : def ? [def] : []),\n            ...(Array.isArray(all) ? all : all ? [all] : [])\n          ]\n          return handleListOfConstructs(list)(code)\n        }\n      }\n      /**\n       * Handle a list of construct.\n       *\n       * @param {Construct[]} list\n       * @returns {State}\n       */\n\n      function handleListOfConstructs(list) {\n        listOfConstructs = list\n        constructIndex = 0\n\n        if (list.length === 0) {\n          return bogusState\n        }\n\n        return handleConstruct(list[constructIndex])\n      }\n      /**\n       * Handle a single construct.\n       *\n       * @param {Construct} construct\n       * @returns {State}\n       */\n\n      function handleConstruct(construct) {\n        return start\n        /** @type {State} */\n\n        function start(code) {\n          // To do: not needed to store if there is no bogus state, probably?\n          // Currently doesn’t work because `inspect` in document does a check\n          // w/o a bogus, which doesn’t make sense. But it does seem to help perf\n          // by not storing.\n          info = store()\n          currentConstruct = construct\n\n          if (!construct.partial) {\n            context.currentConstruct = construct\n          }\n\n          if (\n            construct.name &&\n            context.parser.constructs.disable.null.includes(construct.name)\n          ) {\n            return nok(code)\n          }\n\n          return construct.tokenize.call(\n            // If we do have fields, create an object w/ `context` as its\n            // prototype.\n            // This allows a “live binding”, which is needed for `interrupt`.\n            fields ? Object.assign(Object.create(context), fields) : context,\n            effects,\n            ok,\n            nok\n          )(code)\n        }\n      }\n      /** @type {State} */\n\n      function ok(code) {\n        consumed = true\n        onreturn(currentConstruct, info)\n        return returnState\n      }\n      /** @type {State} */\n\n      function nok(code) {\n        consumed = true\n        info.restore()\n\n        if (++constructIndex < listOfConstructs.length) {\n          return handleConstruct(listOfConstructs[constructIndex])\n        }\n\n        return bogusState\n      }\n    }\n  }\n  /**\n   * @param {Construct} construct\n   * @param {number} from\n   * @returns {void}\n   */\n\n  function addResult(construct, from) {\n    if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n      resolveAllConstructs.push(construct)\n    }\n\n    if (construct.resolve) {\n      splice(\n        context.events,\n        from,\n        context.events.length - from,\n        construct.resolve(context.events.slice(from), context)\n      )\n    }\n\n    if (construct.resolveTo) {\n      context.events = construct.resolveTo(context.events, context)\n    }\n  }\n  /**\n   * Store state.\n   *\n   * @returns {Info}\n   */\n\n  function store() {\n    const startPoint = now()\n    const startPrevious = context.previous\n    const startCurrentConstruct = context.currentConstruct\n    const startEventsIndex = context.events.length\n    const startStack = Array.from(stack)\n    return {\n      restore,\n      from: startEventsIndex\n    }\n    /**\n     * Restore state.\n     *\n     * @returns {void}\n     */\n\n    function restore() {\n      point = startPoint\n      context.previous = startPrevious\n      context.currentConstruct = startCurrentConstruct\n      context.events.length = startEventsIndex\n      stack = startStack\n      accountForPotentialSkip()\n    }\n  }\n  /**\n   * Move the current point a bit forward in the line when it’s on a column\n   * skip.\n   *\n   * @returns {void}\n   */\n\n  function accountForPotentialSkip() {\n    if (point.line in columnStart && point.column < 2) {\n      point.column = columnStart[point.line]\n      point.offset += columnStart[point.line] - 1\n    }\n  }\n}\n/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {Chunk[]} chunks\n * @param {Pick<Token, 'start'|'end'>} token\n * @returns {Chunk[]}\n */\n\nfunction sliceChunks(chunks, token) {\n  const startIndex = token.start._index\n  const startBufferIndex = token.start._bufferIndex\n  const endIndex = token.end._index\n  const endBufferIndex = token.end._bufferIndex\n  /** @type {Chunk[]} */\n\n  let view\n\n  if (startIndex === endIndex) {\n    // @ts-expect-error `_bufferIndex` is used on string chunks.\n    view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)]\n  } else {\n    view = chunks.slice(startIndex, endIndex)\n\n    if (startBufferIndex > -1) {\n      // @ts-expect-error `_bufferIndex` is used on string chunks.\n      view[0] = view[0].slice(startBufferIndex)\n    }\n\n    if (endBufferIndex > 0) {\n      // @ts-expect-error `_bufferIndex` is used on string chunks.\n      view.push(chunks[endIndex].slice(0, endBufferIndex))\n    }\n  }\n\n  return view\n}\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {Chunk[]} chunks\n * @param {boolean} [expandTabs=false]\n * @returns {string}\n */\n\nfunction serializeChunks(chunks, expandTabs) {\n  let index = -1\n  /** @type {string[]} */\n\n  const result = []\n  /** @type {boolean|undefined} */\n\n  let atTab\n\n  while (++index < chunks.length) {\n    const chunk = chunks[index]\n    /** @type {string} */\n\n    let value\n\n    if (typeof chunk === 'string') {\n      value = chunk\n    } else\n      switch (chunk) {\n        case -5: {\n          value = '\\r'\n          break\n        }\n\n        case -4: {\n          value = '\\n'\n          break\n        }\n\n        case -3: {\n          value = '\\r' + '\\n'\n          break\n        }\n\n        case -2: {\n          value = expandTabs ? ' ' : '\\t'\n          break\n        }\n\n        case -1: {\n          if (!expandTabs && atTab) continue\n          value = ' '\n          break\n        }\n\n        default: {\n          // Currently only replacement character.\n          value = String.fromCharCode(chunk)\n        }\n      }\n\n    atTab = chunk === -2\n    result.push(value)\n  }\n\n  return result.join('')\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const thematicBreak = {\n  name: 'thematicBreak',\n  tokenize: tokenizeThematicBreak\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeThematicBreak(effects, ok, nok) {\n  let size = 0\n  /** @type {NonNullable<Code>} */\n\n  let marker\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('thematicBreak')\n    marker = code\n    return atBreak(code)\n  }\n  /** @type {State} */\n\n  function atBreak(code) {\n    if (code === marker) {\n      effects.enter('thematicBreakSequence')\n      return sequence(code)\n    }\n\n    if (markdownSpace(code)) {\n      return factorySpace(effects, atBreak, 'whitespace')(code)\n    }\n\n    if (size < 3 || (code !== null && !markdownLineEnding(code))) {\n      return nok(code)\n    }\n\n    effects.exit('thematicBreak')\n    return ok(code)\n  }\n  /** @type {State} */\n\n  function sequence(code) {\n    if (code === marker) {\n      effects.consume(code)\n      size++\n      return sequence\n    }\n\n    effects.exit('thematicBreakSequence')\n    return atBreak(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n/**\n * @typedef {Record<string, unknown> & {marker: Code, type: string, size: number}} ListContainerState\n * @typedef {TokenizeContext & {containerState: ListContainerState}} TokenizeContextWithState\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {asciiDigit, markdownSpace} from 'micromark-util-character'\nimport {blankLine} from './blank-line.js'\nimport {thematicBreak} from './thematic-break.js'\n/** @type {Construct} */\n\nexport const list = {\n  name: 'list',\n  tokenize: tokenizeListStart,\n  continuation: {\n    tokenize: tokenizeListContinuation\n  },\n  exit: tokenizeListEnd\n}\n/** @type {Construct} */\n\nconst listItemPrefixWhitespaceConstruct = {\n  tokenize: tokenizeListItemPrefixWhitespace,\n  partial: true\n}\n/** @type {Construct} */\n\nconst indentConstruct = {\n  tokenize: tokenizeIndent,\n  partial: true\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListStart(effects, ok, nok) {\n  const self = this\n  const tail = self.events[self.events.length - 1]\n  let initialSize =\n    tail && tail[1].type === 'linePrefix'\n      ? tail[2].sliceSerialize(tail[1], true).length\n      : 0\n  let size = 0\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    const kind =\n      self.containerState.type ||\n      (code === 42 || code === 43 || code === 45\n        ? 'listUnordered'\n        : 'listOrdered')\n\n    if (\n      kind === 'listUnordered'\n        ? !self.containerState.marker || code === self.containerState.marker\n        : asciiDigit(code)\n    ) {\n      if (!self.containerState.type) {\n        self.containerState.type = kind\n        effects.enter(kind, {\n          _container: true\n        })\n      }\n\n      if (kind === 'listUnordered') {\n        effects.enter('listItemPrefix')\n        return code === 42 || code === 45\n          ? effects.check(thematicBreak, nok, atMarker)(code)\n          : atMarker(code)\n      }\n\n      if (!self.interrupt || code === 49) {\n        effects.enter('listItemPrefix')\n        effects.enter('listItemValue')\n        return inside(code)\n      }\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function inside(code) {\n    if (asciiDigit(code) && ++size < 10) {\n      effects.consume(code)\n      return inside\n    }\n\n    if (\n      (!self.interrupt || size < 2) &&\n      (self.containerState.marker\n        ? code === self.containerState.marker\n        : code === 41 || code === 46)\n    ) {\n      effects.exit('listItemValue')\n      return atMarker(code)\n    }\n\n    return nok(code)\n  }\n  /**\n   * @type {State}\n   **/\n\n  function atMarker(code) {\n    effects.enter('listItemMarker')\n    effects.consume(code)\n    effects.exit('listItemMarker')\n    self.containerState.marker = self.containerState.marker || code\n    return effects.check(\n      blankLine, // Can’t be empty when interrupting.\n      self.interrupt ? nok : onBlank,\n      effects.attempt(\n        listItemPrefixWhitespaceConstruct,\n        endOfPrefix,\n        otherPrefix\n      )\n    )\n  }\n  /** @type {State} */\n\n  function onBlank(code) {\n    self.containerState.initialBlankLine = true\n    initialSize++\n    return endOfPrefix(code)\n  }\n  /** @type {State} */\n\n  function otherPrefix(code) {\n    if (markdownSpace(code)) {\n      effects.enter('listItemPrefixWhitespace')\n      effects.consume(code)\n      effects.exit('listItemPrefixWhitespace')\n      return endOfPrefix\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function endOfPrefix(code) {\n    self.containerState.size =\n      initialSize +\n      self.sliceSerialize(effects.exit('listItemPrefix'), true).length\n    return ok(code)\n  }\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListContinuation(effects, ok, nok) {\n  const self = this\n  self.containerState._closeFlow = undefined\n  return effects.check(blankLine, onBlank, notBlank)\n  /** @type {State} */\n\n  function onBlank(code) {\n    self.containerState.furtherBlankLines =\n      self.containerState.furtherBlankLines ||\n      self.containerState.initialBlankLine // We have a blank line.\n    // Still, try to consume at most the items size.\n\n    return factorySpace(\n      effects,\n      ok,\n      'listItemIndent',\n      self.containerState.size + 1\n    )(code)\n  }\n  /** @type {State} */\n\n  function notBlank(code) {\n    if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n      self.containerState.furtherBlankLines = undefined\n      self.containerState.initialBlankLine = undefined\n      return notInCurrentItem(code)\n    }\n\n    self.containerState.furtherBlankLines = undefined\n    self.containerState.initialBlankLine = undefined\n    return effects.attempt(indentConstruct, ok, notInCurrentItem)(code)\n  }\n  /** @type {State} */\n\n  function notInCurrentItem(code) {\n    // While we do continue, we signal that the flow should be closed.\n    self.containerState._closeFlow = true // As we’re closing flow, we’re no longer interrupting.\n\n    self.interrupt = undefined\n    return factorySpace(\n      effects,\n      effects.attempt(list, ok, nok),\n      'linePrefix',\n      self.parser.constructs.disable.null.includes('codeIndented')\n        ? undefined\n        : 4\n    )(code)\n  }\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeIndent(effects, ok, nok) {\n  const self = this\n  return factorySpace(\n    effects,\n    afterPrefix,\n    'listItemIndent',\n    self.containerState.size + 1\n  )\n  /** @type {State} */\n\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1]\n    return tail &&\n      tail[1].type === 'listItemIndent' &&\n      tail[2].sliceSerialize(tail[1], true).length === self.containerState.size\n      ? ok(code)\n      : nok(code)\n  }\n}\n/**\n * @type {Exiter}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListEnd(effects) {\n  effects.exit(this.containerState.type)\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n  const self = this\n  return factorySpace(\n    effects,\n    afterPrefix,\n    'listItemPrefixWhitespace',\n    self.parser.constructs.disable.null.includes('codeIndented')\n      ? undefined\n      : 4 + 1\n  )\n  /** @type {State} */\n\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1]\n    return !markdownSpace(code) &&\n      tail &&\n      tail[1].type === 'listItemPrefixWhitespace'\n      ? ok(code)\n      : nok(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownSpace} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const blockQuote = {\n  name: 'blockQuote',\n  tokenize: tokenizeBlockQuoteStart,\n  continuation: {\n    tokenize: tokenizeBlockQuoteContinuation\n  },\n  exit\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n  const self = this\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    if (code === 62) {\n      const state = self.containerState\n\n      if (!state.open) {\n        effects.enter('blockQuote', {\n          _container: true\n        })\n        state.open = true\n      }\n\n      effects.enter('blockQuotePrefix')\n      effects.enter('blockQuoteMarker')\n      effects.consume(code)\n      effects.exit('blockQuoteMarker')\n      return after\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function after(code) {\n    if (markdownSpace(code)) {\n      effects.enter('blockQuotePrefixWhitespace')\n      effects.consume(code)\n      effects.exit('blockQuotePrefixWhitespace')\n      effects.exit('blockQuotePrefix')\n      return ok\n    }\n\n    effects.exit('blockQuotePrefix')\n    return ok(code)\n  }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n  return factorySpace(\n    effects,\n    effects.attempt(blockQuote, ok, nok),\n    'linePrefix',\n    this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4\n  )\n}\n/** @type {Exiter} */\n\nfunction exit(effects) {\n  effects.exit('blockQuote')\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\nimport {\n  asciiControl,\n  markdownLineEndingOrSpace,\n  markdownLineEnding\n} from 'micromark-util-character'\n\n/**\n * @param {Effects} effects\n * @param {State} ok\n * @param {State} nok\n * @param {string} type\n * @param {string} literalType\n * @param {string} literalMarkerType\n * @param {string} rawType\n * @param {string} stringType\n * @param {number} [max=Infinity]\n * @returns {State}\n */\n// eslint-disable-next-line max-params\nexport function factoryDestination(\n  effects,\n  ok,\n  nok,\n  type,\n  literalType,\n  literalMarkerType,\n  rawType,\n  stringType,\n  max\n) {\n  const limit = max || Number.POSITIVE_INFINITY\n  let balance = 0\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    if (code === 60) {\n      effects.enter(type)\n      effects.enter(literalType)\n      effects.enter(literalMarkerType)\n      effects.consume(code)\n      effects.exit(literalMarkerType)\n      return destinationEnclosedBefore\n    }\n\n    if (code === null || code === 41 || asciiControl(code)) {\n      return nok(code)\n    }\n\n    effects.enter(type)\n    effects.enter(rawType)\n    effects.enter(stringType)\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return destinationRaw(code)\n  }\n  /** @type {State} */\n\n  function destinationEnclosedBefore(code) {\n    if (code === 62) {\n      effects.enter(literalMarkerType)\n      effects.consume(code)\n      effects.exit(literalMarkerType)\n      effects.exit(literalType)\n      effects.exit(type)\n      return ok\n    }\n\n    effects.enter(stringType)\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return destinationEnclosed(code)\n  }\n  /** @type {State} */\n\n  function destinationEnclosed(code) {\n    if (code === 62) {\n      effects.exit('chunkString')\n      effects.exit(stringType)\n      return destinationEnclosedBefore(code)\n    }\n\n    if (code === null || code === 60 || markdownLineEnding(code)) {\n      return nok(code)\n    }\n\n    effects.consume(code)\n    return code === 92 ? destinationEnclosedEscape : destinationEnclosed\n  }\n  /** @type {State} */\n\n  function destinationEnclosedEscape(code) {\n    if (code === 60 || code === 62 || code === 92) {\n      effects.consume(code)\n      return destinationEnclosed\n    }\n\n    return destinationEnclosed(code)\n  }\n  /** @type {State} */\n\n  function destinationRaw(code) {\n    if (code === 40) {\n      if (++balance > limit) return nok(code)\n      effects.consume(code)\n      return destinationRaw\n    }\n\n    if (code === 41) {\n      if (!balance--) {\n        effects.exit('chunkString')\n        effects.exit(stringType)\n        effects.exit(rawType)\n        effects.exit(type)\n        return ok(code)\n      }\n\n      effects.consume(code)\n      return destinationRaw\n    }\n\n    if (code === null || markdownLineEndingOrSpace(code)) {\n      if (balance) return nok(code)\n      effects.exit('chunkString')\n      effects.exit(stringType)\n      effects.exit(rawType)\n      effects.exit(type)\n      return ok(code)\n    }\n\n    if (asciiControl(code)) return nok(code)\n    effects.consume(code)\n    return code === 92 ? destinationRawEscape : destinationRaw\n  }\n  /** @type {State} */\n\n  function destinationRawEscape(code) {\n    if (code === 40 || code === 41 || code === 92) {\n      effects.consume(code)\n      return destinationRaw\n    }\n\n    return destinationRaw(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n\n/**\n * @this {TokenizeContext}\n * @param {Effects} effects\n * @param {State} ok\n * @param {State} nok\n * @param {string} type\n * @param {string} markerType\n * @param {string} stringType\n * @returns {State}\n */\n// eslint-disable-next-line max-params\nexport function factoryLabel(effects, ok, nok, type, markerType, stringType) {\n  const self = this\n  let size = 0\n  /** @type {boolean} */\n\n  let data\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter(type)\n    effects.enter(markerType)\n    effects.consume(code)\n    effects.exit(markerType)\n    effects.enter(stringType)\n    return atBreak\n  }\n  /** @type {State} */\n\n  function atBreak(code) {\n    if (\n      code === null ||\n      code === 91 ||\n      (code === 93 && !data) ||\n      /* To do: remove in the future once we’ve switched from\n       * `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n       * which doesn’t need this */\n\n      /* Hidden footnotes hook */\n\n      /* c8 ignore next 3 */\n      (code === 94 &&\n        !size &&\n        '_hiddenFootnoteSupport' in self.parser.constructs) ||\n      size > 999\n    ) {\n      return nok(code)\n    }\n\n    if (code === 93) {\n      effects.exit(stringType)\n      effects.enter(markerType)\n      effects.consume(code)\n      effects.exit(markerType)\n      effects.exit(type)\n      return ok\n    }\n\n    if (markdownLineEnding(code)) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return atBreak\n    }\n\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return label(code)\n  }\n  /** @type {State} */\n\n  function label(code) {\n    if (\n      code === null ||\n      code === 91 ||\n      code === 93 ||\n      markdownLineEnding(code) ||\n      size++ > 999\n    ) {\n      effects.exit('chunkString')\n      return atBreak(code)\n    }\n\n    effects.consume(code)\n    data = data || !markdownSpace(code)\n    return code === 92 ? labelEscape : label\n  }\n  /** @type {State} */\n\n  function labelEscape(code) {\n    if (code === 91 || code === 92 || code === 93) {\n      effects.consume(code)\n      size++\n      return label\n    }\n\n    return label(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/**\n * @param {Effects} effects\n * @param {State} ok\n * @param {State} nok\n * @param {string} type\n * @param {string} markerType\n * @param {string} stringType\n * @returns {State}\n */\n// eslint-disable-next-line max-params\nexport function factoryTitle(effects, ok, nok, type, markerType, stringType) {\n  /** @type {NonNullable<Code>} */\n  let marker\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter(type)\n    effects.enter(markerType)\n    effects.consume(code)\n    effects.exit(markerType)\n    marker = code === 40 ? 41 : code\n    return atFirstTitleBreak\n  }\n  /** @type {State} */\n\n  function atFirstTitleBreak(code) {\n    if (code === marker) {\n      effects.enter(markerType)\n      effects.consume(code)\n      effects.exit(markerType)\n      effects.exit(type)\n      return ok\n    }\n\n    effects.enter(stringType)\n    return atTitleBreak(code)\n  }\n  /** @type {State} */\n\n  function atTitleBreak(code) {\n    if (code === marker) {\n      effects.exit(stringType)\n      return atFirstTitleBreak(marker)\n    }\n\n    if (code === null) {\n      return nok(code)\n    } // Note: blank lines can’t exist in content.\n\n    if (markdownLineEnding(code)) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return factorySpace(effects, atTitleBreak, 'linePrefix')\n    }\n\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return title(code)\n  }\n  /** @type {State} */\n\n  function title(code) {\n    if (code === marker || code === null || markdownLineEnding(code)) {\n      effects.exit('chunkString')\n      return atTitleBreak(code)\n    }\n\n    effects.consume(code)\n    return code === 92 ? titleEscape : title\n  }\n  /** @type {State} */\n\n  function titleEscape(code) {\n    if (code === marker || code === 92) {\n      effects.consume(code)\n      return title\n    }\n\n    return title(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n\n/**\n * @param {Effects} effects\n * @param {State} ok\n */\nexport function factoryWhitespace(effects, ok) {\n  /** @type {boolean} */\n  let seen\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    if (markdownLineEnding(code)) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      seen = true\n      return start\n    }\n\n    if (markdownSpace(code)) {\n      return factorySpace(\n        effects,\n        start,\n        seen ? 'linePrefix' : 'lineSuffix'\n      )(code)\n    }\n\n    return ok(code)\n  }\n}\n","/**\n * Normalize an identifier (such as used in definitions).\n *\n * @param {string} value\n * @returns {string}\n */\nexport function normalizeIdentifier(value) {\n  return (\n    value // Collapse Markdown whitespace.\n      .replace(/[\\t\\n\\r ]+/g, ' ') // Trim.\n      .replace(/^ | $/g, '') // Some characters are considered “uppercase”, but if their lowercase\n      // counterpart is uppercased will result in a different uppercase\n      // character.\n      // Hence, to get that form, we perform both lower- and uppercase.\n      // Upper case makes sure keys will not interact with default prototypal\n      // methods: no method is uppercase.\n      .toLowerCase()\n      .toUpperCase()\n  )\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factoryDestination} from 'micromark-factory-destination'\nimport {factoryLabel} from 'micromark-factory-label'\nimport {factorySpace} from 'micromark-factory-space'\nimport {factoryTitle} from 'micromark-factory-title'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {\n  markdownLineEnding,\n  markdownLineEndingOrSpace\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const definition = {\n  name: 'definition',\n  tokenize: tokenizeDefinition\n}\n/** @type {Construct} */\n\nconst titleConstruct = {\n  tokenize: tokenizeTitle,\n  partial: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeDefinition(effects, ok, nok) {\n  const self = this\n  /** @type {string} */\n\n  let identifier\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('definition')\n    return factoryLabel.call(\n      self,\n      effects,\n      labelAfter,\n      nok,\n      'definitionLabel',\n      'definitionLabelMarker',\n      'definitionLabelString'\n    )(code)\n  }\n  /** @type {State} */\n\n  function labelAfter(code) {\n    identifier = normalizeIdentifier(\n      self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n    )\n\n    if (code === 58) {\n      effects.enter('definitionMarker')\n      effects.consume(code)\n      effects.exit('definitionMarker') // Note: blank lines can’t exist in content.\n\n      return factoryWhitespace(\n        effects,\n        factoryDestination(\n          effects,\n          effects.attempt(\n            titleConstruct,\n            factorySpace(effects, after, 'whitespace'),\n            factorySpace(effects, after, 'whitespace')\n          ),\n          nok,\n          'definitionDestination',\n          'definitionDestinationLiteral',\n          'definitionDestinationLiteralMarker',\n          'definitionDestinationRaw',\n          'definitionDestinationString'\n        )\n      )\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function after(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('definition')\n\n      if (!self.parser.defined.includes(identifier)) {\n        self.parser.defined.push(identifier)\n      }\n\n      return ok(code)\n    }\n\n    return nok(code)\n  }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeTitle(effects, ok, nok) {\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    return markdownLineEndingOrSpace(code)\n      ? factoryWhitespace(effects, before)(code)\n      : nok(code)\n  }\n  /** @type {State} */\n\n  function before(code) {\n    if (code === 34 || code === 39 || code === 40) {\n      return factoryTitle(\n        effects,\n        factorySpace(effects, after, 'whitespace'),\n        nok,\n        'definitionTitle',\n        'definitionTitleMarker',\n        'definitionTitleString'\n      )(code)\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function after(code) {\n    return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const codeIndented = {\n  name: 'codeIndented',\n  tokenize: tokenizeCodeIndented\n}\n/** @type {Construct} */\n\nconst indentedContent = {\n  tokenize: tokenizeIndentedContent,\n  partial: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCodeIndented(effects, ok, nok) {\n  const self = this\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('codeIndented')\n    return factorySpace(effects, afterStartPrefix, 'linePrefix', 4 + 1)(code)\n  }\n  /** @type {State} */\n\n  function afterStartPrefix(code) {\n    const tail = self.events[self.events.length - 1]\n    return tail &&\n      tail[1].type === 'linePrefix' &&\n      tail[2].sliceSerialize(tail[1], true).length >= 4\n      ? afterPrefix(code)\n      : nok(code)\n  }\n  /** @type {State} */\n\n  function afterPrefix(code) {\n    if (code === null) {\n      return after(code)\n    }\n\n    if (markdownLineEnding(code)) {\n      return effects.attempt(indentedContent, afterPrefix, after)(code)\n    }\n\n    effects.enter('codeFlowValue')\n    return content(code)\n  }\n  /** @type {State} */\n\n  function content(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('codeFlowValue')\n      return afterPrefix(code)\n    }\n\n    effects.consume(code)\n    return content\n  }\n  /** @type {State} */\n\n  function after(code) {\n    effects.exit('codeIndented')\n    return ok(code)\n  }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeIndentedContent(effects, ok, nok) {\n  const self = this\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    // If this is a lazy line, it can’t be code.\n    if (self.parser.lazy[self.now().line]) {\n      return nok(code)\n    }\n\n    if (markdownLineEnding(code)) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return start\n    }\n\n    return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)(code)\n  }\n  /** @type {State} */\n\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1]\n    return tail &&\n      tail[1].type === 'linePrefix' &&\n      tail[2].sliceSerialize(tail[1], true).length >= 4\n      ? ok(code)\n      : markdownLineEnding(code)\n      ? start(code)\n      : nok(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n  markdownLineEnding,\n  markdownLineEndingOrSpace,\n  markdownSpace\n} from 'micromark-util-character'\nimport {splice} from 'micromark-util-chunked'\n\n/** @type {Construct} */\nexport const headingAtx = {\n  name: 'headingAtx',\n  tokenize: tokenizeHeadingAtx,\n  resolve: resolveHeadingAtx\n}\n/** @type {Resolver} */\n\nfunction resolveHeadingAtx(events, context) {\n  let contentEnd = events.length - 2\n  let contentStart = 3\n  /** @type {Token} */\n\n  let content\n  /** @type {Token} */\n\n  let text // Prefix whitespace, part of the opening.\n\n  if (events[contentStart][1].type === 'whitespace') {\n    contentStart += 2\n  } // Suffix whitespace, part of the closing.\n\n  if (\n    contentEnd - 2 > contentStart &&\n    events[contentEnd][1].type === 'whitespace'\n  ) {\n    contentEnd -= 2\n  }\n\n  if (\n    events[contentEnd][1].type === 'atxHeadingSequence' &&\n    (contentStart === contentEnd - 1 ||\n      (contentEnd - 4 > contentStart &&\n        events[contentEnd - 2][1].type === 'whitespace'))\n  ) {\n    contentEnd -= contentStart + 1 === contentEnd ? 2 : 4\n  }\n\n  if (contentEnd > contentStart) {\n    content = {\n      type: 'atxHeadingText',\n      start: events[contentStart][1].start,\n      end: events[contentEnd][1].end\n    }\n    text = {\n      type: 'chunkText',\n      start: events[contentStart][1].start,\n      end: events[contentEnd][1].end,\n      // @ts-expect-error Constants are fine to assign.\n      contentType: 'text'\n    }\n    splice(events, contentStart, contentEnd - contentStart + 1, [\n      ['enter', content, context],\n      ['enter', text, context],\n      ['exit', text, context],\n      ['exit', content, context]\n    ])\n  }\n\n  return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n  const self = this\n  let size = 0\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('atxHeading')\n    effects.enter('atxHeadingSequence')\n    return fenceOpenInside(code)\n  }\n  /** @type {State} */\n\n  function fenceOpenInside(code) {\n    if (code === 35 && size++ < 6) {\n      effects.consume(code)\n      return fenceOpenInside\n    }\n\n    if (code === null || markdownLineEndingOrSpace(code)) {\n      effects.exit('atxHeadingSequence')\n      return self.interrupt ? ok(code) : headingBreak(code)\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function headingBreak(code) {\n    if (code === 35) {\n      effects.enter('atxHeadingSequence')\n      return sequence(code)\n    }\n\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('atxHeading')\n      return ok(code)\n    }\n\n    if (markdownSpace(code)) {\n      return factorySpace(effects, headingBreak, 'whitespace')(code)\n    }\n\n    effects.enter('atxHeadingText')\n    return data(code)\n  }\n  /** @type {State} */\n\n  function sequence(code) {\n    if (code === 35) {\n      effects.consume(code)\n      return sequence\n    }\n\n    effects.exit('atxHeadingSequence')\n    return headingBreak(code)\n  }\n  /** @type {State} */\n\n  function data(code) {\n    if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n      effects.exit('atxHeadingText')\n      return headingBreak(code)\n    }\n\n    effects.consume(code)\n    return data\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const setextUnderline = {\n  name: 'setextUnderline',\n  tokenize: tokenizeSetextUnderline,\n  resolveTo: resolveToSetextUnderline\n}\n/** @type {Resolver} */\n\nfunction resolveToSetextUnderline(events, context) {\n  let index = events.length\n  /** @type {number|undefined} */\n\n  let content\n  /** @type {number|undefined} */\n\n  let text\n  /** @type {number|undefined} */\n\n  let definition // Find the opening of the content.\n  // It’ll always exist: we don’t tokenize if it isn’t there.\n\n  while (index--) {\n    if (events[index][0] === 'enter') {\n      if (events[index][1].type === 'content') {\n        content = index\n        break\n      }\n\n      if (events[index][1].type === 'paragraph') {\n        text = index\n      }\n    } // Exit\n    else {\n      if (events[index][1].type === 'content') {\n        // Remove the content end (if needed we’ll add it later)\n        events.splice(index, 1)\n      }\n\n      if (!definition && events[index][1].type === 'definition') {\n        definition = index\n      }\n    }\n  }\n\n  const heading = {\n    type: 'setextHeading',\n    start: Object.assign({}, events[text][1].start),\n    end: Object.assign({}, events[events.length - 1][1].end)\n  } // Change the paragraph to setext heading text.\n\n  events[text][1].type = 'setextHeadingText' // If we have definitions in the content, we’ll keep on having content,\n  // but we need move it.\n\n  if (definition) {\n    events.splice(text, 0, ['enter', heading, context])\n    events.splice(definition + 1, 0, ['exit', events[content][1], context])\n    events[content][1].end = Object.assign({}, events[definition][1].end)\n  } else {\n    events[content][1] = heading\n  } // Add the heading exit at the end.\n\n  events.push(['exit', heading, context])\n  return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n  const self = this\n  let index = self.events.length\n  /** @type {NonNullable<Code>} */\n\n  let marker\n  /** @type {boolean} */\n\n  let paragraph // Find an opening.\n\n  while (index--) {\n    // Skip enter/exit of line ending, line prefix, and content.\n    // We can now either have a definition or a paragraph.\n    if (\n      self.events[index][1].type !== 'lineEnding' &&\n      self.events[index][1].type !== 'linePrefix' &&\n      self.events[index][1].type !== 'content'\n    ) {\n      paragraph = self.events[index][1].type === 'paragraph'\n      break\n    }\n  }\n\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) {\n      effects.enter('setextHeadingLine')\n      effects.enter('setextHeadingLineSequence')\n      marker = code\n      return closingSequence(code)\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function closingSequence(code) {\n    if (code === marker) {\n      effects.consume(code)\n      return closingSequence\n    }\n\n    effects.exit('setextHeadingLineSequence')\n    return factorySpace(effects, closingSequenceEnd, 'lineSuffix')(code)\n  }\n  /** @type {State} */\n\n  function closingSequenceEnd(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('setextHeadingLine')\n      return ok(code)\n    }\n\n    return nok(code)\n  }\n}\n","/**\n * List of lowercase HTML tag names which when parsing HTML (flow), result\n * in more relaxed rules (condition 6): because they are known blocks, the\n * HTML-like syntax doesn’t have to be strictly parsed.\n * For tag names not in this list, a more strict algorithm (condition 7) is used\n * to detect whether the HTML-like syntax is seen as HTML (flow) or not.\n *\n * This is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n */\nexport const htmlBlockNames = [\n  'address',\n  'article',\n  'aside',\n  'base',\n  'basefont',\n  'blockquote',\n  'body',\n  'caption',\n  'center',\n  'col',\n  'colgroup',\n  'dd',\n  'details',\n  'dialog',\n  'dir',\n  'div',\n  'dl',\n  'dt',\n  'fieldset',\n  'figcaption',\n  'figure',\n  'footer',\n  'form',\n  'frame',\n  'frameset',\n  'h1',\n  'h2',\n  'h3',\n  'h4',\n  'h5',\n  'h6',\n  'head',\n  'header',\n  'hr',\n  'html',\n  'iframe',\n  'legend',\n  'li',\n  'link',\n  'main',\n  'menu',\n  'menuitem',\n  'nav',\n  'noframes',\n  'ol',\n  'optgroup',\n  'option',\n  'p',\n  'param',\n  'section',\n  'summary',\n  'table',\n  'tbody',\n  'td',\n  'tfoot',\n  'th',\n  'thead',\n  'title',\n  'tr',\n  'track',\n  'ul'\n]\n\n/**\n * List of lowercase HTML tag names which when parsing HTML (flow), result in\n * HTML that can include lines w/o exiting, until a closing tag also in this\n * list is found (condition 1).\n *\n * This module is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n *\n * Note that `textarea` was added in `CommonMark@0.30`.\n */\nexport const htmlRawNames = ['pre', 'script', 'style', 'textarea']\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {\n  asciiAlpha,\n  asciiAlphanumeric,\n  markdownLineEnding,\n  markdownLineEndingOrSpace,\n  markdownSpace\n} from 'micromark-util-character'\nimport {htmlBlockNames, htmlRawNames} from 'micromark-util-html-tag-name'\nimport {blankLine} from './blank-line.js'\n/** @type {Construct} */\n\nexport const htmlFlow = {\n  name: 'htmlFlow',\n  tokenize: tokenizeHtmlFlow,\n  resolveTo: resolveToHtmlFlow,\n  concrete: true\n}\n/** @type {Construct} */\n\nconst nextBlankConstruct = {\n  tokenize: tokenizeNextBlank,\n  partial: true\n}\n/** @type {Resolver} */\n\nfunction resolveToHtmlFlow(events) {\n  let index = events.length\n\n  while (index--) {\n    if (events[index][0] === 'enter' && events[index][1].type === 'htmlFlow') {\n      break\n    }\n  }\n\n  if (index > 1 && events[index - 2][1].type === 'linePrefix') {\n    // Add the prefix start to the HTML token.\n    events[index][1].start = events[index - 2][1].start // Add the prefix start to the HTML line token.\n\n    events[index + 1][1].start = events[index - 2][1].start // Remove the line prefix.\n\n    events.splice(index - 2, 2)\n  }\n\n  return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n  const self = this\n  /** @type {number} */\n\n  let kind\n  /** @type {boolean} */\n\n  let startTag\n  /** @type {string} */\n\n  let buffer\n  /** @type {number} */\n\n  let index\n  /** @type {Code} */\n\n  let marker\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('htmlFlow')\n    effects.enter('htmlFlowData')\n    effects.consume(code)\n    return open\n  }\n  /** @type {State} */\n\n  function open(code) {\n    if (code === 33) {\n      effects.consume(code)\n      return declarationStart\n    }\n\n    if (code === 47) {\n      effects.consume(code)\n      return tagCloseStart\n    }\n\n    if (code === 63) {\n      effects.consume(code)\n      kind = 3 // While we’re in an instruction instead of a declaration, we’re on a `?`\n      // right now, so we do need to search for `>`, similar to declarations.\n\n      return self.interrupt ? ok : continuationDeclarationInside\n    }\n\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      buffer = String.fromCharCode(code)\n      startTag = true\n      return tagName\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function declarationStart(code) {\n    if (code === 45) {\n      effects.consume(code)\n      kind = 2\n      return commentOpenInside\n    }\n\n    if (code === 91) {\n      effects.consume(code)\n      kind = 5\n      buffer = 'CDATA['\n      index = 0\n      return cdataOpenInside\n    }\n\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      kind = 4\n      return self.interrupt ? ok : continuationDeclarationInside\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function commentOpenInside(code) {\n    if (code === 45) {\n      effects.consume(code)\n      return self.interrupt ? ok : continuationDeclarationInside\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function cdataOpenInside(code) {\n    if (code === buffer.charCodeAt(index++)) {\n      effects.consume(code)\n      return index === buffer.length\n        ? self.interrupt\n          ? ok\n          : continuation\n        : cdataOpenInside\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function tagCloseStart(code) {\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      buffer = String.fromCharCode(code)\n      return tagName\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function tagName(code) {\n    if (\n      code === null ||\n      code === 47 ||\n      code === 62 ||\n      markdownLineEndingOrSpace(code)\n    ) {\n      if (\n        code !== 47 &&\n        startTag &&\n        htmlRawNames.includes(buffer.toLowerCase())\n      ) {\n        kind = 1\n        return self.interrupt ? ok(code) : continuation(code)\n      }\n\n      if (htmlBlockNames.includes(buffer.toLowerCase())) {\n        kind = 6\n\n        if (code === 47) {\n          effects.consume(code)\n          return basicSelfClosing\n        }\n\n        return self.interrupt ? ok(code) : continuation(code)\n      }\n\n      kind = 7 // Do not support complete HTML when interrupting\n\n      return self.interrupt && !self.parser.lazy[self.now().line]\n        ? nok(code)\n        : startTag\n        ? completeAttributeNameBefore(code)\n        : completeClosingTagAfter(code)\n    }\n\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code)\n      buffer += String.fromCharCode(code)\n      return tagName\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function basicSelfClosing(code) {\n    if (code === 62) {\n      effects.consume(code)\n      return self.interrupt ? ok : continuation\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function completeClosingTagAfter(code) {\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return completeClosingTagAfter\n    }\n\n    return completeEnd(code)\n  }\n  /** @type {State} */\n\n  function completeAttributeNameBefore(code) {\n    if (code === 47) {\n      effects.consume(code)\n      return completeEnd\n    }\n\n    if (code === 58 || code === 95 || asciiAlpha(code)) {\n      effects.consume(code)\n      return completeAttributeName\n    }\n\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return completeAttributeNameBefore\n    }\n\n    return completeEnd(code)\n  }\n  /** @type {State} */\n\n  function completeAttributeName(code) {\n    if (\n      code === 45 ||\n      code === 46 ||\n      code === 58 ||\n      code === 95 ||\n      asciiAlphanumeric(code)\n    ) {\n      effects.consume(code)\n      return completeAttributeName\n    }\n\n    return completeAttributeNameAfter(code)\n  }\n  /** @type {State} */\n\n  function completeAttributeNameAfter(code) {\n    if (code === 61) {\n      effects.consume(code)\n      return completeAttributeValueBefore\n    }\n\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return completeAttributeNameAfter\n    }\n\n    return completeAttributeNameBefore(code)\n  }\n  /** @type {State} */\n\n  function completeAttributeValueBefore(code) {\n    if (\n      code === null ||\n      code === 60 ||\n      code === 61 ||\n      code === 62 ||\n      code === 96\n    ) {\n      return nok(code)\n    }\n\n    if (code === 34 || code === 39) {\n      effects.consume(code)\n      marker = code\n      return completeAttributeValueQuoted\n    }\n\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return completeAttributeValueBefore\n    }\n\n    marker = null\n    return completeAttributeValueUnquoted(code)\n  }\n  /** @type {State} */\n\n  function completeAttributeValueQuoted(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return nok(code)\n    }\n\n    if (code === marker) {\n      effects.consume(code)\n      return completeAttributeValueQuotedAfter\n    }\n\n    effects.consume(code)\n    return completeAttributeValueQuoted\n  }\n  /** @type {State} */\n\n  function completeAttributeValueUnquoted(code) {\n    if (\n      code === null ||\n      code === 34 ||\n      code === 39 ||\n      code === 60 ||\n      code === 61 ||\n      code === 62 ||\n      code === 96 ||\n      markdownLineEndingOrSpace(code)\n    ) {\n      return completeAttributeNameAfter(code)\n    }\n\n    effects.consume(code)\n    return completeAttributeValueUnquoted\n  }\n  /** @type {State} */\n\n  function completeAttributeValueQuotedAfter(code) {\n    if (code === 47 || code === 62 || markdownSpace(code)) {\n      return completeAttributeNameBefore(code)\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function completeEnd(code) {\n    if (code === 62) {\n      effects.consume(code)\n      return completeAfter\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function completeAfter(code) {\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return completeAfter\n    }\n\n    return code === null || markdownLineEnding(code)\n      ? continuation(code)\n      : nok(code)\n  }\n  /** @type {State} */\n\n  function continuation(code) {\n    if (code === 45 && kind === 2) {\n      effects.consume(code)\n      return continuationCommentInside\n    }\n\n    if (code === 60 && kind === 1) {\n      effects.consume(code)\n      return continuationRawTagOpen\n    }\n\n    if (code === 62 && kind === 4) {\n      effects.consume(code)\n      return continuationClose\n    }\n\n    if (code === 63 && kind === 3) {\n      effects.consume(code)\n      return continuationDeclarationInside\n    }\n\n    if (code === 93 && kind === 5) {\n      effects.consume(code)\n      return continuationCharacterDataInside\n    }\n\n    if (markdownLineEnding(code) && (kind === 6 || kind === 7)) {\n      return effects.check(\n        nextBlankConstruct,\n        continuationClose,\n        continuationAtLineEnding\n      )(code)\n    }\n\n    if (code === null || markdownLineEnding(code)) {\n      return continuationAtLineEnding(code)\n    }\n\n    effects.consume(code)\n    return continuation\n  }\n  /** @type {State} */\n\n  function continuationAtLineEnding(code) {\n    effects.exit('htmlFlowData')\n    return htmlContinueStart(code)\n  }\n  /** @type {State} */\n\n  function htmlContinueStart(code) {\n    if (code === null) {\n      return done(code)\n    }\n\n    if (markdownLineEnding(code)) {\n      return effects.attempt(\n        {\n          tokenize: htmlLineEnd,\n          partial: true\n        },\n        htmlContinueStart,\n        done\n      )(code)\n    }\n\n    effects.enter('htmlFlowData')\n    return continuation(code)\n  }\n  /** @type {Tokenizer} */\n\n  function htmlLineEnd(effects, ok, nok) {\n    return start\n    /** @type {State} */\n\n    function start(code) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return lineStart\n    }\n    /** @type {State} */\n\n    function lineStart(code) {\n      return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n    }\n  }\n  /** @type {State} */\n\n  function continuationCommentInside(code) {\n    if (code === 45) {\n      effects.consume(code)\n      return continuationDeclarationInside\n    }\n\n    return continuation(code)\n  }\n  /** @type {State} */\n\n  function continuationRawTagOpen(code) {\n    if (code === 47) {\n      effects.consume(code)\n      buffer = ''\n      return continuationRawEndTag\n    }\n\n    return continuation(code)\n  }\n  /** @type {State} */\n\n  function continuationRawEndTag(code) {\n    if (code === 62 && htmlRawNames.includes(buffer.toLowerCase())) {\n      effects.consume(code)\n      return continuationClose\n    }\n\n    if (asciiAlpha(code) && buffer.length < 8) {\n      effects.consume(code)\n      buffer += String.fromCharCode(code)\n      return continuationRawEndTag\n    }\n\n    return continuation(code)\n  }\n  /** @type {State} */\n\n  function continuationCharacterDataInside(code) {\n    if (code === 93) {\n      effects.consume(code)\n      return continuationDeclarationInside\n    }\n\n    return continuation(code)\n  }\n  /** @type {State} */\n\n  function continuationDeclarationInside(code) {\n    if (code === 62) {\n      effects.consume(code)\n      return continuationClose\n    } // More dashes.\n\n    if (code === 45 && kind === 2) {\n      effects.consume(code)\n      return continuationDeclarationInside\n    }\n\n    return continuation(code)\n  }\n  /** @type {State} */\n\n  function continuationClose(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('htmlFlowData')\n      return done(code)\n    }\n\n    effects.consume(code)\n    return continuationClose\n  }\n  /** @type {State} */\n\n  function done(code) {\n    effects.exit('htmlFlow')\n    return ok(code)\n  }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeNextBlank(effects, ok, nok) {\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.exit('htmlFlowData')\n    effects.enter('lineEndingBlank')\n    effects.consume(code)\n    effects.exit('lineEndingBlank')\n    return effects.attempt(blankLine, ok, nok)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n  markdownLineEnding,\n  markdownLineEndingOrSpace\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const codeFenced = {\n  name: 'codeFenced',\n  tokenize: tokenizeCodeFenced,\n  concrete: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCodeFenced(effects, ok, nok) {\n  const self = this\n  /** @type {Construct} */\n\n  const closingFenceConstruct = {\n    tokenize: tokenizeClosingFence,\n    partial: true\n  }\n  /** @type {Construct} */\n\n  const nonLazyLine = {\n    tokenize: tokenizeNonLazyLine,\n    partial: true\n  }\n  const tail = this.events[this.events.length - 1]\n  const initialPrefix =\n    tail && tail[1].type === 'linePrefix'\n      ? tail[2].sliceSerialize(tail[1], true).length\n      : 0\n  let sizeOpen = 0\n  /** @type {NonNullable<Code>} */\n\n  let marker\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('codeFenced')\n    effects.enter('codeFencedFence')\n    effects.enter('codeFencedFenceSequence')\n    marker = code\n    return sequenceOpen(code)\n  }\n  /** @type {State} */\n\n  function sequenceOpen(code) {\n    if (code === marker) {\n      effects.consume(code)\n      sizeOpen++\n      return sequenceOpen\n    }\n\n    effects.exit('codeFencedFenceSequence')\n    return sizeOpen < 3\n      ? nok(code)\n      : factorySpace(effects, infoOpen, 'whitespace')(code)\n  }\n  /** @type {State} */\n\n  function infoOpen(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return openAfter(code)\n    }\n\n    effects.enter('codeFencedFenceInfo')\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return info(code)\n  }\n  /** @type {State} */\n\n  function info(code) {\n    if (code === null || markdownLineEndingOrSpace(code)) {\n      effects.exit('chunkString')\n      effects.exit('codeFencedFenceInfo')\n      return factorySpace(effects, infoAfter, 'whitespace')(code)\n    }\n\n    if (code === 96 && code === marker) return nok(code)\n    effects.consume(code)\n    return info\n  }\n  /** @type {State} */\n\n  function infoAfter(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return openAfter(code)\n    }\n\n    effects.enter('codeFencedFenceMeta')\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return meta(code)\n  }\n  /** @type {State} */\n\n  function meta(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('chunkString')\n      effects.exit('codeFencedFenceMeta')\n      return openAfter(code)\n    }\n\n    if (code === 96 && code === marker) return nok(code)\n    effects.consume(code)\n    return meta\n  }\n  /** @type {State} */\n\n  function openAfter(code) {\n    effects.exit('codeFencedFence')\n    return self.interrupt ? ok(code) : contentStart(code)\n  }\n  /** @type {State} */\n\n  function contentStart(code) {\n    if (code === null) {\n      return after(code)\n    }\n\n    if (markdownLineEnding(code)) {\n      return effects.attempt(\n        nonLazyLine,\n        effects.attempt(\n          closingFenceConstruct,\n          after,\n          initialPrefix\n            ? factorySpace(\n                effects,\n                contentStart,\n                'linePrefix',\n                initialPrefix + 1\n              )\n            : contentStart\n        ),\n        after\n      )(code)\n    }\n\n    effects.enter('codeFlowValue')\n    return contentContinue(code)\n  }\n  /** @type {State} */\n\n  function contentContinue(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('codeFlowValue')\n      return contentStart(code)\n    }\n\n    effects.consume(code)\n    return contentContinue\n  }\n  /** @type {State} */\n\n  function after(code) {\n    effects.exit('codeFenced')\n    return ok(code)\n  }\n  /** @type {Tokenizer} */\n\n  function tokenizeNonLazyLine(effects, ok, nok) {\n    const self = this\n    return start\n    /** @type {State} */\n\n    function start(code) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return lineStart\n    }\n    /** @type {State} */\n\n    function lineStart(code) {\n      return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n    }\n  }\n  /** @type {Tokenizer} */\n\n  function tokenizeClosingFence(effects, ok, nok) {\n    let size = 0\n    return factorySpace(\n      effects,\n      closingSequenceStart,\n      'linePrefix',\n      this.parser.constructs.disable.null.includes('codeIndented')\n        ? undefined\n        : 4\n    )\n    /** @type {State} */\n\n    function closingSequenceStart(code) {\n      effects.enter('codeFencedFence')\n      effects.enter('codeFencedFenceSequence')\n      return closingSequence(code)\n    }\n    /** @type {State} */\n\n    function closingSequence(code) {\n      if (code === marker) {\n        effects.consume(code)\n        size++\n        return closingSequence\n      }\n\n      if (size < sizeOpen) return nok(code)\n      effects.exit('codeFencedFenceSequence')\n      return factorySpace(effects, closingSequenceEnd, 'whitespace')(code)\n    }\n    /** @type {State} */\n\n    function closingSequenceEnd(code) {\n      if (code === null || markdownLineEnding(code)) {\n        effects.exit('codeFencedFence')\n        return ok(code)\n      }\n\n      return nok(code)\n    }\n  }\n}\n","/**\n * Map of named character references.\n *\n * @type {Record<string, string>}\n */\nexport const characterEntities = {\n  AElig: 'Æ',\n  AMP: '&',\n  Aacute: 'Á',\n  Abreve: 'Ă',\n  Acirc: 'Â',\n  Acy: 'А',\n  Afr: '𝔄',\n  Agrave: 'À',\n  Alpha: 'Α',\n  Amacr: 'Ā',\n  And: '⩓',\n  Aogon: 'Ą',\n  Aopf: '𝔸',\n  ApplyFunction: '⁡',\n  Aring: 'Å',\n  Ascr: '𝒜',\n  Assign: '≔',\n  Atilde: 'Ã',\n  Auml: 'Ä',\n  Backslash: '∖',\n  Barv: '⫧',\n  Barwed: '⌆',\n  Bcy: 'Б',\n  Because: '∵',\n  Bernoullis: 'ℬ',\n  Beta: 'Β',\n  Bfr: '𝔅',\n  Bopf: '𝔹',\n  Breve: '˘',\n  Bscr: 'ℬ',\n  Bumpeq: '≎',\n  CHcy: 'Ч',\n  COPY: '©',\n  Cacute: 'Ć',\n  Cap: '⋒',\n  CapitalDifferentialD: 'ⅅ',\n  Cayleys: 'ℭ',\n  Ccaron: 'Č',\n  Ccedil: 'Ç',\n  Ccirc: 'Ĉ',\n  Cconint: '∰',\n  Cdot: 'Ċ',\n  Cedilla: '¸',\n  CenterDot: '·',\n  Cfr: 'ℭ',\n  Chi: 'Χ',\n  CircleDot: '⊙',\n  CircleMinus: '⊖',\n  CirclePlus: '⊕',\n  CircleTimes: '⊗',\n  ClockwiseContourIntegral: '∲',\n  CloseCurlyDoubleQuote: '”',\n  CloseCurlyQuote: '’',\n  Colon: '∷',\n  Colone: '⩴',\n  Congruent: '≡',\n  Conint: '∯',\n  ContourIntegral: '∮',\n  Copf: 'ℂ',\n  Coproduct: '∐',\n  CounterClockwiseContourIntegral: '∳',\n  Cross: '⨯',\n  Cscr: '𝒞',\n  Cup: '⋓',\n  CupCap: '≍',\n  DD: 'ⅅ',\n  DDotrahd: '⤑',\n  DJcy: 'Ђ',\n  DScy: 'Ѕ',\n  DZcy: 'Џ',\n  Dagger: '‡',\n  Darr: '↡',\n  Dashv: '⫤',\n  Dcaron: 'Ď',\n  Dcy: 'Д',\n  Del: '∇',\n  Delta: 'Δ',\n  Dfr: '𝔇',\n  DiacriticalAcute: '´',\n  DiacriticalDot: '˙',\n  DiacriticalDoubleAcute: '˝',\n  DiacriticalGrave: '`',\n  DiacriticalTilde: '˜',\n  Diamond: '⋄',\n  DifferentialD: 'ⅆ',\n  Dopf: '𝔻',\n  Dot: '¨',\n  DotDot: '⃜',\n  DotEqual: '≐',\n  DoubleContourIntegral: '∯',\n  DoubleDot: '¨',\n  DoubleDownArrow: '⇓',\n  DoubleLeftArrow: '⇐',\n  DoubleLeftRightArrow: '⇔',\n  DoubleLeftTee: '⫤',\n  DoubleLongLeftArrow: '⟸',\n  DoubleLongLeftRightArrow: '⟺',\n  DoubleLongRightArrow: '⟹',\n  DoubleRightArrow: '⇒',\n  DoubleRightTee: '⊨',\n  DoubleUpArrow: '⇑',\n  DoubleUpDownArrow: '⇕',\n  DoubleVerticalBar: '∥',\n  DownArrow: '↓',\n  DownArrowBar: '⤓',\n  DownArrowUpArrow: '⇵',\n  DownBreve: '̑',\n  DownLeftRightVector: '⥐',\n  DownLeftTeeVector: '⥞',\n  DownLeftVector: '↽',\n  DownLeftVectorBar: '⥖',\n  DownRightTeeVector: '⥟',\n  DownRightVector: '⇁',\n  DownRightVectorBar: '⥗',\n  DownTee: '⊤',\n  DownTeeArrow: '↧',\n  Downarrow: '⇓',\n  Dscr: '𝒟',\n  Dstrok: 'Đ',\n  ENG: 'Ŋ',\n  ETH: 'Ð',\n  Eacute: 'É',\n  Ecaron: 'Ě',\n  Ecirc: 'Ê',\n  Ecy: 'Э',\n  Edot: 'Ė',\n  Efr: '𝔈',\n  Egrave: 'È',\n  Element: '∈',\n  Emacr: 'Ē',\n  EmptySmallSquare: '◻',\n  EmptyVerySmallSquare: '▫',\n  Eogon: 'Ę',\n  Eopf: '𝔼',\n  Epsilon: 'Ε',\n  Equal: '⩵',\n  EqualTilde: '≂',\n  Equilibrium: '⇌',\n  Escr: 'ℰ',\n  Esim: '⩳',\n  Eta: 'Η',\n  Euml: 'Ë',\n  Exists: '∃',\n  ExponentialE: 'ⅇ',\n  Fcy: 'Ф',\n  Ffr: '𝔉',\n  FilledSmallSquare: '◼',\n  FilledVerySmallSquare: '▪',\n  Fopf: '𝔽',\n  ForAll: '∀',\n  Fouriertrf: 'ℱ',\n  Fscr: 'ℱ',\n  GJcy: 'Ѓ',\n  GT: '>',\n  Gamma: 'Γ',\n  Gammad: 'Ϝ',\n  Gbreve: 'Ğ',\n  Gcedil: 'Ģ',\n  Gcirc: 'Ĝ',\n  Gcy: 'Г',\n  Gdot: 'Ġ',\n  Gfr: '𝔊',\n  Gg: '⋙',\n  Gopf: '𝔾',\n  GreaterEqual: '≥',\n  GreaterEqualLess: '⋛',\n  GreaterFullEqual: '≧',\n  GreaterGreater: '⪢',\n  GreaterLess: '≷',\n  GreaterSlantEqual: '⩾',\n  GreaterTilde: '≳',\n  Gscr: '𝒢',\n  Gt: '≫',\n  HARDcy: 'Ъ',\n  Hacek: 'ˇ',\n  Hat: '^',\n  Hcirc: 'Ĥ',\n  Hfr: 'ℌ',\n  HilbertSpace: 'ℋ',\n  Hopf: 'ℍ',\n  HorizontalLine: '─',\n  Hscr: 'ℋ',\n  Hstrok: 'Ħ',\n  HumpDownHump: '≎',\n  HumpEqual: '≏',\n  IEcy: 'Е',\n  IJlig: 'IJ',\n  IOcy: 'Ё',\n  Iacute: 'Í',\n  Icirc: 'Î',\n  Icy: 'И',\n  Idot: 'İ',\n  Ifr: 'ℑ',\n  Igrave: 'Ì',\n  Im: 'ℑ',\n  Imacr: 'Ī',\n  ImaginaryI: 'ⅈ',\n  Implies: '⇒',\n  Int: '∬',\n  Integral: '∫',\n  Intersection: '⋂',\n  InvisibleComma: '⁣',\n  InvisibleTimes: '⁢',\n  Iogon: 'Į',\n  Iopf: '𝕀',\n  Iota: 'Ι',\n  Iscr: 'ℐ',\n  Itilde: 'Ĩ',\n  Iukcy: 'І',\n  Iuml: 'Ï',\n  Jcirc: 'Ĵ',\n  Jcy: 'Й',\n  Jfr: '𝔍',\n  Jopf: '𝕁',\n  Jscr: '𝒥',\n  Jsercy: 'Ј',\n  Jukcy: 'Є',\n  KHcy: 'Х',\n  KJcy: 'Ќ',\n  Kappa: 'Κ',\n  Kcedil: 'Ķ',\n  Kcy: 'К',\n  Kfr: '𝔎',\n  Kopf: '𝕂',\n  Kscr: '𝒦',\n  LJcy: 'Љ',\n  LT: '<',\n  Lacute: 'Ĺ',\n  Lambda: 'Λ',\n  Lang: '⟪',\n  Laplacetrf: 'ℒ',\n  Larr: '↞',\n  Lcaron: 'Ľ',\n  Lcedil: 'Ļ',\n  Lcy: 'Л',\n  LeftAngleBracket: '⟨',\n  LeftArrow: '←',\n  LeftArrowBar: '⇤',\n  LeftArrowRightArrow: '⇆',\n  LeftCeiling: '⌈',\n  LeftDoubleBracket: '⟦',\n  LeftDownTeeVector: '⥡',\n  LeftDownVector: '⇃',\n  LeftDownVectorBar: '⥙',\n  LeftFloor: '⌊',\n  LeftRightArrow: '↔',\n  LeftRightVector: '⥎',\n  LeftTee: '⊣',\n  LeftTeeArrow: '↤',\n  LeftTeeVector: '⥚',\n  LeftTriangle: '⊲',\n  LeftTriangleBar: '⧏',\n  LeftTriangleEqual: '⊴',\n  LeftUpDownVector: '⥑',\n  LeftUpTeeVector: '⥠',\n  LeftUpVector: '↿',\n  LeftUpVectorBar: '⥘',\n  LeftVector: '↼',\n  LeftVectorBar: '⥒',\n  Leftarrow: '⇐',\n  Leftrightarrow: '⇔',\n  LessEqualGreater: '⋚',\n  LessFullEqual: '≦',\n  LessGreater: '≶',\n  LessLess: '⪡',\n  LessSlantEqual: '⩽',\n  LessTilde: '≲',\n  Lfr: '𝔏',\n  Ll: '⋘',\n  Lleftarrow: '⇚',\n  Lmidot: 'Ŀ',\n  LongLeftArrow: '⟵',\n  LongLeftRightArrow: '⟷',\n  LongRightArrow: '⟶',\n  Longleftarrow: '⟸',\n  Longleftrightarrow: '⟺',\n  Longrightarrow: '⟹',\n  Lopf: '𝕃',\n  LowerLeftArrow: '↙',\n  LowerRightArrow: '↘',\n  Lscr: 'ℒ',\n  Lsh: '↰',\n  Lstrok: 'Ł',\n  Lt: '≪',\n  Map: '⤅',\n  Mcy: 'М',\n  MediumSpace: ' ',\n  Mellintrf: 'ℳ',\n  Mfr: '𝔐',\n  MinusPlus: '∓',\n  Mopf: '𝕄',\n  Mscr: 'ℳ',\n  Mu: 'Μ',\n  NJcy: 'Њ',\n  Nacute: 'Ń',\n  Ncaron: 'Ň',\n  Ncedil: 'Ņ',\n  Ncy: 'Н',\n  NegativeMediumSpace: '​',\n  NegativeThickSpace: '​',\n  NegativeThinSpace: '​',\n  NegativeVeryThinSpace: '​',\n  NestedGreaterGreater: '≫',\n  NestedLessLess: '≪',\n  NewLine: '\\n',\n  Nfr: '𝔑',\n  NoBreak: '⁠',\n  NonBreakingSpace: ' ',\n  Nopf: 'ℕ',\n  Not: '⫬',\n  NotCongruent: '≢',\n  NotCupCap: '≭',\n  NotDoubleVerticalBar: '∦',\n  NotElement: '∉',\n  NotEqual: '≠',\n  NotEqualTilde: '≂̸',\n  NotExists: '∄',\n  NotGreater: '≯',\n  NotGreaterEqual: '≱',\n  NotGreaterFullEqual: '≧̸',\n  NotGreaterGreater: '≫̸',\n  NotGreaterLess: '≹',\n  NotGreaterSlantEqual: '⩾̸',\n  NotGreaterTilde: '≵',\n  NotHumpDownHump: '≎̸',\n  NotHumpEqual: '≏̸',\n  NotLeftTriangle: '⋪',\n  NotLeftTriangleBar: '⧏̸',\n  NotLeftTriangleEqual: '⋬',\n  NotLess: '≮',\n  NotLessEqual: '≰',\n  NotLessGreater: '≸',\n  NotLessLess: '≪̸',\n  NotLessSlantEqual: '⩽̸',\n  NotLessTilde: '≴',\n  NotNestedGreaterGreater: '⪢̸',\n  NotNestedLessLess: '⪡̸',\n  NotPrecedes: '⊀',\n  NotPrecedesEqual: '⪯̸',\n  NotPrecedesSlantEqual: '⋠',\n  NotReverseElement: '∌',\n  NotRightTriangle: '⋫',\n  NotRightTriangleBar: '⧐̸',\n  NotRightTriangleEqual: '⋭',\n  NotSquareSubset: '⊏̸',\n  NotSquareSubsetEqual: '⋢',\n  NotSquareSuperset: '⊐̸',\n  NotSquareSupersetEqual: '⋣',\n  NotSubset: '⊂⃒',\n  NotSubsetEqual: '⊈',\n  NotSucceeds: '⊁',\n  NotSucceedsEqual: '⪰̸',\n  NotSucceedsSlantEqual: '⋡',\n  NotSucceedsTilde: '≿̸',\n  NotSuperset: '⊃⃒',\n  NotSupersetEqual: '⊉',\n  NotTilde: '≁',\n  NotTildeEqual: '≄',\n  NotTildeFullEqual: '≇',\n  NotTildeTilde: '≉',\n  NotVerticalBar: '∤',\n  Nscr: '𝒩',\n  Ntilde: 'Ñ',\n  Nu: 'Ν',\n  OElig: 'Œ',\n  Oacute: 'Ó',\n  Ocirc: 'Ô',\n  Ocy: 'О',\n  Odblac: 'Ő',\n  Ofr: '𝔒',\n  Ograve: 'Ò',\n  Omacr: 'Ō',\n  Omega: 'Ω',\n  Omicron: 'Ο',\n  Oopf: '𝕆',\n  OpenCurlyDoubleQuote: '“',\n  OpenCurlyQuote: '‘',\n  Or: '⩔',\n  Oscr: '𝒪',\n  Oslash: 'Ø',\n  Otilde: 'Õ',\n  Otimes: '⨷',\n  Ouml: 'Ö',\n  OverBar: '‾',\n  OverBrace: '⏞',\n  OverBracket: '⎴',\n  OverParenthesis: '⏜',\n  PartialD: '∂',\n  Pcy: 'П',\n  Pfr: '𝔓',\n  Phi: 'Φ',\n  Pi: 'Π',\n  PlusMinus: '±',\n  Poincareplane: 'ℌ',\n  Popf: 'ℙ',\n  Pr: '⪻',\n  Precedes: '≺',\n  PrecedesEqual: '⪯',\n  PrecedesSlantEqual: '≼',\n  PrecedesTilde: '≾',\n  Prime: '″',\n  Product: '∏',\n  Proportion: '∷',\n  Proportional: '∝',\n  Pscr: '𝒫',\n  Psi: 'Ψ',\n  QUOT: '\"',\n  Qfr: '𝔔',\n  Qopf: 'ℚ',\n  Qscr: '𝒬',\n  RBarr: '⤐',\n  REG: '®',\n  Racute: 'Ŕ',\n  Rang: '⟫',\n  Rarr: '↠',\n  Rarrtl: '⤖',\n  Rcaron: 'Ř',\n  Rcedil: 'Ŗ',\n  Rcy: 'Р',\n  Re: 'ℜ',\n  ReverseElement: '∋',\n  ReverseEquilibrium: '⇋',\n  ReverseUpEquilibrium: '⥯',\n  Rfr: 'ℜ',\n  Rho: 'Ρ',\n  RightAngleBracket: '⟩',\n  RightArrow: '→',\n  RightArrowBar: '⇥',\n  RightArrowLeftArrow: '⇄',\n  RightCeiling: '⌉',\n  RightDoubleBracket: '⟧',\n  RightDownTeeVector: '⥝',\n  RightDownVector: '⇂',\n  RightDownVectorBar: '⥕',\n  RightFloor: '⌋',\n  RightTee: '⊢',\n  RightTeeArrow: '↦',\n  RightTeeVector: '⥛',\n  RightTriangle: '⊳',\n  RightTriangleBar: '⧐',\n  RightTriangleEqual: '⊵',\n  RightUpDownVector: '⥏',\n  RightUpTeeVector: '⥜',\n  RightUpVector: '↾',\n  RightUpVectorBar: '⥔',\n  RightVector: '⇀',\n  RightVectorBar: '⥓',\n  Rightarrow: '⇒',\n  Ropf: 'ℝ',\n  RoundImplies: '⥰',\n  Rrightarrow: '⇛',\n  Rscr: 'ℛ',\n  Rsh: '↱',\n  RuleDelayed: '⧴',\n  SHCHcy: 'Щ',\n  SHcy: 'Ш',\n  SOFTcy: 'Ь',\n  Sacute: 'Ś',\n  Sc: '⪼',\n  Scaron: 'Š',\n  Scedil: 'Ş',\n  Scirc: 'Ŝ',\n  Scy: 'С',\n  Sfr: '𝔖',\n  ShortDownArrow: '↓',\n  ShortLeftArrow: '←',\n  ShortRightArrow: '→',\n  ShortUpArrow: '↑',\n  Sigma: 'Σ',\n  SmallCircle: '∘',\n  Sopf: '𝕊',\n  Sqrt: '√',\n  Square: '□',\n  SquareIntersection: '⊓',\n  SquareSubset: '⊏',\n  SquareSubsetEqual: '⊑',\n  SquareSuperset: '⊐',\n  SquareSupersetEqual: '⊒',\n  SquareUnion: '⊔',\n  Sscr: '𝒮',\n  Star: '⋆',\n  Sub: '⋐',\n  Subset: '⋐',\n  SubsetEqual: '⊆',\n  Succeeds: '≻',\n  SucceedsEqual: '⪰',\n  SucceedsSlantEqual: '≽',\n  SucceedsTilde: '≿',\n  SuchThat: '∋',\n  Sum: '∑',\n  Sup: '⋑',\n  Superset: '⊃',\n  SupersetEqual: '⊇',\n  Supset: '⋑',\n  THORN: 'Þ',\n  TRADE: '™',\n  TSHcy: 'Ћ',\n  TScy: 'Ц',\n  Tab: '\\t',\n  Tau: 'Τ',\n  Tcaron: 'Ť',\n  Tcedil: 'Ţ',\n  Tcy: 'Т',\n  Tfr: '𝔗',\n  Therefore: '∴',\n  Theta: 'Θ',\n  ThickSpace: '  ',\n  ThinSpace: ' ',\n  Tilde: '∼',\n  TildeEqual: '≃',\n  TildeFullEqual: '≅',\n  TildeTilde: '≈',\n  Topf: '𝕋',\n  TripleDot: '⃛',\n  Tscr: '𝒯',\n  Tstrok: 'Ŧ',\n  Uacute: 'Ú',\n  Uarr: '↟',\n  Uarrocir: '⥉',\n  Ubrcy: 'Ў',\n  Ubreve: 'Ŭ',\n  Ucirc: 'Û',\n  Ucy: 'У',\n  Udblac: 'Ű',\n  Ufr: '𝔘',\n  Ugrave: 'Ù',\n  Umacr: 'Ū',\n  UnderBar: '_',\n  UnderBrace: '⏟',\n  UnderBracket: '⎵',\n  UnderParenthesis: '⏝',\n  Union: '⋃',\n  UnionPlus: '⊎',\n  Uogon: 'Ų',\n  Uopf: '𝕌',\n  UpArrow: '↑',\n  UpArrowBar: '⤒',\n  UpArrowDownArrow: '⇅',\n  UpDownArrow: '↕',\n  UpEquilibrium: '⥮',\n  UpTee: '⊥',\n  UpTeeArrow: '↥',\n  Uparrow: '⇑',\n  Updownarrow: '⇕',\n  UpperLeftArrow: '↖',\n  UpperRightArrow: '↗',\n  Upsi: 'ϒ',\n  Upsilon: 'Υ',\n  Uring: 'Ů',\n  Uscr: '𝒰',\n  Utilde: 'Ũ',\n  Uuml: 'Ü',\n  VDash: '⊫',\n  Vbar: '⫫',\n  Vcy: 'В',\n  Vdash: '⊩',\n  Vdashl: '⫦',\n  Vee: '⋁',\n  Verbar: '‖',\n  Vert: '‖',\n  VerticalBar: '∣',\n  VerticalLine: '|',\n  VerticalSeparator: '❘',\n  VerticalTilde: '≀',\n  VeryThinSpace: ' ',\n  Vfr: '𝔙',\n  Vopf: '𝕍',\n  Vscr: '𝒱',\n  Vvdash: '⊪',\n  Wcirc: 'Ŵ',\n  Wedge: '⋀',\n  Wfr: '𝔚',\n  Wopf: '𝕎',\n  Wscr: '𝒲',\n  Xfr: '𝔛',\n  Xi: 'Ξ',\n  Xopf: '𝕏',\n  Xscr: '𝒳',\n  YAcy: 'Я',\n  YIcy: 'Ї',\n  YUcy: 'Ю',\n  Yacute: 'Ý',\n  Ycirc: 'Ŷ',\n  Ycy: 'Ы',\n  Yfr: '𝔜',\n  Yopf: '𝕐',\n  Yscr: '𝒴',\n  Yuml: 'Ÿ',\n  ZHcy: 'Ж',\n  Zacute: 'Ź',\n  Zcaron: 'Ž',\n  Zcy: 'З',\n  Zdot: 'Ż',\n  ZeroWidthSpace: '​',\n  Zeta: 'Ζ',\n  Zfr: 'ℨ',\n  Zopf: 'ℤ',\n  Zscr: '𝒵',\n  aacute: 'á',\n  abreve: 'ă',\n  ac: '∾',\n  acE: '∾̳',\n  acd: '∿',\n  acirc: 'â',\n  acute: '´',\n  acy: 'а',\n  aelig: 'æ',\n  af: '⁡',\n  afr: '𝔞',\n  agrave: 'à',\n  alefsym: 'ℵ',\n  aleph: 'ℵ',\n  alpha: 'α',\n  amacr: 'ā',\n  amalg: '⨿',\n  amp: '&',\n  and: '∧',\n  andand: '⩕',\n  andd: '⩜',\n  andslope: '⩘',\n  andv: '⩚',\n  ang: '∠',\n  ange: '⦤',\n  angle: '∠',\n  angmsd: '∡',\n  angmsdaa: '⦨',\n  angmsdab: '⦩',\n  angmsdac: '⦪',\n  angmsdad: '⦫',\n  angmsdae: '⦬',\n  angmsdaf: '⦭',\n  angmsdag: '⦮',\n  angmsdah: '⦯',\n  angrt: '∟',\n  angrtvb: '⊾',\n  angrtvbd: '⦝',\n  angsph: '∢',\n  angst: 'Å',\n  angzarr: '⍼',\n  aogon: 'ą',\n  aopf: '𝕒',\n  ap: '≈',\n  apE: '⩰',\n  apacir: '⩯',\n  ape: '≊',\n  apid: '≋',\n  apos: \"'\",\n  approx: '≈',\n  approxeq: '≊',\n  aring: 'å',\n  ascr: '𝒶',\n  ast: '*',\n  asymp: '≈',\n  asympeq: '≍',\n  atilde: 'ã',\n  auml: 'ä',\n  awconint: '∳',\n  awint: '⨑',\n  bNot: '⫭',\n  backcong: '≌',\n  backepsilon: '϶',\n  backprime: '‵',\n  backsim: '∽',\n  backsimeq: '⋍',\n  barvee: '⊽',\n  barwed: '⌅',\n  barwedge: '⌅',\n  bbrk: '⎵',\n  bbrktbrk: '⎶',\n  bcong: '≌',\n  bcy: 'б',\n  bdquo: '„',\n  becaus: '∵',\n  because: '∵',\n  bemptyv: '⦰',\n  bepsi: '϶',\n  bernou: 'ℬ',\n  beta: 'β',\n  beth: 'ℶ',\n  between: '≬',\n  bfr: '𝔟',\n  bigcap: '⋂',\n  bigcirc: '◯',\n  bigcup: '⋃',\n  bigodot: '⨀',\n  bigoplus: '⨁',\n  bigotimes: '⨂',\n  bigsqcup: '⨆',\n  bigstar: '★',\n  bigtriangledown: '▽',\n  bigtriangleup: '△',\n  biguplus: '⨄',\n  bigvee: '⋁',\n  bigwedge: '⋀',\n  bkarow: '⤍',\n  blacklozenge: '⧫',\n  blacksquare: '▪',\n  blacktriangle: '▴',\n  blacktriangledown: '▾',\n  blacktriangleleft: '◂',\n  blacktriangleright: '▸',\n  blank: '␣',\n  blk12: '▒',\n  blk14: '░',\n  blk34: '▓',\n  block: '█',\n  bne: '=⃥',\n  bnequiv: '≡⃥',\n  bnot: '⌐',\n  bopf: '𝕓',\n  bot: '⊥',\n  bottom: '⊥',\n  bowtie: '⋈',\n  boxDL: '╗',\n  boxDR: '╔',\n  boxDl: '╖',\n  boxDr: '╓',\n  boxH: '═',\n  boxHD: '╦',\n  boxHU: '╩',\n  boxHd: '╤',\n  boxHu: '╧',\n  boxUL: '╝',\n  boxUR: '╚',\n  boxUl: '╜',\n  boxUr: '╙',\n  boxV: '║',\n  boxVH: '╬',\n  boxVL: '╣',\n  boxVR: '╠',\n  boxVh: '╫',\n  boxVl: '╢',\n  boxVr: '╟',\n  boxbox: '⧉',\n  boxdL: '╕',\n  boxdR: '╒',\n  boxdl: '┐',\n  boxdr: '┌',\n  boxh: '─',\n  boxhD: '╥',\n  boxhU: '╨',\n  boxhd: '┬',\n  boxhu: '┴',\n  boxminus: '⊟',\n  boxplus: '⊞',\n  boxtimes: '⊠',\n  boxuL: '╛',\n  boxuR: '╘',\n  boxul: '┘',\n  boxur: '└',\n  boxv: '│',\n  boxvH: '╪',\n  boxvL: '╡',\n  boxvR: '╞',\n  boxvh: '┼',\n  boxvl: '┤',\n  boxvr: '├',\n  bprime: '‵',\n  breve: '˘',\n  brvbar: '¦',\n  bscr: '𝒷',\n  bsemi: '⁏',\n  bsim: '∽',\n  bsime: '⋍',\n  bsol: '\\\\',\n  bsolb: '⧅',\n  bsolhsub: '⟈',\n  bull: '•',\n  bullet: '•',\n  bump: '≎',\n  bumpE: '⪮',\n  bumpe: '≏',\n  bumpeq: '≏',\n  cacute: 'ć',\n  cap: '∩',\n  capand: '⩄',\n  capbrcup: '⩉',\n  capcap: '⩋',\n  capcup: '⩇',\n  capdot: '⩀',\n  caps: '∩︀',\n  caret: '⁁',\n  caron: 'ˇ',\n  ccaps: '⩍',\n  ccaron: 'č',\n  ccedil: 'ç',\n  ccirc: 'ĉ',\n  ccups: '⩌',\n  ccupssm: '⩐',\n  cdot: 'ċ',\n  cedil: '¸',\n  cemptyv: '⦲',\n  cent: '¢',\n  centerdot: '·',\n  cfr: '𝔠',\n  chcy: 'ч',\n  check: '✓',\n  checkmark: '✓',\n  chi: 'χ',\n  cir: '○',\n  cirE: '⧃',\n  circ: 'ˆ',\n  circeq: '≗',\n  circlearrowleft: '↺',\n  circlearrowright: '↻',\n  circledR: '®',\n  circledS: 'Ⓢ',\n  circledast: '⊛',\n  circledcirc: '⊚',\n  circleddash: '⊝',\n  cire: '≗',\n  cirfnint: '⨐',\n  cirmid: '⫯',\n  cirscir: '⧂',\n  clubs: '♣',\n  clubsuit: '♣',\n  colon: ':',\n  colone: '≔',\n  coloneq: '≔',\n  comma: ',',\n  commat: '@',\n  comp: '∁',\n  compfn: '∘',\n  complement: '∁',\n  complexes: 'ℂ',\n  cong: '≅',\n  congdot: '⩭',\n  conint: '∮',\n  copf: '𝕔',\n  coprod: '∐',\n  copy: '©',\n  copysr: '℗',\n  crarr: '↵',\n  cross: '✗',\n  cscr: '𝒸',\n  csub: '⫏',\n  csube: '⫑',\n  csup: '⫐',\n  csupe: '⫒',\n  ctdot: '⋯',\n  cudarrl: '⤸',\n  cudarrr: '⤵',\n  cuepr: '⋞',\n  cuesc: '⋟',\n  cularr: '↶',\n  cularrp: '⤽',\n  cup: '∪',\n  cupbrcap: '⩈',\n  cupcap: '⩆',\n  cupcup: '⩊',\n  cupdot: '⊍',\n  cupor: '⩅',\n  cups: '∪︀',\n  curarr: '↷',\n  curarrm: '⤼',\n  curlyeqprec: '⋞',\n  curlyeqsucc: '⋟',\n  curlyvee: '⋎',\n  curlywedge: '⋏',\n  curren: '¤',\n  curvearrowleft: '↶',\n  curvearrowright: '↷',\n  cuvee: '⋎',\n  cuwed: '⋏',\n  cwconint: '∲',\n  cwint: '∱',\n  cylcty: '⌭',\n  dArr: '⇓',\n  dHar: '⥥',\n  dagger: '†',\n  daleth: 'ℸ',\n  darr: '↓',\n  dash: '‐',\n  dashv: '⊣',\n  dbkarow: '⤏',\n  dblac: '˝',\n  dcaron: 'ď',\n  dcy: 'д',\n  dd: 'ⅆ',\n  ddagger: '‡',\n  ddarr: '⇊',\n  ddotseq: '⩷',\n  deg: '°',\n  delta: 'δ',\n  demptyv: '⦱',\n  dfisht: '⥿',\n  dfr: '𝔡',\n  dharl: '⇃',\n  dharr: '⇂',\n  diam: '⋄',\n  diamond: '⋄',\n  diamondsuit: '♦',\n  diams: '♦',\n  die: '¨',\n  digamma: 'ϝ',\n  disin: '⋲',\n  div: '÷',\n  divide: '÷',\n  divideontimes: '⋇',\n  divonx: '⋇',\n  djcy: 'ђ',\n  dlcorn: '⌞',\n  dlcrop: '⌍',\n  dollar: '$',\n  dopf: '𝕕',\n  dot: '˙',\n  doteq: '≐',\n  doteqdot: '≑',\n  dotminus: '∸',\n  dotplus: '∔',\n  dotsquare: '⊡',\n  doublebarwedge: '⌆',\n  downarrow: '↓',\n  downdownarrows: '⇊',\n  downharpoonleft: '⇃',\n  downharpoonright: '⇂',\n  drbkarow: '⤐',\n  drcorn: '⌟',\n  drcrop: '⌌',\n  dscr: '𝒹',\n  dscy: 'ѕ',\n  dsol: '⧶',\n  dstrok: 'đ',\n  dtdot: '⋱',\n  dtri: '▿',\n  dtrif: '▾',\n  duarr: '⇵',\n  duhar: '⥯',\n  dwangle: '⦦',\n  dzcy: 'џ',\n  dzigrarr: '⟿',\n  eDDot: '⩷',\n  eDot: '≑',\n  eacute: 'é',\n  easter: '⩮',\n  ecaron: 'ě',\n  ecir: '≖',\n  ecirc: 'ê',\n  ecolon: '≕',\n  ecy: 'э',\n  edot: 'ė',\n  ee: 'ⅇ',\n  efDot: '≒',\n  efr: '𝔢',\n  eg: '⪚',\n  egrave: 'è',\n  egs: '⪖',\n  egsdot: '⪘',\n  el: '⪙',\n  elinters: '⏧',\n  ell: 'ℓ',\n  els: '⪕',\n  elsdot: '⪗',\n  emacr: 'ē',\n  empty: '∅',\n  emptyset: '∅',\n  emptyv: '∅',\n  emsp13: ' ',\n  emsp14: ' ',\n  emsp: ' ',\n  eng: 'ŋ',\n  ensp: ' ',\n  eogon: 'ę',\n  eopf: '𝕖',\n  epar: '⋕',\n  eparsl: '⧣',\n  eplus: '⩱',\n  epsi: 'ε',\n  epsilon: 'ε',\n  epsiv: 'ϵ',\n  eqcirc: '≖',\n  eqcolon: '≕',\n  eqsim: '≂',\n  eqslantgtr: '⪖',\n  eqslantless: '⪕',\n  equals: '=',\n  equest: '≟',\n  equiv: '≡',\n  equivDD: '⩸',\n  eqvparsl: '⧥',\n  erDot: '≓',\n  erarr: '⥱',\n  escr: 'ℯ',\n  esdot: '≐',\n  esim: '≂',\n  eta: 'η',\n  eth: 'ð',\n  euml: 'ë',\n  euro: '€',\n  excl: '!',\n  exist: '∃',\n  expectation: 'ℰ',\n  exponentiale: 'ⅇ',\n  fallingdotseq: '≒',\n  fcy: 'ф',\n  female: '♀',\n  ffilig: 'ffi',\n  fflig: 'ff',\n  ffllig: 'ffl',\n  ffr: '𝔣',\n  filig: 'fi',\n  fjlig: 'fj',\n  flat: '♭',\n  fllig: 'fl',\n  fltns: '▱',\n  fnof: 'ƒ',\n  fopf: '𝕗',\n  forall: '∀',\n  fork: '⋔',\n  forkv: '⫙',\n  fpartint: '⨍',\n  frac12: '½',\n  frac13: '⅓',\n  frac14: '¼',\n  frac15: '⅕',\n  frac16: '⅙',\n  frac18: '⅛',\n  frac23: '⅔',\n  frac25: '⅖',\n  frac34: '¾',\n  frac35: '⅗',\n  frac38: '⅜',\n  frac45: '⅘',\n  frac56: '⅚',\n  frac58: '⅝',\n  frac78: '⅞',\n  frasl: '⁄',\n  frown: '⌢',\n  fscr: '𝒻',\n  gE: '≧',\n  gEl: '⪌',\n  gacute: 'ǵ',\n  gamma: 'γ',\n  gammad: 'ϝ',\n  gap: '⪆',\n  gbreve: 'ğ',\n  gcirc: 'ĝ',\n  gcy: 'г',\n  gdot: 'ġ',\n  ge: '≥',\n  gel: '⋛',\n  geq: '≥',\n  geqq: '≧',\n  geqslant: '⩾',\n  ges: '⩾',\n  gescc: '⪩',\n  gesdot: '⪀',\n  gesdoto: '⪂',\n  gesdotol: '⪄',\n  gesl: '⋛︀',\n  gesles: '⪔',\n  gfr: '𝔤',\n  gg: '≫',\n  ggg: '⋙',\n  gimel: 'ℷ',\n  gjcy: 'ѓ',\n  gl: '≷',\n  glE: '⪒',\n  gla: '⪥',\n  glj: '⪤',\n  gnE: '≩',\n  gnap: '⪊',\n  gnapprox: '⪊',\n  gne: '⪈',\n  gneq: '⪈',\n  gneqq: '≩',\n  gnsim: '⋧',\n  gopf: '𝕘',\n  grave: '`',\n  gscr: 'ℊ',\n  gsim: '≳',\n  gsime: '⪎',\n  gsiml: '⪐',\n  gt: '>',\n  gtcc: '⪧',\n  gtcir: '⩺',\n  gtdot: '⋗',\n  gtlPar: '⦕',\n  gtquest: '⩼',\n  gtrapprox: '⪆',\n  gtrarr: '⥸',\n  gtrdot: '⋗',\n  gtreqless: '⋛',\n  gtreqqless: '⪌',\n  gtrless: '≷',\n  gtrsim: '≳',\n  gvertneqq: '≩︀',\n  gvnE: '≩︀',\n  hArr: '⇔',\n  hairsp: ' ',\n  half: '½',\n  hamilt: 'ℋ',\n  hardcy: 'ъ',\n  harr: '↔',\n  harrcir: '⥈',\n  harrw: '↭',\n  hbar: 'ℏ',\n  hcirc: 'ĥ',\n  hearts: '♥',\n  heartsuit: '♥',\n  hellip: '…',\n  hercon: '⊹',\n  hfr: '𝔥',\n  hksearow: '⤥',\n  hkswarow: '⤦',\n  hoarr: '⇿',\n  homtht: '∻',\n  hookleftarrow: '↩',\n  hookrightarrow: '↪',\n  hopf: '𝕙',\n  horbar: '―',\n  hscr: '𝒽',\n  hslash: 'ℏ',\n  hstrok: 'ħ',\n  hybull: '⁃',\n  hyphen: '‐',\n  iacute: 'í',\n  ic: '⁣',\n  icirc: 'î',\n  icy: 'и',\n  iecy: 'е',\n  iexcl: '¡',\n  iff: '⇔',\n  ifr: '𝔦',\n  igrave: 'ì',\n  ii: 'ⅈ',\n  iiiint: '⨌',\n  iiint: '∭',\n  iinfin: '⧜',\n  iiota: '℩',\n  ijlig: 'ij',\n  imacr: 'ī',\n  image: 'ℑ',\n  imagline: 'ℐ',\n  imagpart: 'ℑ',\n  imath: 'ı',\n  imof: '⊷',\n  imped: 'Ƶ',\n  in: '∈',\n  incare: '℅',\n  infin: '∞',\n  infintie: '⧝',\n  inodot: 'ı',\n  int: '∫',\n  intcal: '⊺',\n  integers: 'ℤ',\n  intercal: '⊺',\n  intlarhk: '⨗',\n  intprod: '⨼',\n  iocy: 'ё',\n  iogon: 'į',\n  iopf: '𝕚',\n  iota: 'ι',\n  iprod: '⨼',\n  iquest: '¿',\n  iscr: '𝒾',\n  isin: '∈',\n  isinE: '⋹',\n  isindot: '⋵',\n  isins: '⋴',\n  isinsv: '⋳',\n  isinv: '∈',\n  it: '⁢',\n  itilde: 'ĩ',\n  iukcy: 'і',\n  iuml: 'ï',\n  jcirc: 'ĵ',\n  jcy: 'й',\n  jfr: '𝔧',\n  jmath: 'ȷ',\n  jopf: '𝕛',\n  jscr: '𝒿',\n  jsercy: 'ј',\n  jukcy: 'є',\n  kappa: 'κ',\n  kappav: 'ϰ',\n  kcedil: 'ķ',\n  kcy: 'к',\n  kfr: '𝔨',\n  kgreen: 'ĸ',\n  khcy: 'х',\n  kjcy: 'ќ',\n  kopf: '𝕜',\n  kscr: '𝓀',\n  lAarr: '⇚',\n  lArr: '⇐',\n  lAtail: '⤛',\n  lBarr: '⤎',\n  lE: '≦',\n  lEg: '⪋',\n  lHar: '⥢',\n  lacute: 'ĺ',\n  laemptyv: '⦴',\n  lagran: 'ℒ',\n  lambda: 'λ',\n  lang: '⟨',\n  langd: '⦑',\n  langle: '⟨',\n  lap: '⪅',\n  laquo: '«',\n  larr: '←',\n  larrb: '⇤',\n  larrbfs: '⤟',\n  larrfs: '⤝',\n  larrhk: '↩',\n  larrlp: '↫',\n  larrpl: '⤹',\n  larrsim: '⥳',\n  larrtl: '↢',\n  lat: '⪫',\n  latail: '⤙',\n  late: '⪭',\n  lates: '⪭︀',\n  lbarr: '⤌',\n  lbbrk: '❲',\n  lbrace: '{',\n  lbrack: '[',\n  lbrke: '⦋',\n  lbrksld: '⦏',\n  lbrkslu: '⦍',\n  lcaron: 'ľ',\n  lcedil: 'ļ',\n  lceil: '⌈',\n  lcub: '{',\n  lcy: 'л',\n  ldca: '⤶',\n  ldquo: '“',\n  ldquor: '„',\n  ldrdhar: '⥧',\n  ldrushar: '⥋',\n  ldsh: '↲',\n  le: '≤',\n  leftarrow: '←',\n  leftarrowtail: '↢',\n  leftharpoondown: '↽',\n  leftharpoonup: '↼',\n  leftleftarrows: '⇇',\n  leftrightarrow: '↔',\n  leftrightarrows: '⇆',\n  leftrightharpoons: '⇋',\n  leftrightsquigarrow: '↭',\n  leftthreetimes: '⋋',\n  leg: '⋚',\n  leq: '≤',\n  leqq: '≦',\n  leqslant: '⩽',\n  les: '⩽',\n  lescc: '⪨',\n  lesdot: '⩿',\n  lesdoto: '⪁',\n  lesdotor: '⪃',\n  lesg: '⋚︀',\n  lesges: '⪓',\n  lessapprox: '⪅',\n  lessdot: '⋖',\n  lesseqgtr: '⋚',\n  lesseqqgtr: '⪋',\n  lessgtr: '≶',\n  lesssim: '≲',\n  lfisht: '⥼',\n  lfloor: '⌊',\n  lfr: '𝔩',\n  lg: '≶',\n  lgE: '⪑',\n  lhard: '↽',\n  lharu: '↼',\n  lharul: '⥪',\n  lhblk: '▄',\n  ljcy: 'љ',\n  ll: '≪',\n  llarr: '⇇',\n  llcorner: '⌞',\n  llhard: '⥫',\n  lltri: '◺',\n  lmidot: 'ŀ',\n  lmoust: '⎰',\n  lmoustache: '⎰',\n  lnE: '≨',\n  lnap: '⪉',\n  lnapprox: '⪉',\n  lne: '⪇',\n  lneq: '⪇',\n  lneqq: '≨',\n  lnsim: '⋦',\n  loang: '⟬',\n  loarr: '⇽',\n  lobrk: '⟦',\n  longleftarrow: '⟵',\n  longleftrightarrow: '⟷',\n  longmapsto: '⟼',\n  longrightarrow: '⟶',\n  looparrowleft: '↫',\n  looparrowright: '↬',\n  lopar: '⦅',\n  lopf: '𝕝',\n  loplus: '⨭',\n  lotimes: '⨴',\n  lowast: '∗',\n  lowbar: '_',\n  loz: '◊',\n  lozenge: '◊',\n  lozf: '⧫',\n  lpar: '(',\n  lparlt: '⦓',\n  lrarr: '⇆',\n  lrcorner: '⌟',\n  lrhar: '⇋',\n  lrhard: '⥭',\n  lrm: '‎',\n  lrtri: '⊿',\n  lsaquo: '‹',\n  lscr: '𝓁',\n  lsh: '↰',\n  lsim: '≲',\n  lsime: '⪍',\n  lsimg: '⪏',\n  lsqb: '[',\n  lsquo: '‘',\n  lsquor: '‚',\n  lstrok: 'ł',\n  lt: '<',\n  ltcc: '⪦',\n  ltcir: '⩹',\n  ltdot: '⋖',\n  lthree: '⋋',\n  ltimes: '⋉',\n  ltlarr: '⥶',\n  ltquest: '⩻',\n  ltrPar: '⦖',\n  ltri: '◃',\n  ltrie: '⊴',\n  ltrif: '◂',\n  lurdshar: '⥊',\n  luruhar: '⥦',\n  lvertneqq: '≨︀',\n  lvnE: '≨︀',\n  mDDot: '∺',\n  macr: '¯',\n  male: '♂',\n  malt: '✠',\n  maltese: '✠',\n  map: '↦',\n  mapsto: '↦',\n  mapstodown: '↧',\n  mapstoleft: '↤',\n  mapstoup: '↥',\n  marker: '▮',\n  mcomma: '⨩',\n  mcy: 'м',\n  mdash: '—',\n  measuredangle: '∡',\n  mfr: '𝔪',\n  mho: '℧',\n  micro: 'µ',\n  mid: '∣',\n  midast: '*',\n  midcir: '⫰',\n  middot: '·',\n  minus: '−',\n  minusb: '⊟',\n  minusd: '∸',\n  minusdu: '⨪',\n  mlcp: '⫛',\n  mldr: '…',\n  mnplus: '∓',\n  models: '⊧',\n  mopf: '𝕞',\n  mp: '∓',\n  mscr: '𝓂',\n  mstpos: '∾',\n  mu: 'μ',\n  multimap: '⊸',\n  mumap: '⊸',\n  nGg: '⋙̸',\n  nGt: '≫⃒',\n  nGtv: '≫̸',\n  nLeftarrow: '⇍',\n  nLeftrightarrow: '⇎',\n  nLl: '⋘̸',\n  nLt: '≪⃒',\n  nLtv: '≪̸',\n  nRightarrow: '⇏',\n  nVDash: '⊯',\n  nVdash: '⊮',\n  nabla: '∇',\n  nacute: 'ń',\n  nang: '∠⃒',\n  nap: '≉',\n  napE: '⩰̸',\n  napid: '≋̸',\n  napos: 'ʼn',\n  napprox: '≉',\n  natur: '♮',\n  natural: '♮',\n  naturals: 'ℕ',\n  nbsp: ' ',\n  nbump: '≎̸',\n  nbumpe: '≏̸',\n  ncap: '⩃',\n  ncaron: 'ň',\n  ncedil: 'ņ',\n  ncong: '≇',\n  ncongdot: '⩭̸',\n  ncup: '⩂',\n  ncy: 'н',\n  ndash: '–',\n  ne: '≠',\n  neArr: '⇗',\n  nearhk: '⤤',\n  nearr: '↗',\n  nearrow: '↗',\n  nedot: '≐̸',\n  nequiv: '≢',\n  nesear: '⤨',\n  nesim: '≂̸',\n  nexist: '∄',\n  nexists: '∄',\n  nfr: '𝔫',\n  ngE: '≧̸',\n  nge: '≱',\n  ngeq: '≱',\n  ngeqq: '≧̸',\n  ngeqslant: '⩾̸',\n  nges: '⩾̸',\n  ngsim: '≵',\n  ngt: '≯',\n  ngtr: '≯',\n  nhArr: '⇎',\n  nharr: '↮',\n  nhpar: '⫲',\n  ni: '∋',\n  nis: '⋼',\n  nisd: '⋺',\n  niv: '∋',\n  njcy: 'њ',\n  nlArr: '⇍',\n  nlE: '≦̸',\n  nlarr: '↚',\n  nldr: '‥',\n  nle: '≰',\n  nleftarrow: '↚',\n  nleftrightarrow: '↮',\n  nleq: '≰',\n  nleqq: '≦̸',\n  nleqslant: '⩽̸',\n  nles: '⩽̸',\n  nless: '≮',\n  nlsim: '≴',\n  nlt: '≮',\n  nltri: '⋪',\n  nltrie: '⋬',\n  nmid: '∤',\n  nopf: '𝕟',\n  not: '¬',\n  notin: '∉',\n  notinE: '⋹̸',\n  notindot: '⋵̸',\n  notinva: '∉',\n  notinvb: '⋷',\n  notinvc: '⋶',\n  notni: '∌',\n  notniva: '∌',\n  notnivb: '⋾',\n  notnivc: '⋽',\n  npar: '∦',\n  nparallel: '∦',\n  nparsl: '⫽⃥',\n  npart: '∂̸',\n  npolint: '⨔',\n  npr: '⊀',\n  nprcue: '⋠',\n  npre: '⪯̸',\n  nprec: '⊀',\n  npreceq: '⪯̸',\n  nrArr: '⇏',\n  nrarr: '↛',\n  nrarrc: '⤳̸',\n  nrarrw: '↝̸',\n  nrightarrow: '↛',\n  nrtri: '⋫',\n  nrtrie: '⋭',\n  nsc: '⊁',\n  nsccue: '⋡',\n  nsce: '⪰̸',\n  nscr: '𝓃',\n  nshortmid: '∤',\n  nshortparallel: '∦',\n  nsim: '≁',\n  nsime: '≄',\n  nsimeq: '≄',\n  nsmid: '∤',\n  nspar: '∦',\n  nsqsube: '⋢',\n  nsqsupe: '⋣',\n  nsub: '⊄',\n  nsubE: '⫅̸',\n  nsube: '⊈',\n  nsubset: '⊂⃒',\n  nsubseteq: '⊈',\n  nsubseteqq: '⫅̸',\n  nsucc: '⊁',\n  nsucceq: '⪰̸',\n  nsup: '⊅',\n  nsupE: '⫆̸',\n  nsupe: '⊉',\n  nsupset: '⊃⃒',\n  nsupseteq: '⊉',\n  nsupseteqq: '⫆̸',\n  ntgl: '≹',\n  ntilde: 'ñ',\n  ntlg: '≸',\n  ntriangleleft: '⋪',\n  ntrianglelefteq: '⋬',\n  ntriangleright: '⋫',\n  ntrianglerighteq: '⋭',\n  nu: 'ν',\n  num: '#',\n  numero: '№',\n  numsp: ' ',\n  nvDash: '⊭',\n  nvHarr: '⤄',\n  nvap: '≍⃒',\n  nvdash: '⊬',\n  nvge: '≥⃒',\n  nvgt: '>⃒',\n  nvinfin: '⧞',\n  nvlArr: '⤂',\n  nvle: '≤⃒',\n  nvlt: '<⃒',\n  nvltrie: '⊴⃒',\n  nvrArr: '⤃',\n  nvrtrie: '⊵⃒',\n  nvsim: '∼⃒',\n  nwArr: '⇖',\n  nwarhk: '⤣',\n  nwarr: '↖',\n  nwarrow: '↖',\n  nwnear: '⤧',\n  oS: 'Ⓢ',\n  oacute: 'ó',\n  oast: '⊛',\n  ocir: '⊚',\n  ocirc: 'ô',\n  ocy: 'о',\n  odash: '⊝',\n  odblac: 'ő',\n  odiv: '⨸',\n  odot: '⊙',\n  odsold: '⦼',\n  oelig: 'œ',\n  ofcir: '⦿',\n  ofr: '𝔬',\n  ogon: '˛',\n  ograve: 'ò',\n  ogt: '⧁',\n  ohbar: '⦵',\n  ohm: 'Ω',\n  oint: '∮',\n  olarr: '↺',\n  olcir: '⦾',\n  olcross: '⦻',\n  oline: '‾',\n  olt: '⧀',\n  omacr: 'ō',\n  omega: 'ω',\n  omicron: 'ο',\n  omid: '⦶',\n  ominus: '⊖',\n  oopf: '𝕠',\n  opar: '⦷',\n  operp: '⦹',\n  oplus: '⊕',\n  or: '∨',\n  orarr: '↻',\n  ord: '⩝',\n  order: 'ℴ',\n  orderof: 'ℴ',\n  ordf: 'ª',\n  ordm: 'º',\n  origof: '⊶',\n  oror: '⩖',\n  orslope: '⩗',\n  orv: '⩛',\n  oscr: 'ℴ',\n  oslash: 'ø',\n  osol: '⊘',\n  otilde: 'õ',\n  otimes: '⊗',\n  otimesas: '⨶',\n  ouml: 'ö',\n  ovbar: '⌽',\n  par: '∥',\n  para: '¶',\n  parallel: '∥',\n  parsim: '⫳',\n  parsl: '⫽',\n  part: '∂',\n  pcy: 'п',\n  percnt: '%',\n  period: '.',\n  permil: '‰',\n  perp: '⊥',\n  pertenk: '‱',\n  pfr: '𝔭',\n  phi: 'φ',\n  phiv: 'ϕ',\n  phmmat: 'ℳ',\n  phone: '☎',\n  pi: 'π',\n  pitchfork: '⋔',\n  piv: 'ϖ',\n  planck: 'ℏ',\n  planckh: 'ℎ',\n  plankv: 'ℏ',\n  plus: '+',\n  plusacir: '⨣',\n  plusb: '⊞',\n  pluscir: '⨢',\n  plusdo: '∔',\n  plusdu: '⨥',\n  pluse: '⩲',\n  plusmn: '±',\n  plussim: '⨦',\n  plustwo: '⨧',\n  pm: '±',\n  pointint: '⨕',\n  popf: '𝕡',\n  pound: '£',\n  pr: '≺',\n  prE: '⪳',\n  prap: '⪷',\n  prcue: '≼',\n  pre: '⪯',\n  prec: '≺',\n  precapprox: '⪷',\n  preccurlyeq: '≼',\n  preceq: '⪯',\n  precnapprox: '⪹',\n  precneqq: '⪵',\n  precnsim: '⋨',\n  precsim: '≾',\n  prime: '′',\n  primes: 'ℙ',\n  prnE: '⪵',\n  prnap: '⪹',\n  prnsim: '⋨',\n  prod: '∏',\n  profalar: '⌮',\n  profline: '⌒',\n  profsurf: '⌓',\n  prop: '∝',\n  propto: '∝',\n  prsim: '≾',\n  prurel: '⊰',\n  pscr: '𝓅',\n  psi: 'ψ',\n  puncsp: ' ',\n  qfr: '𝔮',\n  qint: '⨌',\n  qopf: '𝕢',\n  qprime: '⁗',\n  qscr: '𝓆',\n  quaternions: 'ℍ',\n  quatint: '⨖',\n  quest: '?',\n  questeq: '≟',\n  quot: '\"',\n  rAarr: '⇛',\n  rArr: '⇒',\n  rAtail: '⤜',\n  rBarr: '⤏',\n  rHar: '⥤',\n  race: '∽̱',\n  racute: 'ŕ',\n  radic: '√',\n  raemptyv: '⦳',\n  rang: '⟩',\n  rangd: '⦒',\n  range: '⦥',\n  rangle: '⟩',\n  raquo: '»',\n  rarr: '→',\n  rarrap: '⥵',\n  rarrb: '⇥',\n  rarrbfs: '⤠',\n  rarrc: '⤳',\n  rarrfs: '⤞',\n  rarrhk: '↪',\n  rarrlp: '↬',\n  rarrpl: '⥅',\n  rarrsim: '⥴',\n  rarrtl: '↣',\n  rarrw: '↝',\n  ratail: '⤚',\n  ratio: '∶',\n  rationals: 'ℚ',\n  rbarr: '⤍',\n  rbbrk: '❳',\n  rbrace: '}',\n  rbrack: ']',\n  rbrke: '⦌',\n  rbrksld: '⦎',\n  rbrkslu: '⦐',\n  rcaron: 'ř',\n  rcedil: 'ŗ',\n  rceil: '⌉',\n  rcub: '}',\n  rcy: 'р',\n  rdca: '⤷',\n  rdldhar: '⥩',\n  rdquo: '”',\n  rdquor: '”',\n  rdsh: '↳',\n  real: 'ℜ',\n  realine: 'ℛ',\n  realpart: 'ℜ',\n  reals: 'ℝ',\n  rect: '▭',\n  reg: '®',\n  rfisht: '⥽',\n  rfloor: '⌋',\n  rfr: '𝔯',\n  rhard: '⇁',\n  rharu: '⇀',\n  rharul: '⥬',\n  rho: 'ρ',\n  rhov: 'ϱ',\n  rightarrow: '→',\n  rightarrowtail: '↣',\n  rightharpoondown: '⇁',\n  rightharpoonup: '⇀',\n  rightleftarrows: '⇄',\n  rightleftharpoons: '⇌',\n  rightrightarrows: '⇉',\n  rightsquigarrow: '↝',\n  rightthreetimes: '⋌',\n  ring: '˚',\n  risingdotseq: '≓',\n  rlarr: '⇄',\n  rlhar: '⇌',\n  rlm: '‏',\n  rmoust: '⎱',\n  rmoustache: '⎱',\n  rnmid: '⫮',\n  roang: '⟭',\n  roarr: '⇾',\n  robrk: '⟧',\n  ropar: '⦆',\n  ropf: '𝕣',\n  roplus: '⨮',\n  rotimes: '⨵',\n  rpar: ')',\n  rpargt: '⦔',\n  rppolint: '⨒',\n  rrarr: '⇉',\n  rsaquo: '›',\n  rscr: '𝓇',\n  rsh: '↱',\n  rsqb: ']',\n  rsquo: '’',\n  rsquor: '’',\n  rthree: '⋌',\n  rtimes: '⋊',\n  rtri: '▹',\n  rtrie: '⊵',\n  rtrif: '▸',\n  rtriltri: '⧎',\n  ruluhar: '⥨',\n  rx: '℞',\n  sacute: 'ś',\n  sbquo: '‚',\n  sc: '≻',\n  scE: '⪴',\n  scap: '⪸',\n  scaron: 'š',\n  sccue: '≽',\n  sce: '⪰',\n  scedil: 'ş',\n  scirc: 'ŝ',\n  scnE: '⪶',\n  scnap: '⪺',\n  scnsim: '⋩',\n  scpolint: '⨓',\n  scsim: '≿',\n  scy: 'с',\n  sdot: '⋅',\n  sdotb: '⊡',\n  sdote: '⩦',\n  seArr: '⇘',\n  searhk: '⤥',\n  searr: '↘',\n  searrow: '↘',\n  sect: '§',\n  semi: ';',\n  seswar: '⤩',\n  setminus: '∖',\n  setmn: '∖',\n  sext: '✶',\n  sfr: '𝔰',\n  sfrown: '⌢',\n  sharp: '♯',\n  shchcy: 'щ',\n  shcy: 'ш',\n  shortmid: '∣',\n  shortparallel: '∥',\n  shy: '­',\n  sigma: 'σ',\n  sigmaf: 'ς',\n  sigmav: 'ς',\n  sim: '∼',\n  simdot: '⩪',\n  sime: '≃',\n  simeq: '≃',\n  simg: '⪞',\n  simgE: '⪠',\n  siml: '⪝',\n  simlE: '⪟',\n  simne: '≆',\n  simplus: '⨤',\n  simrarr: '⥲',\n  slarr: '←',\n  smallsetminus: '∖',\n  smashp: '⨳',\n  smeparsl: '⧤',\n  smid: '∣',\n  smile: '⌣',\n  smt: '⪪',\n  smte: '⪬',\n  smtes: '⪬︀',\n  softcy: 'ь',\n  sol: '/',\n  solb: '⧄',\n  solbar: '⌿',\n  sopf: '𝕤',\n  spades: '♠',\n  spadesuit: '♠',\n  spar: '∥',\n  sqcap: '⊓',\n  sqcaps: '⊓︀',\n  sqcup: '⊔',\n  sqcups: '⊔︀',\n  sqsub: '⊏',\n  sqsube: '⊑',\n  sqsubset: '⊏',\n  sqsubseteq: '⊑',\n  sqsup: '⊐',\n  sqsupe: '⊒',\n  sqsupset: '⊐',\n  sqsupseteq: '⊒',\n  squ: '□',\n  square: '□',\n  squarf: '▪',\n  squf: '▪',\n  srarr: '→',\n  sscr: '𝓈',\n  ssetmn: '∖',\n  ssmile: '⌣',\n  sstarf: '⋆',\n  star: '☆',\n  starf: '★',\n  straightepsilon: 'ϵ',\n  straightphi: 'ϕ',\n  strns: '¯',\n  sub: '⊂',\n  subE: '⫅',\n  subdot: '⪽',\n  sube: '⊆',\n  subedot: '⫃',\n  submult: '⫁',\n  subnE: '⫋',\n  subne: '⊊',\n  subplus: '⪿',\n  subrarr: '⥹',\n  subset: '⊂',\n  subseteq: '⊆',\n  subseteqq: '⫅',\n  subsetneq: '⊊',\n  subsetneqq: '⫋',\n  subsim: '⫇',\n  subsub: '⫕',\n  subsup: '⫓',\n  succ: '≻',\n  succapprox: '⪸',\n  succcurlyeq: '≽',\n  succeq: '⪰',\n  succnapprox: '⪺',\n  succneqq: '⪶',\n  succnsim: '⋩',\n  succsim: '≿',\n  sum: '∑',\n  sung: '♪',\n  sup1: '¹',\n  sup2: '²',\n  sup3: '³',\n  sup: '⊃',\n  supE: '⫆',\n  supdot: '⪾',\n  supdsub: '⫘',\n  supe: '⊇',\n  supedot: '⫄',\n  suphsol: '⟉',\n  suphsub: '⫗',\n  suplarr: '⥻',\n  supmult: '⫂',\n  supnE: '⫌',\n  supne: '⊋',\n  supplus: '⫀',\n  supset: '⊃',\n  supseteq: '⊇',\n  supseteqq: '⫆',\n  supsetneq: '⊋',\n  supsetneqq: '⫌',\n  supsim: '⫈',\n  supsub: '⫔',\n  supsup: '⫖',\n  swArr: '⇙',\n  swarhk: '⤦',\n  swarr: '↙',\n  swarrow: '↙',\n  swnwar: '⤪',\n  szlig: 'ß',\n  target: '⌖',\n  tau: 'τ',\n  tbrk: '⎴',\n  tcaron: 'ť',\n  tcedil: 'ţ',\n  tcy: 'т',\n  tdot: '⃛',\n  telrec: '⌕',\n  tfr: '𝔱',\n  there4: '∴',\n  therefore: '∴',\n  theta: 'θ',\n  thetasym: 'ϑ',\n  thetav: 'ϑ',\n  thickapprox: '≈',\n  thicksim: '∼',\n  thinsp: ' ',\n  thkap: '≈',\n  thksim: '∼',\n  thorn: 'þ',\n  tilde: '˜',\n  times: '×',\n  timesb: '⊠',\n  timesbar: '⨱',\n  timesd: '⨰',\n  tint: '∭',\n  toea: '⤨',\n  top: '⊤',\n  topbot: '⌶',\n  topcir: '⫱',\n  topf: '𝕥',\n  topfork: '⫚',\n  tosa: '⤩',\n  tprime: '‴',\n  trade: '™',\n  triangle: '▵',\n  triangledown: '▿',\n  triangleleft: '◃',\n  trianglelefteq: '⊴',\n  triangleq: '≜',\n  triangleright: '▹',\n  trianglerighteq: '⊵',\n  tridot: '◬',\n  trie: '≜',\n  triminus: '⨺',\n  triplus: '⨹',\n  trisb: '⧍',\n  tritime: '⨻',\n  trpezium: '⏢',\n  tscr: '𝓉',\n  tscy: 'ц',\n  tshcy: 'ћ',\n  tstrok: 'ŧ',\n  twixt: '≬',\n  twoheadleftarrow: '↞',\n  twoheadrightarrow: '↠',\n  uArr: '⇑',\n  uHar: '⥣',\n  uacute: 'ú',\n  uarr: '↑',\n  ubrcy: 'ў',\n  ubreve: 'ŭ',\n  ucirc: 'û',\n  ucy: 'у',\n  udarr: '⇅',\n  udblac: 'ű',\n  udhar: '⥮',\n  ufisht: '⥾',\n  ufr: '𝔲',\n  ugrave: 'ù',\n  uharl: '↿',\n  uharr: '↾',\n  uhblk: '▀',\n  ulcorn: '⌜',\n  ulcorner: '⌜',\n  ulcrop: '⌏',\n  ultri: '◸',\n  umacr: 'ū',\n  uml: '¨',\n  uogon: 'ų',\n  uopf: '𝕦',\n  uparrow: '↑',\n  updownarrow: '↕',\n  upharpoonleft: '↿',\n  upharpoonright: '↾',\n  uplus: '⊎',\n  upsi: 'υ',\n  upsih: 'ϒ',\n  upsilon: 'υ',\n  upuparrows: '⇈',\n  urcorn: '⌝',\n  urcorner: '⌝',\n  urcrop: '⌎',\n  uring: 'ů',\n  urtri: '◹',\n  uscr: '𝓊',\n  utdot: '⋰',\n  utilde: 'ũ',\n  utri: '▵',\n  utrif: '▴',\n  uuarr: '⇈',\n  uuml: 'ü',\n  uwangle: '⦧',\n  vArr: '⇕',\n  vBar: '⫨',\n  vBarv: '⫩',\n  vDash: '⊨',\n  vangrt: '⦜',\n  varepsilon: 'ϵ',\n  varkappa: 'ϰ',\n  varnothing: '∅',\n  varphi: 'ϕ',\n  varpi: 'ϖ',\n  varpropto: '∝',\n  varr: '↕',\n  varrho: 'ϱ',\n  varsigma: 'ς',\n  varsubsetneq: '⊊︀',\n  varsubsetneqq: '⫋︀',\n  varsupsetneq: '⊋︀',\n  varsupsetneqq: '⫌︀',\n  vartheta: 'ϑ',\n  vartriangleleft: '⊲',\n  vartriangleright: '⊳',\n  vcy: 'в',\n  vdash: '⊢',\n  vee: '∨',\n  veebar: '⊻',\n  veeeq: '≚',\n  vellip: '⋮',\n  verbar: '|',\n  vert: '|',\n  vfr: '𝔳',\n  vltri: '⊲',\n  vnsub: '⊂⃒',\n  vnsup: '⊃⃒',\n  vopf: '𝕧',\n  vprop: '∝',\n  vrtri: '⊳',\n  vscr: '𝓋',\n  vsubnE: '⫋︀',\n  vsubne: '⊊︀',\n  vsupnE: '⫌︀',\n  vsupne: '⊋︀',\n  vzigzag: '⦚',\n  wcirc: 'ŵ',\n  wedbar: '⩟',\n  wedge: '∧',\n  wedgeq: '≙',\n  weierp: '℘',\n  wfr: '𝔴',\n  wopf: '𝕨',\n  wp: '℘',\n  wr: '≀',\n  wreath: '≀',\n  wscr: '𝓌',\n  xcap: '⋂',\n  xcirc: '◯',\n  xcup: '⋃',\n  xdtri: '▽',\n  xfr: '𝔵',\n  xhArr: '⟺',\n  xharr: '⟷',\n  xi: 'ξ',\n  xlArr: '⟸',\n  xlarr: '⟵',\n  xmap: '⟼',\n  xnis: '⋻',\n  xodot: '⨀',\n  xopf: '𝕩',\n  xoplus: '⨁',\n  xotime: '⨂',\n  xrArr: '⟹',\n  xrarr: '⟶',\n  xscr: '𝓍',\n  xsqcup: '⨆',\n  xuplus: '⨄',\n  xutri: '△',\n  xvee: '⋁',\n  xwedge: '⋀',\n  yacute: 'ý',\n  yacy: 'я',\n  ycirc: 'ŷ',\n  ycy: 'ы',\n  yen: '¥',\n  yfr: '𝔶',\n  yicy: 'ї',\n  yopf: '𝕪',\n  yscr: '𝓎',\n  yucy: 'ю',\n  yuml: 'ÿ',\n  zacute: 'ź',\n  zcaron: 'ž',\n  zcy: 'з',\n  zdot: 'ż',\n  zeetrf: 'ℨ',\n  zeta: 'ζ',\n  zfr: '𝔷',\n  zhcy: 'ж',\n  zigrarr: '⇝',\n  zopf: '𝕫',\n  zscr: '𝓏',\n  zwj: '‍',\n  zwnj: '‌'\n}\n","import {characterEntities} from 'character-entities'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Decode a single character reference (without the `&` or `;`).\n * You probably only need this when you’re building parsers yourself that follow\n * different rules compared to HTML.\n * This is optimized to be tiny in browsers.\n *\n * @param {string} value\n *   `notin` (named), `#123` (deci), `#x123` (hexa).\n * @returns {string|false}\n *   Decoded reference.\n */\nexport function decodeNamedCharacterReference(value) {\n  return own.call(characterEntities, value) ? characterEntities[value] : false\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {\n  asciiAlphanumeric,\n  asciiDigit,\n  asciiHexDigit\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const characterReference = {\n  name: 'characterReference',\n  tokenize: tokenizeCharacterReference\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCharacterReference(effects, ok, nok) {\n  const self = this\n  let size = 0\n  /** @type {number} */\n\n  let max\n  /** @type {(code: Code) => code is number} */\n\n  let test\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('characterReference')\n    effects.enter('characterReferenceMarker')\n    effects.consume(code)\n    effects.exit('characterReferenceMarker')\n    return open\n  }\n  /** @type {State} */\n\n  function open(code) {\n    if (code === 35) {\n      effects.enter('characterReferenceMarkerNumeric')\n      effects.consume(code)\n      effects.exit('characterReferenceMarkerNumeric')\n      return numeric\n    }\n\n    effects.enter('characterReferenceValue')\n    max = 31\n    test = asciiAlphanumeric\n    return value(code)\n  }\n  /** @type {State} */\n\n  function numeric(code) {\n    if (code === 88 || code === 120) {\n      effects.enter('characterReferenceMarkerHexadecimal')\n      effects.consume(code)\n      effects.exit('characterReferenceMarkerHexadecimal')\n      effects.enter('characterReferenceValue')\n      max = 6\n      test = asciiHexDigit\n      return value\n    }\n\n    effects.enter('characterReferenceValue')\n    max = 7\n    test = asciiDigit\n    return value(code)\n  }\n  /** @type {State} */\n\n  function value(code) {\n    /** @type {Token} */\n    let token\n\n    if (code === 59 && size) {\n      token = effects.exit('characterReferenceValue')\n\n      if (\n        test === asciiAlphanumeric &&\n        !decodeNamedCharacterReference(self.sliceSerialize(token))\n      ) {\n        return nok(code)\n      }\n\n      effects.enter('characterReferenceMarker')\n      effects.consume(code)\n      effects.exit('characterReferenceMarker')\n      effects.exit('characterReference')\n      return ok\n    }\n\n    if (test(code) && size++ < max) {\n      effects.consume(code)\n      return value\n    }\n\n    return nok(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {asciiPunctuation} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const characterEscape = {\n  name: 'characterEscape',\n  tokenize: tokenizeCharacterEscape\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('characterEscape')\n    effects.enter('escapeMarker')\n    effects.consume(code)\n    effects.exit('escapeMarker')\n    return open\n  }\n  /** @type {State} */\n\n  function open(code) {\n    if (asciiPunctuation(code)) {\n      effects.enter('characterEscapeValue')\n      effects.consume(code)\n      effects.exit('characterEscapeValue')\n      effects.exit('characterEscape')\n      return ok\n    }\n\n    return nok(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const lineEnding = {\n  name: 'lineEnding',\n  tokenize: tokenizeLineEnding\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLineEnding(effects, ok) {\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    return factorySpace(effects, ok, 'linePrefix')\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factoryDestination} from 'micromark-factory-destination'\nimport {factoryLabel} from 'micromark-factory-label'\nimport {factoryTitle} from 'micromark-factory-title'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {markdownLineEndingOrSpace} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {resolveAll} from 'micromark-util-resolve-all'\n\n/** @type {Construct} */\nexport const labelEnd = {\n  name: 'labelEnd',\n  tokenize: tokenizeLabelEnd,\n  resolveTo: resolveToLabelEnd,\n  resolveAll: resolveAllLabelEnd\n}\n/** @type {Construct} */\n\nconst resourceConstruct = {\n  tokenize: tokenizeResource\n}\n/** @type {Construct} */\n\nconst fullReferenceConstruct = {\n  tokenize: tokenizeFullReference\n}\n/** @type {Construct} */\n\nconst collapsedReferenceConstruct = {\n  tokenize: tokenizeCollapsedReference\n}\n/** @type {Resolver} */\n\nfunction resolveAllLabelEnd(events) {\n  let index = -1\n  /** @type {Token} */\n\n  let token\n\n  while (++index < events.length) {\n    token = events[index][1]\n\n    if (\n      token.type === 'labelImage' ||\n      token.type === 'labelLink' ||\n      token.type === 'labelEnd'\n    ) {\n      // Remove the marker.\n      events.splice(index + 1, token.type === 'labelImage' ? 4 : 2)\n      token.type = 'data'\n      index++\n    }\n  }\n\n  return events\n}\n/** @type {Resolver} */\n\nfunction resolveToLabelEnd(events, context) {\n  let index = events.length\n  let offset = 0\n  /** @type {Token} */\n\n  let token\n  /** @type {number|undefined} */\n\n  let open\n  /** @type {number|undefined} */\n\n  let close\n  /** @type {Event[]} */\n\n  let media // Find an opening.\n\n  while (index--) {\n    token = events[index][1]\n\n    if (open) {\n      // If we see another link, or inactive link label, we’ve been here before.\n      if (\n        token.type === 'link' ||\n        (token.type === 'labelLink' && token._inactive)\n      ) {\n        break\n      } // Mark other link openings as inactive, as we can’t have links in\n      // links.\n\n      if (events[index][0] === 'enter' && token.type === 'labelLink') {\n        token._inactive = true\n      }\n    } else if (close) {\n      if (\n        events[index][0] === 'enter' &&\n        (token.type === 'labelImage' || token.type === 'labelLink') &&\n        !token._balanced\n      ) {\n        open = index\n\n        if (token.type !== 'labelLink') {\n          offset = 2\n          break\n        }\n      }\n    } else if (token.type === 'labelEnd') {\n      close = index\n    }\n  }\n\n  const group = {\n    type: events[open][1].type === 'labelLink' ? 'link' : 'image',\n    start: Object.assign({}, events[open][1].start),\n    end: Object.assign({}, events[events.length - 1][1].end)\n  }\n  const label = {\n    type: 'label',\n    start: Object.assign({}, events[open][1].start),\n    end: Object.assign({}, events[close][1].end)\n  }\n  const text = {\n    type: 'labelText',\n    start: Object.assign({}, events[open + offset + 2][1].end),\n    end: Object.assign({}, events[close - 2][1].start)\n  }\n  media = [\n    ['enter', group, context],\n    ['enter', label, context]\n  ] // Opening marker.\n\n  media = push(media, events.slice(open + 1, open + offset + 3)) // Text open.\n\n  media = push(media, [['enter', text, context]]) // Between.\n\n  media = push(\n    media,\n    resolveAll(\n      context.parser.constructs.insideSpan.null,\n      events.slice(open + offset + 4, close - 3),\n      context\n    )\n  ) // Text close, marker close, label close.\n\n  media = push(media, [\n    ['exit', text, context],\n    events[close - 2],\n    events[close - 1],\n    ['exit', label, context]\n  ]) // Reference, resource, or so.\n\n  media = push(media, events.slice(close + 1)) // Media close.\n\n  media = push(media, [['exit', group, context]])\n  splice(events, open, events.length, media)\n  return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLabelEnd(effects, ok, nok) {\n  const self = this\n  let index = self.events.length\n  /** @type {Token} */\n\n  let labelStart\n  /** @type {boolean} */\n\n  let defined // Find an opening.\n\n  while (index--) {\n    if (\n      (self.events[index][1].type === 'labelImage' ||\n        self.events[index][1].type === 'labelLink') &&\n      !self.events[index][1]._balanced\n    ) {\n      labelStart = self.events[index][1]\n      break\n    }\n  }\n\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    if (!labelStart) {\n      return nok(code)\n    } // It’s a balanced bracket, but contains a link.\n\n    if (labelStart._inactive) return balanced(code)\n    defined = self.parser.defined.includes(\n      normalizeIdentifier(\n        self.sliceSerialize({\n          start: labelStart.end,\n          end: self.now()\n        })\n      )\n    )\n    effects.enter('labelEnd')\n    effects.enter('labelMarker')\n    effects.consume(code)\n    effects.exit('labelMarker')\n    effects.exit('labelEnd')\n    return afterLabelEnd\n  }\n  /** @type {State} */\n\n  function afterLabelEnd(code) {\n    // Resource: `[asd](fgh)`.\n    if (code === 40) {\n      return effects.attempt(\n        resourceConstruct,\n        ok,\n        defined ? ok : balanced\n      )(code)\n    } // Collapsed (`[asd][]`) or full (`[asd][fgh]`) reference?\n\n    if (code === 91) {\n      return effects.attempt(\n        fullReferenceConstruct,\n        ok,\n        defined\n          ? effects.attempt(collapsedReferenceConstruct, ok, balanced)\n          : balanced\n      )(code)\n    } // Shortcut reference: `[asd]`?\n\n    return defined ? ok(code) : balanced(code)\n  }\n  /** @type {State} */\n\n  function balanced(code) {\n    labelStart._balanced = true\n    return nok(code)\n  }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeResource(effects, ok, nok) {\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('resource')\n    effects.enter('resourceMarker')\n    effects.consume(code)\n    effects.exit('resourceMarker')\n    return factoryWhitespace(effects, open)\n  }\n  /** @type {State} */\n\n  function open(code) {\n    if (code === 41) {\n      return end(code)\n    }\n\n    return factoryDestination(\n      effects,\n      destinationAfter,\n      nok,\n      'resourceDestination',\n      'resourceDestinationLiteral',\n      'resourceDestinationLiteralMarker',\n      'resourceDestinationRaw',\n      'resourceDestinationString',\n      32\n    )(code)\n  }\n  /** @type {State} */\n\n  function destinationAfter(code) {\n    return markdownLineEndingOrSpace(code)\n      ? factoryWhitespace(effects, between)(code)\n      : end(code)\n  }\n  /** @type {State} */\n\n  function between(code) {\n    if (code === 34 || code === 39 || code === 40) {\n      return factoryTitle(\n        effects,\n        factoryWhitespace(effects, end),\n        nok,\n        'resourceTitle',\n        'resourceTitleMarker',\n        'resourceTitleString'\n      )(code)\n    }\n\n    return end(code)\n  }\n  /** @type {State} */\n\n  function end(code) {\n    if (code === 41) {\n      effects.enter('resourceMarker')\n      effects.consume(code)\n      effects.exit('resourceMarker')\n      effects.exit('resource')\n      return ok\n    }\n\n    return nok(code)\n  }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeFullReference(effects, ok, nok) {\n  const self = this\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    return factoryLabel.call(\n      self,\n      effects,\n      afterLabel,\n      nok,\n      'reference',\n      'referenceMarker',\n      'referenceString'\n    )(code)\n  }\n  /** @type {State} */\n\n  function afterLabel(code) {\n    return self.parser.defined.includes(\n      normalizeIdentifier(\n        self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n      )\n    )\n      ? ok(code)\n      : nok(code)\n  }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCollapsedReference(effects, ok, nok) {\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('reference')\n    effects.enter('referenceMarker')\n    effects.consume(code)\n    effects.exit('referenceMarker')\n    return open\n  }\n  /** @type {State} */\n\n  function open(code) {\n    if (code === 93) {\n      effects.enter('referenceMarker')\n      effects.consume(code)\n      effects.exit('referenceMarker')\n      effects.exit('reference')\n      return ok\n    }\n\n    return nok(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {labelEnd} from './label-end.js'\n/** @type {Construct} */\n\nexport const labelStartImage = {\n  name: 'labelStartImage',\n  tokenize: tokenizeLabelStartImage,\n  resolveAll: labelEnd.resolveAll\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n  const self = this\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('labelImage')\n    effects.enter('labelImageMarker')\n    effects.consume(code)\n    effects.exit('labelImageMarker')\n    return open\n  }\n  /** @type {State} */\n\n  function open(code) {\n    if (code === 91) {\n      effects.enter('labelMarker')\n      effects.consume(code)\n      effects.exit('labelMarker')\n      effects.exit('labelImage')\n      return after\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function after(code) {\n    /* To do: remove in the future once we’ve switched from\n     * `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n     * which doesn’t need this */\n\n    /* Hidden footnotes hook */\n\n    /* c8 ignore next 3 */\n    return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n      ? nok(code)\n      : ok(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {\n  markdownLineEndingOrSpace,\n  unicodePunctuation,\n  unicodeWhitespace\n} from 'micromark-util-character'\n\n/**\n * Classify whether a character code represents whitespace, punctuation, or\n * something else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * Note that eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * @returns {number|undefined}\n */\nexport function classifyCharacter(code) {\n  if (\n    code === null ||\n    markdownLineEndingOrSpace(code) ||\n    unicodeWhitespace(code)\n  ) {\n    return 1\n  }\n\n  if (unicodePunctuation(code)) {\n    return 2\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Point} Point\n */\nimport {push, splice} from 'micromark-util-chunked'\nimport {classifyCharacter} from 'micromark-util-classify-character'\nimport {resolveAll} from 'micromark-util-resolve-all'\n\n/** @type {Construct} */\nexport const attention = {\n  name: 'attention',\n  tokenize: tokenizeAttention,\n  resolveAll: resolveAllAttention\n}\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\n\nfunction resolveAllAttention(events, context) {\n  let index = -1\n  /** @type {number} */\n\n  let open\n  /** @type {Token} */\n\n  let group\n  /** @type {Token} */\n\n  let text\n  /** @type {Token} */\n\n  let openingSequence\n  /** @type {Token} */\n\n  let closingSequence\n  /** @type {number} */\n\n  let use\n  /** @type {Event[]} */\n\n  let nextEvents\n  /** @type {number} */\n\n  let offset // Walk through all events.\n  //\n  // Note: performance of this is fine on an mb of normal markdown, but it’s\n  // a bottleneck for malicious stuff.\n\n  while (++index < events.length) {\n    // Find a token that can close.\n    if (\n      events[index][0] === 'enter' &&\n      events[index][1].type === 'attentionSequence' &&\n      events[index][1]._close\n    ) {\n      open = index // Now walk back to find an opener.\n\n      while (open--) {\n        // Find a token that can open the closer.\n        if (\n          events[open][0] === 'exit' &&\n          events[open][1].type === 'attentionSequence' &&\n          events[open][1]._open && // If the markers are the same:\n          context.sliceSerialize(events[open][1]).charCodeAt(0) ===\n            context.sliceSerialize(events[index][1]).charCodeAt(0)\n        ) {\n          // If the opening can close or the closing can open,\n          // and the close size *is not* a multiple of three,\n          // but the sum of the opening and closing size *is* multiple of three,\n          // then don’t match.\n          if (\n            (events[open][1]._close || events[index][1]._open) &&\n            (events[index][1].end.offset - events[index][1].start.offset) % 3 &&\n            !(\n              (events[open][1].end.offset -\n                events[open][1].start.offset +\n                events[index][1].end.offset -\n                events[index][1].start.offset) %\n              3\n            )\n          ) {\n            continue\n          } // Number of markers to use from the sequence.\n\n          use =\n            events[open][1].end.offset - events[open][1].start.offset > 1 &&\n            events[index][1].end.offset - events[index][1].start.offset > 1\n              ? 2\n              : 1\n          const start = Object.assign({}, events[open][1].end)\n          const end = Object.assign({}, events[index][1].start)\n          movePoint(start, -use)\n          movePoint(end, use)\n          openingSequence = {\n            type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n            start,\n            end: Object.assign({}, events[open][1].end)\n          }\n          closingSequence = {\n            type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n            start: Object.assign({}, events[index][1].start),\n            end\n          }\n          text = {\n            type: use > 1 ? 'strongText' : 'emphasisText',\n            start: Object.assign({}, events[open][1].end),\n            end: Object.assign({}, events[index][1].start)\n          }\n          group = {\n            type: use > 1 ? 'strong' : 'emphasis',\n            start: Object.assign({}, openingSequence.start),\n            end: Object.assign({}, closingSequence.end)\n          }\n          events[open][1].end = Object.assign({}, openingSequence.start)\n          events[index][1].start = Object.assign({}, closingSequence.end)\n          nextEvents = [] // If there are more markers in the opening, add them before.\n\n          if (events[open][1].end.offset - events[open][1].start.offset) {\n            nextEvents = push(nextEvents, [\n              ['enter', events[open][1], context],\n              ['exit', events[open][1], context]\n            ])\n          } // Opening.\n\n          nextEvents = push(nextEvents, [\n            ['enter', group, context],\n            ['enter', openingSequence, context],\n            ['exit', openingSequence, context],\n            ['enter', text, context]\n          ]) // Between.\n\n          nextEvents = push(\n            nextEvents,\n            resolveAll(\n              context.parser.constructs.insideSpan.null,\n              events.slice(open + 1, index),\n              context\n            )\n          ) // Closing.\n\n          nextEvents = push(nextEvents, [\n            ['exit', text, context],\n            ['enter', closingSequence, context],\n            ['exit', closingSequence, context],\n            ['exit', group, context]\n          ]) // If there are more markers in the closing, add them after.\n\n          if (events[index][1].end.offset - events[index][1].start.offset) {\n            offset = 2\n            nextEvents = push(nextEvents, [\n              ['enter', events[index][1], context],\n              ['exit', events[index][1], context]\n            ])\n          } else {\n            offset = 0\n          }\n\n          splice(events, open - 1, index - open + 3, nextEvents)\n          index = open + nextEvents.length - offset - 2\n          break\n        }\n      }\n    }\n  } // Remove remaining sequences.\n\n  index = -1\n\n  while (++index < events.length) {\n    if (events[index][1].type === 'attentionSequence') {\n      events[index][1].type = 'data'\n    }\n  }\n\n  return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeAttention(effects, ok) {\n  const attentionMarkers = this.parser.constructs.attentionMarkers.null\n  const previous = this.previous\n  const before = classifyCharacter(previous)\n  /** @type {NonNullable<Code>} */\n\n  let marker\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('attentionSequence')\n    marker = code\n    return sequence(code)\n  }\n  /** @type {State} */\n\n  function sequence(code) {\n    if (code === marker) {\n      effects.consume(code)\n      return sequence\n    }\n\n    const token = effects.exit('attentionSequence')\n    const after = classifyCharacter(code)\n    const open =\n      !after || (after === 2 && before) || attentionMarkers.includes(code)\n    const close =\n      !before || (before === 2 && after) || attentionMarkers.includes(previous)\n    token._open = Boolean(marker === 42 ? open : open && (before || !close))\n    token._close = Boolean(marker === 42 ? close : close && (after || !open))\n    return ok(code)\n  }\n}\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * @param {number} offset\n * @returns {void}\n */\n\nfunction movePoint(point, offset) {\n  point.column += offset\n  point.offset += offset\n  point._bufferIndex += offset\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {\n  asciiAlpha,\n  asciiAlphanumeric,\n  asciiAtext,\n  asciiControl\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const autolink = {\n  name: 'autolink',\n  tokenize: tokenizeAutolink\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeAutolink(effects, ok, nok) {\n  let size = 1\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('autolink')\n    effects.enter('autolinkMarker')\n    effects.consume(code)\n    effects.exit('autolinkMarker')\n    effects.enter('autolinkProtocol')\n    return open\n  }\n  /** @type {State} */\n\n  function open(code) {\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      return schemeOrEmailAtext\n    }\n\n    return asciiAtext(code) ? emailAtext(code) : nok(code)\n  }\n  /** @type {State} */\n\n  function schemeOrEmailAtext(code) {\n    return code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)\n      ? schemeInsideOrEmailAtext(code)\n      : emailAtext(code)\n  }\n  /** @type {State} */\n\n  function schemeInsideOrEmailAtext(code) {\n    if (code === 58) {\n      effects.consume(code)\n      return urlInside\n    }\n\n    if (\n      (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) &&\n      size++ < 32\n    ) {\n      effects.consume(code)\n      return schemeInsideOrEmailAtext\n    }\n\n    return emailAtext(code)\n  }\n  /** @type {State} */\n\n  function urlInside(code) {\n    if (code === 62) {\n      effects.exit('autolinkProtocol')\n      return end(code)\n    }\n\n    if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n      return nok(code)\n    }\n\n    effects.consume(code)\n    return urlInside\n  }\n  /** @type {State} */\n\n  function emailAtext(code) {\n    if (code === 64) {\n      effects.consume(code)\n      size = 0\n      return emailAtSignOrDot\n    }\n\n    if (asciiAtext(code)) {\n      effects.consume(code)\n      return emailAtext\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function emailAtSignOrDot(code) {\n    return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)\n  }\n  /** @type {State} */\n\n  function emailLabel(code) {\n    if (code === 46) {\n      effects.consume(code)\n      size = 0\n      return emailAtSignOrDot\n    }\n\n    if (code === 62) {\n      // Exit, then change the type.\n      effects.exit('autolinkProtocol').type = 'autolinkEmail'\n      return end(code)\n    }\n\n    return emailValue(code)\n  }\n  /** @type {State} */\n\n  function emailValue(code) {\n    if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n      effects.consume(code)\n      return code === 45 ? emailValue : emailLabel\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function end(code) {\n    effects.enter('autolinkMarker')\n    effects.consume(code)\n    effects.exit('autolinkMarker')\n    effects.exit('autolink')\n    return ok\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n  asciiAlpha,\n  asciiAlphanumeric,\n  markdownLineEnding,\n  markdownLineEndingOrSpace,\n  markdownSpace\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const htmlText = {\n  name: 'htmlText',\n  tokenize: tokenizeHtmlText\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHtmlText(effects, ok, nok) {\n  const self = this\n  /** @type {NonNullable<Code>|undefined} */\n\n  let marker\n  /** @type {string} */\n\n  let buffer\n  /** @type {number} */\n\n  let index\n  /** @type {State} */\n\n  let returnState\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('htmlText')\n    effects.enter('htmlTextData')\n    effects.consume(code)\n    return open\n  }\n  /** @type {State} */\n\n  function open(code) {\n    if (code === 33) {\n      effects.consume(code)\n      return declarationOpen\n    }\n\n    if (code === 47) {\n      effects.consume(code)\n      return tagCloseStart\n    }\n\n    if (code === 63) {\n      effects.consume(code)\n      return instruction\n    }\n\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      return tagOpen\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function declarationOpen(code) {\n    if (code === 45) {\n      effects.consume(code)\n      return commentOpen\n    }\n\n    if (code === 91) {\n      effects.consume(code)\n      buffer = 'CDATA['\n      index = 0\n      return cdataOpen\n    }\n\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      return declaration\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function commentOpen(code) {\n    if (code === 45) {\n      effects.consume(code)\n      return commentStart\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function commentStart(code) {\n    if (code === null || code === 62) {\n      return nok(code)\n    }\n\n    if (code === 45) {\n      effects.consume(code)\n      return commentStartDash\n    }\n\n    return comment(code)\n  }\n  /** @type {State} */\n\n  function commentStartDash(code) {\n    if (code === null || code === 62) {\n      return nok(code)\n    }\n\n    return comment(code)\n  }\n  /** @type {State} */\n\n  function comment(code) {\n    if (code === null) {\n      return nok(code)\n    }\n\n    if (code === 45) {\n      effects.consume(code)\n      return commentClose\n    }\n\n    if (markdownLineEnding(code)) {\n      returnState = comment\n      return atLineEnding(code)\n    }\n\n    effects.consume(code)\n    return comment\n  }\n  /** @type {State} */\n\n  function commentClose(code) {\n    if (code === 45) {\n      effects.consume(code)\n      return end\n    }\n\n    return comment(code)\n  }\n  /** @type {State} */\n\n  function cdataOpen(code) {\n    if (code === buffer.charCodeAt(index++)) {\n      effects.consume(code)\n      return index === buffer.length ? cdata : cdataOpen\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function cdata(code) {\n    if (code === null) {\n      return nok(code)\n    }\n\n    if (code === 93) {\n      effects.consume(code)\n      return cdataClose\n    }\n\n    if (markdownLineEnding(code)) {\n      returnState = cdata\n      return atLineEnding(code)\n    }\n\n    effects.consume(code)\n    return cdata\n  }\n  /** @type {State} */\n\n  function cdataClose(code) {\n    if (code === 93) {\n      effects.consume(code)\n      return cdataEnd\n    }\n\n    return cdata(code)\n  }\n  /** @type {State} */\n\n  function cdataEnd(code) {\n    if (code === 62) {\n      return end(code)\n    }\n\n    if (code === 93) {\n      effects.consume(code)\n      return cdataEnd\n    }\n\n    return cdata(code)\n  }\n  /** @type {State} */\n\n  function declaration(code) {\n    if (code === null || code === 62) {\n      return end(code)\n    }\n\n    if (markdownLineEnding(code)) {\n      returnState = declaration\n      return atLineEnding(code)\n    }\n\n    effects.consume(code)\n    return declaration\n  }\n  /** @type {State} */\n\n  function instruction(code) {\n    if (code === null) {\n      return nok(code)\n    }\n\n    if (code === 63) {\n      effects.consume(code)\n      return instructionClose\n    }\n\n    if (markdownLineEnding(code)) {\n      returnState = instruction\n      return atLineEnding(code)\n    }\n\n    effects.consume(code)\n    return instruction\n  }\n  /** @type {State} */\n\n  function instructionClose(code) {\n    return code === 62 ? end(code) : instruction(code)\n  }\n  /** @type {State} */\n\n  function tagCloseStart(code) {\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      return tagClose\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function tagClose(code) {\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code)\n      return tagClose\n    }\n\n    return tagCloseBetween(code)\n  }\n  /** @type {State} */\n\n  function tagCloseBetween(code) {\n    if (markdownLineEnding(code)) {\n      returnState = tagCloseBetween\n      return atLineEnding(code)\n    }\n\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return tagCloseBetween\n    }\n\n    return end(code)\n  }\n  /** @type {State} */\n\n  function tagOpen(code) {\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code)\n      return tagOpen\n    }\n\n    if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code)\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function tagOpenBetween(code) {\n    if (code === 47) {\n      effects.consume(code)\n      return end\n    }\n\n    if (code === 58 || code === 95 || asciiAlpha(code)) {\n      effects.consume(code)\n      return tagOpenAttributeName\n    }\n\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenBetween\n      return atLineEnding(code)\n    }\n\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return tagOpenBetween\n    }\n\n    return end(code)\n  }\n  /** @type {State} */\n\n  function tagOpenAttributeName(code) {\n    if (\n      code === 45 ||\n      code === 46 ||\n      code === 58 ||\n      code === 95 ||\n      asciiAlphanumeric(code)\n    ) {\n      effects.consume(code)\n      return tagOpenAttributeName\n    }\n\n    return tagOpenAttributeNameAfter(code)\n  }\n  /** @type {State} */\n\n  function tagOpenAttributeNameAfter(code) {\n    if (code === 61) {\n      effects.consume(code)\n      return tagOpenAttributeValueBefore\n    }\n\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeNameAfter\n      return atLineEnding(code)\n    }\n\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return tagOpenAttributeNameAfter\n    }\n\n    return tagOpenBetween(code)\n  }\n  /** @type {State} */\n\n  function tagOpenAttributeValueBefore(code) {\n    if (\n      code === null ||\n      code === 60 ||\n      code === 61 ||\n      code === 62 ||\n      code === 96\n    ) {\n      return nok(code)\n    }\n\n    if (code === 34 || code === 39) {\n      effects.consume(code)\n      marker = code\n      return tagOpenAttributeValueQuoted\n    }\n\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeValueBefore\n      return atLineEnding(code)\n    }\n\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return tagOpenAttributeValueBefore\n    }\n\n    effects.consume(code)\n    marker = undefined\n    return tagOpenAttributeValueUnquoted\n  }\n  /** @type {State} */\n\n  function tagOpenAttributeValueQuoted(code) {\n    if (code === marker) {\n      effects.consume(code)\n      return tagOpenAttributeValueQuotedAfter\n    }\n\n    if (code === null) {\n      return nok(code)\n    }\n\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeValueQuoted\n      return atLineEnding(code)\n    }\n\n    effects.consume(code)\n    return tagOpenAttributeValueQuoted\n  }\n  /** @type {State} */\n\n  function tagOpenAttributeValueQuotedAfter(code) {\n    if (code === 62 || code === 47 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code)\n    }\n\n    return nok(code)\n  }\n  /** @type {State} */\n\n  function tagOpenAttributeValueUnquoted(code) {\n    if (\n      code === null ||\n      code === 34 ||\n      code === 39 ||\n      code === 60 ||\n      code === 61 ||\n      code === 96\n    ) {\n      return nok(code)\n    }\n\n    if (code === 62 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code)\n    }\n\n    effects.consume(code)\n    return tagOpenAttributeValueUnquoted\n  } // We can’t have blank lines in content, so no need to worry about empty\n  // tokens.\n\n  /** @type {State} */\n\n  function atLineEnding(code) {\n    effects.exit('htmlTextData')\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    return factorySpace(\n      effects,\n      afterPrefix,\n      'linePrefix',\n      self.parser.constructs.disable.null.includes('codeIndented')\n        ? undefined\n        : 4\n    )\n  }\n  /** @type {State} */\n\n  function afterPrefix(code) {\n    effects.enter('htmlTextData')\n    return returnState(code)\n  }\n  /** @type {State} */\n\n  function end(code) {\n    if (code === 62) {\n      effects.consume(code)\n      effects.exit('htmlTextData')\n      effects.exit('htmlText')\n      return ok\n    }\n\n    return nok(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {labelEnd} from './label-end.js'\n/** @type {Construct} */\n\nexport const labelStartLink = {\n  name: 'labelStartLink',\n  tokenize: tokenizeLabelStartLink,\n  resolveAll: labelEnd.resolveAll\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n  const self = this\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('labelLink')\n    effects.enter('labelMarker')\n    effects.consume(code)\n    effects.exit('labelMarker')\n    effects.exit('labelLink')\n    return after\n  }\n  /** @type {State} */\n\n  function after(code) {\n    /* To do: remove in the future once we’ve switched from\n     * `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n     * which doesn’t need this */\n\n    /* Hidden footnotes hook. */\n\n    /* c8 ignore next 3 */\n    return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n      ? nok(code)\n      : ok(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const hardBreakEscape = {\n  name: 'hardBreakEscape',\n  tokenize: tokenizeHardBreakEscape\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('hardBreakEscape')\n    effects.enter('escapeMarker')\n    effects.consume(code)\n    return open\n  }\n  /** @type {State} */\n\n  function open(code) {\n    if (markdownLineEnding(code)) {\n      effects.exit('escapeMarker')\n      effects.exit('hardBreakEscape')\n      return ok(code)\n    }\n\n    return nok(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const codeText = {\n  name: 'codeText',\n  tokenize: tokenizeCodeText,\n  resolve: resolveCodeText,\n  previous\n}\n/** @type {Resolver} */\n\nfunction resolveCodeText(events) {\n  let tailExitIndex = events.length - 4\n  let headEnterIndex = 3\n  /** @type {number} */\n\n  let index\n  /** @type {number|undefined} */\n\n  let enter // If we start and end with an EOL or a space.\n\n  if (\n    (events[headEnterIndex][1].type === 'lineEnding' ||\n      events[headEnterIndex][1].type === 'space') &&\n    (events[tailExitIndex][1].type === 'lineEnding' ||\n      events[tailExitIndex][1].type === 'space')\n  ) {\n    index = headEnterIndex // And we have data.\n\n    while (++index < tailExitIndex) {\n      if (events[index][1].type === 'codeTextData') {\n        // Then we have padding.\n        events[headEnterIndex][1].type = 'codeTextPadding'\n        events[tailExitIndex][1].type = 'codeTextPadding'\n        headEnterIndex += 2\n        tailExitIndex -= 2\n        break\n      }\n    }\n  } // Merge adjacent spaces and data.\n\n  index = headEnterIndex - 1\n  tailExitIndex++\n\n  while (++index <= tailExitIndex) {\n    if (enter === undefined) {\n      if (index !== tailExitIndex && events[index][1].type !== 'lineEnding') {\n        enter = index\n      }\n    } else if (\n      index === tailExitIndex ||\n      events[index][1].type === 'lineEnding'\n    ) {\n      events[enter][1].type = 'codeTextData'\n\n      if (index !== enter + 2) {\n        events[enter][1].end = events[index - 1][1].end\n        events.splice(enter + 2, index - enter - 2)\n        tailExitIndex -= index - enter - 2\n        index = enter + 2\n      }\n\n      enter = undefined\n    }\n  }\n\n  return events\n}\n/** @type {Previous} */\n\nfunction previous(code) {\n  // If there is a previous code, there will always be a tail.\n  return (\n    code !== 96 ||\n    this.events[this.events.length - 1][1].type === 'characterEscape'\n  )\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCodeText(effects, ok, nok) {\n  const self = this\n  let sizeOpen = 0\n  /** @type {number} */\n\n  let size\n  /** @type {Token} */\n\n  let token\n  return start\n  /** @type {State} */\n\n  function start(code) {\n    effects.enter('codeText')\n    effects.enter('codeTextSequence')\n    return openingSequence(code)\n  }\n  /** @type {State} */\n\n  function openingSequence(code) {\n    if (code === 96) {\n      effects.consume(code)\n      sizeOpen++\n      return openingSequence\n    }\n\n    effects.exit('codeTextSequence')\n    return gap(code)\n  }\n  /** @type {State} */\n\n  function gap(code) {\n    // EOF.\n    if (code === null) {\n      return nok(code)\n    } // Closing fence?\n    // Could also be data.\n\n    if (code === 96) {\n      token = effects.enter('codeTextSequence')\n      size = 0\n      return closingSequence(code)\n    } // Tabs don’t work, and virtual spaces don’t make sense.\n\n    if (code === 32) {\n      effects.enter('space')\n      effects.consume(code)\n      effects.exit('space')\n      return gap\n    }\n\n    if (markdownLineEnding(code)) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return gap\n    } // Data.\n\n    effects.enter('codeTextData')\n    return data(code)\n  } // In code.\n\n  /** @type {State} */\n\n  function data(code) {\n    if (\n      code === null ||\n      code === 32 ||\n      code === 96 ||\n      markdownLineEnding(code)\n    ) {\n      effects.exit('codeTextData')\n      return gap(code)\n    }\n\n    effects.consume(code)\n    return data\n  } // Closing fence.\n\n  /** @type {State} */\n\n  function closingSequence(code) {\n    // More.\n    if (code === 96) {\n      effects.consume(code)\n      size++\n      return closingSequence\n    } // Done!\n\n    if (size === sizeOpen) {\n      effects.exit('codeTextSequence')\n      effects.exit('codeText')\n      return ok(code)\n    } // More or less accents: mark as data.\n\n    token.type = 'codeTextData'\n    return data(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\nimport {\n  attention,\n  autolink,\n  blockQuote,\n  characterEscape,\n  characterReference,\n  codeFenced,\n  codeIndented,\n  codeText,\n  definition,\n  hardBreakEscape,\n  headingAtx,\n  htmlFlow,\n  htmlText,\n  labelEnd,\n  labelStartImage,\n  labelStartLink,\n  lineEnding,\n  list,\n  setextUnderline,\n  thematicBreak\n} from 'micromark-core-commonmark'\nimport {resolver as resolveText} from './initialize/text.js'\n/** @type {Extension['document']} */\n\nexport const document = {\n  [42]: list,\n  [43]: list,\n  [45]: list,\n  [48]: list,\n  [49]: list,\n  [50]: list,\n  [51]: list,\n  [52]: list,\n  [53]: list,\n  [54]: list,\n  [55]: list,\n  [56]: list,\n  [57]: list,\n  [62]: blockQuote\n}\n/** @type {Extension['contentInitial']} */\n\nexport const contentInitial = {\n  [91]: definition\n}\n/** @type {Extension['flowInitial']} */\n\nexport const flowInitial = {\n  [-2]: codeIndented,\n  [-1]: codeIndented,\n  [32]: codeIndented\n}\n/** @type {Extension['flow']} */\n\nexport const flow = {\n  [35]: headingAtx,\n  [42]: thematicBreak,\n  [45]: [setextUnderline, thematicBreak],\n  [60]: htmlFlow,\n  [61]: setextUnderline,\n  [95]: thematicBreak,\n  [96]: codeFenced,\n  [126]: codeFenced\n}\n/** @type {Extension['string']} */\n\nexport const string = {\n  [38]: characterReference,\n  [92]: characterEscape\n}\n/** @type {Extension['text']} */\n\nexport const text = {\n  [-5]: lineEnding,\n  [-4]: lineEnding,\n  [-3]: lineEnding,\n  [33]: labelStartImage,\n  [38]: characterReference,\n  [42]: attention,\n  [60]: [autolink, htmlText],\n  [91]: labelStartLink,\n  [92]: [hardBreakEscape, characterEscape],\n  [93]: labelEnd,\n  [95]: attention,\n  [96]: codeText\n}\n/** @type {Extension['insideSpan']} */\n\nexport const insideSpan = {\n  null: [attention, resolveText]\n}\n/** @type {Extension['attentionMarkers']} */\n\nexport const attentionMarkers = {\n  null: [42, 95]\n}\n/** @type {Extension['disable']} */\n\nexport const disable = {\n  null: []\n}\n","/**\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding} [encoding]\n * @param {boolean} [end=false]\n * @returns {Chunk[]}\n */\nconst search = /[\\0\\t\\n\\r]/g\n/**\n * @returns {Preprocessor}\n */\n\nexport function preprocess() {\n  let column = 1\n  let buffer = ''\n  /** @type {boolean|undefined} */\n\n  let start = true\n  /** @type {boolean|undefined} */\n\n  let atCarriageReturn\n  return preprocessor\n  /** @type {Preprocessor} */\n\n  function preprocessor(value, encoding, end) {\n    /** @type {Chunk[]} */\n    const chunks = []\n    /** @type {RegExpMatchArray|null} */\n\n    let match\n    /** @type {number} */\n\n    let next\n    /** @type {number} */\n\n    let startPosition\n    /** @type {number} */\n\n    let endPosition\n    /** @type {Code} */\n\n    let code // @ts-expect-error `Buffer` does allow an encoding.\n\n    value = buffer + value.toString(encoding)\n    startPosition = 0\n    buffer = ''\n\n    if (start) {\n      if (value.charCodeAt(0) === 65279) {\n        startPosition++\n      }\n\n      start = undefined\n    }\n\n    while (startPosition < value.length) {\n      search.lastIndex = startPosition\n      match = search.exec(value)\n      endPosition =\n        match && match.index !== undefined ? match.index : value.length\n      code = value.charCodeAt(endPosition)\n\n      if (!match) {\n        buffer = value.slice(startPosition)\n        break\n      }\n\n      if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n        chunks.push(-3)\n        atCarriageReturn = undefined\n      } else {\n        if (atCarriageReturn) {\n          chunks.push(-5)\n          atCarriageReturn = undefined\n        }\n\n        if (startPosition < endPosition) {\n          chunks.push(value.slice(startPosition, endPosition))\n          column += endPosition - startPosition\n        }\n\n        switch (code) {\n          case 0: {\n            chunks.push(65533)\n            column++\n            break\n          }\n\n          case 9: {\n            next = Math.ceil(column / 4) * 4\n            chunks.push(-2)\n\n            while (column++ < next) chunks.push(-1)\n\n            break\n          }\n\n          case 10: {\n            chunks.push(-4)\n            column = 1\n            break\n          }\n\n          default: {\n            atCarriageReturn = true\n            column = 1\n          }\n        }\n      }\n\n      startPosition = endPosition + 1\n    }\n\n    if (end) {\n      if (atCarriageReturn) chunks.push(-5)\n      if (buffer) chunks.push(buffer)\n      chunks.push(null)\n    }\n\n    return chunks\n  }\n}\n","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * @param {string} value\n *   Value to decode.\n * @param {number} base\n *   Numeric base.\n * @returns {string}\n */\nexport function decodeNumericCharacterReference(value, base) {\n  const code = Number.parseInt(value, base)\n\n  if (\n    // C0 except for HT, LF, FF, CR, space\n    code < 9 ||\n    code === 11 ||\n    (code > 13 && code < 32) || // Control character (DEL) of the basic block and C1 controls.\n    (code > 126 && code < 160) || // Lone high surrogates and low surrogates.\n    (code > 55295 && code < 57344) || // Noncharacters.\n    (code > 64975 && code < 65008) ||\n    (code & 65535) === 65535 ||\n    (code & 65535) === 65534 || // Out of range\n    code > 1114111\n  ) {\n    return '\\uFFFD'\n  }\n\n  return String.fromCharCode(code)\n}\n","import {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nconst characterEscapeOrReference =\n  /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi\n/**\n * Utility to decode markdown strings (which occur in places such as fenced\n * code info strings, destinations, labels, and titles).\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * @returns {string}\n */\n\nexport function decodeString(value) {\n  return value.replace(characterEscapeOrReference, decode)\n}\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\n\nfunction decode($0, $1, $2) {\n  if ($1) {\n    // Escape.\n    return $1\n  } // Reference.\n\n  const head = $2.charCodeAt(0)\n\n  if (head === 35) {\n    const head = $2.charCodeAt(1)\n    const hex = head === 120 || head === 88\n    return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10)\n  }\n\n  return decodeNamedCharacterReference($2) || $0\n}\n","/**\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Value} Value\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist').Point} Point\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').Content} Content\n * @typedef {Root|Content} Node\n * @typedef {Extract<Node, UnistParent>} Parent\n * @typedef {import('mdast').Break} Break\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('mdast').Code} Code\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('mdast').HTML} HTML\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('mdast').List} List\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('mdast').Text} Text\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n *\n * @typedef {UnistParent & {type: 'fragment', children: Array<PhrasingContent>}} Fragment\n */\n\n/**\n * @typedef _CompileDataFields\n * @property {boolean|undefined} expectingFirstListItemValue\n * @property {boolean|undefined} flowCodeInside\n * @property {boolean|undefined} setextHeadingSlurpLineEnding\n * @property {boolean|undefined} atHardBreak\n * @property {'collapsed'|'full'} referenceType\n * @property {boolean|undefined} inReference\n * @property {'characterReferenceMarkerHexadecimal'|'characterReferenceMarkerNumeric'} characterReferenceType\n *\n * @typedef {Record<string, unknown> & Partial<_CompileDataFields>} CompileData\n *\n * @typedef {(tree: Root) => Root|void} Transform\n * @typedef {(this: CompileContext, token: Token) => void} Handle\n * @typedef {Record<string, Handle>} Handles\n *   Token types mapping to handles\n * @typedef {Record<string, Record<string, unknown>|Array<unknown>> & {canContainEols: Array<string>, transforms: Array<Transform>, enter: Handles, exit: Handles}} NormalizedExtension\n * @typedef {Partial<NormalizedExtension>} Extension\n *   An mdast extension changes how markdown tokens are turned into mdast.\n *\n * @typedef {(this: Omit<CompileContext, 'sliceSerialize'>, left: Token|undefined, right: Token) => void} OnEnterError\n * @typedef {(this: Omit<CompileContext, 'sliceSerialize'>, left: Token, right: Token) => void} OnExitError\n *\n * @typedef CompileContext\n *   mdast compiler context\n * @property {Array<Node | Fragment>} stack\n * @property {Array<[Token, OnEnterError|undefined]>} tokenStack\n * @property {(key: string, value?: unknown) => void} setData\n *   Set data into the key-value store.\n * @property {<K extends string>(key: K) => CompileData[K]} getData\n *   Get data from the key-value store.\n * @property {(this: CompileContext) => void} buffer\n *   Capture some of the output data.\n * @property {(this: CompileContext) => string} resume\n *   Stop capturing and access the output data.\n * @property {<N extends Node>(this: CompileContext, node: N, token: Token, onError?: OnEnterError) => N} enter\n *   Enter a token.\n * @property {(this: CompileContext, token: Token, onError?: OnExitError) => Node} exit\n *   Exit a token.\n * @property {TokenizeContext['sliceSerialize']} sliceSerialize\n *   Get the string value of a token.\n * @property {NormalizedExtension} config\n *   Configuration.\n *\n * @typedef {{mdastExtensions?: Array<Extension|Array<Extension>>}} FromMarkdownOptions\n * @typedef {ParseOptions & FromMarkdownOptions} Options\n */\nimport {toString} from 'mdast-util-to-string'\nimport {parse} from 'micromark/lib/parse.js'\nimport {preprocess} from 'micromark/lib/preprocess.js'\nimport {postprocess} from 'micromark/lib/postprocess.js'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nimport {decodeString} from 'micromark-util-decode-string'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {stringifyPosition} from 'unist-util-stringify-position'\nconst own = {}.hasOwnProperty\n/**\n * @param value Markdown to parse (`string` or `Buffer`).\n * @param [encoding] Character encoding to understand `value` as when it’s a `Buffer` (`string`, default: `'utf8'`).\n * @param [options] Configuration\n */\n\nexport const fromMarkdown =\n  /**\n   * @type {(\n   *   ((value: Value, encoding: Encoding, options?: Options) => Root) &\n   *   ((value: Value, options?: Options) => Root)\n   * )}\n   */\n\n  /**\n   * @param {Value} value\n   * @param {Encoding} [encoding]\n   * @param {Options} [options]\n   * @returns {Root}\n   */\n  function (value, encoding, options) {\n    if (typeof encoding !== 'string') {\n      options = encoding\n      encoding = undefined\n    }\n\n    return compiler(options)(\n      postprocess(\n        parse(options).document().write(preprocess()(value, encoding, true))\n      )\n    )\n  }\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options} [options]\n */\n\nfunction compiler(options = {}) {\n  /** @type {NormalizedExtension} */\n  // @ts-expect-error: our base has all required fields, so the result will too.\n  const config = configure(\n    {\n      transforms: [],\n      canContainEols: [\n        'emphasis',\n        'fragment',\n        'heading',\n        'paragraph',\n        'strong'\n      ],\n      enter: {\n        autolink: opener(link),\n        autolinkProtocol: onenterdata,\n        autolinkEmail: onenterdata,\n        atxHeading: opener(heading),\n        blockQuote: opener(blockQuote),\n        characterEscape: onenterdata,\n        characterReference: onenterdata,\n        codeFenced: opener(codeFlow),\n        codeFencedFenceInfo: buffer,\n        codeFencedFenceMeta: buffer,\n        codeIndented: opener(codeFlow, buffer),\n        codeText: opener(codeText, buffer),\n        codeTextData: onenterdata,\n        data: onenterdata,\n        codeFlowValue: onenterdata,\n        definition: opener(definition),\n        definitionDestinationString: buffer,\n        definitionLabelString: buffer,\n        definitionTitleString: buffer,\n        emphasis: opener(emphasis),\n        hardBreakEscape: opener(hardBreak),\n        hardBreakTrailing: opener(hardBreak),\n        htmlFlow: opener(html, buffer),\n        htmlFlowData: onenterdata,\n        htmlText: opener(html, buffer),\n        htmlTextData: onenterdata,\n        image: opener(image),\n        label: buffer,\n        link: opener(link),\n        listItem: opener(listItem),\n        listItemValue: onenterlistitemvalue,\n        listOrdered: opener(list, onenterlistordered),\n        listUnordered: opener(list),\n        paragraph: opener(paragraph),\n        reference: onenterreference,\n        referenceString: buffer,\n        resourceDestinationString: buffer,\n        resourceTitleString: buffer,\n        setextHeading: opener(heading),\n        strong: opener(strong),\n        thematicBreak: opener(thematicBreak)\n      },\n      exit: {\n        atxHeading: closer(),\n        atxHeadingSequence: onexitatxheadingsequence,\n        autolink: closer(),\n        autolinkEmail: onexitautolinkemail,\n        autolinkProtocol: onexitautolinkprotocol,\n        blockQuote: closer(),\n        characterEscapeValue: onexitdata,\n        characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n        characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n        characterReferenceValue: onexitcharacterreferencevalue,\n        codeFenced: closer(onexitcodefenced),\n        codeFencedFence: onexitcodefencedfence,\n        codeFencedFenceInfo: onexitcodefencedfenceinfo,\n        codeFencedFenceMeta: onexitcodefencedfencemeta,\n        codeFlowValue: onexitdata,\n        codeIndented: closer(onexitcodeindented),\n        codeText: closer(onexitcodetext),\n        codeTextData: onexitdata,\n        data: onexitdata,\n        definition: closer(),\n        definitionDestinationString: onexitdefinitiondestinationstring,\n        definitionLabelString: onexitdefinitionlabelstring,\n        definitionTitleString: onexitdefinitiontitlestring,\n        emphasis: closer(),\n        hardBreakEscape: closer(onexithardbreak),\n        hardBreakTrailing: closer(onexithardbreak),\n        htmlFlow: closer(onexithtmlflow),\n        htmlFlowData: onexitdata,\n        htmlText: closer(onexithtmltext),\n        htmlTextData: onexitdata,\n        image: closer(onexitimage),\n        label: onexitlabel,\n        labelText: onexitlabeltext,\n        lineEnding: onexitlineending,\n        link: closer(onexitlink),\n        listItem: closer(),\n        listOrdered: closer(),\n        listUnordered: closer(),\n        paragraph: closer(),\n        referenceString: onexitreferencestring,\n        resourceDestinationString: onexitresourcedestinationstring,\n        resourceTitleString: onexitresourcetitlestring,\n        resource: onexitresource,\n        setextHeading: closer(onexitsetextheading),\n        setextHeadingLineSequence: onexitsetextheadinglinesequence,\n        setextHeadingText: onexitsetextheadingtext,\n        strong: closer(),\n        thematicBreak: closer()\n      }\n    },\n    options.mdastExtensions || []\n  )\n  /** @type {CompileData} */\n\n  const data = {}\n  return compile\n  /**\n   * @param {Array<Event>} events\n   * @returns {Root}\n   */\n\n  function compile(events) {\n    /** @type {Root} */\n    let tree = {\n      type: 'root',\n      children: []\n    }\n    /** @type {CompileContext['stack']} */\n\n    const stack = [tree]\n    /** @type {CompileContext['tokenStack']} */\n\n    const tokenStack = []\n    /** @type {Array<number>} */\n\n    const listStack = []\n    /** @type {Omit<CompileContext, 'sliceSerialize'>} */\n\n    const context = {\n      stack,\n      tokenStack,\n      config,\n      enter,\n      exit,\n      buffer,\n      resume,\n      setData,\n      getData\n    }\n    let index = -1\n\n    while (++index < events.length) {\n      // We preprocess lists to add `listItem` tokens, and to infer whether\n      // items the list itself are spread out.\n      if (\n        events[index][1].type === 'listOrdered' ||\n        events[index][1].type === 'listUnordered'\n      ) {\n        if (events[index][0] === 'enter') {\n          listStack.push(index)\n        } else {\n          const tail = listStack.pop()\n          index = prepareList(events, tail, index)\n        }\n      }\n    }\n\n    index = -1\n\n    while (++index < events.length) {\n      const handler = config[events[index][0]]\n\n      if (own.call(handler, events[index][1].type)) {\n        handler[events[index][1].type].call(\n          Object.assign(\n            {\n              sliceSerialize: events[index][2].sliceSerialize\n            },\n            context\n          ),\n          events[index][1]\n        )\n      }\n    }\n\n    if (tokenStack.length > 0) {\n      const tail = tokenStack[tokenStack.length - 1]\n      const handler = tail[1] || defaultOnError\n      handler.call(context, undefined, tail[0])\n    } // Figure out `root` position.\n\n    tree.position = {\n      start: point(\n        events.length > 0\n          ? events[0][1].start\n          : {\n              line: 1,\n              column: 1,\n              offset: 0\n            }\n      ),\n      end: point(\n        events.length > 0\n          ? events[events.length - 2][1].end\n          : {\n              line: 1,\n              column: 1,\n              offset: 0\n            }\n      )\n    }\n    index = -1\n\n    while (++index < config.transforms.length) {\n      tree = config.transforms[index](tree) || tree\n    }\n\n    return tree\n  }\n  /**\n   * @param {Array<Event>} events\n   * @param {number} start\n   * @param {number} length\n   * @returns {number}\n   */\n\n  function prepareList(events, start, length) {\n    let index = start - 1\n    let containerBalance = -1\n    let listSpread = false\n    /** @type {Token|undefined} */\n\n    let listItem\n    /** @type {number|undefined} */\n\n    let lineIndex\n    /** @type {number|undefined} */\n\n    let firstBlankLineIndex\n    /** @type {boolean|undefined} */\n\n    let atMarker\n\n    while (++index <= length) {\n      const event = events[index]\n\n      if (\n        event[1].type === 'listUnordered' ||\n        event[1].type === 'listOrdered' ||\n        event[1].type === 'blockQuote'\n      ) {\n        if (event[0] === 'enter') {\n          containerBalance++\n        } else {\n          containerBalance--\n        }\n\n        atMarker = undefined\n      } else if (event[1].type === 'lineEndingBlank') {\n        if (event[0] === 'enter') {\n          if (\n            listItem &&\n            !atMarker &&\n            !containerBalance &&\n            !firstBlankLineIndex\n          ) {\n            firstBlankLineIndex = index\n          }\n\n          atMarker = undefined\n        }\n      } else if (\n        event[1].type === 'linePrefix' ||\n        event[1].type === 'listItemValue' ||\n        event[1].type === 'listItemMarker' ||\n        event[1].type === 'listItemPrefix' ||\n        event[1].type === 'listItemPrefixWhitespace'\n      ) {\n        // Empty.\n      } else {\n        atMarker = undefined\n      }\n\n      if (\n        (!containerBalance &&\n          event[0] === 'enter' &&\n          event[1].type === 'listItemPrefix') ||\n        (containerBalance === -1 &&\n          event[0] === 'exit' &&\n          (event[1].type === 'listUnordered' ||\n            event[1].type === 'listOrdered'))\n      ) {\n        if (listItem) {\n          let tailIndex = index\n          lineIndex = undefined\n\n          while (tailIndex--) {\n            const tailEvent = events[tailIndex]\n\n            if (\n              tailEvent[1].type === 'lineEnding' ||\n              tailEvent[1].type === 'lineEndingBlank'\n            ) {\n              if (tailEvent[0] === 'exit') continue\n\n              if (lineIndex) {\n                events[lineIndex][1].type = 'lineEndingBlank'\n                listSpread = true\n              }\n\n              tailEvent[1].type = 'lineEnding'\n              lineIndex = tailIndex\n            } else if (\n              tailEvent[1].type === 'linePrefix' ||\n              tailEvent[1].type === 'blockQuotePrefix' ||\n              tailEvent[1].type === 'blockQuotePrefixWhitespace' ||\n              tailEvent[1].type === 'blockQuoteMarker' ||\n              tailEvent[1].type === 'listItemIndent'\n            ) {\n              // Empty\n            } else {\n              break\n            }\n          }\n\n          if (\n            firstBlankLineIndex &&\n            (!lineIndex || firstBlankLineIndex < lineIndex)\n          ) {\n            // @ts-expect-error Patched.\n            listItem._spread = true\n          } // Fix position.\n\n          listItem.end = Object.assign(\n            {},\n            lineIndex ? events[lineIndex][1].start : event[1].end\n          )\n          events.splice(lineIndex || index, 0, ['exit', listItem, event[2]])\n          index++\n          length++\n        } // Create a new list item.\n\n        if (event[1].type === 'listItemPrefix') {\n          listItem = {\n            type: 'listItem',\n            // @ts-expect-error Patched\n            _spread: false,\n            start: Object.assign({}, event[1].start)\n          } // @ts-expect-error: `listItem` is most definitely defined, TS...\n\n          events.splice(index, 0, ['enter', listItem, event[2]])\n          index++\n          length++\n          firstBlankLineIndex = undefined\n          atMarker = true\n        }\n      }\n    } // @ts-expect-error Patched.\n\n    events[start][1]._spread = listSpread\n    return length\n  }\n  /**\n   * @type {CompileContext['setData']}\n   * @param [value]\n   */\n\n  function setData(key, value) {\n    data[key] = value\n  }\n  /**\n   * @type {CompileContext['getData']}\n   * @template {string} K\n   * @param {K} key\n   * @returns {CompileData[K]}\n   */\n\n  function getData(key) {\n    return data[key]\n  }\n  /**\n   * @param {Point} d\n   * @returns {Point}\n   */\n\n  function point(d) {\n    return {\n      line: d.line,\n      column: d.column,\n      offset: d.offset\n    }\n  }\n  /**\n   * @param {(token: Token) => Node} create\n   * @param {Handle} [and]\n   * @returns {Handle}\n   */\n\n  function opener(create, and) {\n    return open\n    /**\n     * @this {CompileContext}\n     * @param {Token} token\n     * @returns {void}\n     */\n\n    function open(token) {\n      enter.call(this, create(token), token)\n      if (and) and.call(this, token)\n    }\n  }\n  /** @type {CompileContext['buffer']} */\n\n  function buffer() {\n    this.stack.push({\n      type: 'fragment',\n      children: []\n    })\n  }\n  /**\n   * @type {CompileContext['enter']}\n   * @template {Node} N\n   * @this {CompileContext}\n   * @param {N} node\n   * @param {Token} token\n   * @param {OnEnterError} [errorHandler]\n   * @returns {N}\n   */\n\n  function enter(node, token, errorHandler) {\n    const parent = this.stack[this.stack.length - 1]\n    // @ts-expect-error: Assume `Node` can exist as a child of `parent`.\n    parent.children.push(node)\n    this.stack.push(node)\n    this.tokenStack.push([token, errorHandler]) // @ts-expect-error: `end` will be patched later.\n\n    node.position = {\n      start: point(token.start)\n    }\n    return node\n  }\n  /**\n   * @param {Handle} [and]\n   * @returns {Handle}\n   */\n\n  function closer(and) {\n    return close\n    /**\n     * @this {CompileContext}\n     * @param {Token} token\n     * @returns {void}\n     */\n\n    function close(token) {\n      if (and) and.call(this, token)\n      exit.call(this, token)\n    }\n  }\n  /**\n   * @type {CompileContext['exit']}\n   * @this {CompileContext}\n   * @param {Token} token\n   * @param {OnExitError} [onExitError]\n   * @returns {Node}\n   */\n\n  function exit(token, onExitError) {\n    const node = this.stack.pop()\n    const open = this.tokenStack.pop()\n\n    if (!open) {\n      throw new Error(\n        'Cannot close `' +\n          token.type +\n          '` (' +\n          stringifyPosition({\n            start: token.start,\n            end: token.end\n          }) +\n          '): it’s not open'\n      )\n    } else if (open[0].type !== token.type) {\n      if (onExitError) {\n        onExitError.call(this, token, open[0])\n      } else {\n        const handler = open[1] || defaultOnError\n        handler.call(this, token, open[0])\n      }\n    }\n\n    node.position.end = point(token.end)\n    return node\n  }\n  /**\n   * @this {CompileContext}\n   * @returns {string}\n   */\n\n  function resume() {\n    return toString(this.stack.pop())\n  } //\n  // Handlers.\n  //\n\n  /** @type {Handle} */\n\n  function onenterlistordered() {\n    setData('expectingFirstListItemValue', true)\n  }\n  /** @type {Handle} */\n\n  function onenterlistitemvalue(token) {\n    if (getData('expectingFirstListItemValue')) {\n      const ancestor =\n        /** @type {List} */\n        this.stack[this.stack.length - 2]\n      ancestor.start = Number.parseInt(this.sliceSerialize(token), 10)\n      setData('expectingFirstListItemValue')\n    }\n  }\n  /** @type {Handle} */\n\n  function onexitcodefencedfenceinfo() {\n    const data = this.resume()\n    const node =\n      /** @type {Code} */\n      this.stack[this.stack.length - 1]\n    node.lang = data\n  }\n  /** @type {Handle} */\n\n  function onexitcodefencedfencemeta() {\n    const data = this.resume()\n    const node =\n      /** @type {Code} */\n      this.stack[this.stack.length - 1]\n    node.meta = data\n  }\n  /** @type {Handle} */\n\n  function onexitcodefencedfence() {\n    // Exit if this is the closing fence.\n    if (getData('flowCodeInside')) return\n    this.buffer()\n    setData('flowCodeInside', true)\n  }\n  /** @type {Handle} */\n\n  function onexitcodefenced() {\n    const data = this.resume()\n    const node =\n      /** @type {Code} */\n      this.stack[this.stack.length - 1]\n    node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '')\n    setData('flowCodeInside')\n  }\n  /** @type {Handle} */\n\n  function onexitcodeindented() {\n    const data = this.resume()\n    const node =\n      /** @type {Code} */\n      this.stack[this.stack.length - 1]\n    node.value = data.replace(/(\\r?\\n|\\r)$/g, '')\n  }\n  /** @type {Handle} */\n\n  function onexitdefinitionlabelstring(token) {\n    // Discard label, use the source content instead.\n    const label = this.resume()\n    const node =\n      /** @type {Definition} */\n      this.stack[this.stack.length - 1]\n    node.label = label\n    node.identifier = normalizeIdentifier(\n      this.sliceSerialize(token)\n    ).toLowerCase()\n  }\n  /** @type {Handle} */\n\n  function onexitdefinitiontitlestring() {\n    const data = this.resume()\n    const node =\n      /** @type {Definition} */\n      this.stack[this.stack.length - 1]\n    node.title = data\n  }\n  /** @type {Handle} */\n\n  function onexitdefinitiondestinationstring() {\n    const data = this.resume()\n    const node =\n      /** @type {Definition} */\n      this.stack[this.stack.length - 1]\n    node.url = data\n  }\n  /** @type {Handle} */\n\n  function onexitatxheadingsequence(token) {\n    const node =\n      /** @type {Heading} */\n      this.stack[this.stack.length - 1]\n\n    if (!node.depth) {\n      const depth = this.sliceSerialize(token).length\n      node.depth = depth\n    }\n  }\n  /** @type {Handle} */\n\n  function onexitsetextheadingtext() {\n    setData('setextHeadingSlurpLineEnding', true)\n  }\n  /** @type {Handle} */\n\n  function onexitsetextheadinglinesequence(token) {\n    const node =\n      /** @type {Heading} */\n      this.stack[this.stack.length - 1]\n    node.depth = this.sliceSerialize(token).charCodeAt(0) === 61 ? 1 : 2\n  }\n  /** @type {Handle} */\n\n  function onexitsetextheading() {\n    setData('setextHeadingSlurpLineEnding')\n  }\n  /** @type {Handle} */\n\n  function onenterdata(token) {\n    const parent =\n      /** @type {Parent} */\n      this.stack[this.stack.length - 1]\n    /** @type {Node} */\n\n    let tail = parent.children[parent.children.length - 1]\n\n    if (!tail || tail.type !== 'text') {\n      // Add a new text node.\n      tail = text() // @ts-expect-error: we’ll add `end` later.\n\n      tail.position = {\n        start: point(token.start)\n      } // @ts-expect-error: Assume `parent` accepts `text`.\n\n      parent.children.push(tail)\n    }\n\n    this.stack.push(tail)\n  }\n  /** @type {Handle} */\n\n  function onexitdata(token) {\n    const tail = this.stack.pop()\n    tail.value += this.sliceSerialize(token)\n    tail.position.end = point(token.end)\n  }\n  /** @type {Handle} */\n\n  function onexitlineending(token) {\n    const context = this.stack[this.stack.length - 1]\n\n    // If we’re at a hard break, include the line ending in there.\n    if (getData('atHardBreak')) {\n      const tail = context.children[context.children.length - 1]\n      tail.position.end = point(token.end)\n      setData('atHardBreak')\n      return\n    }\n\n    if (\n      !getData('setextHeadingSlurpLineEnding') &&\n      config.canContainEols.includes(context.type)\n    ) {\n      onenterdata.call(this, token)\n      onexitdata.call(this, token)\n    }\n  }\n  /** @type {Handle} */\n\n  function onexithardbreak() {\n    setData('atHardBreak', true)\n  }\n  /** @type {Handle} */\n\n  function onexithtmlflow() {\n    const data = this.resume()\n    const node =\n      /** @type {HTML} */\n      this.stack[this.stack.length - 1]\n    node.value = data\n  }\n  /** @type {Handle} */\n\n  function onexithtmltext() {\n    const data = this.resume()\n    const node =\n      /** @type {HTML} */\n      this.stack[this.stack.length - 1]\n    node.value = data\n  }\n  /** @type {Handle} */\n\n  function onexitcodetext() {\n    const data = this.resume()\n    const node =\n      /** @type {InlineCode} */\n      this.stack[this.stack.length - 1]\n    node.value = data\n  }\n  /** @type {Handle} */\n\n  function onexitlink() {\n    const context =\n      /** @type {Link & {identifier: string, label: string}} */\n      this.stack[this.stack.length - 1] // To do: clean.\n\n    if (getData('inReference')) {\n      context.type += 'Reference' // @ts-expect-error: mutate.\n\n      context.referenceType = getData('referenceType') || 'shortcut' // @ts-expect-error: mutate.\n\n      delete context.url\n      delete context.title\n    } else {\n      // @ts-expect-error: mutate.\n      delete context.identifier // @ts-expect-error: mutate.\n\n      delete context.label\n    }\n\n    setData('referenceType')\n  }\n  /** @type {Handle} */\n\n  function onexitimage() {\n    const context =\n      /** @type {Image & {identifier: string, label: string}} */\n      this.stack[this.stack.length - 1] // To do: clean.\n\n    if (getData('inReference')) {\n      context.type += 'Reference' // @ts-expect-error: mutate.\n\n      context.referenceType = getData('referenceType') || 'shortcut' // @ts-expect-error: mutate.\n\n      delete context.url\n      delete context.title\n    } else {\n      // @ts-expect-error: mutate.\n      delete context.identifier // @ts-expect-error: mutate.\n\n      delete context.label\n    }\n\n    setData('referenceType')\n  }\n  /** @type {Handle} */\n\n  function onexitlabeltext(token) {\n    const ancestor =\n      /** @type {(Link|Image) & {identifier: string, label: string}} */\n      this.stack[this.stack.length - 2]\n    const string = this.sliceSerialize(token)\n    ancestor.label = decodeString(string)\n    ancestor.identifier = normalizeIdentifier(string).toLowerCase()\n  }\n  /** @type {Handle} */\n\n  function onexitlabel() {\n    const fragment =\n      /** @type {Fragment} */\n      this.stack[this.stack.length - 1]\n    const value = this.resume()\n    const node =\n      /** @type {(Link|Image) & {identifier: string, label: string}} */\n      this.stack[this.stack.length - 1] // Assume a reference.\n\n    setData('inReference', true)\n\n    if (node.type === 'link') {\n      // @ts-expect-error: Assume static phrasing content.\n      node.children = fragment.children\n    } else {\n      node.alt = value\n    }\n  }\n  /** @type {Handle} */\n\n  function onexitresourcedestinationstring() {\n    const data = this.resume()\n    const node =\n      /** @type {Link|Image} */\n      this.stack[this.stack.length - 1]\n    node.url = data\n  }\n  /** @type {Handle} */\n\n  function onexitresourcetitlestring() {\n    const data = this.resume()\n    const node =\n      /** @type {Link|Image} */\n      this.stack[this.stack.length - 1]\n    node.title = data\n  }\n  /** @type {Handle} */\n\n  function onexitresource() {\n    setData('inReference')\n  }\n  /** @type {Handle} */\n\n  function onenterreference() {\n    setData('referenceType', 'collapsed')\n  }\n  /** @type {Handle} */\n\n  function onexitreferencestring(token) {\n    const label = this.resume()\n    const node =\n      /** @type {LinkReference|ImageReference} */\n      this.stack[this.stack.length - 1]\n    node.label = label\n    node.identifier = normalizeIdentifier(\n      this.sliceSerialize(token)\n    ).toLowerCase()\n    setData('referenceType', 'full')\n  }\n  /** @type {Handle} */\n\n  function onexitcharacterreferencemarker(token) {\n    setData('characterReferenceType', token.type)\n  }\n  /** @type {Handle} */\n\n  function onexitcharacterreferencevalue(token) {\n    const data = this.sliceSerialize(token)\n    const type = getData('characterReferenceType')\n    /** @type {string} */\n\n    let value\n\n    if (type) {\n      value = decodeNumericCharacterReference(\n        data,\n        type === 'characterReferenceMarkerNumeric' ? 10 : 16\n      )\n      setData('characterReferenceType')\n    } else {\n      // @ts-expect-error `decodeNamedCharacterReference` can return false for\n      // invalid named character references, but everything we’ve tokenized is\n      // valid.\n      value = decodeNamedCharacterReference(data)\n    }\n\n    const tail = this.stack.pop()\n    tail.value += value\n    tail.position.end = point(token.end)\n  }\n  /** @type {Handle} */\n\n  function onexitautolinkprotocol(token) {\n    onexitdata.call(this, token)\n    const node =\n      /** @type {Link} */\n      this.stack[this.stack.length - 1]\n    node.url = this.sliceSerialize(token)\n  }\n  /** @type {Handle} */\n\n  function onexitautolinkemail(token) {\n    onexitdata.call(this, token)\n    const node =\n      /** @type {Link} */\n      this.stack[this.stack.length - 1]\n    node.url = 'mailto:' + this.sliceSerialize(token)\n  } //\n  // Creaters.\n  //\n\n  /** @returns {Blockquote} */\n\n  function blockQuote() {\n    return {\n      type: 'blockquote',\n      children: []\n    }\n  }\n  /** @returns {Code} */\n\n  function codeFlow() {\n    return {\n      type: 'code',\n      lang: null,\n      meta: null,\n      value: ''\n    }\n  }\n  /** @returns {InlineCode} */\n\n  function codeText() {\n    return {\n      type: 'inlineCode',\n      value: ''\n    }\n  }\n  /** @returns {Definition} */\n\n  function definition() {\n    return {\n      type: 'definition',\n      identifier: '',\n      label: null,\n      title: null,\n      url: ''\n    }\n  }\n  /** @returns {Emphasis} */\n\n  function emphasis() {\n    return {\n      type: 'emphasis',\n      children: []\n    }\n  }\n  /** @returns {Heading} */\n\n  function heading() {\n    // @ts-expect-error `depth` will be set later.\n    return {\n      type: 'heading',\n      depth: undefined,\n      children: []\n    }\n  }\n  /** @returns {Break} */\n\n  function hardBreak() {\n    return {\n      type: 'break'\n    }\n  }\n  /** @returns {HTML} */\n\n  function html() {\n    return {\n      type: 'html',\n      value: ''\n    }\n  }\n  /** @returns {Image} */\n\n  function image() {\n    return {\n      type: 'image',\n      title: null,\n      url: '',\n      alt: null\n    }\n  }\n  /** @returns {Link} */\n\n  function link() {\n    return {\n      type: 'link',\n      title: null,\n      url: '',\n      children: []\n    }\n  }\n  /**\n   * @param {Token} token\n   * @returns {List}\n   */\n\n  function list(token) {\n    return {\n      type: 'list',\n      ordered: token.type === 'listOrdered',\n      start: null,\n      // @ts-expect-error Patched.\n      spread: token._spread,\n      children: []\n    }\n  }\n  /**\n   * @param {Token} token\n   * @returns {ListItem}\n   */\n\n  function listItem(token) {\n    return {\n      type: 'listItem',\n      // @ts-expect-error Patched.\n      spread: token._spread,\n      checked: null,\n      children: []\n    }\n  }\n  /** @returns {Paragraph} */\n\n  function paragraph() {\n    return {\n      type: 'paragraph',\n      children: []\n    }\n  }\n  /** @returns {Strong} */\n\n  function strong() {\n    return {\n      type: 'strong',\n      children: []\n    }\n  }\n  /** @returns {Text} */\n\n  function text() {\n    return {\n      type: 'text',\n      value: ''\n    }\n  }\n  /** @returns {ThematicBreak} */\n\n  function thematicBreak() {\n    return {\n      type: 'thematicBreak'\n    }\n  }\n}\n/**\n * @param {Extension} combined\n * @param {Array<Extension|Array<Extension>>} extensions\n * @returns {Extension}\n */\n\nfunction configure(combined, extensions) {\n  let index = -1\n\n  while (++index < extensions.length) {\n    const value = extensions[index]\n\n    if (Array.isArray(value)) {\n      configure(combined, value)\n    } else {\n      extension(combined, value)\n    }\n  }\n\n  return combined\n}\n/**\n * @param {Extension} combined\n * @param {Extension} extension\n * @returns {void}\n */\n\nfunction extension(combined, extension) {\n  /** @type {string} */\n  let key\n\n  for (key in extension) {\n    if (own.call(extension, key)) {\n      const list = key === 'canContainEols' || key === 'transforms'\n      const maybe = own.call(combined, key) ? combined[key] : undefined\n      /* c8 ignore next */\n\n      const left = maybe || (combined[key] = list ? [] : {})\n      const right = extension[key]\n\n      if (right) {\n        if (list) {\n          // @ts-expect-error: `left` is an array.\n          combined[key] = [...left, ...right]\n        } else {\n          Object.assign(left, right)\n        }\n      }\n    }\n  }\n}\n/** @type {OnEnterError} */\n\nfunction defaultOnError(left, right) {\n  if (left) {\n    throw new Error(\n      'Cannot close `' +\n        left.type +\n        '` (' +\n        stringifyPosition({\n          start: left.start,\n          end: left.end\n        }) +\n        '): a different token (`' +\n        right.type +\n        '`, ' +\n        stringifyPosition({\n          start: right.start,\n          end: right.end\n        }) +\n        ') is open'\n    )\n  } else {\n    throw new Error(\n      'Cannot close document, a token (`' +\n        right.type +\n        '`, ' +\n        stringifyPosition({\n          start: right.start,\n          end: right.end\n        }) +\n        ') is still open'\n    )\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\nimport {subtokenize} from 'micromark-util-subtokenize'\n/**\n * @param {Event[]} events\n * @returns {Event[]}\n */\n\nexport function postprocess(events) {\n  while (!subtokenize(events)) {\n    // Empty\n  }\n\n  return events\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').Create} Create\n */\nimport {combineExtensions} from 'micromark-util-combine-extensions'\nimport {content} from './initialize/content.js'\nimport {document} from './initialize/document.js'\nimport {flow} from './initialize/flow.js'\nimport {text, string} from './initialize/text.js'\nimport {createTokenizer} from './create-tokenizer.js'\nimport * as defaultConstructs from './constructs.js'\n/**\n * @param {ParseOptions} [options]\n * @returns {ParseContext}\n */\n\nexport function parse(options = {}) {\n  /** @type {FullNormalizedExtension} */\n  // @ts-expect-error `defaultConstructs` is full, so the result will be too.\n  const constructs = combineExtensions(\n    // @ts-expect-error Same as above.\n    [defaultConstructs].concat(options.extensions || [])\n  )\n  /** @type {ParseContext} */\n\n  const parser = {\n    defined: [],\n    lazy: {},\n    constructs,\n    content: create(content),\n    document: create(document),\n    flow: create(flow),\n    string: create(string),\n    text: create(text)\n  }\n  return parser\n  /**\n   * @param {InitialConstruct} initial\n   */\n\n  function create(initial) {\n    return creator\n    /** @type {Create} */\n\n    function creator(from) {\n      return createTokenizer(parser, initial, from)\n    }\n  }\n}\n","import remarkParse from './lib/index.js'\n\nexport default remarkParse\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/** @type {import('unified').Plugin<[Options?] | void[], string, Root>} */\nexport default function remarkParse(options) {\n  /** @type {import('unified').ParserFunction<Root>} */\n  const parser = (doc) => {\n    // Assume options.\n    const settings = /** @type {Options} */ (this.data('settings'))\n\n    return fromMarkdown(\n      doc,\n      Object.assign({}, settings, options, {\n        // Note: these options are not in the readme.\n        // The goal is for them to be set by plugins on `data` instead of being\n        // passed by users.\n        extensions: this.data('micromarkExtensions') || [],\n        mdastExtensions: this.data('fromMarkdownExtensions') || []\n      })\n    )\n  }\n\n  Object.assign(this, {Parser: parser})\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist').Literal} Literal\n * @typedef {Object.<string, unknown>} Props\n * @typedef {Array.<Node>|string} ChildrenOrValue\n *\n * @typedef {(<T extends string, P extends Record<string, unknown>, C extends Node[]>(type: T, props: P, children: C) => {type: T, children: C} & P)} BuildParentWithProps\n * @typedef {(<T extends string, P extends Record<string, unknown>>(type: T, props: P, value: string) => {type: T, value: string} & P)} BuildLiteralWithProps\n * @typedef {(<T extends string, P extends Record<string, unknown>>(type: T, props: P) => {type: T} & P)} BuildVoidWithProps\n * @typedef {(<T extends string, C extends Node[]>(type: T, children: C) => {type: T, children: C})} BuildParent\n * @typedef {(<T extends string>(type: T, value: string) => {type: T, value: string})} BuildLiteral\n * @typedef {(<T extends string>(type: T) => {type: T})} BuildVoid\n */\n\nexport var u = /**\n * @type {BuildVoid & BuildVoidWithProps & BuildLiteral & BuildLiteralWithProps & BuildParent & BuildParentWithProps}\n */ (\n  /**\n   * @param {string} type Type of node\n   * @param {Props|ChildrenOrValue} [props] Additional properties for node (or `children` or `value`)\n   * @param {ChildrenOrValue} [value] `children` or `value` of node\n   * @returns {Node}\n   */\n  function (type, props, value) {\n    /** @type {Node} */\n    var node = {type: String(type)}\n\n    if (\n      (value === undefined || value === null) &&\n      (typeof props === 'string' || Array.isArray(props))\n    ) {\n      value = props\n    } else {\n      Object.assign(node, props)\n    }\n\n    if (Array.isArray(value)) {\n      node.children = value\n    } else if (value !== undefined && value !== null) {\n      node.value = String(value)\n    }\n\n    return node\n  }\n)\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n *\n * @typedef {string} Type\n * @typedef {Object<string, unknown>} Props\n *\n * @typedef {null|undefined|Type|Props|TestFunctionAnything|Array.<Type|Props|TestFunctionAnything>} Test\n */\n\n/**\n * Check if a node passes a test\n *\n * @callback TestFunctionAnything\n * @param {Node} node\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {boolean|void}\n */\n\n/**\n * Check if a node passes a certain node test\n *\n * @template {Node} X\n * @callback TestFunctionPredicate\n * @param {Node} node\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {node is X}\n */\n\n/**\n * @callback AssertAnything\n * @param {unknown} [node]\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {boolean}\n */\n\n/**\n * Check if a node passes a certain node test\n *\n * @template {Node} Y\n * @callback AssertPredicate\n * @param {unknown} [node]\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {node is Y}\n */\n\nexport const is =\n  /**\n   * Check if a node passes a test.\n   * When a `parent` node is known the `index` of node should also be given.\n   *\n   * @type {(\n   *   (<T extends Node>(node: unknown, test: T['type']|Partial<T>|TestFunctionPredicate<T>|Array.<T['type']|Partial<T>|TestFunctionPredicate<T>>, index?: number|null|undefined, parent?: Parent|null|undefined, context?: unknown) => node is T) &\n   *   ((node?: unknown, test?: Test, index?: number|null|undefined, parent?: Parent|null|undefined, context?: unknown) => boolean)\n   * )}\n   */\n  (\n    /**\n     * Check if a node passes a test.\n     * When a `parent` node is known the `index` of node should also be given.\n     *\n     * @param {unknown} [node] Node to check\n     * @param {Test} [test]\n     * When nullish, checks if `node` is a `Node`.\n     * When `string`, works like passing `function (node) {return node.type === test}`.\n     * When `function` checks if function passed the node is true.\n     * When `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n     * When `array`, checks any one of the subtests pass.\n     * @param {number|null|undefined} [index] Position of `node` in `parent`\n     * @param {Parent|null|undefined} [parent] Parent of `node`\n     * @param {unknown} [context] Context object to invoke `test` with\n     * @returns {boolean} Whether test passed and `node` is a `Node` (object with `type` set to non-empty `string`).\n     */\n    // eslint-disable-next-line max-params\n    function is(node, test, index, parent, context) {\n      const check = convert(test)\n\n      if (\n        index !== undefined &&\n        index !== null &&\n        (typeof index !== 'number' ||\n          index < 0 ||\n          index === Number.POSITIVE_INFINITY)\n      ) {\n        throw new Error('Expected positive finite index')\n      }\n\n      if (\n        parent !== undefined &&\n        parent !== null &&\n        (!is(parent) || !parent.children)\n      ) {\n        throw new Error('Expected parent node')\n      }\n\n      if (\n        (parent === undefined || parent === null) !==\n        (index === undefined || index === null)\n      ) {\n        throw new Error('Expected both parent and index')\n      }\n\n      // @ts-expect-error Looks like a node.\n      return node && node.type && typeof node.type === 'string'\n        ? Boolean(check.call(context, node, index, parent))\n        : false\n    }\n  )\n\nexport const convert =\n  /**\n   * @type {(\n   *   (<T extends Node>(test: T['type']|Partial<T>|TestFunctionPredicate<T>) => AssertPredicate<T>) &\n   *   ((test?: Test) => AssertAnything)\n   * )}\n   */\n  (\n    /**\n     * Generate an assertion from a check.\n     * @param {Test} [test]\n     * When nullish, checks if `node` is a `Node`.\n     * When `string`, works like passing `function (node) {return node.type === test}`.\n     * When `function` checks if function passed the node is true.\n     * When `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n     * When `array`, checks any one of the subtests pass.\n     * @returns {AssertAnything}\n     */\n    function (test) {\n      if (test === undefined || test === null) {\n        return ok\n      }\n\n      if (typeof test === 'string') {\n        return typeFactory(test)\n      }\n\n      if (typeof test === 'object') {\n        return Array.isArray(test) ? anyFactory(test) : propsFactory(test)\n      }\n\n      if (typeof test === 'function') {\n        return castFactory(test)\n      }\n\n      throw new Error('Expected function, string, or object as test')\n    }\n  )\n/**\n * @param {Array.<Type|Props|TestFunctionAnything>} tests\n * @returns {AssertAnything}\n */\nfunction anyFactory(tests) {\n  /** @type {Array.<AssertAnything>} */\n  const checks = []\n  let index = -1\n\n  while (++index < tests.length) {\n    checks[index] = convert(tests[index])\n  }\n\n  return castFactory(any)\n\n  /**\n   * @this {unknown}\n   * @param {unknown[]} parameters\n   * @returns {boolean}\n   */\n  function any(...parameters) {\n    let index = -1\n\n    while (++index < checks.length) {\n      if (checks[index].call(this, ...parameters)) return true\n    }\n\n    return false\n  }\n}\n\n/**\n * Utility to assert each property in `test` is represented in `node`, and each\n * values are strictly equal.\n *\n * @param {Props} check\n * @returns {AssertAnything}\n */\nfunction propsFactory(check) {\n  return castFactory(all)\n\n  /**\n   * @param {Node} node\n   * @returns {boolean}\n   */\n  function all(node) {\n    /** @type {string} */\n    let key\n\n    for (key in check) {\n      // @ts-expect-error: hush, it sure works as an index.\n      if (node[key] !== check[key]) return false\n    }\n\n    return true\n  }\n}\n\n/**\n * Utility to convert a string into a function which checks a given node’s type\n * for said string.\n *\n * @param {Type} check\n * @returns {AssertAnything}\n */\nfunction typeFactory(check) {\n  return castFactory(type)\n\n  /**\n   * @param {Node} node\n   */\n  function type(node) {\n    return node && node.type === check\n  }\n}\n\n/**\n * Utility to convert a string into a function which checks a given node’s type\n * for said string.\n * @param {TestFunctionAnything} check\n * @returns {AssertAnything}\n */\nfunction castFactory(check) {\n  return assertion\n\n  /**\n   * @this {unknown}\n   * @param {Array.<unknown>} parameters\n   * @returns {boolean}\n   */\n  function assertion(...parameters) {\n    // @ts-expect-error: spreading is fine.\n    return Boolean(check.call(this, ...parameters))\n  }\n}\n\n// Utility to return true.\nfunction ok() {\n  return true\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n * @typedef {import('./complex-types.js').Action} Action\n * @typedef {import('./complex-types.js').Index} Index\n * @typedef {import('./complex-types.js').ActionTuple} ActionTuple\n * @typedef {import('./complex-types.js').VisitorResult} VisitorResult\n * @typedef {import('./complex-types.js').Visitor} Visitor\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from './color.js'\n\n/**\n * Continue traversing as normal\n */\nexport const CONTINUE = true\n/**\n * Do not traverse this node’s children\n */\nexport const SKIP = 'skip'\n/**\n * Stop traversing immediately\n */\nexport const EXIT = false\n\n/**\n * Visit children of tree which pass test.\n *\n * @param tree\n *   Tree to walk\n * @param [test]\n *   `unist-util-is`-compatible test\n * @param visitor\n *   Function called for nodes that pass `test`.\n * @param [reverse=false]\n *   Traverse in reverse preorder (NRL) instead of preorder (NLR) (default).\n */\nexport const visitParents =\n  /**\n   * @type {(\n   *   (<Tree extends Node, Check extends Test>(tree: Tree, test: Check, visitor: import('./complex-types.js').BuildVisitor<Tree, Check>, reverse?: boolean) => void) &\n   *   (<Tree extends Node>(tree: Tree, visitor: import('./complex-types.js').BuildVisitor<Tree>, reverse?: boolean) => void)\n   * )}\n   */\n  (\n    /**\n     * @param {Node} tree\n     * @param {Test} test\n     * @param {import('./complex-types.js').Visitor<Node>} visitor\n     * @param {boolean} [reverse=false]\n     */\n    function (tree, test, visitor, reverse) {\n      if (typeof test === 'function' && typeof visitor !== 'function') {\n        reverse = visitor\n        // @ts-expect-error no visitor given, so `visitor` is test.\n        visitor = test\n        test = null\n      }\n\n      const is = convert(test)\n      const step = reverse ? -1 : 1\n\n      factory(tree, null, [])()\n\n      /**\n       * @param {Node} node\n       * @param {number?} index\n       * @param {Array<Parent>} parents\n       */\n      function factory(node, index, parents) {\n        /** @type {Record<string, unknown>} */\n        // @ts-expect-error: hush\n        const value = typeof node === 'object' && node !== null ? node : {}\n        /** @type {string|undefined} */\n        let name\n\n        if (typeof value.type === 'string') {\n          name =\n            typeof value.tagName === 'string'\n              ? value.tagName\n              : typeof value.name === 'string'\n              ? value.name\n              : undefined\n\n          Object.defineProperty(visit, 'name', {\n            value:\n              'node (' +\n              color(value.type + (name ? '<' + name + '>' : '')) +\n              ')'\n          })\n        }\n\n        return visit\n\n        function visit() {\n          /** @type {ActionTuple} */\n          let result = []\n          /** @type {ActionTuple} */\n          let subresult\n          /** @type {number} */\n          let offset\n          /** @type {Array<Parent>} */\n          let grandparents\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          // @ts-expect-error looks like a parent.\n          if (node.children && result[0] !== SKIP) {\n            // @ts-expect-error looks like a parent.\n            offset = (reverse ? node.children.length : -1) + step\n            // @ts-expect-error looks like a parent.\n            grandparents = parents.concat(node)\n\n            // @ts-expect-error looks like a parent.\n            while (offset > -1 && offset < node.children.length) {\n              // @ts-expect-error looks like a parent.\n              subresult = factory(node.children[offset], offset, grandparents)()\n\n              if (subresult[0] === EXIT) {\n                return subresult\n              }\n\n              offset =\n                typeof subresult[1] === 'number' ? subresult[1] : offset + step\n            }\n          }\n\n          return result\n        }\n      }\n    }\n  )\n\n/**\n * @param {VisitorResult} value\n * @returns {ActionTuple}\n */\nfunction toResult(value) {\n  if (Array.isArray(value)) {\n    return value\n  }\n\n  if (typeof value === 'number') {\n    return [CONTINUE, value]\n  }\n\n  return [value]\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n * @typedef {import('./complex-types.js').Visitor} Visitor\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\n/**\n * Visit children of tree which pass test.\n *\n * @param tree\n *   Tree to walk\n * @param [test]\n *   `unist-util-is`-compatible test\n * @param visitor\n *   Function called for nodes that pass `test`.\n * @param reverse\n *   Traverse in reverse preorder (NRL) instead of preorder (NLR) (default).\n */\nexport const visit =\n  /**\n   * @type {(\n   *   (<Tree extends Node, Check extends Test>(tree: Tree, test: Check, visitor: import('./complex-types.js').BuildVisitor<Tree, Check>, reverse?: boolean) => void) &\n   *   (<Tree extends Node>(tree: Tree, visitor: import('./complex-types.js').BuildVisitor<Tree>, reverse?: boolean) => void)\n   * )}\n   */\n  (\n    /**\n     * @param {Node} tree\n     * @param {Test} test\n     * @param {import('./complex-types.js').Visitor} visitor\n     * @param {boolean} [reverse]\n     */\n    function (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      /**\n       * @param {Node} node\n       * @param {Array<Parent>} parents\n       */\n      function overload(node, parents) {\n        const parent = parents[parents.length - 1]\n        return visitor(\n          node,\n          parent ? parent.children.indexOf(node) : null,\n          parent\n        )\n      }\n    }\n  )\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n","/**\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Node} Node\n * @typedef {Record<string, unknown> & {type: string, position?: PositionLike|undefined}} NodeLike\n * @typedef {import('unist').Point} Point\n *\n * @typedef {Partial<Point>} PointLike\n *\n * @typedef PositionLike\n * @property {PointLike} [start]\n * @property {PointLike} [end]\n */\n\nexport const pointStart = point('start')\nexport const pointEnd = point('end')\n\n/**\n * Get the positional info of `node`.\n *\n * @param {NodeLike|Node} [node]\n * @returns {Position}\n */\nexport function position(node) {\n  return {start: pointStart(node), end: pointEnd(node)}\n}\n\n/**\n * Get the positional info of `node`.\n *\n * @param {'start'|'end'} type\n */\nfunction point(type) {\n  return point\n\n  /**\n   * Get the positional info of `node`.\n   *\n   * @param {NodeLike|Node} [node]\n   * @returns {Point}\n   */\n  function point(node) {\n    const point = (node && node.position && node.position[type]) || {}\n\n    return {\n      line: point.line || null,\n      column: point.column || null,\n      offset: point.offset > -1 ? point.offset : null\n    }\n  }\n}\n","/**\n * @typedef {import('mdast').Root|import('mdast').Content} Node\n * @typedef {import('mdast').Definition} Definition\n */\n\nimport {visit} from 'unist-util-visit'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Find definitions in `node`.\n * Uses CommonMark precedence, which means that earlier definitions are\n * preferred over duplicate later definitions.\n *\n * @param {Node} node\n */\nexport function definitions(node) {\n  /** @type {Record<string, Definition>} */\n  const cache = Object.create(null)\n\n  if (!node || !node.type) {\n    throw new Error('mdast-util-definitions expected node')\n  }\n\n  visit(node, 'definition', (definition) => {\n    const id = clean(definition.identifier)\n    if (id && !own.call(cache, id)) {\n      cache[id] = definition\n    }\n  })\n\n  return definition\n\n  /**\n   * Get a node from the bound definition cache.\n   *\n   * @param {string} identifier\n   * @returns {Definition|null}\n   */\n  function definition(identifier) {\n    const id = clean(identifier)\n    return id && own.call(cache, id) ? cache[id] : null\n  }\n}\n\n/**\n * @param {string} [value]\n * @returns {string}\n */\nfunction clean(value) {\n  return String(value || '').toUpperCase()\n}\n","/**\n * @typedef {import('mdast').Root|import('mdast').Parent['children'][number]} MdastNode\n * @typedef {import('./index.js').H} H\n * @typedef {import('./index.js').Handler} Handler\n * @typedef {import('./index.js').Content} Content\n */\n\nimport {u} from 'unist-builder'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Transform an unknown node.\n * @type {Handler}\n * @param {MdastNode} node\n */\nfunction unknown(h, node) {\n  const data = node.data || {}\n\n  if (\n    'value' in node &&\n    !(\n      own.call(data, 'hName') ||\n      own.call(data, 'hProperties') ||\n      own.call(data, 'hChildren')\n    )\n  ) {\n    return h.augment(node, u('text', node.value))\n  }\n\n  return h(node, 'div', all(h, node))\n}\n\n/**\n * @type {Handler}\n * @param {MdastNode} node\n */\nexport function one(h, node, parent) {\n  const type = node && node.type\n  /** @type {Handler} */\n  let fn\n\n  // Fail on non-nodes.\n  if (!type) {\n    throw new Error('Expected node, got `' + node + '`')\n  }\n\n  if (own.call(h.handlers, type)) {\n    fn = h.handlers[type]\n  } else if (h.passThrough && h.passThrough.includes(type)) {\n    fn = returnNode\n  } else {\n    fn = h.unknownHandler\n  }\n\n  return (typeof fn === 'function' ? fn : unknown)(h, node, parent)\n}\n\n/**\n * @type {Handler}\n * @param {MdastNode} node\n */\nfunction returnNode(h, node) {\n  // @ts-expect-error: Pass through custom node.\n  return 'children' in node ? {...node, children: all(h, node)} : node\n}\n\n/**\n * @param {H} h\n * @param {MdastNode} parent\n */\nexport function all(h, parent) {\n  /** @type {Array<Content>} */\n  const values = []\n\n  if ('children' in parent) {\n    const nodes = parent.children\n    let index = -1\n\n    while (++index < nodes.length) {\n      const result = one(h, nodes[index], parent)\n\n      if (result) {\n        if (index && nodes[index - 1].type === 'break') {\n          if (!Array.isArray(result) && result.type === 'text') {\n            result.value = result.value.replace(/^\\s+/, '')\n          }\n\n          if (!Array.isArray(result) && result.type === 'element') {\n            const head = result.children[0]\n\n            if (head && head.type === 'text') {\n              head.value = head.value.replace(/^\\s+/, '')\n            }\n          }\n        }\n\n        if (Array.isArray(result)) {\n          values.push(...result)\n        } else {\n          values.push(result)\n        }\n      }\n    }\n  }\n\n  return values\n}\n","const characterReferences = {'\"': 'quot', '&': 'amp', '<': 'lt', '>': 'gt'}\n\n/**\n * Encode only the dangerous HTML characters.\n *\n * This ensures that certain characters which have special meaning in HTML are\n * dealt with.\n * Technically, we can skip `>` and `\"` in many cases, but CM includes them.\n *\n * @param {string} value\n * @returns {string}\n */\nexport function encode(value) {\n  return value.replace(/[\"&<>]/g, replace)\n\n  /**\n   * @param {string} value\n   * @returns {string}\n   */\n  function replace(value) {\n    // @ts-expect-error Hush, it’s fine.\n    return '&' + characterReferences[value] + ';'\n  }\n}\n","import {asciiAlphanumeric} from 'micromark-util-character'\nimport {encode} from 'micromark-util-encode'\n\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri` below).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * Then, a regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`,\n * or `/^https?$/i` for `img[src]`.\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string|undefined} url\n * @param {RegExp} [protocol]\n * @returns {string}\n */\nexport function sanitizeUri(url, protocol) {\n  const value = encode(normalizeUri(url || ''))\n\n  if (!protocol) {\n    return value\n  }\n\n  const colon = value.indexOf(':')\n  const questionMark = value.indexOf('?')\n  const numberSign = value.indexOf('#')\n  const slash = value.indexOf('/')\n\n  if (\n    // If there is no protocol, it’s relative.\n    colon < 0 || // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n    (slash > -1 && colon > slash) ||\n    (questionMark > -1 && colon > questionMark) ||\n    (numberSign > -1 && colon > numberSign) || // It is a protocol, it should be allowed.\n    protocol.test(value.slice(0, colon))\n  ) {\n    return value\n  }\n\n  return ''\n}\n/**\n * Normalize a URL (such as used in definitions).\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n * @returns {string}\n */\n\nfunction normalizeUri(value) {\n  /** @type {string[]} */\n  const result = []\n  let index = -1\n  let start = 0\n  let skip = 0\n\n  while (++index < value.length) {\n    const code = value.charCodeAt(index)\n    /** @type {string} */\n\n    let replace = '' // A correct percent encoded value.\n\n    if (\n      code === 37 &&\n      asciiAlphanumeric(value.charCodeAt(index + 1)) &&\n      asciiAlphanumeric(value.charCodeAt(index + 2))\n    ) {\n      skip = 2\n    } // ASCII.\n    else if (code < 128) {\n      if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n        replace = String.fromCharCode(code)\n      }\n    } // Astral.\n    else if (code > 55295 && code < 57344) {\n      const next = value.charCodeAt(index + 1) // A correct surrogate pair.\n\n      if (code < 56320 && next > 56319 && next < 57344) {\n        replace = String.fromCharCode(code, next)\n        skip = 1\n      } // Lone surrogate.\n      else {\n        replace = '\\uFFFD'\n      }\n    } // Unicode.\n    else {\n      replace = String.fromCharCode(code)\n    }\n\n    if (replace) {\n      result.push(value.slice(start, index), encodeURIComponent(replace))\n      start = index + skip + 1\n      replace = ''\n    }\n\n    if (skip) {\n      index += skip\n      skip = 0\n    }\n  }\n\n  return result.join('') + value.slice(start)\n}\n","/**\n * @typedef {import('./index.js').Content} Content\n */\n\nimport {u} from 'unist-builder'\n\n/**\n * Wrap `nodes` with line feeds between each entry.\n * Optionally adds line feeds at the start and end.\n *\n * @param {Array<Content>} nodes\n * @param {boolean} [loose=false]\n * @returns {Array<Content>}\n */\nexport function wrap(nodes, loose) {\n  /** @type {Array<Content>} */\n  const result = []\n  let index = -1\n\n  if (loose) {\n    result.push(u('text', '\\n'))\n  }\n\n  while (++index < nodes.length) {\n    if (index) result.push(u('text', '\\n'))\n    result.push(nodes[index])\n  }\n\n  if (loose && nodes.length > 0) {\n    result.push(u('text', '\\n'))\n  }\n\n  return result\n}\n","/**\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {sanitizeUri} from 'micromark-util-sanitize-uri'\nimport {u} from 'unist-builder'\n\n/**\n * @type {Handler}\n * @param {FootnoteReference} node\n */\nexport function footnoteReference(h, node) {\n  const id = String(node.identifier)\n  const safeId = sanitizeUri(id.toLowerCase())\n  const index = h.footnoteOrder.indexOf(id)\n  /** @type {number} */\n  let counter\n\n  if (index === -1) {\n    h.footnoteOrder.push(id)\n    h.footnoteCounts[id] = 1\n    counter = h.footnoteOrder.length\n  } else {\n    h.footnoteCounts[id]++\n    counter = index + 1\n  }\n\n  const reuseCounter = h.footnoteCounts[id]\n\n  return h(node, 'sup', [\n    h(\n      node.position,\n      'a',\n      {\n        href: '#' + h.clobberPrefix + 'fn-' + safeId,\n        id:\n          h.clobberPrefix +\n          'fnref-' +\n          safeId +\n          (reuseCounter > 1 ? '-' + reuseCounter : ''),\n        dataFootnoteRef: true,\n        ariaDescribedBy: 'footnote-label'\n      },\n      [u('text', String(counter))]\n    )\n  ])\n}\n","/**\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('./index.js').Handler} Handler\n * @typedef {import('./index.js').Content} Content\n */\n\nimport {u} from 'unist-builder'\nimport {all} from './traverse.js'\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @type {Handler}\n * @param {ImageReference|LinkReference} node\n * @returns {Content|Array<Content>}\n */\nexport function revert(h, node) {\n  const subtype = node.referenceType\n  let suffix = ']'\n\n  if (subtype === 'collapsed') {\n    suffix += '[]'\n  } else if (subtype === 'full') {\n    suffix += '[' + (node.label || node.identifier) + ']'\n  }\n\n  if (node.type === 'imageReference') {\n    return u('text', '![' + node.alt + suffix)\n  }\n\n  const contents = all(h, node)\n  const head = contents[0]\n\n  if (head && head.type === 'text') {\n    head.value = '[' + head.value\n  } else {\n    contents.unshift(u('text', '['))\n  }\n\n  const tail = contents[contents.length - 1]\n\n  if (tail && tail.type === 'text') {\n    tail.value += suffix\n  } else {\n    contents.push(u('text', suffix))\n  }\n\n  return contents\n}\n","/**\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').List} List\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('hast').Element} Element\n * @typedef {import('../index.js').Handler} Handler\n * @typedef {import('../index.js').Content} Content\n */\n\nimport {u} from 'unist-builder'\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {ListItem} node\n * @param {List} parent\n */\nexport function listItem(h, node, parent) {\n  const result = all(h, node)\n  const loose = parent ? listLoose(parent) : listItemLoose(node)\n  /** @type {Properties} */\n  const props = {}\n  /** @type {Array<Content>} */\n  const wrapped = []\n\n  if (typeof node.checked === 'boolean') {\n    /** @type {Element} */\n    let paragraph\n\n    if (\n      result[0] &&\n      result[0].type === 'element' &&\n      result[0].tagName === 'p'\n    ) {\n      paragraph = result[0]\n    } else {\n      paragraph = h(null, 'p', [])\n      result.unshift(paragraph)\n    }\n\n    if (paragraph.children.length > 0) {\n      paragraph.children.unshift(u('text', ' '))\n    }\n\n    paragraph.children.unshift(\n      h(null, 'input', {\n        type: 'checkbox',\n        checked: node.checked,\n        disabled: true\n      })\n    )\n\n    // According to github-markdown-css, this class hides bullet.\n    // See: <https://github.com/sindresorhus/github-markdown-css>.\n    props.className = ['task-list-item']\n  }\n\n  let index = -1\n\n  while (++index < result.length) {\n    const child = result[index]\n\n    // Add eols before nodes, except if this is a loose, first paragraph.\n    if (\n      loose ||\n      index !== 0 ||\n      child.type !== 'element' ||\n      child.tagName !== 'p'\n    ) {\n      wrapped.push(u('text', '\\n'))\n    }\n\n    if (child.type === 'element' && child.tagName === 'p' && !loose) {\n      wrapped.push(...child.children)\n    } else {\n      wrapped.push(child)\n    }\n  }\n\n  const tail = result[result.length - 1]\n\n  // Add a final eol.\n  if (tail && (loose || !('tagName' in tail) || tail.tagName !== 'p')) {\n    wrapped.push(u('text', '\\n'))\n  }\n\n  return h(node, 'li', props, wrapped)\n}\n\n/**\n * @param {List} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n  let loose = node.spread\n  const children = node.children\n  let index = -1\n\n  while (!loose && ++index < children.length) {\n    loose = listItemLoose(children[index])\n  }\n\n  return Boolean(loose)\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n  const spread = node.spread\n\n  return spread === undefined || spread === null\n    ? node.children.length > 1\n    : spread\n}\n","const tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n *   Value to trim.\n * @returns {string}\n *   Trimmed value.\n */\nexport function trimLines(value) {\n  const source = String(value)\n  const search = /\\r?\\n|\\r/g\n  let match = search.exec(source)\n  let last = 0\n  /** @type {Array<string>} */\n  const lines = []\n\n  while (match) {\n    lines.push(\n      trimLine(source.slice(last, match.index), last > 0, true),\n      match[0]\n    )\n\n    last = match.index + match[0].length\n    match = search.exec(source)\n  }\n\n  lines.push(trimLine(source.slice(last), last > 0, false))\n\n  return lines.join('')\n}\n\n/**\n * @param {string} value\n *   Line to trim.\n * @param {boolean} start\n *   Whether to trim the start of the line.\n * @param {boolean} end\n *   Whether to trim the end of the line.\n * @returns {string}\n *   Trimmed line.\n */\nfunction trimLine(value, start, end) {\n  let startIndex = 0\n  let endIndex = value.length\n\n  if (start) {\n    let code = value.codePointAt(startIndex)\n\n    while (code === tab || code === space) {\n      startIndex++\n      code = value.codePointAt(startIndex)\n    }\n  }\n\n  if (end) {\n    let code = value.codePointAt(endIndex - 1)\n\n    while (code === tab || code === space) {\n      endIndex--\n      code = value.codePointAt(endIndex - 1)\n    }\n  }\n\n  return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n","import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {strikethrough} from './delete.js'\nimport {emphasis} from './emphasis.js'\nimport {footnoteReference} from './footnote-reference.js'\nimport {footnote} from './footnote.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {imageReference} from './image-reference.js'\nimport {image} from './image.js'\nimport {inlineCode} from './inline-code.js'\nimport {linkReference} from './link-reference.js'\nimport {link} from './link.js'\nimport {listItem} from './list-item.js'\nimport {list} from './list.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {table} from './table.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\nexport const handlers = {\n  blockquote,\n  break: hardBreak,\n  code,\n  delete: strikethrough,\n  emphasis,\n  footnoteReference,\n  footnote,\n  heading,\n  html,\n  imageReference,\n  image,\n  inlineCode,\n  linkReference,\n  link,\n  listItem,\n  list,\n  paragraph,\n  root,\n  strong,\n  table,\n  text,\n  thematicBreak,\n  toml: ignore,\n  yaml: ignore,\n  definition: ignore,\n  footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n  return null\n}\n","/**\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {wrap} from '../wrap.js'\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Blockquote} node\n */\nexport function blockquote(h, node) {\n  return h(node, 'blockquote', wrap(all(h, node), true))\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').Break} Break\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {u} from 'unist-builder'\n\n/**\n * @type {Handler}\n * @param {Break} node\n * @returns {Array<Element|Text>}\n */\nexport function hardBreak(h, node) {\n  return [h(node, 'br'), u('text', '\\n')]\n}\n","/**\n * @typedef {import('mdast').Code} Code\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {u} from 'unist-builder'\n\n/**\n * @type {Handler}\n * @param {Code} node\n */\nexport function code(h, node) {\n  const value = node.value ? node.value + '\\n' : ''\n  // To do: next major, use `node.lang` w/o regex, the splitting’s been going\n  // on for years in remark now.\n  const lang = node.lang && node.lang.match(/^[^ \\t]+(?=[ \\t]|$)/)\n  /** @type {Properties} */\n  const props = {}\n\n  if (lang) {\n    props.className = ['language-' + lang]\n  }\n\n  const code = h(node, 'code', props, [u('text', value)])\n\n  if (node.meta) {\n    code.data = {meta: node.meta}\n  }\n\n  return h(node.position, 'pre', [code])\n}\n","/**\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Delete} node\n */\nexport function strikethrough(h, node) {\n  return h(node, 'del', all(h, node))\n}\n","/**\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Emphasis} node\n */\nexport function emphasis(h, node) {\n  return h(node, 'em', all(h, node))\n}\n","/**\n * @typedef {import('mdast').Footnote} Footnote\n * @typedef {import('../index.js').Handler} Handler\n *\n * @todo\n *   `footnote` (or “inline note”) are a pandoc footnotes feature (`^[a note]`)\n *   that does not exist in GFM.\n *   We still have support for it, so that things remain working with\n *   `micromark-extension-footnote` and `mdast-util-footnote`, but in the future\n *   we might be able to remove it?\n */\n\nimport {footnoteReference} from './footnote-reference.js'\n\n/**\n * @type {Handler}\n * @param {Footnote} node\n */\nexport function footnote(h, node) {\n  const footnoteById = h.footnoteById\n  let no = 1\n\n  while (no in footnoteById) no++\n\n  const identifier = String(no)\n\n  footnoteById[identifier] = {\n    type: 'footnoteDefinition',\n    identifier,\n    children: [{type: 'paragraph', children: node.children}],\n    position: node.position\n  }\n\n  return footnoteReference(h, {\n    type: 'footnoteReference',\n    identifier,\n    position: node.position\n  })\n}\n","/**\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Heading} node\n */\nexport function heading(h, node) {\n  return h(node, 'h' + node.depth, all(h, node))\n}\n","/**\n * @typedef {import('mdast').HTML} HTML\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {u} from 'unist-builder'\n\n/**\n * Return either a `raw` node in dangerous mode, otherwise nothing.\n *\n * @type {Handler}\n * @param {HTML} node\n */\nexport function html(h, node) {\n  return h.dangerous ? h.augment(node, u('raw', node.value)) : null\n}\n","/**\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport normalize from 'mdurl/encode.js'\nimport {revert} from '../revert.js'\n\n/**\n * @type {Handler}\n * @param {ImageReference} node\n */\nexport function imageReference(h, node) {\n  const def = h.definition(node.identifier)\n\n  if (!def) {\n    return revert(h, node)\n  }\n\n  /** @type {Properties} */\n  const props = {src: normalize(def.url || ''), alt: node.alt}\n\n  if (def.title !== null && def.title !== undefined) {\n    props.title = def.title\n  }\n\n  return h(node, 'img', props)\n}\n","/**\n * @typedef {import('mdast').Image} Image\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport normalize from 'mdurl/encode.js'\n\n/**\n * @type {Handler}\n * @param {Image} node\n */\nexport function image(h, node) {\n  /** @type {Properties} */\n  const props = {src: normalize(node.url), alt: node.alt}\n\n  if (node.title !== null && node.title !== undefined) {\n    props.title = node.title\n  }\n\n  return h(node, 'img', props)\n}\n","/**\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {u} from 'unist-builder'\n\n/**\n * @type {Handler}\n * @param {InlineCode} node\n */\nexport function inlineCode(h, node) {\n  return h(node, 'code', [u('text', node.value.replace(/\\r?\\n|\\r/g, ' '))])\n}\n","/**\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport normalize from 'mdurl/encode.js'\nimport {revert} from '../revert.js'\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {LinkReference} node\n */\nexport function linkReference(h, node) {\n  const def = h.definition(node.identifier)\n\n  if (!def) {\n    return revert(h, node)\n  }\n\n  /** @type {Properties} */\n  const props = {href: normalize(def.url || '')}\n\n  if (def.title !== null && def.title !== undefined) {\n    props.title = def.title\n  }\n\n  return h(node, 'a', props, all(h, node))\n}\n","/**\n * @typedef {import('mdast').Link} Link\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport normalize from 'mdurl/encode.js'\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Link} node\n */\nexport function link(h, node) {\n  /** @type {Properties} */\n  const props = {href: normalize(node.url)}\n\n  if (node.title !== null && node.title !== undefined) {\n    props.title = node.title\n  }\n\n  return h(node, 'a', props, all(h, node))\n}\n","/**\n * @typedef {import('mdast').List} List\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {wrap} from '../wrap.js'\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {List} node\n * @returns {Element}\n */\nexport function list(h, node) {\n  /** @type {Properties} */\n  const props = {}\n  const name = node.ordered ? 'ol' : 'ul'\n  const items = all(h, node)\n  let index = -1\n\n  if (typeof node.start === 'number' && node.start !== 1) {\n    props.start = node.start\n  }\n\n  // Like GitHub, add a class for custom styling.\n  while (++index < items.length) {\n    const item = items[index]\n\n    if (\n      item.type === 'element' &&\n      item.tagName === 'li' &&\n      item.properties &&\n      Array.isArray(item.properties.className) &&\n      item.properties.className.includes('task-list-item')\n    ) {\n      props.className = ['contains-task-list']\n      break\n    }\n  }\n\n  return h(node, name, props, wrap(items, true))\n}\n","/**\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Paragraph} node\n */\nexport function paragraph(h, node) {\n  return h(node, 'p', all(h, node))\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {u} from 'unist-builder'\nimport {all} from '../traverse.js'\nimport {wrap} from '../wrap.js'\n\n/**\n * @type {Handler}\n * @param {Root} node\n */\nexport function root(h, node) {\n  // @ts-expect-error `root`s are also fine.\n  return h.augment(node, u('root', wrap(all(h, node))))\n}\n","/**\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Strong} node\n */\nexport function strong(h, node) {\n  return h(node, 'strong', all(h, node))\n}\n","/**\n * @typedef {import('mdast').Table} Table\n * @typedef {import('hast').Element} Element\n * @typedef {import('../index.js').Handler} Handler\n * @typedef {import('../index.js').Content} Content\n */\n\nimport {pointStart, pointEnd} from 'unist-util-position'\nimport {wrap} from '../wrap.js'\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Table} node\n */\nexport function table(h, node) {\n  const rows = node.children\n  let index = -1\n  const align = node.align || []\n  /** @type {Array<Element>} */\n  const result = []\n\n  while (++index < rows.length) {\n    const row = rows[index].children\n    const name = index === 0 ? 'th' : 'td'\n    /** @type {Array<Content>} */\n    const out = []\n    let cellIndex = -1\n    const length = node.align ? align.length : row.length\n\n    while (++cellIndex < length) {\n      const cell = row[cellIndex]\n      out.push(\n        h(cell, name, {align: align[cellIndex]}, cell ? all(h, cell) : [])\n      )\n    }\n\n    result[index] = h(rows[index], 'tr', wrap(out, true))\n  }\n\n  return h(\n    node,\n    'table',\n    wrap(\n      [h(result[0].position, 'thead', wrap([result[0]], true))].concat(\n        result[1]\n          ? h(\n              {\n                start: pointStart(result[1]),\n                end: pointEnd(result[result.length - 1])\n              },\n              'tbody',\n              wrap(result.slice(1), true)\n            )\n          : []\n      ),\n      true\n    )\n  )\n}\n","/**\n * @typedef {import('mdast').Text} Text\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {trimLines} from 'trim-lines'\nimport {u} from 'unist-builder'\n\n/**\n * @type {Handler}\n * @param {Text} node\n */\nexport function text(h, node) {\n  return h.augment(node, u('text', trimLines(String(node.value))))\n}\n","/**\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('hast').Element} Element\n * @typedef {import('../index.js').Handler} Handler\n */\n\n/**\n * @type {Handler}\n * @param {ThematicBreak} [node]\n * @returns {Element}\n */\nexport function thematicBreak(h, node) {\n  return h(node, 'hr')\n}\n","/**\n * @typedef {import('mdast').Root|import('mdast').Parent['children'][number]} MdastNode\n * @typedef {import('hast').Root|import('hast').Parent['children'][number]} HastNode\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').FootnoteDefinition} FootnoteDefinition\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} Content\n * @typedef {import('unist-util-position').PositionLike} PositionLike\n *\n * @typedef EmbeddedHastFields\n * @property {string} [hName]\n *   Defines the tag name of an element.\n * @property {Properties} [hProperties]\n *   Defines the properties of an element.\n * @property {Array<Content>} [hChildren]\n *   Defines the (hast) children of an element.\n *\n * @typedef {Record<string, unknown> & EmbeddedHastFields} Data\n *   unist data with embedded hast fields.\n *\n * @typedef {MdastNode & {data?: Data}} NodeWithData\n *   unist node with embedded hast data.\n *\n * @callback Handler\n *   Handle a node.\n * @param {H} h\n *   Handle context.\n * @param {any} node\n *   mdast node to handle.\n * @param {Parent|null} parent\n *   Parent of `node`.\n * @returns {Content|Array<Content>|null|undefined}\n *   hast node.\n *\n * @callback HFunctionProps\n * @param {MdastNode|PositionLike|null|undefined} node\n *   mdast node or unist position.\n * @param {string} tagName\n *   HTML tag name.\n * @param {Properties} props\n *   Properties.\n * @param {Array<Content>?} [children]\n *   hast content.\n * @returns {Element}\n *   Compiled element.\n *\n * @callback HFunctionNoProps\n * @param {MdastNode|PositionLike|null|undefined} node\n *   mdast node or unist position.\n * @param {string} tagName\n *   HTML tag name.\n * @param {Array<Content>?} [children]\n *   hast content\n * @returns {Element}\n *   Compiled element.\n *\n * @typedef HFields\n * @property {boolean} dangerous\n *   Whether HTML is allowed.\n * @property {string} clobberPrefix\n *   Prefix to use to prevent DOM clobbering.\n * @property {string} footnoteLabel\n *   Label to use to introduce the footnote section.\n * @property {string} footnoteLabelTagName\n *   HTML used for the footnote label.\n * @property {Properties} footnoteLabelProperties\n *   Properties on the HTML tag used for the footnote label.\n * @property {string} footnoteBackLabel\n *   Label to use to go back to a footnote call from the footnote section.\n * @property {(identifier: string) => Definition|null} definition\n *   Definition cache.\n * @property {Record<string, FootnoteDefinition>} footnoteById\n *   Footnote cache.\n * @property {Array<string>} footnoteOrder\n *   Order in which footnotes occur.\n * @property {Record<string, number>} footnoteCounts\n *   Counts the same footnote was used.\n * @property {Handlers} handlers\n *   Applied handlers.\n * @property {Handler} unknownHandler\n *   Handler for any none not in `passThrough` or otherwise handled.\n * @property {(left: NodeWithData|PositionLike|null|undefined, right: Content) => Content} augment\n *   Like `h` but lower-level and usable on non-elements.\n * @property {Array<string>} passThrough\n *   List of node types to pass through untouched (except for their children).\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean} [allowDangerousHtml=false]\n *   Whether to allow `html` nodes and inject them as `raw` HTML.\n * @property {string} [clobberPrefix='user-content-']\n *   Prefix to use before the `id` attribute to prevent it from *clobbering*.\n *   attributes.\n *   DOM clobbering is this:\n *\n *   ```html\n *   <p id=x></p>\n *   <script>alert(x)</script>\n *   ```\n *\n *   Elements by their ID are made available in browsers on the `window` object.\n *   Using a prefix prevents this from being a problem.\n * @property {string} [footnoteLabel='Footnotes']\n *   Label to use for the footnotes section.\n *   Affects screen reader users.\n *   Change it if you’re authoring in a different language.\n * @property {string} [footnoteLabelTagName='h2']\n *   HTML tag to use for the footnote label.\n *   Can be changed to match your document structure and play well with your choice of css.\n * @property {Properties} [footnoteLabelProperties={className: ['sr-only']}]\n *   Properties to use on the footnote label.\n *   A 'sr-only' class is added by default to hide this from sighted users.\n *   Change it to make the label visible, or add classes for other purposes.\n * @property {string} [footnoteBackLabel='Back to content']\n *   Label to use from backreferences back to their footnote call.\n *   Affects screen reader users.\n *   Change it if you’re authoring in a different language.\n * @property {Handlers} [handlers]\n *   Object mapping mdast nodes to functions handling them\n * @property {Array<string>} [passThrough]\n *   List of custom mdast node types to pass through (keep) in hast\n * @property {Handler} [unknownHandler]\n *   Handler for all unknown nodes.\n *\n * @typedef {Record<string, Handler>} Handlers\n *   Map of node types to handlers\n * @typedef {HFunctionProps & HFunctionNoProps & HFields} H\n *   Handle context\n */\n\nimport {u} from 'unist-builder'\nimport {visit} from 'unist-util-visit'\nimport {pointStart, pointEnd} from 'unist-util-position'\nimport {generated} from 'unist-util-generated'\nimport {definitions} from 'mdast-util-definitions'\nimport {one} from './traverse.js'\nimport {footer} from './footer.js'\nimport {handlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Turn mdast into hast.\n *\n * @param {MdastNode} tree\n *   mdast node.\n * @param {Options} [options]\n *   Configuration (optional).\n * @returns {H}\n *   `h` function.\n */\nfunction factory(tree, options) {\n  const settings = options || {}\n  const dangerous = settings.allowDangerousHtml || false\n  /** @type {Record<string, FootnoteDefinition>} */\n  const footnoteById = {}\n\n  h.dangerous = dangerous\n  h.clobberPrefix =\n    settings.clobberPrefix === undefined || settings.clobberPrefix === null\n      ? 'user-content-'\n      : settings.clobberPrefix\n  h.footnoteLabel = settings.footnoteLabel || 'Footnotes'\n  h.footnoteLabelTagName = settings.footnoteLabelTagName || 'h2'\n  h.footnoteLabelProperties = settings.footnoteLabelProperties || {\n    className: ['sr-only']\n  }\n  h.footnoteBackLabel = settings.footnoteBackLabel || 'Back to content'\n  h.definition = definitions(tree)\n  h.footnoteById = footnoteById\n  /** @type {Array<string>} */\n  h.footnoteOrder = []\n  /** @type {Record<string, number>} */\n  h.footnoteCounts = {}\n  h.augment = augment\n  h.handlers = {...handlers, ...settings.handlers}\n  h.unknownHandler = settings.unknownHandler\n  h.passThrough = settings.passThrough\n\n  visit(tree, 'footnoteDefinition', (definition) => {\n    const id = String(definition.identifier).toUpperCase()\n\n    // Mimick CM behavior of link definitions.\n    // See: <https://github.com/syntax-tree/mdast-util-definitions/blob/8290999/index.js#L26>.\n    if (!own.call(footnoteById, id)) {\n      footnoteById[id] = definition\n    }\n  })\n\n  // @ts-expect-error Hush, it’s fine!\n  return h\n\n  /**\n   * Finalise the created `right`, a hast node, from `left`, an mdast node.\n   *\n   * @param {(NodeWithData|PositionLike)?} left\n   * @param {Content} right\n   * @returns {Content}\n   */\n  function augment(left, right) {\n    // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n    if (left && 'data' in left && left.data) {\n      /** @type {Data} */\n      const data = left.data\n\n      if (data.hName) {\n        if (right.type !== 'element') {\n          right = {\n            type: 'element',\n            tagName: '',\n            properties: {},\n            children: []\n          }\n        }\n\n        right.tagName = data.hName\n      }\n\n      if (right.type === 'element' && data.hProperties) {\n        right.properties = {...right.properties, ...data.hProperties}\n      }\n\n      if ('children' in right && right.children && data.hChildren) {\n        right.children = data.hChildren\n      }\n    }\n\n    if (left) {\n      const ctx = 'type' in left ? left : {position: left}\n\n      if (!generated(ctx)) {\n        // @ts-expect-error: fine.\n        right.position = {start: pointStart(ctx), end: pointEnd(ctx)}\n      }\n    }\n\n    return right\n  }\n\n  /**\n   * Create an element for `node`.\n   *\n   * @type {HFunctionProps}\n   */\n  function h(node, tagName, props, children) {\n    if (Array.isArray(props)) {\n      children = props\n      props = {}\n    }\n\n    // @ts-expect-error augmenting an element yields an element.\n    return augment(node, {\n      type: 'element',\n      tagName,\n      properties: props || {},\n      children: children || []\n    })\n  }\n}\n\n/**\n * Transform `tree` (an mdast node) to a hast node.\n *\n * @param {MdastNode} tree mdast node\n * @param {Options} [options] Configuration\n * @returns {HastNode|null|undefined} hast node\n */\nexport function toHast(tree, options) {\n  const h = factory(tree, options)\n  const node = one(h, tree, null)\n  const foot = footer(h)\n\n  if (foot) {\n    // @ts-expect-error If there’s a footer, there were definitions, meaning block\n    // content.\n    // So assume `node` is a parent node.\n    node.children.push(u('text', '\\n'), foot)\n  }\n\n  return Array.isArray(node) ? {type: 'root', children: node} : node\n}\n\nexport {handlers as defaultHandlers} from './handlers/index.js'\n","/**\n * @typedef {Object} PointLike\n * @property {number} [line]\n * @property {number} [column]\n * @property {number} [offset]\n *\n * @typedef {Object} PositionLike\n * @property {PointLike} [start]\n * @property {PointLike} [end]\n *\n * @typedef {Object} NodeLike\n * @property {PositionLike} [position]\n */\n\n/**\n * Check if `node` is *generated*.\n *\n * @param {NodeLike} [node]\n * @returns {boolean}\n */\nexport function generated(node) {\n  return (\n    !node ||\n    !node.position ||\n    !node.position.start ||\n    !node.position.start.line ||\n    !node.position.start.column ||\n    !node.position.end ||\n    !node.position.end.line ||\n    !node.position.end.column\n  )\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('./index.js').H} H\n */\n\nimport {sanitizeUri} from 'micromark-util-sanitize-uri'\nimport {u} from 'unist-builder'\nimport {all} from './traverse.js'\nimport {wrap} from './wrap.js'\n\n/**\n * @param {H} h\n * @returns {Element|null}\n */\nexport function footer(h) {\n  let index = -1\n  /** @type {Array<ElementContent>} */\n  const listItems = []\n\n  while (++index < h.footnoteOrder.length) {\n    const def = h.footnoteById[h.footnoteOrder[index].toUpperCase()]\n\n    if (!def) {\n      continue\n    }\n\n    const content = all(h, def)\n    const id = String(def.identifier)\n    const safeId = sanitizeUri(id.toLowerCase())\n    let referenceIndex = 0\n    /** @type {Array<ElementContent>} */\n    const backReferences = []\n\n    while (++referenceIndex <= h.footnoteCounts[id]) {\n      /** @type {Element} */\n      const backReference = {\n        type: 'element',\n        tagName: 'a',\n        properties: {\n          href:\n            '#' +\n            h.clobberPrefix +\n            'fnref-' +\n            safeId +\n            (referenceIndex > 1 ? '-' + referenceIndex : ''),\n          dataFootnoteBackref: true,\n          className: ['data-footnote-backref'],\n          ariaLabel: h.footnoteBackLabel\n        },\n        children: [{type: 'text', value: '↩'}]\n      }\n\n      if (referenceIndex > 1) {\n        backReference.children.push({\n          type: 'element',\n          tagName: 'sup',\n          children: [{type: 'text', value: String(referenceIndex)}]\n        })\n      }\n\n      if (backReferences.length > 0) {\n        backReferences.push({type: 'text', value: ' '})\n      }\n\n      backReferences.push(backReference)\n    }\n\n    const tail = content[content.length - 1]\n\n    if (tail && tail.type === 'element' && tail.tagName === 'p') {\n      const tailTail = tail.children[tail.children.length - 1]\n      if (tailTail && tailTail.type === 'text') {\n        tailTail.value += ' '\n      } else {\n        tail.children.push({type: 'text', value: ' '})\n      }\n\n      tail.children.push(...backReferences)\n    } else {\n      content.push(...backReferences)\n    }\n\n    /** @type {Element} */\n    const listItem = {\n      type: 'element',\n      tagName: 'li',\n      properties: {id: h.clobberPrefix + 'fn-' + safeId},\n      children: wrap(content, true)\n    }\n\n    if (def.position) {\n      listItem.position = def.position\n    }\n\n    listItems.push(listItem)\n  }\n\n  if (listItems.length === 0) {\n    return null\n  }\n\n  return {\n    type: 'element',\n    tagName: 'section',\n    properties: {dataFootnotes: true, className: ['footnotes']},\n    children: [\n      {\n        type: 'element',\n        tagName: h.footnoteLabelTagName,\n        properties: {\n          ...JSON.parse(JSON.stringify(h.footnoteLabelProperties)),\n          id: 'footnote-label'\n        },\n        children: [u('text', h.footnoteLabel)]\n      },\n      {type: 'text', value: '\\n'},\n      {\n        type: 'element',\n        tagName: 'ol',\n        properties: {},\n        children: wrap(listItems, true)\n      },\n      {type: 'text', value: '\\n'}\n    ]\n  }\n}\n","/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('mdast-util-to-hast').Options} Options\n * @typedef {import('unified').Processor<any, any, any, any>} Processor\n *\n * @typedef {import('mdast-util-to-hast')} DoNotTouchAsThisImportIncludesRawInTree\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n// Note: the `<MdastRoot, HastRoot>` overload doesn’t seem to work :'(\n\n/**\n * Plugin that turns markdown into HTML to support rehype.\n *\n * *   If a destination processor is given, that processor runs with a new HTML\n *     (hast) tree (bridge-mode).\n *     As the given processor runs with a hast tree, and rehype plugins support\n *     hast, that means rehype plugins can be used with the given processor.\n *     The hast tree is discarded in the end.\n *     It’s highly unlikely that you want to do this.\n * *   The common case is to not pass a destination processor, in which case the\n *     current processor continues running with a new HTML (hast) tree\n *     (mutate-mode).\n *     As the current processor continues with a hast tree, and rehype plugins\n *     support hast, that means rehype plugins can be used after\n *     `remark-rehype`.\n *     It’s likely that this is what you want to do.\n *\n * @param destination\n *   Optional unified processor.\n * @param options\n *   Options passed to `mdast-util-to-hast`.\n */\nconst remarkRehype =\n  /** @type {(import('unified').Plugin<[Processor, Options?]|[null|undefined, Options?]|[Options]|[], MdastRoot>)} */\n  (\n    function (destination, options) {\n      return destination && 'run' in destination\n        ? bridge(destination, options)\n        : mutate(destination || options)\n    }\n  )\n\nexport default remarkRehype\n\n/**\n * Bridge-mode.\n * Runs the destination with the new hast tree.\n *\n * @type {import('unified').Plugin<[Processor, Options?], MdastRoot>}\n */\nfunction bridge(destination, options) {\n  return (node, file, next) => {\n    destination.run(toHast(node, options), file, (error) => {\n      next(error)\n    })\n  }\n}\n\n/**\n * Mutate-mode.\n * Further plugins run on the hast tree.\n *\n * @type {import('unified').Plugin<[Options?]|void[], MdastRoot, HastRoot>}\n */\nfunction mutate(options) {\n  // @ts-expect-error: assume a corresponding node is returned by `toHast`.\n  return (node) => toHast(node, options)\n}\n","/**\n * @typedef {import('./info.js').Info} Info\n * @typedef {Record<string, Info>} Properties\n * @typedef {Record<string, string>} Normal\n */\n\nexport class Schema {\n  /**\n   * @constructor\n   * @param {Properties} property\n   * @param {Normal} normal\n   * @param {string} [space]\n   */\n  constructor(property, normal, space) {\n    this.property = property\n    this.normal = normal\n    if (space) {\n      this.space = space\n    }\n  }\n}\n\n/** @type {Properties} */\nSchema.prototype.property = {}\n/** @type {Normal} */\nSchema.prototype.normal = {}\n/** @type {string|null} */\nSchema.prototype.space = null\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {Schema[]} definitions\n * @param {string} [space]\n * @returns {Schema}\n */\nexport function merge(definitions, space) {\n  /** @type {Properties} */\n  const property = {}\n  /** @type {Normal} */\n  const normal = {}\n  let index = -1\n\n  while (++index < definitions.length) {\n    Object.assign(property, definitions[index].property)\n    Object.assign(normal, definitions[index].normal)\n  }\n\n  return new Schema(property, normal, space)\n}\n","/**\n * @param {string} value\n * @returns {string}\n */\nexport function normalize(value) {\n  return value.toLowerCase()\n}\n","export class Info {\n  /**\n   * @constructor\n   * @param {string} property\n   * @param {string} attribute\n   */\n  constructor(property, attribute) {\n    /** @type {string} */\n    this.property = property\n    /** @type {string} */\n    this.attribute = attribute\n  }\n}\n\n/** @type {string|null} */\nInfo.prototype.space = null\nInfo.prototype.boolean = false\nInfo.prototype.booleanish = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.number = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.spaceSeparated = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.defined = false\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n  return 2 ** ++powers\n}\n","import {Info} from './info.js'\nimport * as types from './types.js'\n\n/** @type {Array<keyof types>} */\n// @ts-expect-error: hush.\nconst checks = Object.keys(types)\n\nexport class DefinedInfo extends Info {\n  /**\n   * @constructor\n   * @param {string} property\n   * @param {string} attribute\n   * @param {number|null} [mask]\n   * @param {string} [space]\n   */\n  constructor(property, attribute, mask, space) {\n    let index = -1\n\n    super(property, attribute)\n\n    mark(this, 'space', space)\n\n    if (typeof mask === 'number') {\n      while (++index < checks.length) {\n        const check = checks[index]\n        mark(this, checks[index], (mask & types[check]) === types[check])\n      }\n    }\n  }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @param {DefinedInfo} values\n * @param {string} key\n * @param {unknown} value\n */\nfunction mark(values, key, value) {\n  if (value) {\n    // @ts-expect-error: assume `value` matches the expected value of `key`.\n    values[key] = value\n  }\n}\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n *\n * @typedef {Record<string, string>} Attributes\n *\n * @typedef {Object} Definition\n * @property {Record<string, number|null>} properties\n * @property {(attributes: Attributes, property: string) => string} transform\n * @property {string} [space]\n * @property {Attributes} [attributes]\n * @property {Array<string>} [mustUseProperty]\n */\n\nimport {normalize} from '../normalize.js'\nimport {Schema} from './schema.js'\nimport {DefinedInfo} from './defined-info.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param {Definition} definition\n * @returns {Schema}\n */\nexport function create(definition) {\n  /** @type {Properties} */\n  const property = {}\n  /** @type {Normal} */\n  const normal = {}\n  /** @type {string} */\n  let prop\n\n  for (prop in definition.properties) {\n    if (own.call(definition.properties, prop)) {\n      const value = definition.properties[prop]\n      const info = new DefinedInfo(\n        prop,\n        definition.transform(definition.attributes || {}, prop),\n        value,\n        definition.space\n      )\n\n      if (\n        definition.mustUseProperty &&\n        definition.mustUseProperty.includes(prop)\n      ) {\n        info.mustUseProperty = true\n      }\n\n      property[prop] = info\n\n      normal[normalize(prop)] = prop\n      normal[normalize(info.attribute)] = prop\n    }\n  }\n\n  return new Schema(property, normal, definition.space)\n}\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n  space: 'xlink',\n  transform(_, prop) {\n    return 'xlink:' + prop.slice(5).toLowerCase()\n  },\n  properties: {\n    xLinkActuate: null,\n    xLinkArcRole: null,\n    xLinkHref: null,\n    xLinkRole: null,\n    xLinkShow: null,\n    xLinkTitle: null,\n    xLinkType: null\n  }\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n  space: 'xml',\n  transform(_, prop) {\n    return 'xml:' + prop.slice(3).toLowerCase()\n  },\n  properties: {xmlLang: null, xmlBase: null, xmlSpace: null}\n})\n","/**\n * @param {Record<string, string>} attributes\n * @param {string} attribute\n * @returns {string}\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n  return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record<string, string>} attributes\n * @param {string} property\n * @returns {string}\n */\nexport function caseInsensitiveTransform(attributes, property) {\n  return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n  space: 'xmlns',\n  attributes: {xmlnsxlink: 'xmlns:xlink'},\n  transform: caseInsensitiveTransform,\n  properties: {xmlns: null, xmlnsXLink: null}\n})\n","import {booleanish, number, spaceSeparated} from './util/types.js'\nimport {create} from './util/create.js'\n\nexport const aria = create({\n  transform(_, prop) {\n    return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n  },\n  properties: {\n    ariaActiveDescendant: null,\n    ariaAtomic: booleanish,\n    ariaAutoComplete: null,\n    ariaBusy: booleanish,\n    ariaChecked: booleanish,\n    ariaColCount: number,\n    ariaColIndex: number,\n    ariaColSpan: number,\n    ariaControls: spaceSeparated,\n    ariaCurrent: null,\n    ariaDescribedBy: spaceSeparated,\n    ariaDetails: null,\n    ariaDisabled: booleanish,\n    ariaDropEffect: spaceSeparated,\n    ariaErrorMessage: null,\n    ariaExpanded: booleanish,\n    ariaFlowTo: spaceSeparated,\n    ariaGrabbed: booleanish,\n    ariaHasPopup: null,\n    ariaHidden: booleanish,\n    ariaInvalid: null,\n    ariaKeyShortcuts: null,\n    ariaLabel: null,\n    ariaLabelledBy: spaceSeparated,\n    ariaLevel: number,\n    ariaLive: null,\n    ariaModal: booleanish,\n    ariaMultiLine: booleanish,\n    ariaMultiSelectable: booleanish,\n    ariaOrientation: null,\n    ariaOwns: spaceSeparated,\n    ariaPlaceholder: null,\n    ariaPosInSet: number,\n    ariaPressed: booleanish,\n    ariaReadOnly: booleanish,\n    ariaRelevant: null,\n    ariaRequired: booleanish,\n    ariaRoleDescription: spaceSeparated,\n    ariaRowCount: number,\n    ariaRowIndex: number,\n    ariaRowSpan: number,\n    ariaSelected: booleanish,\n    ariaSetSize: number,\n    ariaSort: null,\n    ariaValueMax: number,\n    ariaValueMin: number,\n    ariaValueNow: number,\n    ariaValueText: null,\n    role: null\n  }\n})\n","import {\n  boolean,\n  overloadedBoolean,\n  booleanish,\n  number,\n  spaceSeparated,\n  commaSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const html = create({\n  space: 'html',\n  attributes: {\n    acceptcharset: 'accept-charset',\n    classname: 'class',\n    htmlfor: 'for',\n    httpequiv: 'http-equiv'\n  },\n  transform: caseInsensitiveTransform,\n  mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n  properties: {\n    // Standard Properties.\n    abbr: null,\n    accept: commaSeparated,\n    acceptCharset: spaceSeparated,\n    accessKey: spaceSeparated,\n    action: null,\n    allow: null,\n    allowFullScreen: boolean,\n    allowPaymentRequest: boolean,\n    allowUserMedia: boolean,\n    alt: null,\n    as: null,\n    async: boolean,\n    autoCapitalize: null,\n    autoComplete: spaceSeparated,\n    autoFocus: boolean,\n    autoPlay: boolean,\n    capture: boolean,\n    charSet: null,\n    checked: boolean,\n    cite: null,\n    className: spaceSeparated,\n    cols: number,\n    colSpan: null,\n    content: null,\n    contentEditable: booleanish,\n    controls: boolean,\n    controlsList: spaceSeparated,\n    coords: number | commaSeparated,\n    crossOrigin: null,\n    data: null,\n    dateTime: null,\n    decoding: null,\n    default: boolean,\n    defer: boolean,\n    dir: null,\n    dirName: null,\n    disabled: boolean,\n    download: overloadedBoolean,\n    draggable: booleanish,\n    encType: null,\n    enterKeyHint: null,\n    form: null,\n    formAction: null,\n    formEncType: null,\n    formMethod: null,\n    formNoValidate: boolean,\n    formTarget: null,\n    headers: spaceSeparated,\n    height: number,\n    hidden: boolean,\n    high: number,\n    href: null,\n    hrefLang: null,\n    htmlFor: spaceSeparated,\n    httpEquiv: spaceSeparated,\n    id: null,\n    imageSizes: null,\n    imageSrcSet: null,\n    inputMode: null,\n    integrity: null,\n    is: null,\n    isMap: boolean,\n    itemId: null,\n    itemProp: spaceSeparated,\n    itemRef: spaceSeparated,\n    itemScope: boolean,\n    itemType: spaceSeparated,\n    kind: null,\n    label: null,\n    lang: null,\n    language: null,\n    list: null,\n    loading: null,\n    loop: boolean,\n    low: number,\n    manifest: null,\n    max: null,\n    maxLength: number,\n    media: null,\n    method: null,\n    min: null,\n    minLength: number,\n    multiple: boolean,\n    muted: boolean,\n    name: null,\n    nonce: null,\n    noModule: boolean,\n    noValidate: boolean,\n    onAbort: null,\n    onAfterPrint: null,\n    onAuxClick: null,\n    onBeforePrint: null,\n    onBeforeUnload: null,\n    onBlur: null,\n    onCancel: null,\n    onCanPlay: null,\n    onCanPlayThrough: null,\n    onChange: null,\n    onClick: null,\n    onClose: null,\n    onContextLost: null,\n    onContextMenu: null,\n    onContextRestored: null,\n    onCopy: null,\n    onCueChange: null,\n    onCut: null,\n    onDblClick: null,\n    onDrag: null,\n    onDragEnd: null,\n    onDragEnter: null,\n    onDragExit: null,\n    onDragLeave: null,\n    onDragOver: null,\n    onDragStart: null,\n    onDrop: null,\n    onDurationChange: null,\n    onEmptied: null,\n    onEnded: null,\n    onError: null,\n    onFocus: null,\n    onFormData: null,\n    onHashChange: null,\n    onInput: null,\n    onInvalid: null,\n    onKeyDown: null,\n    onKeyPress: null,\n    onKeyUp: null,\n    onLanguageChange: null,\n    onLoad: null,\n    onLoadedData: null,\n    onLoadedMetadata: null,\n    onLoadEnd: null,\n    onLoadStart: null,\n    onMessage: null,\n    onMessageError: null,\n    onMouseDown: null,\n    onMouseEnter: null,\n    onMouseLeave: null,\n    onMouseMove: null,\n    onMouseOut: null,\n    onMouseOver: null,\n    onMouseUp: null,\n    onOffline: null,\n    onOnline: null,\n    onPageHide: null,\n    onPageShow: null,\n    onPaste: null,\n    onPause: null,\n    onPlay: null,\n    onPlaying: null,\n    onPopState: null,\n    onProgress: null,\n    onRateChange: null,\n    onRejectionHandled: null,\n    onReset: null,\n    onResize: null,\n    onScroll: null,\n    onSecurityPolicyViolation: null,\n    onSeeked: null,\n    onSeeking: null,\n    onSelect: null,\n    onSlotChange: null,\n    onStalled: null,\n    onStorage: null,\n    onSubmit: null,\n    onSuspend: null,\n    onTimeUpdate: null,\n    onToggle: null,\n    onUnhandledRejection: null,\n    onUnload: null,\n    onVolumeChange: null,\n    onWaiting: null,\n    onWheel: null,\n    open: boolean,\n    optimum: number,\n    pattern: null,\n    ping: spaceSeparated,\n    placeholder: null,\n    playsInline: boolean,\n    poster: null,\n    preload: null,\n    readOnly: boolean,\n    referrerPolicy: null,\n    rel: spaceSeparated,\n    required: boolean,\n    reversed: boolean,\n    rows: number,\n    rowSpan: number,\n    sandbox: spaceSeparated,\n    scope: null,\n    scoped: boolean,\n    seamless: boolean,\n    selected: boolean,\n    shape: null,\n    size: number,\n    sizes: null,\n    slot: null,\n    span: number,\n    spellCheck: booleanish,\n    src: null,\n    srcDoc: null,\n    srcLang: null,\n    srcSet: null,\n    start: number,\n    step: null,\n    style: null,\n    tabIndex: number,\n    target: null,\n    title: null,\n    translate: null,\n    type: null,\n    typeMustMatch: boolean,\n    useMap: null,\n    value: booleanish,\n    width: number,\n    wrap: null,\n\n    // Legacy.\n    // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n    align: null, // Several. Use CSS `text-align` instead,\n    aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n    archive: spaceSeparated, // `<object>`. List of URIs to archives\n    axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n    background: null, // `<body>`. Use CSS `background-image` instead\n    bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n    border: number, // `<table>`. Use CSS `border-width` instead,\n    borderColor: null, // `<table>`. Use CSS `border-color` instead,\n    bottomMargin: number, // `<body>`\n    cellPadding: null, // `<table>`\n    cellSpacing: null, // `<table>`\n    char: null, // Several table elements. When `align=char`, sets the character to align on\n    charOff: null, // Several table elements. When `char`, offsets the alignment\n    classId: null, // `<object>`\n    clear: null, // `<br>`. Use CSS `clear` instead\n    code: null, // `<object>`\n    codeBase: null, // `<object>`\n    codeType: null, // `<object>`\n    color: null, // `<font>` and `<hr>`. Use CSS instead\n    compact: boolean, // Lists. Use CSS to reduce space between items instead\n    declare: boolean, // `<object>`\n    event: null, // `<script>`\n    face: null, // `<font>`. Use CSS instead\n    frame: null, // `<table>`\n    frameBorder: null, // `<iframe>`. Use CSS `border` instead\n    hSpace: number, // `<img>` and `<object>`\n    leftMargin: number, // `<body>`\n    link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n    longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n    lowSrc: null, // `<img>`. Use a `<picture>`\n    marginHeight: number, // `<body>`\n    marginWidth: number, // `<body>`\n    noResize: boolean, // `<frame>`\n    noHref: boolean, // `<area>`. Use no href instead of an explicit `nohref`\n    noShade: boolean, // `<hr>`. Use background-color and height instead of borders\n    noWrap: boolean, // `<td>` and `<th>`\n    object: null, // `<applet>`\n    profile: null, // `<head>`\n    prompt: null, // `<isindex>`\n    rev: null, // `<link>`\n    rightMargin: number, // `<body>`\n    rules: null, // `<table>`\n    scheme: null, // `<meta>`\n    scrolling: booleanish, // `<frame>`. Use overflow in the child context\n    standby: null, // `<object>`\n    summary: null, // `<table>`\n    text: null, // `<body>`. Use CSS `color` instead\n    topMargin: number, // `<body>`\n    valueType: null, // `<param>`\n    version: null, // `<html>`. Use a doctype.\n    vAlign: null, // Several. Use CSS `vertical-align` instead\n    vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n    vSpace: number, // `<img>` and `<object>`\n\n    // Non-standard Properties.\n    allowTransparency: null,\n    autoCorrect: null,\n    autoSave: null,\n    disablePictureInPicture: boolean,\n    disableRemotePlayback: boolean,\n    prefix: null,\n    property: null,\n    results: number,\n    security: null,\n    unselectable: null\n  }\n})\n","import {\n  boolean,\n  number,\n  spaceSeparated,\n  commaSeparated,\n  commaOrSpaceSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseSensitiveTransform} from './util/case-sensitive-transform.js'\n\nexport const svg = create({\n  space: 'svg',\n  attributes: {\n    accentHeight: 'accent-height',\n    alignmentBaseline: 'alignment-baseline',\n    arabicForm: 'arabic-form',\n    baselineShift: 'baseline-shift',\n    capHeight: 'cap-height',\n    className: 'class',\n    clipPath: 'clip-path',\n    clipRule: 'clip-rule',\n    colorInterpolation: 'color-interpolation',\n    colorInterpolationFilters: 'color-interpolation-filters',\n    colorProfile: 'color-profile',\n    colorRendering: 'color-rendering',\n    crossOrigin: 'crossorigin',\n    dataType: 'datatype',\n    dominantBaseline: 'dominant-baseline',\n    enableBackground: 'enable-background',\n    fillOpacity: 'fill-opacity',\n    fillRule: 'fill-rule',\n    floodColor: 'flood-color',\n    floodOpacity: 'flood-opacity',\n    fontFamily: 'font-family',\n    fontSize: 'font-size',\n    fontSizeAdjust: 'font-size-adjust',\n    fontStretch: 'font-stretch',\n    fontStyle: 'font-style',\n    fontVariant: 'font-variant',\n    fontWeight: 'font-weight',\n    glyphName: 'glyph-name',\n    glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n    glyphOrientationVertical: 'glyph-orientation-vertical',\n    hrefLang: 'hreflang',\n    horizAdvX: 'horiz-adv-x',\n    horizOriginX: 'horiz-origin-x',\n    horizOriginY: 'horiz-origin-y',\n    imageRendering: 'image-rendering',\n    letterSpacing: 'letter-spacing',\n    lightingColor: 'lighting-color',\n    markerEnd: 'marker-end',\n    markerMid: 'marker-mid',\n    markerStart: 'marker-start',\n    navDown: 'nav-down',\n    navDownLeft: 'nav-down-left',\n    navDownRight: 'nav-down-right',\n    navLeft: 'nav-left',\n    navNext: 'nav-next',\n    navPrev: 'nav-prev',\n    navRight: 'nav-right',\n    navUp: 'nav-up',\n    navUpLeft: 'nav-up-left',\n    navUpRight: 'nav-up-right',\n    onAbort: 'onabort',\n    onActivate: 'onactivate',\n    onAfterPrint: 'onafterprint',\n    onBeforePrint: 'onbeforeprint',\n    onBegin: 'onbegin',\n    onCancel: 'oncancel',\n    onCanPlay: 'oncanplay',\n    onCanPlayThrough: 'oncanplaythrough',\n    onChange: 'onchange',\n    onClick: 'onclick',\n    onClose: 'onclose',\n    onCopy: 'oncopy',\n    onCueChange: 'oncuechange',\n    onCut: 'oncut',\n    onDblClick: 'ondblclick',\n    onDrag: 'ondrag',\n    onDragEnd: 'ondragend',\n    onDragEnter: 'ondragenter',\n    onDragExit: 'ondragexit',\n    onDragLeave: 'ondragleave',\n    onDragOver: 'ondragover',\n    onDragStart: 'ondragstart',\n    onDrop: 'ondrop',\n    onDurationChange: 'ondurationchange',\n    onEmptied: 'onemptied',\n    onEnd: 'onend',\n    onEnded: 'onended',\n    onError: 'onerror',\n    onFocus: 'onfocus',\n    onFocusIn: 'onfocusin',\n    onFocusOut: 'onfocusout',\n    onHashChange: 'onhashchange',\n    onInput: 'oninput',\n    onInvalid: 'oninvalid',\n    onKeyDown: 'onkeydown',\n    onKeyPress: 'onkeypress',\n    onKeyUp: 'onkeyup',\n    onLoad: 'onload',\n    onLoadedData: 'onloadeddata',\n    onLoadedMetadata: 'onloadedmetadata',\n    onLoadStart: 'onloadstart',\n    onMessage: 'onmessage',\n    onMouseDown: 'onmousedown',\n    onMouseEnter: 'onmouseenter',\n    onMouseLeave: 'onmouseleave',\n    onMouseMove: 'onmousemove',\n    onMouseOut: 'onmouseout',\n    onMouseOver: 'onmouseover',\n    onMouseUp: 'onmouseup',\n    onMouseWheel: 'onmousewheel',\n    onOffline: 'onoffline',\n    onOnline: 'ononline',\n    onPageHide: 'onpagehide',\n    onPageShow: 'onpageshow',\n    onPaste: 'onpaste',\n    onPause: 'onpause',\n    onPlay: 'onplay',\n    onPlaying: 'onplaying',\n    onPopState: 'onpopstate',\n    onProgress: 'onprogress',\n    onRateChange: 'onratechange',\n    onRepeat: 'onrepeat',\n    onReset: 'onreset',\n    onResize: 'onresize',\n    onScroll: 'onscroll',\n    onSeeked: 'onseeked',\n    onSeeking: 'onseeking',\n    onSelect: 'onselect',\n    onShow: 'onshow',\n    onStalled: 'onstalled',\n    onStorage: 'onstorage',\n    onSubmit: 'onsubmit',\n    onSuspend: 'onsuspend',\n    onTimeUpdate: 'ontimeupdate',\n    onToggle: 'ontoggle',\n    onUnload: 'onunload',\n    onVolumeChange: 'onvolumechange',\n    onWaiting: 'onwaiting',\n    onZoom: 'onzoom',\n    overlinePosition: 'overline-position',\n    overlineThickness: 'overline-thickness',\n    paintOrder: 'paint-order',\n    panose1: 'panose-1',\n    pointerEvents: 'pointer-events',\n    referrerPolicy: 'referrerpolicy',\n    renderingIntent: 'rendering-intent',\n    shapeRendering: 'shape-rendering',\n    stopColor: 'stop-color',\n    stopOpacity: 'stop-opacity',\n    strikethroughPosition: 'strikethrough-position',\n    strikethroughThickness: 'strikethrough-thickness',\n    strokeDashArray: 'stroke-dasharray',\n    strokeDashOffset: 'stroke-dashoffset',\n    strokeLineCap: 'stroke-linecap',\n    strokeLineJoin: 'stroke-linejoin',\n    strokeMiterLimit: 'stroke-miterlimit',\n    strokeOpacity: 'stroke-opacity',\n    strokeWidth: 'stroke-width',\n    tabIndex: 'tabindex',\n    textAnchor: 'text-anchor',\n    textDecoration: 'text-decoration',\n    textRendering: 'text-rendering',\n    typeOf: 'typeof',\n    underlinePosition: 'underline-position',\n    underlineThickness: 'underline-thickness',\n    unicodeBidi: 'unicode-bidi',\n    unicodeRange: 'unicode-range',\n    unitsPerEm: 'units-per-em',\n    vAlphabetic: 'v-alphabetic',\n    vHanging: 'v-hanging',\n    vIdeographic: 'v-ideographic',\n    vMathematical: 'v-mathematical',\n    vectorEffect: 'vector-effect',\n    vertAdvY: 'vert-adv-y',\n    vertOriginX: 'vert-origin-x',\n    vertOriginY: 'vert-origin-y',\n    wordSpacing: 'word-spacing',\n    writingMode: 'writing-mode',\n    xHeight: 'x-height',\n    // These were camelcased in Tiny. Now lowercased in SVG 2\n    playbackOrder: 'playbackorder',\n    timelineBegin: 'timelinebegin'\n  },\n  transform: caseSensitiveTransform,\n  properties: {\n    about: commaOrSpaceSeparated,\n    accentHeight: number,\n    accumulate: null,\n    additive: null,\n    alignmentBaseline: null,\n    alphabetic: number,\n    amplitude: number,\n    arabicForm: null,\n    ascent: number,\n    attributeName: null,\n    attributeType: null,\n    azimuth: number,\n    bandwidth: null,\n    baselineShift: null,\n    baseFrequency: null,\n    baseProfile: null,\n    bbox: null,\n    begin: null,\n    bias: number,\n    by: null,\n    calcMode: null,\n    capHeight: number,\n    className: spaceSeparated,\n    clip: null,\n    clipPath: null,\n    clipPathUnits: null,\n    clipRule: null,\n    color: null,\n    colorInterpolation: null,\n    colorInterpolationFilters: null,\n    colorProfile: null,\n    colorRendering: null,\n    content: null,\n    contentScriptType: null,\n    contentStyleType: null,\n    crossOrigin: null,\n    cursor: null,\n    cx: null,\n    cy: null,\n    d: null,\n    dataType: null,\n    defaultAction: null,\n    descent: number,\n    diffuseConstant: number,\n    direction: null,\n    display: null,\n    dur: null,\n    divisor: number,\n    dominantBaseline: null,\n    download: boolean,\n    dx: null,\n    dy: null,\n    edgeMode: null,\n    editable: null,\n    elevation: number,\n    enableBackground: null,\n    end: null,\n    event: null,\n    exponent: number,\n    externalResourcesRequired: null,\n    fill: null,\n    fillOpacity: number,\n    fillRule: null,\n    filter: null,\n    filterRes: null,\n    filterUnits: null,\n    floodColor: null,\n    floodOpacity: null,\n    focusable: null,\n    focusHighlight: null,\n    fontFamily: null,\n    fontSize: null,\n    fontSizeAdjust: null,\n    fontStretch: null,\n    fontStyle: null,\n    fontVariant: null,\n    fontWeight: null,\n    format: null,\n    fr: null,\n    from: null,\n    fx: null,\n    fy: null,\n    g1: commaSeparated,\n    g2: commaSeparated,\n    glyphName: commaSeparated,\n    glyphOrientationHorizontal: null,\n    glyphOrientationVertical: null,\n    glyphRef: null,\n    gradientTransform: null,\n    gradientUnits: null,\n    handler: null,\n    hanging: number,\n    hatchContentUnits: null,\n    hatchUnits: null,\n    height: null,\n    href: null,\n    hrefLang: null,\n    horizAdvX: number,\n    horizOriginX: number,\n    horizOriginY: number,\n    id: null,\n    ideographic: number,\n    imageRendering: null,\n    initialVisibility: null,\n    in: null,\n    in2: null,\n    intercept: number,\n    k: number,\n    k1: number,\n    k2: number,\n    k3: number,\n    k4: number,\n    kernelMatrix: commaOrSpaceSeparated,\n    kernelUnitLength: null,\n    keyPoints: null, // SEMI_COLON_SEPARATED\n    keySplines: null, // SEMI_COLON_SEPARATED\n    keyTimes: null, // SEMI_COLON_SEPARATED\n    kerning: null,\n    lang: null,\n    lengthAdjust: null,\n    letterSpacing: null,\n    lightingColor: null,\n    limitingConeAngle: number,\n    local: null,\n    markerEnd: null,\n    markerMid: null,\n    markerStart: null,\n    markerHeight: null,\n    markerUnits: null,\n    markerWidth: null,\n    mask: null,\n    maskContentUnits: null,\n    maskUnits: null,\n    mathematical: null,\n    max: null,\n    media: null,\n    mediaCharacterEncoding: null,\n    mediaContentEncodings: null,\n    mediaSize: number,\n    mediaTime: null,\n    method: null,\n    min: null,\n    mode: null,\n    name: null,\n    navDown: null,\n    navDownLeft: null,\n    navDownRight: null,\n    navLeft: null,\n    navNext: null,\n    navPrev: null,\n    navRight: null,\n    navUp: null,\n    navUpLeft: null,\n    navUpRight: null,\n    numOctaves: null,\n    observer: null,\n    offset: null,\n    onAbort: null,\n    onActivate: null,\n    onAfterPrint: null,\n    onBeforePrint: null,\n    onBegin: null,\n    onCancel: null,\n    onCanPlay: null,\n    onCanPlayThrough: null,\n    onChange: null,\n    onClick: null,\n    onClose: null,\n    onCopy: null,\n    onCueChange: null,\n    onCut: null,\n    onDblClick: null,\n    onDrag: null,\n    onDragEnd: null,\n    onDragEnter: null,\n    onDragExit: null,\n    onDragLeave: null,\n    onDragOver: null,\n    onDragStart: null,\n    onDrop: null,\n    onDurationChange: null,\n    onEmptied: null,\n    onEnd: null,\n    onEnded: null,\n    onError: null,\n    onFocus: null,\n    onFocusIn: null,\n    onFocusOut: null,\n    onHashChange: null,\n    onInput: null,\n    onInvalid: null,\n    onKeyDown: null,\n    onKeyPress: null,\n    onKeyUp: null,\n    onLoad: null,\n    onLoadedData: null,\n    onLoadedMetadata: null,\n    onLoadStart: null,\n    onMessage: null,\n    onMouseDown: null,\n    onMouseEnter: null,\n    onMouseLeave: null,\n    onMouseMove: null,\n    onMouseOut: null,\n    onMouseOver: null,\n    onMouseUp: null,\n    onMouseWheel: null,\n    onOffline: null,\n    onOnline: null,\n    onPageHide: null,\n    onPageShow: null,\n    onPaste: null,\n    onPause: null,\n    onPlay: null,\n    onPlaying: null,\n    onPopState: null,\n    onProgress: null,\n    onRateChange: null,\n    onRepeat: null,\n    onReset: null,\n    onResize: null,\n    onScroll: null,\n    onSeeked: null,\n    onSeeking: null,\n    onSelect: null,\n    onShow: null,\n    onStalled: null,\n    onStorage: null,\n    onSubmit: null,\n    onSuspend: null,\n    onTimeUpdate: null,\n    onToggle: null,\n    onUnload: null,\n    onVolumeChange: null,\n    onWaiting: null,\n    onZoom: null,\n    opacity: null,\n    operator: null,\n    order: null,\n    orient: null,\n    orientation: null,\n    origin: null,\n    overflow: null,\n    overlay: null,\n    overlinePosition: number,\n    overlineThickness: number,\n    paintOrder: null,\n    panose1: null,\n    path: null,\n    pathLength: number,\n    patternContentUnits: null,\n    patternTransform: null,\n    patternUnits: null,\n    phase: null,\n    ping: spaceSeparated,\n    pitch: null,\n    playbackOrder: null,\n    pointerEvents: null,\n    points: null,\n    pointsAtX: number,\n    pointsAtY: number,\n    pointsAtZ: number,\n    preserveAlpha: null,\n    preserveAspectRatio: null,\n    primitiveUnits: null,\n    propagate: null,\n    property: commaOrSpaceSeparated,\n    r: null,\n    radius: null,\n    referrerPolicy: null,\n    refX: null,\n    refY: null,\n    rel: commaOrSpaceSeparated,\n    rev: commaOrSpaceSeparated,\n    renderingIntent: null,\n    repeatCount: null,\n    repeatDur: null,\n    requiredExtensions: commaOrSpaceSeparated,\n    requiredFeatures: commaOrSpaceSeparated,\n    requiredFonts: commaOrSpaceSeparated,\n    requiredFormats: commaOrSpaceSeparated,\n    resource: null,\n    restart: null,\n    result: null,\n    rotate: null,\n    rx: null,\n    ry: null,\n    scale: null,\n    seed: null,\n    shapeRendering: null,\n    side: null,\n    slope: null,\n    snapshotTime: null,\n    specularConstant: number,\n    specularExponent: number,\n    spreadMethod: null,\n    spacing: null,\n    startOffset: null,\n    stdDeviation: null,\n    stemh: null,\n    stemv: null,\n    stitchTiles: null,\n    stopColor: null,\n    stopOpacity: null,\n    strikethroughPosition: number,\n    strikethroughThickness: number,\n    string: null,\n    stroke: null,\n    strokeDashArray: commaOrSpaceSeparated,\n    strokeDashOffset: null,\n    strokeLineCap: null,\n    strokeLineJoin: null,\n    strokeMiterLimit: number,\n    strokeOpacity: number,\n    strokeWidth: null,\n    style: null,\n    surfaceScale: number,\n    syncBehavior: null,\n    syncBehaviorDefault: null,\n    syncMaster: null,\n    syncTolerance: null,\n    syncToleranceDefault: null,\n    systemLanguage: commaOrSpaceSeparated,\n    tabIndex: number,\n    tableValues: null,\n    target: null,\n    targetX: number,\n    targetY: number,\n    textAnchor: null,\n    textDecoration: null,\n    textRendering: null,\n    textLength: null,\n    timelineBegin: null,\n    title: null,\n    transformBehavior: null,\n    type: null,\n    typeOf: commaOrSpaceSeparated,\n    to: null,\n    transform: null,\n    u1: null,\n    u2: null,\n    underlinePosition: number,\n    underlineThickness: number,\n    unicode: null,\n    unicodeBidi: null,\n    unicodeRange: null,\n    unitsPerEm: number,\n    values: null,\n    vAlphabetic: number,\n    vMathematical: number,\n    vectorEffect: null,\n    vHanging: number,\n    vIdeographic: number,\n    version: null,\n    vertAdvY: number,\n    vertOriginX: number,\n    vertOriginY: number,\n    viewBox: null,\n    viewTarget: null,\n    visibility: null,\n    width: null,\n    widths: null,\n    wordSpacing: null,\n    writingMode: null,\n    x: null,\n    x1: null,\n    x2: null,\n    xChannelSelector: null,\n    xHeight: number,\n    y: null,\n    y1: null,\n    y2: null,\n    yChannelSelector: null,\n    z: null,\n    zoomAndPan: null\n  }\n})\n","/**\n * @typedef {import('./lib/util/info.js').Info} Info\n * @typedef {import('./lib/util/schema.js').Schema} Schema\n */\n\nimport {merge} from './lib/util/merge.js'\nimport {xlink} from './lib/xlink.js'\nimport {xml} from './lib/xml.js'\nimport {xmlns} from './lib/xmlns.js'\nimport {aria} from './lib/aria.js'\nimport {html as htmlBase} from './lib/html.js'\nimport {svg as svgBase} from './lib/svg.js'\n\nexport {find} from './lib/find.js'\nexport {hastToReact} from './lib/hast-to-react.js'\nexport {normalize} from './lib/normalize.js'\nexport const html = merge([xml, xlink, xmlns, aria, htmlBase], 'html')\nexport const svg = merge([xml, xlink, xmlns, aria, svgBase], 'svg')\n","import {visit} from 'unist-util-visit'\n\n/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Element} Element\n *\n * @callback AllowElement\n * @param {Element} element\n * @param {number} index\n * @param {Element|Root} parent\n * @returns {boolean|undefined}\n *\n * @typedef Options\n * @property {Array<string>} [allowedElements]\n * @property {Array<string>} [disallowedElements=[]]\n * @property {AllowElement} [allowElement]\n * @property {boolean} [unwrapDisallowed=false]\n */\n\n/**\n * @type {import('unified').Plugin<[Options], Root>}\n */\nexport default function rehypeFilter(options) {\n  if (options.allowedElements && options.disallowedElements) {\n    throw new TypeError(\n      'Only one of `allowedElements` and `disallowedElements` should be defined'\n    )\n  }\n\n  if (\n    options.allowedElements ||\n    options.disallowedElements ||\n    options.allowElement\n  ) {\n    return (tree) => {\n      visit(tree, 'element', (node, index, parent_) => {\n        const parent = /** @type {Element|Root} */ (parent_)\n        /** @type {boolean|undefined} */\n        let remove\n\n        if (options.allowedElements) {\n          remove = !options.allowedElements.includes(node.tagName)\n        } else if (options.disallowedElements) {\n          remove = options.disallowedElements.includes(node.tagName)\n        }\n\n        if (!remove && options.allowElement && typeof index === 'number') {\n          remove = !options.allowElement(node, index, parent)\n        }\n\n        if (remove && typeof index === 'number') {\n          if (options.unwrapDisallowed && node.children) {\n            parent.children.splice(index, 1, ...node.children)\n          } else {\n            parent.children.splice(index, 1)\n          }\n\n          return index\n        }\n\n        return undefined\n      })\n    }\n  }\n}\n","const protocols = ['http', 'https', 'mailto', 'tel']\n\n/**\n * @param {string} uri\n * @returns {string}\n */\nexport function uriTransformer(uri) {\n  const url = (uri || '').trim()\n  const first = url.charAt(0)\n\n  if (first === '#' || first === '/') {\n    return url\n  }\n\n  const colon = url.indexOf(':')\n  if (colon === -1) {\n    return url\n  }\n\n  let index = -1\n\n  while (++index < protocols.length) {\n    const protocol = protocols[index]\n\n    if (\n      colon === protocol.length &&\n      url.slice(0, protocol.length).toLowerCase() === protocol\n    ) {\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}\n","/**\n * @param {unknown} thing\n * @returns {boolean}\n */\nexport function whitespace(thing) {\n  /** @type {string} */\n  var value =\n    // @ts-ignore looks like a node.\n    thing && typeof thing === 'object' && thing.type === 'text'\n      ? // @ts-ignore looks like a text.\n        thing.value || ''\n      : thing\n\n  // HTML whitespace expression.\n  // See <https://html.spec.whatwg.org/#space-character>.\n  return typeof value === 'string' && value.replace(/[ \\t\\n\\f\\r]/g, '') === ''\n}\n","/**\n * @typedef {import('./util/schema.js').Schema} Schema\n */\n\nimport {normalize} from './normalize.js'\nimport {DefinedInfo} from './util/defined-info.js'\nimport {Info} from './util/info.js'\n\nconst valid = /^data[-\\w.:]+$/i\nconst dash = /-[a-z]/g\nconst cap = /[A-Z]/g\n\n/**\n * @param {Schema} schema\n * @param {string} value\n * @returns {Info}\n */\nexport function find(schema, value) {\n  const normal = normalize(value)\n  let prop = value\n  let Type = Info\n\n  if (normal in schema.normal) {\n    return schema.property[schema.normal[normal]]\n  }\n\n  if (normal.length > 4 && normal.slice(0, 4) === 'data' && valid.test(value)) {\n    // Attribute or property.\n    if (value.charAt(4) === '-') {\n      // Turn it into a property.\n      const rest = value.slice(5).replace(dash, camelcase)\n      prop = 'data' + rest.charAt(0).toUpperCase() + rest.slice(1)\n    } else {\n      // Turn it into an attribute.\n      const rest = value.slice(4)\n\n      if (!dash.test(rest)) {\n        let dashes = rest.replace(cap, kebab)\n\n        if (dashes.charAt(0) !== '-') {\n          dashes = '-' + dashes\n        }\n\n        value = 'data' + dashes\n      }\n    }\n\n    Type = DefinedInfo\n  }\n\n  return new Type(prop, value)\n}\n\n/**\n * @param {string} $0\n * @returns {string}\n */\nfunction kebab($0) {\n  return '-' + $0.toLowerCase()\n}\n\n/**\n * @param {string} $0\n * @returns {string}\n */\nfunction camelcase($0) {\n  return $0.charAt(1).toUpperCase()\n}\n","export const hastToReact = {\n  classId: 'classID',\n  dataType: 'datatype',\n  itemId: 'itemID',\n  strokeDashArray: 'strokeDasharray',\n  strokeDashOffset: 'strokeDashoffset',\n  strokeLineCap: 'strokeLinecap',\n  strokeLineJoin: 'strokeLinejoin',\n  strokeMiterLimit: 'strokeMiterlimit',\n  typeOf: 'typeof',\n  xLinkActuate: 'xlinkActuate',\n  xLinkArcRole: 'xlinkArcrole',\n  xLinkHref: 'xlinkHref',\n  xLinkRole: 'xlinkRole',\n  xLinkShow: 'xlinkShow',\n  xLinkTitle: 'xlinkTitle',\n  xLinkType: 'xlinkType',\n  xmlnsXLink: 'xmlnsXlink'\n}\n","/**\n * @template T\n * @typedef {import('react').ComponentType<T>} ComponentType<T>\n */\n\n/**\n * @template T\n * @typedef {import('react').ComponentPropsWithoutRef<T>} ComponentPropsWithoutRef<T>\n */\n\n/**\n * @typedef {import('react').ReactNode} ReactNode\n * @typedef {import('unist').Position} Position\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Text} Text\n * @typedef {import('hast').Comment} Comment\n * @typedef {import('hast').DocType} Doctype\n * @typedef {import('property-information').Info} Info\n * @typedef {import('property-information').Schema} Schema\n * @typedef {import('./complex-types').ReactMarkdownProps} ReactMarkdownProps\n *\n * @typedef Raw\n * @property {'raw'} type\n * @property {string} value\n *\n * @typedef Context\n * @property {Options} options\n * @property {Schema} schema\n * @property {number} listDepth\n *\n * @callback TransformLink\n * @param {string} href\n * @param {Array<ElementContent>} children\n * @param {string?} title\n * @returns {string}\n *\n * @callback TransformImage\n * @param {string} src\n * @param {string} alt\n * @param {string?} title\n * @returns {string}\n *\n * @typedef {import('react').HTMLAttributeAnchorTarget} TransformLinkTargetType\n *\n * @callback TransformLinkTarget\n * @param {string} href\n * @param {Array<ElementContent>} children\n * @param {string?} title\n * @returns {TransformLinkTargetType|undefined}\n *\n * @typedef {keyof JSX.IntrinsicElements} ReactMarkdownNames\n *\n * To do: is `data-sourcepos` typeable?\n *\n * @typedef {ComponentPropsWithoutRef<'code'> & ReactMarkdownProps & {inline?: boolean}} CodeProps\n * @typedef {ComponentPropsWithoutRef<'h1'> & ReactMarkdownProps & {level: number}} HeadingProps\n * @typedef {ComponentPropsWithoutRef<'li'> & ReactMarkdownProps & {checked: boolean|null, index: number, ordered: boolean}} LiProps\n * @typedef {ComponentPropsWithoutRef<'ol'> & ReactMarkdownProps & {depth: number, ordered: true}} OrderedListProps\n * @typedef {ComponentPropsWithoutRef<'table'> & ReactMarkdownProps & {style?: Record<string, unknown>, isHeader: boolean}} TableCellProps\n * @typedef {ComponentPropsWithoutRef<'tr'> & ReactMarkdownProps & {isHeader: boolean}} TableRowProps\n * @typedef {ComponentPropsWithoutRef<'ul'> & ReactMarkdownProps & {depth: number, ordered: false}} UnorderedListProps\n *\n * @typedef {ComponentType<CodeProps>} CodeComponent\n * @typedef {ComponentType<HeadingProps>} HeadingComponent\n * @typedef {ComponentType<LiProps>} LiComponent\n * @typedef {ComponentType<OrderedListProps>} OrderedListComponent\n * @typedef {ComponentType<TableCellProps>} TableCellComponent\n * @typedef {ComponentType<TableRowProps>} TableRowComponent\n * @typedef {ComponentType<UnorderedListProps>} UnorderedListComponent\n *\n * @typedef SpecialComponents\n * @property {CodeComponent|ReactMarkdownNames} code\n * @property {HeadingComponent|ReactMarkdownNames} h1\n * @property {HeadingComponent|ReactMarkdownNames} h2\n * @property {HeadingComponent|ReactMarkdownNames} h3\n * @property {HeadingComponent|ReactMarkdownNames} h4\n * @property {HeadingComponent|ReactMarkdownNames} h5\n * @property {HeadingComponent|ReactMarkdownNames} h6\n * @property {LiComponent|ReactMarkdownNames} li\n * @property {OrderedListComponent|ReactMarkdownNames} ol\n * @property {TableCellComponent|ReactMarkdownNames} td\n * @property {TableCellComponent|ReactMarkdownNames} th\n * @property {TableRowComponent|ReactMarkdownNames} tr\n * @property {UnorderedListComponent|ReactMarkdownNames} ul\n *\n * @typedef {Partial<Omit<import('./complex-types').NormalComponents, keyof SpecialComponents> & SpecialComponents>} Components\n *\n * @typedef Options\n * @property {boolean} [sourcePos=false]\n * @property {boolean} [rawSourcePos=false]\n * @property {boolean} [skipHtml=false]\n * @property {boolean} [includeElementIndex=false]\n * @property {null|false|TransformLink} [transformLinkUri]\n * @property {TransformImage} [transformImageUri]\n * @property {TransformLinkTargetType|TransformLinkTarget} [linkTarget]\n * @property {Components} [components]\n */\n\nimport React from 'react'\nimport ReactIs from 'react-is'\nimport {whitespace} from 'hast-util-whitespace'\nimport {svg, find, hastToReact} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport {stringify as commas} from 'comma-separated-tokens'\nimport style from 'style-to-object'\n\nconst own = {}.hasOwnProperty\n\n// The table-related elements that must not contain whitespace text according\n// to React.\nconst tableElements = new Set(['table', 'thead', 'tbody', 'tfoot', 'tr'])\n\n/**\n * @param {Context} context\n * @param {Element|Root} node\n */\nexport function childrenToReact(context, node) {\n  /** @type {Array<ReactNode>} */\n  const children = []\n  let childIndex = -1\n  /** @type {Comment|Doctype|Element|Raw|Text} */\n  let child\n\n  while (++childIndex < node.children.length) {\n    child = node.children[childIndex]\n\n    if (child.type === 'element') {\n      children.push(toReact(context, child, childIndex, node))\n    } else if (child.type === 'text') {\n      // Currently, a warning is triggered by react for *any* white space in\n      // tables.\n      // So we drop it.\n      // See: <https://github.com/facebook/react/pull/7081>.\n      // See: <https://github.com/facebook/react/pull/7515>.\n      // See: <https://github.com/remarkjs/remark-react/issues/64>.\n      // See: <https://github.com/remarkjs/react-markdown/issues/576>.\n      if (\n        node.type !== 'element' ||\n        !tableElements.has(node.tagName) ||\n        !whitespace(child)\n      ) {\n        children.push(child.value)\n      }\n    } else if (child.type === 'raw' && !context.options.skipHtml) {\n      // Default behavior is to show (encoded) HTML.\n      children.push(child.value)\n    }\n  }\n\n  return children\n}\n\n/**\n * @param {Context} context\n * @param {Element} node\n * @param {number} index\n * @param {Element|Root} parent\n */\nfunction toReact(context, node, index, parent) {\n  const options = context.options\n  const parentSchema = context.schema\n  /** @type {ReactMarkdownNames} */\n  // @ts-expect-error assume a known HTML/SVG element.\n  const name = node.tagName\n  /** @type {Record<string, unknown>} */\n  const properties = {}\n  let schema = parentSchema\n  /** @type {string} */\n  let property\n\n  if (parentSchema.space === 'html' && name === 'svg') {\n    schema = svg\n    context.schema = schema\n  }\n\n  if (node.properties) {\n    for (property in node.properties) {\n      if (own.call(node.properties, property)) {\n        addProperty(properties, property, node.properties[property], context)\n      }\n    }\n  }\n\n  if (name === 'ol' || name === 'ul') {\n    context.listDepth++\n  }\n\n  const children = childrenToReact(context, node)\n\n  if (name === 'ol' || name === 'ul') {\n    context.listDepth--\n  }\n\n  // Restore parent schema.\n  context.schema = parentSchema\n\n  // Nodes created by plugins do not have positional info, in which case we use\n  // an object that matches the position interface.\n  const position = node.position || {\n    start: {line: null, column: null, offset: null},\n    end: {line: null, column: null, offset: null}\n  }\n  const component =\n    options.components && own.call(options.components, name)\n      ? options.components[name]\n      : name\n  const basic = typeof component === 'string' || component === React.Fragment\n\n  if (!ReactIs.isValidElementType(component)) {\n    throw new TypeError(\n      `Component for name \\`${name}\\` not defined or is not renderable`\n    )\n  }\n\n  properties.key = [\n    name,\n    position.start.line,\n    position.start.column,\n    index\n  ].join('-')\n\n  if (name === 'a' && options.linkTarget) {\n    properties.target =\n      typeof options.linkTarget === 'function'\n        ? options.linkTarget(\n            String(properties.href || ''),\n            node.children,\n            typeof properties.title === 'string' ? properties.title : null\n          )\n        : options.linkTarget\n  }\n\n  if (name === 'a' && options.transformLinkUri) {\n    properties.href = options.transformLinkUri(\n      String(properties.href || ''),\n      node.children,\n      typeof properties.title === 'string' ? properties.title : null\n    )\n  }\n\n  if (\n    !basic &&\n    name === 'code' &&\n    parent.type === 'element' &&\n    parent.tagName !== 'pre'\n  ) {\n    properties.inline = true\n  }\n\n  if (\n    !basic &&\n    (name === 'h1' ||\n      name === 'h2' ||\n      name === 'h3' ||\n      name === 'h4' ||\n      name === 'h5' ||\n      name === 'h6')\n  ) {\n    properties.level = Number.parseInt(name.charAt(1), 10)\n  }\n\n  if (name === 'img' && options.transformImageUri) {\n    properties.src = options.transformImageUri(\n      String(properties.src || ''),\n      String(properties.alt || ''),\n      typeof properties.title === 'string' ? properties.title : null\n    )\n  }\n\n  if (!basic && name === 'li' && parent.type === 'element') {\n    const input = getInputElement(node)\n    properties.checked =\n      input && input.properties ? Boolean(input.properties.checked) : null\n    properties.index = getElementsBeforeCount(parent, node)\n    properties.ordered = parent.tagName === 'ol'\n  }\n\n  if (!basic && (name === 'ol' || name === 'ul')) {\n    properties.ordered = name === 'ol'\n    properties.depth = context.listDepth\n  }\n\n  if (name === 'td' || name === 'th') {\n    if (properties.align) {\n      if (!properties.style) properties.style = {}\n      // @ts-expect-error assume `style` is an object\n      properties.style.textAlign = properties.align\n      delete properties.align\n    }\n\n    if (!basic) {\n      properties.isHeader = name === 'th'\n    }\n  }\n\n  if (!basic && name === 'tr' && parent.type === 'element') {\n    properties.isHeader = Boolean(parent.tagName === 'thead')\n  }\n\n  // If `sourcePos` is given, pass source information (line/column info from markdown source).\n  if (options.sourcePos) {\n    properties['data-sourcepos'] = flattenPosition(position)\n  }\n\n  if (!basic && options.rawSourcePos) {\n    properties.sourcePosition = node.position\n  }\n\n  // If `includeElementIndex` is given, pass node index info to components.\n  if (!basic && options.includeElementIndex) {\n    properties.index = getElementsBeforeCount(parent, node)\n    properties.siblingCount = getElementsBeforeCount(parent)\n  }\n\n  if (!basic) {\n    properties.node = node\n  }\n\n  // Ensure no React warnings are emitted for void elements w/ children.\n  return children.length > 0\n    ? React.createElement(component, properties, children)\n    : React.createElement(component, properties)\n}\n\n/**\n * @param {Element|Root} node\n * @returns {Element?}\n */\nfunction getInputElement(node) {\n  let index = -1\n\n  while (++index < node.children.length) {\n    const child = node.children[index]\n\n    if (child.type === 'element' && child.tagName === 'input') {\n      return child\n    }\n  }\n\n  return null\n}\n\n/**\n * @param {Element|Root} parent\n * @param {Element} [node]\n * @returns {number}\n */\nfunction getElementsBeforeCount(parent, node) {\n  let index = -1\n  let count = 0\n\n  while (++index < parent.children.length) {\n    if (parent.children[index] === node) break\n    if (parent.children[index].type === 'element') count++\n  }\n\n  return count\n}\n\n/**\n * @param {Record<string, unknown>} props\n * @param {string} prop\n * @param {unknown} value\n * @param {Context} ctx\n */\nfunction addProperty(props, prop, value, ctx) {\n  const info = find(ctx.schema, prop)\n  let result = value\n\n  // Ignore nullish and `NaN` values.\n  // eslint-disable-next-line no-self-compare\n  if (result === null || result === undefined || result !== result) {\n    return\n  }\n\n  // Accept `array`.\n  // Most props are space-separated.\n  if (Array.isArray(result)) {\n    result = info.commaSeparated ? commas(result) : spaces(result)\n  }\n\n  if (info.property === 'style' && typeof result === 'string') {\n    result = parseStyle(result)\n  }\n\n  if (info.space && info.property) {\n    props[\n      own.call(hastToReact, info.property)\n        ? hastToReact[info.property]\n        : info.property\n    ] = result\n  } else if (info.attribute) {\n    props[info.attribute] = result\n  }\n}\n\n/**\n * @param {string} value\n * @returns {Record<string, string>}\n */\nfunction parseStyle(value) {\n  /** @type {Record<string, string>} */\n  const result = {}\n\n  try {\n    style(value, iterator)\n  } catch {\n    // Silent.\n  }\n\n  return result\n\n  /**\n   * @param {string} name\n   * @param {string} v\n   */\n  function iterator(name, v) {\n    const k = name.slice(0, 4) === '-ms-' ? `ms-${name.slice(4)}` : name\n    result[k.replace(/-([a-z])/g, styleReplacer)] = v\n  }\n}\n\n/**\n * @param {unknown} _\n * @param {string} $1\n */\nfunction styleReplacer(_, $1) {\n  return $1.toUpperCase()\n}\n\n/**\n * @param {Position|{start: {line: null, column: null, offset: null}, end: {line: null, column: null, offset: null}}} pos\n * @returns {string}\n */\nfunction flattenPosition(pos) {\n  return [\n    pos.start.line,\n    ':',\n    pos.start.column,\n    '-',\n    pos.end.line,\n    ':',\n    pos.end.column\n  ]\n    .map((d) => String(d))\n    .join('')\n}\n","/**\n * @typedef {Object} StringifyOptions\n * @property {boolean} [padLeft=true] Whether to pad a space before a token (`boolean`, default: `true`).\n * @property {boolean} [padRight=false] Whether to pad a space after a token (`boolean`, default: `false`).\n */\n\n/**\n * Parse comma separated tokens to an array.\n *\n * @param {string} value\n * @returns {Array.<string>}\n */\nexport function parse(value) {\n  /** @type {Array.<string>} */\n  var tokens = []\n  var input = String(value || '')\n  var index = input.indexOf(',')\n  var start = 0\n  /** @type {boolean} */\n  var end\n  /** @type {string} */\n  var token\n\n  while (!end) {\n    if (index === -1) {\n      index = input.length\n      end = true\n    }\n\n    token = input.slice(start, index).trim()\n\n    if (token || !end) {\n      tokens.push(token)\n    }\n\n    start = index + 1\n    index = input.indexOf(',', start)\n  }\n\n  return tokens\n}\n\n/**\n * Serialize an array of strings to comma separated tokens.\n *\n * @param {Array.<string|number>} values\n * @param {StringifyOptions} [options]\n * @returns {string}\n */\nexport function stringify(values, options) {\n  var settings = options || {}\n\n  // Ensure the last empty entry is seen.\n  if (values[values.length - 1] === '') {\n    values = values.concat('')\n  }\n\n  return values\n    .join(\n      (settings.padRight ? ' ' : '') +\n        ',' +\n        (settings.padLeft === false ? '' : ' ')\n    )\n    .trim()\n}\n","/**\n * Parse space separated tokens to an array of strings.\n *\n * @param {string} value Space separated tokens\n * @returns {Array.<string>} Tokens\n */\nexport function parse(value) {\n  const input = String(value || '').trim()\n  return input ? input.split(/[ \\t\\n\\r\\f]+/g) : []\n}\n\n/**\n * Serialize an array of strings as space separated tokens.\n *\n * @param {Array.<string|number>} values Tokens\n * @returns {string} Space separated tokens\n */\nexport function stringify(values) {\n  return values.join(' ').trim()\n}\n","/**\n * @typedef {import('react').ReactNode} ReactNode\n * @typedef {import('react').ReactElement<{}>} ReactElement\n * @typedef {import('unified').PluggableList} PluggableList\n * @typedef {import('hast').Root} Root\n * @typedef {import('./rehype-filter.js').Options} FilterOptions\n * @typedef {import('./ast-to-react.js').Options} TransformOptions\n *\n * @typedef CoreOptions\n * @property {string} children\n *\n * @typedef PluginOptions\n * @property {PluggableList} [remarkPlugins=[]]\n * @property {PluggableList} [rehypePlugins=[]]\n * @property {import('remark-rehype').Options | undefined} [remarkRehypeOptions={}]\n *\n * @typedef LayoutOptions\n * @property {string} [className]\n *\n * @typedef {CoreOptions & PluginOptions & LayoutOptions & FilterOptions & TransformOptions} ReactMarkdownOptions\n *\n * @typedef Deprecation\n * @property {string} id\n * @property {string} [to]\n */\n\nimport React from 'react'\nimport {VFile} from 'vfile'\nimport {unified} from 'unified'\nimport remarkParse from 'remark-parse'\nimport remarkRehype from 'remark-rehype'\nimport PropTypes from 'prop-types'\nimport {html} from 'property-information'\nimport rehypeFilter from './rehype-filter.js'\nimport {uriTransformer} from './uri-transformer.js'\nimport {childrenToReact} from './ast-to-react.js'\n\nconst own = {}.hasOwnProperty\nconst changelog =\n  'https://github.com/remarkjs/react-markdown/blob/main/changelog.md'\n\n/** @type {Record<string, Deprecation>} */\nconst deprecated = {\n  plugins: {to: 'plugins', id: 'change-plugins-to-remarkplugins'},\n  renderers: {to: 'components', id: 'change-renderers-to-components'},\n  astPlugins: {id: 'remove-buggy-html-in-markdown-parser'},\n  allowDangerousHtml: {id: 'remove-buggy-html-in-markdown-parser'},\n  escapeHtml: {id: 'remove-buggy-html-in-markdown-parser'},\n  source: {to: 'children', id: 'change-source-to-children'},\n  allowNode: {\n    to: 'allowElement',\n    id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n  },\n  allowedTypes: {\n    to: 'allowedElements',\n    id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n  },\n  disallowedTypes: {\n    to: 'disallowedElements',\n    id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n  },\n  includeNodeIndex: {\n    to: 'includeElementIndex',\n    id: 'change-includenodeindex-to-includeelementindex'\n  }\n}\n\n/**\n * React component to render markdown.\n *\n * @param {ReactMarkdownOptions} options\n * @returns {ReactElement}\n */\nexport function ReactMarkdown(options) {\n  for (const key in deprecated) {\n    if (own.call(deprecated, key) && own.call(options, key)) {\n      const deprecation = deprecated[key]\n      console.warn(\n        `[react-markdown] Warning: please ${\n          deprecation.to ? `use \\`${deprecation.to}\\` instead of` : 'remove'\n        } \\`${key}\\` (see <${changelog}#${deprecation.id}> for more info)`\n      )\n      delete deprecated[key]\n    }\n  }\n\n  const processor = unified()\n    .use(remarkParse)\n    .use(options.remarkPlugins || [])\n    .use(remarkRehype, {\n      ...options.remarkRehypeOptions,\n      allowDangerousHtml: true\n    })\n    .use(options.rehypePlugins || [])\n    .use(rehypeFilter, options)\n\n  const file = new VFile()\n\n  if (typeof options.children === 'string') {\n    file.value = options.children\n  } else if (options.children !== undefined && options.children !== null) {\n    console.warn(\n      `[react-markdown] Warning: please pass a string as \\`children\\` (not: \\`${options.children}\\`)`\n    )\n  }\n\n  const hastNode = processor.runSync(processor.parse(file), file)\n\n  if (hastNode.type !== 'root') {\n    throw new TypeError('Expected a `root` node')\n  }\n\n  /** @type {ReactElement} */\n  let result = React.createElement(\n    React.Fragment,\n    {},\n    childrenToReact({options, schema: html, listDepth: 0}, hastNode)\n  )\n\n  if (options.className) {\n    result = React.createElement('div', {className: options.className}, result)\n  }\n\n  return result\n}\n\nReactMarkdown.defaultProps = {transformLinkUri: uriTransformer}\n\nReactMarkdown.propTypes = {\n  // Core options:\n  children: PropTypes.string,\n  // Layout options:\n  className: PropTypes.string,\n  // Filter options:\n  allowElement: PropTypes.func,\n  allowedElements: PropTypes.arrayOf(PropTypes.string),\n  disallowedElements: PropTypes.arrayOf(PropTypes.string),\n  unwrapDisallowed: PropTypes.bool,\n  // Plugin options:\n  remarkPlugins: PropTypes.arrayOf(\n    PropTypes.oneOfType([\n      PropTypes.object,\n      PropTypes.func,\n      PropTypes.arrayOf(\n        PropTypes.oneOfType([\n          PropTypes.bool,\n          PropTypes.string,\n          PropTypes.object,\n          PropTypes.func,\n          PropTypes.arrayOf(\n            // prettier-ignore\n            // type-coverage:ignore-next-line\n            PropTypes.any\n          )\n        ])\n      )\n    ])\n  ),\n  rehypePlugins: PropTypes.arrayOf(\n    PropTypes.oneOfType([\n      PropTypes.object,\n      PropTypes.func,\n      PropTypes.arrayOf(\n        PropTypes.oneOfType([\n          PropTypes.bool,\n          PropTypes.string,\n          PropTypes.object,\n          PropTypes.func,\n          PropTypes.arrayOf(\n            // prettier-ignore\n            // type-coverage:ignore-next-line\n            PropTypes.any\n          )\n        ])\n      )\n    ])\n  ),\n  // Transform options:\n  sourcePos: PropTypes.bool,\n  rawSourcePos: PropTypes.bool,\n  skipHtml: PropTypes.bool,\n  includeElementIndex: PropTypes.bool,\n  transformLinkUri: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n  linkTarget: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n  transformImageUri: PropTypes.func,\n  components: PropTypes.object\n}\n","export default function requiredArgs(required, args) {\n  if (args.length < required) {\n    throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n  }\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\n\nexport default function isDate(value) {\n  requiredArgs(1, arguments);\n  return value instanceof Date || typeof value === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\n\nexport default function toDate(argument) {\n  requiredArgs(1, arguments);\n  var argStr = Object.prototype.toString.call(argument); // Clone the date\n\n  if (argument instanceof Date || typeof argument === 'object' && argStr === '[object Date]') {\n    // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n    return new Date(argument.getTime());\n  } else if (typeof argument === 'number' || argStr === '[object Number]') {\n    return new Date(argument);\n  } else {\n    if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n      // eslint-disable-next-line no-console\n      console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule\"); // eslint-disable-next-line no-console\n\n      console.warn(new Error().stack);\n    }\n\n    return new Date(NaN);\n  }\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now `isValid` doesn't throw an exception\n *   if the first argument is not an instance of Date.\n *   Instead, argument is converted beforehand using `toDate`.\n *\n *   Examples:\n *\n *   | `isValid` argument        | Before v2.0.0 | v2.0.0 onward |\n *   |---------------------------|---------------|---------------|\n *   | `new Date()`              | `true`        | `true`        |\n *   | `new Date('2016-01-01')`  | `true`        | `true`        |\n *   | `new Date('')`            | `false`       | `false`       |\n *   | `new Date(1488370835081)` | `true`        | `true`        |\n *   | `new Date(NaN)`           | `false`       | `false`       |\n *   | `'2016-01-01'`            | `TypeError`   | `false`       |\n *   | `''`                      | `TypeError`   | `false`       |\n *   | `1488370835081`           | `TypeError`   | `true`        |\n *   | `NaN`                     | `TypeError`   | `false`       |\n *\n *   We introduce this change to make *date-fns* consistent with ECMAScript behavior\n *   that try to coerce arguments to the expected type\n *   (which is also the case with other *date-fns* functions).\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\n\nexport default function isValid(dirtyDate) {\n  requiredArgs(1, arguments);\n\n  if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n    return false;\n  }\n\n  var date = toDate(dirtyDate);\n  return !isNaN(Number(date));\n}","var formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: 'less than a second',\n    other: 'less than {{count}} seconds'\n  },\n  xSeconds: {\n    one: '1 second',\n    other: '{{count}} seconds'\n  },\n  halfAMinute: 'half a minute',\n  lessThanXMinutes: {\n    one: 'less than a minute',\n    other: 'less than {{count}} minutes'\n  },\n  xMinutes: {\n    one: '1 minute',\n    other: '{{count}} minutes'\n  },\n  aboutXHours: {\n    one: 'about 1 hour',\n    other: 'about {{count}} hours'\n  },\n  xHours: {\n    one: '1 hour',\n    other: '{{count}} hours'\n  },\n  xDays: {\n    one: '1 day',\n    other: '{{count}} days'\n  },\n  aboutXWeeks: {\n    one: 'about 1 week',\n    other: 'about {{count}} weeks'\n  },\n  xWeeks: {\n    one: '1 week',\n    other: '{{count}} weeks'\n  },\n  aboutXMonths: {\n    one: 'about 1 month',\n    other: 'about {{count}} months'\n  },\n  xMonths: {\n    one: '1 month',\n    other: '{{count}} months'\n  },\n  aboutXYears: {\n    one: 'about 1 year',\n    other: 'about {{count}} years'\n  },\n  xYears: {\n    one: '1 year',\n    other: '{{count}} years'\n  },\n  overXYears: {\n    one: 'over 1 year',\n    other: 'over {{count}} years'\n  },\n  almostXYears: {\n    one: 'almost 1 year',\n    other: 'almost {{count}} years'\n  }\n};\n\nvar formatDistance = function (token, count, options) {\n  var result;\n  var tokenValue = formatDistanceLocale[token];\n\n  if (typeof tokenValue === 'string') {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else {\n    result = tokenValue.other.replace('{{count}}', count.toString());\n  }\n\n  if (options !== null && options !== void 0 && options.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return 'in ' + result;\n    } else {\n      return result + ' ago';\n    }\n  }\n\n  return result;\n};\n\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n  return function () {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    // TODO: Remove String()\n    var width = options.width ? String(options.width) : args.defaultWidth;\n    var format = args.formats[width] || args.formats[args.defaultWidth];\n    return format;\n  };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: 'EEEE, MMMM do, y',\n  long: 'MMMM do, y',\n  medium: 'MMM d, y',\n  short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n  full: 'h:mm:ss a zzzz',\n  long: 'h:mm:ss a z',\n  medium: 'h:mm:ss a',\n  short: 'h:mm a'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'at' {{time}}\",\n  long: \"{{date}} 'at' {{time}}\",\n  medium: '{{date}}, {{time}}',\n  short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","var formatRelativeLocale = {\n  lastWeek: \"'last' eeee 'at' p\",\n  yesterday: \"'yesterday at' p\",\n  today: \"'today at' p\",\n  tomorrow: \"'tomorrow at' p\",\n  nextWeek: \"eeee 'at' p\",\n  other: 'P'\n};\n\nvar formatRelative = function (token, _date, _baseDate, _options) {\n  return formatRelativeLocale[token];\n};\n\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n  return function (dirtyIndex, dirtyOptions) {\n    var options = dirtyOptions || {};\n    var context = options.context ? String(options.context) : 'standalone';\n    var valuesArray;\n\n    if (context === 'formatting' && args.formattingValues) {\n      var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n      var width = options.width ? String(options.width) : defaultWidth;\n      valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n    } else {\n      var _defaultWidth = args.defaultWidth;\n\n      var _width = options.width ? String(options.width) : args.defaultWidth;\n\n      valuesArray = args.values[_width] || args.values[_defaultWidth];\n    }\n\n    var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex; // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challange you to try to remove it!\n\n    return valuesArray[index];\n  };\n}","export default function buildMatchFn(args) {\n  return function (string) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var width = options.width;\n    var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n    var matchResult = string.match(matchPattern);\n\n    if (!matchResult) {\n      return null;\n    }\n\n    var matchedString = matchResult[0];\n    var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n    var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n      return pattern.test(matchedString);\n    }) : findKey(parsePatterns, function (pattern) {\n      return pattern.test(matchedString);\n    });\n    var value;\n    value = args.valueCallback ? args.valueCallback(key) : key;\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    var rest = string.slice(matchedString.length);\n    return {\n      value: value,\n      rest: rest\n    };\n  };\n}\n\nfunction findKey(object, predicate) {\n  for (var key in object) {\n    if (object.hasOwnProperty(key) && predicate(object[key])) {\n      return key;\n    }\n  }\n\n  return undefined;\n}\n\nfunction findIndex(array, predicate) {\n  for (var key = 0; key < array.length; key++) {\n    if (predicate(array[key])) {\n      return key;\n    }\n  }\n\n  return undefined;\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(b|a)/i,\n  abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n  wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n  any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^q[1234]/i,\n  wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^[jfmasond]/i,\n  abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n  wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n  any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n  narrow: /^[smtwf]/i,\n  short: /^(su|mo|tu|we|th|fr|sa)/i,\n  abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n  wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n  narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n  any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n  narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n  any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^a/i,\n    pm: /^p/i,\n    midnight: /^mi/i,\n    noon: /^no/i,\n    morning: /morning/i,\n    afternoon: /afternoon/i,\n    evening: /evening/i,\n    night: /night/i\n  }\n};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function (value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function (index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;","export default function buildMatchPatternFn(args) {\n  return function (string) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var matchResult = string.match(args.matchPattern);\n    if (!matchResult) return null;\n    var matchedString = matchResult[0];\n    var parseResult = string.match(args.parsePattern);\n    if (!parseResult) return null;\n    var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    var rest = string.slice(matchedString.length);\n    return {\n      value: value,\n      rest: rest\n    };\n  };\n}","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n  code: 'en-US',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 0\n    /* Sunday */\n    ,\n    firstWeekContainsDate: 1\n  }\n};\nexport default locale;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n  narrow: ['B', 'A'],\n  abbreviated: ['BC', 'AD'],\n  wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n  wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n}; // Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\n\nvar monthValues = {\n  narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n  abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n  wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n  narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n  short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n  abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n  wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mi',\n    noon: 'n',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  }\n};\nvar formattingDayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mi',\n    noon: 'n',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  }\n};\n\nvar ordinalNumber = function (dirtyNumber, _options) {\n  var number = Number(dirtyNumber); // If ordinal numbers depend on context, for example,\n  // if they are different for different grammatical genders,\n  // use `options.unit`.\n  //\n  // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n  // 'day', 'hour', 'minute', 'second'.\n\n  var rem100 = number % 100;\n\n  if (rem100 > 20 || rem100 < 10) {\n    switch (rem100 % 10) {\n      case 1:\n        return number + 'st';\n\n      case 2:\n        return number + 'nd';\n\n      case 3:\n        return number + 'rd';\n    }\n  }\n\n  return number + 'th';\n};\n\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function (quarter) {\n      return quarter - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\nexport default localize;","export default function toInteger(dirtyNumber) {\n  if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n    return NaN;\n  }\n\n  var number = Number(dirtyNumber);\n\n  if (isNaN(number)) {\n    return number;\n  }\n\n  return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\n\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var timestamp = toDate(dirtyDate).getTime();\n  var amount = toInteger(dirtyAmount);\n  return new Date(timestamp + amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\n\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  return addMilliseconds(dirtyDate, -amount);\n}","export default function addLeadingZeros(number, targetLength) {\n  var sign = number < 0 ? '-' : '';\n  var output = Math.abs(number).toString();\n\n  while (output.length < targetLength) {\n    output = '0' + output;\n  }\n\n  return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* |                                |\n * |  d  | Day of month                   |  D  |                                |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  m  | Minute                         |  M  | Month                          |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  y  | Year (abs)                     |  Y  |                                |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nvar formatters = {\n  // Year\n  y: function (date, token) {\n    // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n    // | Year     |     y | yy |   yyy |  yyyy | yyyyy |\n    // |----------|-------|----|-------|-------|-------|\n    // | AD 1     |     1 | 01 |   001 |  0001 | 00001 |\n    // | AD 12    |    12 | 12 |   012 |  0012 | 00012 |\n    // | AD 123   |   123 | 23 |   123 |  0123 | 00123 |\n    // | AD 1234  |  1234 | 34 |  1234 |  1234 | 01234 |\n    // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n    var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n    var year = signedYear > 0 ? signedYear : 1 - signedYear;\n    return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n  },\n  // Month\n  M: function (date, token) {\n    var month = date.getUTCMonth();\n    return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n  },\n  // Day of the month\n  d: function (date, token) {\n    return addLeadingZeros(date.getUTCDate(), token.length);\n  },\n  // AM or PM\n  a: function (date, token) {\n    var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n\n    switch (token) {\n      case 'a':\n      case 'aa':\n        return dayPeriodEnumValue.toUpperCase();\n\n      case 'aaa':\n        return dayPeriodEnumValue;\n\n      case 'aaaaa':\n        return dayPeriodEnumValue[0];\n\n      case 'aaaa':\n      default:\n        return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n    }\n  },\n  // Hour [1-12]\n  h: function (date, token) {\n    return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n  },\n  // Hour [0-23]\n  H: function (date, token) {\n    return addLeadingZeros(date.getUTCHours(), token.length);\n  },\n  // Minute\n  m: function (date, token) {\n    return addLeadingZeros(date.getUTCMinutes(), token.length);\n  },\n  // Second\n  s: function (date, token) {\n    return addLeadingZeros(date.getUTCSeconds(), token.length);\n  },\n  // Fraction of second\n  S: function (date, token) {\n    var numberOfDigits = token.length;\n    var milliseconds = date.getUTCMilliseconds();\n    var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n    return addLeadingZeros(fractionalSeconds, token.length);\n  }\n};\nexport default formatters;","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeek(dirtyDate) {\n  requiredArgs(1, arguments);\n  var weekStartsOn = 1;\n  var date = toDate(dirtyDate);\n  var day = date.getUTCDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setUTCDate(date.getUTCDate() - diff);\n  date.setUTCHours(0, 0, 0, 0);\n  return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeekYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var year = date.getUTCFullYear();\n  var fourthOfJanuaryOfNextYear = new Date(0);\n  fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n  fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n  var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n  var fourthOfJanuaryOfThisYear = new Date(0);\n  fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n  fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n  var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var year = getUTCISOWeekYear(dirtyDate);\n  var fourthOfJanuary = new Date(0);\n  fourthOfJanuary.setUTCFullYear(year, 0, 4);\n  fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n  var date = startOfUTCISOWeek(fourthOfJanuary);\n  return date;\n}","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeek(dirtyDate, dirtyOptions) {\n  requiredArgs(1, arguments);\n  var options = dirtyOptions || {};\n  var locale = options.locale;\n  var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n  var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n  var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n\n  var date = toDate(dirtyDate);\n  var day = date.getUTCDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setUTCDate(date.getUTCDate() - diff);\n  date.setUTCHours(0, 0, 0, 0);\n  return date;\n}","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeekYear(dirtyDate, dirtyOptions) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate, dirtyOptions);\n  var year = date.getUTCFullYear();\n  var options = dirtyOptions || {};\n  var locale = options.locale;\n  var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n  var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n  var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n\n  var firstWeekOfNextYear = new Date(0);\n  firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n  firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n  var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions);\n  var firstWeekOfThisYear = new Date(0);\n  firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n  firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n  var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions);\n\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}","import toInteger from \"../toInteger/index.js\";\nimport getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeekYear(dirtyDate, dirtyOptions) {\n  requiredArgs(1, arguments);\n  var options = dirtyOptions || {};\n  var locale = options.locale;\n  var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n  var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n  var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n  var year = getUTCWeekYear(dirtyDate, dirtyOptions);\n  var firstWeek = new Date(0);\n  firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n  firstWeek.setUTCHours(0, 0, 0, 0);\n  var date = startOfUTCWeek(firstWeek, dirtyOptions);\n  return date;\n}","import lightFormatters from \"../lightFormatters/index.js\";\nimport getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nvar dayPeriodEnum = {\n  am: 'am',\n  pm: 'pm',\n  midnight: 'midnight',\n  noon: 'noon',\n  morning: 'morning',\n  afternoon: 'afternoon',\n  evening: 'evening',\n  night: 'night'\n};\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* | Milliseconds in day            |\n * |  b  | AM, PM, noon, midnight         |  B  | Flexible day period            |\n * |  c  | Stand-alone local day of week  |  C* | Localized hour w/ day period   |\n * |  d  | Day of month                   |  D  | Day of year                    |\n * |  e  | Local day of week              |  E  | Day of week                    |\n * |  f  |                                |  F* | Day of week in month           |\n * |  g* | Modified Julian day            |  G  | Era                            |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  i! | ISO day of week                |  I! | ISO week of year               |\n * |  j* | Localized hour w/ day period   |  J* | Localized hour w/o day period  |\n * |  k  | Hour [1-24]                    |  K  | Hour [0-11]                    |\n * |  l* | (deprecated)                   |  L  | Stand-alone month              |\n * |  m  | Minute                         |  M  | Month                          |\n * |  n  |                                |  N  |                                |\n * |  o! | Ordinal number modifier        |  O  | Timezone (GMT)                 |\n * |  p! | Long localized time            |  P! | Long localized date            |\n * |  q  | Stand-alone quarter            |  Q  | Quarter                        |\n * |  r* | Related Gregorian year         |  R! | ISO week-numbering year        |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  t! | Seconds timestamp              |  T! | Milliseconds timestamp         |\n * |  u  | Extended year                  |  U* | Cyclic year                    |\n * |  v* | Timezone (generic non-locat.)  |  V* | Timezone (location)            |\n * |  w  | Local week of year             |  W* | Week of month                  |\n * |  x  | Timezone (ISO-8601 w/o Z)      |  X  | Timezone (ISO-8601)            |\n * |  y  | Year (abs)                     |  Y  | Local week-numbering year      |\n * |  z  | Timezone (specific non-locat.) |  Z* | Timezone (aliases)             |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n *   i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n *   `R` is supposed to be used in conjunction with `I` and `i`\n *   for universal ISO week-numbering date, whereas\n *   `Y` is supposed to be used in conjunction with `w` and `e`\n *   for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n  // Era\n  G: function (date, token, localize) {\n    var era = date.getUTCFullYear() > 0 ? 1 : 0;\n\n    switch (token) {\n      // AD, BC\n      case 'G':\n      case 'GG':\n      case 'GGG':\n        return localize.era(era, {\n          width: 'abbreviated'\n        });\n      // A, B\n\n      case 'GGGGG':\n        return localize.era(era, {\n          width: 'narrow'\n        });\n      // Anno Domini, Before Christ\n\n      case 'GGGG':\n      default:\n        return localize.era(era, {\n          width: 'wide'\n        });\n    }\n  },\n  // Year\n  y: function (date, token, localize) {\n    // Ordinal number\n    if (token === 'yo') {\n      var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n      var year = signedYear > 0 ? signedYear : 1 - signedYear;\n      return localize.ordinalNumber(year, {\n        unit: 'year'\n      });\n    }\n\n    return lightFormatters.y(date, token);\n  },\n  // Local week-numbering year\n  Y: function (date, token, localize, options) {\n    var signedWeekYear = getUTCWeekYear(date, options); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n    var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; // Two digit year\n\n    if (token === 'YY') {\n      var twoDigitYear = weekYear % 100;\n      return addLeadingZeros(twoDigitYear, 2);\n    } // Ordinal number\n\n\n    if (token === 'Yo') {\n      return localize.ordinalNumber(weekYear, {\n        unit: 'year'\n      });\n    } // Padding\n\n\n    return addLeadingZeros(weekYear, token.length);\n  },\n  // ISO week-numbering year\n  R: function (date, token) {\n    var isoWeekYear = getUTCISOWeekYear(date); // Padding\n\n    return addLeadingZeros(isoWeekYear, token.length);\n  },\n  // Extended year. This is a single number designating the year of this calendar system.\n  // The main difference between `y` and `u` localizers are B.C. years:\n  // | Year | `y` | `u` |\n  // |------|-----|-----|\n  // | AC 1 |   1 |   1 |\n  // | BC 1 |   1 |   0 |\n  // | BC 2 |   2 |  -1 |\n  // Also `yy` always returns the last two digits of a year,\n  // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n  u: function (date, token) {\n    var year = date.getUTCFullYear();\n    return addLeadingZeros(year, token.length);\n  },\n  // Quarter\n  Q: function (date, token, localize) {\n    var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n    switch (token) {\n      // 1, 2, 3, 4\n      case 'Q':\n        return String(quarter);\n      // 01, 02, 03, 04\n\n      case 'QQ':\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n\n      case 'Qo':\n        return localize.ordinalNumber(quarter, {\n          unit: 'quarter'\n        });\n      // Q1, Q2, Q3, Q4\n\n      case 'QQQ':\n        return localize.quarter(quarter, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n      case 'QQQQQ':\n        return localize.quarter(quarter, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // 1st quarter, 2nd quarter, ...\n\n      case 'QQQQ':\n      default:\n        return localize.quarter(quarter, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone quarter\n  q: function (date, token, localize) {\n    var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n    switch (token) {\n      // 1, 2, 3, 4\n      case 'q':\n        return String(quarter);\n      // 01, 02, 03, 04\n\n      case 'qq':\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n\n      case 'qo':\n        return localize.ordinalNumber(quarter, {\n          unit: 'quarter'\n        });\n      // Q1, Q2, Q3, Q4\n\n      case 'qqq':\n        return localize.quarter(quarter, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n      case 'qqqqq':\n        return localize.quarter(quarter, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // 1st quarter, 2nd quarter, ...\n\n      case 'qqqq':\n      default:\n        return localize.quarter(quarter, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // Month\n  M: function (date, token, localize) {\n    var month = date.getUTCMonth();\n\n    switch (token) {\n      case 'M':\n      case 'MM':\n        return lightFormatters.M(date, token);\n      // 1st, 2nd, ..., 12th\n\n      case 'Mo':\n        return localize.ordinalNumber(month + 1, {\n          unit: 'month'\n        });\n      // Jan, Feb, ..., Dec\n\n      case 'MMM':\n        return localize.month(month, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // J, F, ..., D\n\n      case 'MMMMM':\n        return localize.month(month, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // January, February, ..., December\n\n      case 'MMMM':\n      default:\n        return localize.month(month, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone month\n  L: function (date, token, localize) {\n    var month = date.getUTCMonth();\n\n    switch (token) {\n      // 1, 2, ..., 12\n      case 'L':\n        return String(month + 1);\n      // 01, 02, ..., 12\n\n      case 'LL':\n        return addLeadingZeros(month + 1, 2);\n      // 1st, 2nd, ..., 12th\n\n      case 'Lo':\n        return localize.ordinalNumber(month + 1, {\n          unit: 'month'\n        });\n      // Jan, Feb, ..., Dec\n\n      case 'LLL':\n        return localize.month(month, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // J, F, ..., D\n\n      case 'LLLLL':\n        return localize.month(month, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // January, February, ..., December\n\n      case 'LLLL':\n      default:\n        return localize.month(month, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // Local week of year\n  w: function (date, token, localize, options) {\n    var week = getUTCWeek(date, options);\n\n    if (token === 'wo') {\n      return localize.ordinalNumber(week, {\n        unit: 'week'\n      });\n    }\n\n    return addLeadingZeros(week, token.length);\n  },\n  // ISO week of year\n  I: function (date, token, localize) {\n    var isoWeek = getUTCISOWeek(date);\n\n    if (token === 'Io') {\n      return localize.ordinalNumber(isoWeek, {\n        unit: 'week'\n      });\n    }\n\n    return addLeadingZeros(isoWeek, token.length);\n  },\n  // Day of the month\n  d: function (date, token, localize) {\n    if (token === 'do') {\n      return localize.ordinalNumber(date.getUTCDate(), {\n        unit: 'date'\n      });\n    }\n\n    return lightFormatters.d(date, token);\n  },\n  // Day of year\n  D: function (date, token, localize) {\n    var dayOfYear = getUTCDayOfYear(date);\n\n    if (token === 'Do') {\n      return localize.ordinalNumber(dayOfYear, {\n        unit: 'dayOfYear'\n      });\n    }\n\n    return addLeadingZeros(dayOfYear, token.length);\n  },\n  // Day of week\n  E: function (date, token, localize) {\n    var dayOfWeek = date.getUTCDay();\n\n    switch (token) {\n      // Tue\n      case 'E':\n      case 'EE':\n      case 'EEE':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n\n      case 'EEEEE':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n\n      case 'EEEEEE':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n\n      case 'EEEE':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Local day of week\n  e: function (date, token, localize, options) {\n    var dayOfWeek = date.getUTCDay();\n    var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n    switch (token) {\n      // Numerical value (Nth day of week with current locale or weekStartsOn)\n      case 'e':\n        return String(localDayOfWeek);\n      // Padded numerical value\n\n      case 'ee':\n        return addLeadingZeros(localDayOfWeek, 2);\n      // 1st, 2nd, ..., 7th\n\n      case 'eo':\n        return localize.ordinalNumber(localDayOfWeek, {\n          unit: 'day'\n        });\n\n      case 'eee':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n\n      case 'eeeee':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n\n      case 'eeeeee':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n\n      case 'eeee':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone local day of week\n  c: function (date, token, localize, options) {\n    var dayOfWeek = date.getUTCDay();\n    var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n    switch (token) {\n      // Numerical value (same as in `e`)\n      case 'c':\n        return String(localDayOfWeek);\n      // Padded numerical value\n\n      case 'cc':\n        return addLeadingZeros(localDayOfWeek, token.length);\n      // 1st, 2nd, ..., 7th\n\n      case 'co':\n        return localize.ordinalNumber(localDayOfWeek, {\n          unit: 'day'\n        });\n\n      case 'ccc':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // T\n\n      case 'ccccc':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // Tu\n\n      case 'cccccc':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'standalone'\n        });\n      // Tuesday\n\n      case 'cccc':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // ISO day of week\n  i: function (date, token, localize) {\n    var dayOfWeek = date.getUTCDay();\n    var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n\n    switch (token) {\n      // 2\n      case 'i':\n        return String(isoDayOfWeek);\n      // 02\n\n      case 'ii':\n        return addLeadingZeros(isoDayOfWeek, token.length);\n      // 2nd\n\n      case 'io':\n        return localize.ordinalNumber(isoDayOfWeek, {\n          unit: 'day'\n        });\n      // Tue\n\n      case 'iii':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n\n      case 'iiiii':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n\n      case 'iiiiii':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n\n      case 'iiii':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // AM or PM\n  a: function (date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n\n    switch (token) {\n      case 'a':\n      case 'aa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n\n      case 'aaa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        }).toLowerCase();\n\n      case 'aaaaa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n\n      case 'aaaa':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // AM, PM, midnight, noon\n  b: function (date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue;\n\n    if (hours === 12) {\n      dayPeriodEnumValue = dayPeriodEnum.noon;\n    } else if (hours === 0) {\n      dayPeriodEnumValue = dayPeriodEnum.midnight;\n    } else {\n      dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n    }\n\n    switch (token) {\n      case 'b':\n      case 'bb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n\n      case 'bbb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        }).toLowerCase();\n\n      case 'bbbbb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n\n      case 'bbbb':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // in the morning, in the afternoon, in the evening, at night\n  B: function (date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue;\n\n    if (hours >= 17) {\n      dayPeriodEnumValue = dayPeriodEnum.evening;\n    } else if (hours >= 12) {\n      dayPeriodEnumValue = dayPeriodEnum.afternoon;\n    } else if (hours >= 4) {\n      dayPeriodEnumValue = dayPeriodEnum.morning;\n    } else {\n      dayPeriodEnumValue = dayPeriodEnum.night;\n    }\n\n    switch (token) {\n      case 'B':\n      case 'BB':\n      case 'BBB':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n\n      case 'BBBBB':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n\n      case 'BBBB':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Hour [1-12]\n  h: function (date, token, localize) {\n    if (token === 'ho') {\n      var hours = date.getUTCHours() % 12;\n      if (hours === 0) hours = 12;\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n\n    return lightFormatters.h(date, token);\n  },\n  // Hour [0-23]\n  H: function (date, token, localize) {\n    if (token === 'Ho') {\n      return localize.ordinalNumber(date.getUTCHours(), {\n        unit: 'hour'\n      });\n    }\n\n    return lightFormatters.H(date, token);\n  },\n  // Hour [0-11]\n  K: function (date, token, localize) {\n    var hours = date.getUTCHours() % 12;\n\n    if (token === 'Ko') {\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n\n    return addLeadingZeros(hours, token.length);\n  },\n  // Hour [1-24]\n  k: function (date, token, localize) {\n    var hours = date.getUTCHours();\n    if (hours === 0) hours = 24;\n\n    if (token === 'ko') {\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n\n    return addLeadingZeros(hours, token.length);\n  },\n  // Minute\n  m: function (date, token, localize) {\n    if (token === 'mo') {\n      return localize.ordinalNumber(date.getUTCMinutes(), {\n        unit: 'minute'\n      });\n    }\n\n    return lightFormatters.m(date, token);\n  },\n  // Second\n  s: function (date, token, localize) {\n    if (token === 'so') {\n      return localize.ordinalNumber(date.getUTCSeconds(), {\n        unit: 'second'\n      });\n    }\n\n    return lightFormatters.s(date, token);\n  },\n  // Fraction of second\n  S: function (date, token) {\n    return lightFormatters.S(date, token);\n  },\n  // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n  X: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    if (timezoneOffset === 0) {\n      return 'Z';\n    }\n\n    switch (token) {\n      // Hours and optional minutes\n      case 'X':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XX`\n\n      case 'XXXX':\n      case 'XX':\n        // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XXX`\n\n      case 'XXXXX':\n      case 'XXX': // Hours and minutes with `:` delimiter\n\n      default:\n        return formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n  x: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    switch (token) {\n      // Hours and optional minutes\n      case 'x':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xx`\n\n      case 'xxxx':\n      case 'xx':\n        // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xxx`\n\n      case 'xxxxx':\n      case 'xxx': // Hours and minutes with `:` delimiter\n\n      default:\n        return formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (GMT)\n  O: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    switch (token) {\n      // Short\n      case 'O':\n      case 'OO':\n      case 'OOO':\n        return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n      // Long\n\n      case 'OOOO':\n      default:\n        return 'GMT' + formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (specific non-location)\n  z: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    switch (token) {\n      // Short\n      case 'z':\n      case 'zz':\n      case 'zzz':\n        return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n      // Long\n\n      case 'zzzz':\n      default:\n        return 'GMT' + formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Seconds timestamp\n  t: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timestamp = Math.floor(originalDate.getTime() / 1000);\n    return addLeadingZeros(timestamp, token.length);\n  },\n  // Milliseconds timestamp\n  T: function (date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timestamp = originalDate.getTime();\n    return addLeadingZeros(timestamp, token.length);\n  }\n};\n\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n  var sign = offset > 0 ? '-' : '+';\n  var absOffset = Math.abs(offset);\n  var hours = Math.floor(absOffset / 60);\n  var minutes = absOffset % 60;\n\n  if (minutes === 0) {\n    return sign + String(hours);\n  }\n\n  var delimiter = dirtyDelimiter || '';\n  return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n  if (offset % 60 === 0) {\n    var sign = offset > 0 ? '-' : '+';\n    return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n  }\n\n  return formatTimezone(offset, dirtyDelimiter);\n}\n\nfunction formatTimezone(offset, dirtyDelimiter) {\n  var delimiter = dirtyDelimiter || '';\n  var sign = offset > 0 ? '-' : '+';\n  var absOffset = Math.abs(offset);\n  var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n  var minutes = addLeadingZeros(absOffset % 60, 2);\n  return sign + hours + delimiter + minutes;\n}\n\nexport default formatters;","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeek(dirtyDate, options) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime(); // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeek(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime(); // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCDayOfYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var timestamp = date.getTime();\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n  var startOfYearTimestamp = date.getTime();\n  var difference = timestamp - startOfYearTimestamp;\n  return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","function dateLongFormatter(pattern, formatLong) {\n  switch (pattern) {\n    case 'P':\n      return formatLong.date({\n        width: 'short'\n      });\n\n    case 'PP':\n      return formatLong.date({\n        width: 'medium'\n      });\n\n    case 'PPP':\n      return formatLong.date({\n        width: 'long'\n      });\n\n    case 'PPPP':\n    default:\n      return formatLong.date({\n        width: 'full'\n      });\n  }\n}\n\nfunction timeLongFormatter(pattern, formatLong) {\n  switch (pattern) {\n    case 'p':\n      return formatLong.time({\n        width: 'short'\n      });\n\n    case 'pp':\n      return formatLong.time({\n        width: 'medium'\n      });\n\n    case 'ppp':\n      return formatLong.time({\n        width: 'long'\n      });\n\n    case 'pppp':\n    default:\n      return formatLong.time({\n        width: 'full'\n      });\n  }\n}\n\nfunction dateTimeLongFormatter(pattern, formatLong) {\n  var matchResult = pattern.match(/(P+)(p+)?/);\n  var datePattern = matchResult[1];\n  var timePattern = matchResult[2];\n\n  if (!timePattern) {\n    return dateLongFormatter(pattern, formatLong);\n  }\n\n  var dateTimeFormat;\n\n  switch (datePattern) {\n    case 'P':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'short'\n      });\n      break;\n\n    case 'PP':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'medium'\n      });\n      break;\n\n    case 'PPP':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'long'\n      });\n      break;\n\n    case 'PPPP':\n    default:\n      dateTimeFormat = formatLong.dateTime({\n        width: 'full'\n      });\n      break;\n  }\n\n  return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n}\n\nvar longFormatters = {\n  p: timeLongFormatter,\n  P: dateTimeLongFormatter\n};\nexport default longFormatters;","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n  var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n  utcDate.setUTCFullYear(date.getFullYear());\n  return date.getTime() - utcDate.getTime();\n}","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n  return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n  return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n  if (token === 'YYYY') {\n    throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n  } else if (token === 'YY') {\n    throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n  } else if (token === 'D') {\n    throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n  } else if (token === 'DD') {\n    throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n  }\n}","import isValid from \"../isValid/index.js\";\nimport defaultLocale from \"../locale/en-US/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n//   (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n//   except a single quote symbol, which ends the sequence.\n//   Two quote characters do not end the sequence.\n//   If there is no matching single quote\n//   then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit                            | Pattern | Result examples                   | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era                             | G..GGG  | AD, BC                            |       |\n * |                                 | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 | GGGGG   | A, B                              |       |\n * | Calendar year                   | y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | yo      | 44th, 1st, 0th, 17th              | 5,7   |\n * |                                 | yy      | 44, 01, 00, 17                    | 5     |\n * |                                 | yyy     | 044, 001, 1900, 2017              | 5     |\n * |                                 | yyyy    | 0044, 0001, 1900, 2017            | 5     |\n * |                                 | yyyyy   | ...                               | 3,5   |\n * | Local week-numbering year       | Y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | Yo      | 44th, 1st, 1900th, 2017th         | 5,7   |\n * |                                 | YY      | 44, 01, 00, 17                    | 5,8   |\n * |                                 | YYY     | 044, 001, 1900, 2017              | 5     |\n * |                                 | YYYY    | 0044, 0001, 1900, 2017            | 5,8   |\n * |                                 | YYYYY   | ...                               | 3,5   |\n * | ISO week-numbering year         | R       | -43, 0, 1, 1900, 2017             | 5,7   |\n * |                                 | RR      | -43, 00, 01, 1900, 2017           | 5,7   |\n * |                                 | RRR     | -043, 000, 001, 1900, 2017        | 5,7   |\n * |                                 | RRRR    | -0043, 0000, 0001, 1900, 2017     | 5,7   |\n * |                                 | RRRRR   | ...                               | 3,5,7 |\n * | Extended year                   | u       | -43, 0, 1, 1900, 2017             | 5     |\n * |                                 | uu      | -43, 01, 1900, 2017               | 5     |\n * |                                 | uuu     | -043, 001, 1900, 2017             | 5     |\n * |                                 | uuuu    | -0043, 0001, 1900, 2017           | 5     |\n * |                                 | uuuuu   | ...                               | 3,5   |\n * | Quarter (formatting)            | Q       | 1, 2, 3, 4                        |       |\n * |                                 | Qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | QQ      | 01, 02, 03, 04                    |       |\n * |                                 | QQQ     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | QQQQ    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | QQQQQ   | 1, 2, 3, 4                        | 4     |\n * | Quarter (stand-alone)           | q       | 1, 2, 3, 4                        |       |\n * |                                 | qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | qq      | 01, 02, 03, 04                    |       |\n * |                                 | qqq     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | qqqq    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | qqqqq   | 1, 2, 3, 4                        | 4     |\n * | Month (formatting)              | M       | 1, 2, ..., 12                     |       |\n * |                                 | Mo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | MM      | 01, 02, ..., 12                   |       |\n * |                                 | MMM     | Jan, Feb, ..., Dec                |       |\n * |                                 | MMMM    | January, February, ..., December  | 2     |\n * |                                 | MMMMM   | J, F, ..., D                      |       |\n * | Month (stand-alone)             | L       | 1, 2, ..., 12                     |       |\n * |                                 | Lo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | LL      | 01, 02, ..., 12                   |       |\n * |                                 | LLL     | Jan, Feb, ..., Dec                |       |\n * |                                 | LLLL    | January, February, ..., December  | 2     |\n * |                                 | LLLLL   | J, F, ..., D                      |       |\n * | Local week of year              | w       | 1, 2, ..., 53                     |       |\n * |                                 | wo      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | I       | 1, 2, ..., 53                     | 7     |\n * |                                 | Io      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | II      | 01, 02, ..., 53                   | 7     |\n * | Day of month                    | d       | 1, 2, ..., 31                     |       |\n * |                                 | do      | 1st, 2nd, ..., 31st               | 7     |\n * |                                 | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     | D       | 1, 2, ..., 365, 366               | 9     |\n * |                                 | Do      | 1st, 2nd, ..., 365th, 366th       | 7     |\n * |                                 | DD      | 01, 02, ..., 365, 366             | 9     |\n * |                                 | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 | DDDD    | ...                               | 3     |\n * | Day of week (formatting)        | E..EEE  | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | EEEE    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | EEEEE   | M, T, W, T, F, S, S               |       |\n * |                                 | EEEEEE  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | ISO day of week (formatting)    | i       | 1, 2, 3, ..., 7                   | 7     |\n * |                                 | io      | 1st, 2nd, ..., 7th                | 7     |\n * |                                 | ii      | 01, 02, ..., 07                   | 7     |\n * |                                 | iii     | Mon, Tue, Wed, ..., Sun           | 7     |\n * |                                 | iiii    | Monday, Tuesday, ..., Sunday      | 2,7   |\n * |                                 | iiiii   | M, T, W, T, F, S, S               | 7     |\n * |                                 | iiiiii  | Mo, Tu, We, Th, Fr, Sa, Su        | 7     |\n * | Local day of week (formatting)  | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 | eo      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | ee      | 02, 03, ..., 01                   |       |\n * |                                 | eee     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | eeee    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | eeeee   | M, T, W, T, F, S, S               |       |\n * |                                 | eeeeee  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | Local day of week (stand-alone) | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 | co      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | cc      | 02, 03, ..., 01                   |       |\n * |                                 | ccc     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | cccc    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | ccccc   | M, T, W, T, F, S, S               |       |\n * |                                 | cccccc  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | AM, PM                          | a..aa   | AM, PM                            |       |\n * |                                 | aaa     | am, pm                            |       |\n * |                                 | aaaa    | a.m., p.m.                        | 2     |\n * |                                 | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          | b..bb   | AM, PM, noon, midnight            |       |\n * |                                 | bbb     | am, pm, noon, midnight            |       |\n * |                                 | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             | B..BBB  | at night, in the morning, ...     |       |\n * |                                 | BBBB    | at night, in the morning, ...     | 2     |\n * |                                 | BBBBB   | at night, in the morning, ...     |       |\n * | Hour [1-12]                     | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 | ho      | 1st, 2nd, ..., 11th, 12th         | 7     |\n * |                                 | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 | Ho      | 0th, 1st, 2nd, ..., 23rd          | 7     |\n * |                                 | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 | Ko      | 1st, 2nd, ..., 11th, 0th          | 7     |\n * |                                 | KK      | 01, 02, ..., 11, 00               |       |\n * | Hour [1-24]                     | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 | ko      | 24th, 1st, 2nd, ..., 23rd         | 7     |\n * |                                 | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          | m       | 0, 1, ..., 59                     |       |\n * |                                 | mo      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | mm      | 00, 01, ..., 59                   |       |\n * | Second                          | s       | 0, 1, ..., 59                     |       |\n * |                                 | so      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | ss      | 00, 01, ..., 59                   |       |\n * | Fraction of second              | S       | 0, 1, ..., 9                      |       |\n * |                                 | SS      | 00, 01, ..., 99                   |       |\n * |                                 | SSS     | 000, 001, ..., 999                |       |\n * |                                 | SSSS    | ...                               | 3     |\n * | Timezone (ISO-8601 w/ Z)        | X       | -08, +0530, Z                     |       |\n * |                                 | XX      | -0800, +0530, Z                   |       |\n * |                                 | XXX     | -08:00, +05:30, Z                 |       |\n * |                                 | XXXX    | -0800, +0530, Z, +123456          | 2     |\n * |                                 | XXXXX   | -08:00, +05:30, Z, +12:34:56      |       |\n * | Timezone (ISO-8601 w/o Z)       | x       | -08, +0530, +00                   |       |\n * |                                 | xx      | -0800, +0530, +0000               |       |\n * |                                 | xxx     | -08:00, +05:30, +00:00            | 2     |\n * |                                 | xxxx    | -0800, +0530, +0000, +123456      |       |\n * |                                 | xxxxx   | -08:00, +05:30, +00:00, +12:34:56 |       |\n * | Timezone (GMT)                  | O...OOO | GMT-8, GMT+5:30, GMT+0            |       |\n * |                                 | OOOO    | GMT-08:00, GMT+05:30, GMT+00:00   | 2     |\n * | Timezone (specific non-locat.)  | z...zzz | GMT-8, GMT+5:30, GMT+0            | 6     |\n * |                                 | zzzz    | GMT-08:00, GMT+05:30, GMT+00:00   | 2,6   |\n * | Seconds timestamp               | t       | 512969520                         | 7     |\n * |                                 | tt      | ...                               | 3,7   |\n * | Milliseconds timestamp          | T       | 512969520900                      | 7     |\n * |                                 | TT      | ...                               | 3,7   |\n * | Long localized date             | P       | 04/29/1453                        | 7     |\n * |                                 | PP      | Apr 29, 1453                      | 7     |\n * |                                 | PPP     | April 29th, 1453                  | 7     |\n * |                                 | PPPP    | Friday, April 29th, 1453          | 2,7   |\n * | Long localized time             | p       | 12:00 AM                          | 7     |\n * |                                 | pp      | 12:00:00 AM                       | 7     |\n * |                                 | ppp     | 12:00:00 AM GMT+2                 | 7     |\n * |                                 | pppp    | 12:00:00 AM GMT+02:00             | 2,7   |\n * | Combination of date and time    | Pp      | 04/29/1453, 12:00 AM              | 7     |\n * |                                 | PPpp    | Apr 29, 1453, 12:00:00 AM         | 7     |\n * |                                 | PPPppp  | April 29th, 1453 at ...           | 7     |\n * |                                 | PPPPpppp| Friday, April 29th, 1453 at ...   | 2,7   |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n *    are the same as \"stand-alone\" units, but are different in some languages.\n *    \"Formatting\" units are declined according to the rules of the language\n *    in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n *    `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n *    `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n *    the single quote characters (see below).\n *    If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n *    the output will be the same as default pattern for this unit, usually\n *    the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n *    are marked with \"2\" in the last column of the table.\n *\n *    `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n *    The output will be padded with zeros to match the length of the pattern.\n *\n *    `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n *    | Year | `y` | `u` |\n *    |------|-----|-----|\n *    | AC 1 |   1 |   1 |\n *    | BC 1 |   1 |   0 |\n *    | BC 2 |   2 |  -1 |\n *\n *    Also `yy` always returns the last two digits of a year,\n *    while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n *    | Year | `yy` | `uu` |\n *    |------|------|------|\n *    | 1    |   01 |   01 |\n *    | 14   |   14 |   14 |\n *    | 376  |   76 |  376 |\n *    | 1453 |   53 | 1453 |\n *\n *    The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n *    except local week-numbering years are dependent on `options.weekStartsOn`\n *    and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n *    and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n *    so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n *    - `i`: ISO day of week\n *    - `I`: ISO week of year\n *    - `R`: ISO week-numbering year\n *    - `t`: seconds timestamp\n *    - `T`: milliseconds timestamp\n *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n *    You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 9. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n *    You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n *   ```javascript\n *   // Before v2.0.0\n *   format(new Date(2016, 0, 1))\n *\n *   // v2.0.0 onward\n *   format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n *   ```\n *\n * - New format string API for `format` function\n *   which is based on [Unicode Technical Standard #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table).\n *   See [this post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n *   see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n *   see: https://git.io/fxCyr\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n *   locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n  requiredArgs(2, arguments);\n  var formatStr = String(dirtyFormatStr);\n  var options = dirtyOptions || {};\n  var locale = options.locale || defaultLocale;\n  var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n  var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n  var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n\n  var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n  var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n  var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n\n  if (!locale.localize) {\n    throw new RangeError('locale must contain localize property');\n  }\n\n  if (!locale.formatLong) {\n    throw new RangeError('locale must contain formatLong property');\n  }\n\n  var originalDate = toDate(dirtyDate);\n\n  if (!isValid(originalDate)) {\n    throw new RangeError('Invalid time value');\n  } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n  // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n  // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n\n\n  var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n  var utcDate = subMilliseconds(originalDate, timezoneOffset);\n  var formatterOptions = {\n    firstWeekContainsDate: firstWeekContainsDate,\n    weekStartsOn: weekStartsOn,\n    locale: locale,\n    _originalDate: originalDate\n  };\n  var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n    var firstCharacter = substring[0];\n\n    if (firstCharacter === 'p' || firstCharacter === 'P') {\n      var longFormatter = longFormatters[firstCharacter];\n      return longFormatter(substring, locale.formatLong, formatterOptions);\n    }\n\n    return substring;\n  }).join('').match(formattingTokensRegExp).map(function (substring) {\n    // Replace two single quote characters with one single quote character\n    if (substring === \"''\") {\n      return \"'\";\n    }\n\n    var firstCharacter = substring[0];\n\n    if (firstCharacter === \"'\") {\n      return cleanEscapedString(substring);\n    }\n\n    var formatter = formatters[firstCharacter];\n\n    if (formatter) {\n      if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(substring)) {\n        throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n      }\n\n      if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(substring)) {\n        throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n      }\n\n      return formatter(utcDate, substring, locale.localize, formatterOptions);\n    }\n\n    if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n      throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n    }\n\n    return substring;\n  }).join('');\n  return result;\n}\n\nfunction cleanEscapedString(input) {\n  return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.tileProps = exports.tileGroupProps = exports.isView = exports.isClassName = exports.isViews = exports.isValue = exports.isMaxDate = exports.isMinDate = exports.isCalendarType = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar calendarTypes = ['ISO 8601', 'US', 'Arabic', 'Hebrew'];\nvar allViews = ['century', 'decade', 'year', 'month'];\n\nvar isCalendarType = _propTypes[\"default\"].oneOf(calendarTypes);\n\nexports.isCalendarType = isCalendarType;\n\nvar isMinDate = function isMinDate(props, propName, componentName) {\n  var minDate = props[propName];\n\n  if (minDate) {\n    if (!(minDate instanceof Date)) {\n      return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(minDate), \"` supplied to `\").concat(componentName, \"`, expected instance of `Date`.\"));\n    }\n\n    var maxDate = props.maxDate;\n\n    if (maxDate && minDate > maxDate) {\n      return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(minDate), \"` supplied to `\").concat(componentName, \"`, minDate cannot be larger than maxDate.\"));\n    }\n  } // Everything is fine\n\n\n  return null;\n};\n\nexports.isMinDate = isMinDate;\n\nvar isMaxDate = function isMaxDate(props, propName, componentName) {\n  var maxDate = props[propName];\n\n  if (maxDate) {\n    if (!(maxDate instanceof Date)) {\n      return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(maxDate), \"` supplied to `\").concat(componentName, \"`, expected instance of `Date`.\"));\n    }\n\n    var minDate = props.minDate;\n\n    if (minDate && maxDate < minDate) {\n      return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(maxDate), \"` supplied to `\").concat(componentName, \"`, maxDate cannot be smaller than minDate.\"));\n    }\n  } // Everything is fine\n\n\n  return null;\n};\n\nexports.isMaxDate = isMaxDate;\n\nvar isValue = _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].instanceOf(Date), _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].instanceOf(Date))]);\n\nexports.isValue = isValue;\n\nvar isViews = _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].oneOf(allViews));\n\nexports.isViews = isViews;\n\nvar isClassName = _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].string)]);\n\nexports.isClassName = isClassName;\n\nvar isView = function isView(props, propName, componentName) {\n  var view = props[propName];\n  var views = props.views;\n  var allowedViews = views || allViews;\n\n  if (view !== undefined && allowedViews.indexOf(view) === -1) {\n    return new Error(\"Invalid prop `\".concat(propName, \"` of value `\").concat(view, \"` supplied to `\").concat(componentName, \"`, expected one of [\").concat(allowedViews.map(function (a) {\n      return \"\\\"\".concat(a, \"\\\"\");\n    }).join(', '), \"].\"));\n  } // Everything is fine\n\n\n  return null;\n};\n\nexports.isView = isView;\n\nisView.isRequired = function (props, propName, componentName) {\n  var view = props[propName];\n\n  if (!view) {\n    return new Error(\"The prop `\".concat(propName, \"` is marked as required in `\").concat(componentName, \"`, but its value is `\").concat(view, \"`.\"));\n  }\n\n  return isView(props, propName, componentName);\n};\n\nvar tileGroupProps = {\n  activeStartDate: _propTypes[\"default\"].instanceOf(Date).isRequired,\n  hover: _propTypes[\"default\"].instanceOf(Date),\n  locale: _propTypes[\"default\"].string,\n  maxDate: isMaxDate,\n  minDate: isMinDate,\n  onClick: _propTypes[\"default\"].func,\n  onMouseOver: _propTypes[\"default\"].func,\n  tileClassName: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].func, isClassName]),\n  tileContent: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].func, _propTypes[\"default\"].node]),\n  value: isValue,\n  valueType: _propTypes[\"default\"].string\n};\nexports.tileGroupProps = tileGroupProps;\nvar tileProps = {\n  activeStartDate: _propTypes[\"default\"].instanceOf(Date).isRequired,\n  classes: _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].string).isRequired,\n  date: _propTypes[\"default\"].instanceOf(Date).isRequired,\n  locale: _propTypes[\"default\"].string,\n  maxDate: isMaxDate,\n  minDate: isMinDate,\n  onClick: _propTypes[\"default\"].func,\n  onMouseOver: _propTypes[\"default\"].func,\n  style: _propTypes[\"default\"].objectOf(_propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].number])),\n  tileClassName: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].func, isClassName]),\n  tileContent: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].func, _propTypes[\"default\"].node]),\n  tileDisabled: _propTypes[\"default\"].func\n};\nexports.tileProps = tileProps;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.getYear = getYear;\nexports.getMonth = getMonth;\nexports.getMonthIndex = getMonthIndex;\nexports.getDay = getDay;\nexports.getDayOfWeek = getDayOfWeek;\nexports.getBeginOfCenturyYear = getBeginOfCenturyYear;\nexports.getBeginOfCentury = getBeginOfCentury;\nexports.getEndOfCentury = getEndOfCentury;\nexports.getCenturyRange = getCenturyRange;\nexports.getBeginOfPreviousCentury = getBeginOfPreviousCentury;\nexports.getEndOfPreviousCentury = getEndOfPreviousCentury;\nexports.getBeginOfNextCentury = getBeginOfNextCentury;\nexports.getBeginOfDecadeYear = getBeginOfDecadeYear;\nexports.getBeginOfDecade = getBeginOfDecade;\nexports.getEndOfDecade = getEndOfDecade;\nexports.getDecadeRange = getDecadeRange;\nexports.getBeginOfPreviousDecade = getBeginOfPreviousDecade;\nexports.getEndOfPreviousDecade = getEndOfPreviousDecade;\nexports.getBeginOfNextDecade = getBeginOfNextDecade;\nexports.getBeginOfYear = getBeginOfYear;\nexports.getEndOfYear = getEndOfYear;\nexports.getYearRange = getYearRange;\nexports.getBeginOfPreviousYear = getBeginOfPreviousYear;\nexports.getEndOfPreviousYear = getEndOfPreviousYear;\nexports.getBeginOfNextYear = getBeginOfNextYear;\nexports.getBeginOfMonth = getBeginOfMonth;\nexports.getEndOfMonth = getEndOfMonth;\nexports.getBeginOfWeek = getBeginOfWeek;\nexports.getMonthRange = getMonthRange;\nexports.getBeginOfPreviousMonth = getBeginOfPreviousMonth;\nexports.getEndOfPreviousMonth = getEndOfPreviousMonth;\nexports.getBeginOfNextMonth = getBeginOfNextMonth;\nexports.getBeginOfDay = getBeginOfDay;\nexports.getEndOfDay = getEndOfDay;\nexports.getDayRange = getDayRange;\nexports.getWeekNumber = getWeekNumber;\nexports.getBegin = getBegin;\nexports.getBeginPrevious = getBeginPrevious;\nexports.getBeginNext = getBeginNext;\nexports.getEnd = getEnd;\nexports.getEndPrevious = getEndPrevious;\nexports.getRange = getRange;\nexports.getValueRange = getValueRange;\nexports.getDaysInMonth = getDaysInMonth;\nexports.getCenturyLabel = getCenturyLabel;\nexports.getDecadeLabel = getDecadeLabel;\nexports.isWeekend = isWeekend;\nexports.getISOLocalMonth = getISOLocalMonth;\nexports.getISOLocalDate = getISOLocalDate;\nexports.getEndPrevious2 = exports.getBeginNext2 = exports.getBeginPrevious2 = void 0;\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nvar _map = _toConsumableArray(Array(7)).map(function (el, index) {\n  return index;\n}),\n    _map2 = _slicedToArray(_map, 7),\n    // eslint-disable-next-line no-unused-vars\nSUNDAY = _map2[0],\n    MONDAY = _map2[1],\n    TUESDAY = _map2[2],\n    WEDNESDAY = _map2[3],\n    THURSDAY = _map2[4],\n    FRIDAY = _map2[5],\n    SATURDAY = _map2[6];\n/* Simple getters - getting a property of a given point in time */\n\n\nfunction getYear(date) {\n  if (date instanceof Date) {\n    return date.getFullYear();\n  }\n\n  if (typeof date === 'number') {\n    return date;\n  }\n\n  var year = parseInt(date, 10);\n\n  if (typeof date === 'string' && !isNaN(year)) {\n    return year;\n  }\n\n  throw new Error(\"Failed to get year from date: \".concat(date, \".\"));\n}\n\nfunction getMonth(date) {\n  return date.getMonth() + 1;\n}\n\nfunction getMonthIndex(date) {\n  return date.getMonth();\n}\n\nfunction getDay(date) {\n  return date.getDate();\n}\n\nfunction getDayOfWeek(date) {\n  var calendarType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'ISO 8601';\n  var weekday = date.getDay();\n\n  switch (calendarType) {\n    case 'ISO 8601':\n      // Shifts days of the week so that Monday is 0, Sunday is 6\n      return (weekday + 6) % 7;\n\n    case 'Arabic':\n      return (weekday + 1) % 7;\n\n    case 'Hebrew':\n    case 'US':\n      return weekday;\n\n    default:\n      throw new Error('Unsupported calendar type.');\n  }\n}\n/* Complex getters - getting a property somehow related to a given point in time */\n\n\nfunction getBeginOfCenturyYear(date) {\n  var year = getYear(date) - 1;\n  return year + -year % 100 + 1;\n}\n\nfunction getBeginOfCentury(date) {\n  var beginOfCenturyYear = getBeginOfCenturyYear(date);\n  return new Date(beginOfCenturyYear, 0, 1);\n}\n\nfunction getEndOfCentury(date) {\n  var beginOfCenturyYear = getBeginOfCenturyYear(date);\n  return new Date(beginOfCenturyYear + 100, 0, 1, 0, 0, 0, -1);\n}\n\nfunction getCenturyRange(date) {\n  return [getBeginOfCentury(date), getEndOfCentury(date)];\n}\n\nfunction getBeginOfPreviousCentury(date) {\n  var previousCenturyYear = getYear(date) - 100;\n  return getBeginOfCentury(previousCenturyYear);\n}\n\nfunction getEndOfPreviousCentury(date) {\n  var previousCenturyYear = getYear(date) - 100;\n  return getEndOfCentury(previousCenturyYear);\n}\n\nfunction getBeginOfNextCentury(date) {\n  var nextCenturyYear = getYear(date) + 100;\n  return getBeginOfCentury(nextCenturyYear);\n}\n\nfunction getBeginOfDecadeYear(date) {\n  var year = getYear(date) - 1;\n  return year + -year % 10 + 1;\n}\n\nfunction getBeginOfDecade(date) {\n  var beginOfDecadeYear = getBeginOfDecadeYear(date);\n  return new Date(beginOfDecadeYear, 0, 1);\n}\n\nfunction getEndOfDecade(date) {\n  var beginOfDecadeYear = getBeginOfDecadeYear(date);\n  return new Date(beginOfDecadeYear + 10, 0, 1, 0, 0, 0, -1);\n}\n\nfunction getDecadeRange(date) {\n  return [getBeginOfDecade(date), getEndOfDecade(date)];\n}\n\nfunction getBeginOfPreviousDecade(date) {\n  var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10;\n  var previousDecadeYear = getBeginOfDecadeYear(date) - offset;\n  return getBeginOfDecade(previousDecadeYear);\n}\n\nfunction getEndOfPreviousDecade(date) {\n  var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10;\n  var previousDecadeYear = getBeginOfDecadeYear(date) - offset;\n  return getEndOfDecade(previousDecadeYear);\n}\n\nfunction getBeginOfNextDecade(date) {\n  var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10;\n  var nextDecadeYear = getBeginOfDecadeYear(date) + offset;\n  return getBeginOfDecade(nextDecadeYear);\n}\n/**\n * Returns the beginning of a given year.\n *\n * @param {Date} date Date.\n */\n\n\nfunction getBeginOfYear(date) {\n  var year = getYear(date);\n  return new Date(year, 0, 1);\n}\n/**\n * Returns the end of a given year.\n *\n * @param {Date} date Date.\n */\n\n\nfunction getEndOfYear(date) {\n  var year = getYear(date);\n  return new Date(year + 1, 0, 1, 0, 0, 0, -1);\n}\n/**\n * Returns an array with the beginning and the end of a given year.\n *\n * @param {Date} date Date.\n */\n\n\nfunction getYearRange(date) {\n  return [getBeginOfYear(date), getEndOfYear(date)];\n}\n\nfunction getBeginOfPreviousYear(date) {\n  var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n  var previousYear = getYear(date) - offset;\n  return getBeginOfYear(previousYear);\n}\n\nfunction getEndOfPreviousYear(date) {\n  var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n  var previousYear = getYear(date) - offset;\n  return getEndOfYear(previousYear);\n}\n\nfunction getBeginOfNextYear(date) {\n  var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n  var nextYear = getYear(date) + offset;\n  return getBeginOfYear(nextYear);\n}\n/**\n * Returns the beginning of a given month.\n *\n * @param {Date} date Date.\n */\n\n\nfunction getBeginOfMonth(date) {\n  var year = getYear(date);\n  var monthIndex = getMonthIndex(date);\n  return new Date(year, monthIndex, 1);\n}\n/**\n * Returns the end of a given month.\n *\n * @param {Date} date Date.\n */\n\n\nfunction getEndOfMonth(date) {\n  var year = getYear(date);\n  var monthIndex = getMonthIndex(date);\n  return new Date(year, monthIndex + 1, 1, 0, 0, 0, -1);\n}\n/**\n * Returns the beginning of a given week.\n *\n * @param {Date} date Date.\n * @param {String} calendarType Calendar type. Can be ISO 8601 or US.\n */\n\n\nfunction getBeginOfWeek(date) {\n  var calendarType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'ISO 8601';\n  var year = getYear(date);\n  var monthIndex = getMonthIndex(date);\n  var day = date.getDate() - getDayOfWeek(date, calendarType);\n  return new Date(year, monthIndex, day);\n}\n/**\n * Returns an array with the beginning and the end of a given month.\n *\n * @param {Date} date Date.\n */\n\n\nfunction getMonthRange(date) {\n  return [getBeginOfMonth(date), getEndOfMonth(date)];\n}\n\nfunction getDifferentMonth(date, offset) {\n  var year = getYear(date);\n  var previousMonthIndex = getMonthIndex(date) + offset;\n  return new Date(year, previousMonthIndex, 1);\n}\n\nfunction getBeginOfPreviousMonth(date) {\n  var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n  var previousMonth = getDifferentMonth(date, -offset);\n  return getBeginOfMonth(previousMonth);\n}\n\nfunction getEndOfPreviousMonth(date) {\n  var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n  var previousMonth = getDifferentMonth(date, -offset);\n  return getEndOfMonth(previousMonth);\n}\n\nfunction getBeginOfNextMonth(date) {\n  var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n  var nextMonth = getDifferentMonth(date, offset);\n  return getBeginOfMonth(nextMonth);\n}\n\nfunction getBeginOfDay(date) {\n  var year = getYear(date);\n  var monthIndex = getMonthIndex(date);\n  var day = getDay(date);\n  return new Date(year, monthIndex, day);\n}\n\nfunction getEndOfDay(date) {\n  var year = getYear(date);\n  var monthIndex = getMonthIndex(date);\n  var day = getDay(date);\n  return new Date(year, monthIndex, day + 1, 0, 0, 0, -1);\n}\n/**\n * Returns an array with the beginning and the end of a given day.\n *\n * @param {Date} date Date.\n */\n\n\nfunction getDayRange(date) {\n  return [getBeginOfDay(date), getEndOfDay(date)];\n}\n/**\n * Gets week number according to ISO 8601 or US standard.\n * In ISO 8601, Arabic and Hebrew week 1 is the one with January 4.\n * In US calendar week 1 is the one with January 1.\n *\n * @param {Date} date Date.\n * @param {String} calendarType Calendar type. Can be ISO 8601 or US.\n */\n\n\nfunction getWeekNumber(date) {\n  var calendarType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'ISO 8601';\n  var calendarTypeForWeekNumber = calendarType === 'US' ? 'US' : 'ISO 8601';\n  var beginOfWeek = getBeginOfWeek(date, calendarTypeForWeekNumber);\n  var year = getYear(date) + 1;\n  var dayInWeekOne;\n  var beginOfFirstWeek; // Look for the first week one that does not come after a given date\n\n  do {\n    dayInWeekOne = new Date(year, 0, calendarTypeForWeekNumber === 'ISO 8601' ? 4 : 1);\n    beginOfFirstWeek = getBeginOfWeek(dayInWeekOne, calendarTypeForWeekNumber);\n    year -= 1;\n  } while (date - beginOfFirstWeek < 0);\n\n  return Math.round((beginOfWeek - beginOfFirstWeek) / (8.64e7 * 7)) + 1;\n}\n/**\n * Returns the beginning of a given range.\n *\n * @param {String} rangeType Range type (e.g. 'day')\n * @param {Date} date Date.\n */\n\n\nfunction getBegin(rangeType, date) {\n  switch (rangeType) {\n    case 'century':\n      return getBeginOfCentury(date);\n\n    case 'decade':\n      return getBeginOfDecade(date);\n\n    case 'year':\n      return getBeginOfYear(date);\n\n    case 'month':\n      return getBeginOfMonth(date);\n\n    case 'day':\n      return getBeginOfDay(date);\n\n    default:\n      throw new Error(\"Invalid rangeType: \".concat(rangeType));\n  }\n}\n\nfunction getBeginPrevious(rangeType, date) {\n  switch (rangeType) {\n    case 'century':\n      return getBeginOfPreviousCentury(date);\n\n    case 'decade':\n      return getBeginOfPreviousDecade(date);\n\n    case 'year':\n      return getBeginOfPreviousYear(date);\n\n    case 'month':\n      return getBeginOfPreviousMonth(date);\n\n    default:\n      throw new Error(\"Invalid rangeType: \".concat(rangeType));\n  }\n}\n\nfunction getBeginNext(rangeType, date) {\n  switch (rangeType) {\n    case 'century':\n      return getBeginOfNextCentury(date);\n\n    case 'decade':\n      return getBeginOfNextDecade(date);\n\n    case 'year':\n      return getBeginOfNextYear(date);\n\n    case 'month':\n      return getBeginOfNextMonth(date);\n\n    default:\n      throw new Error(\"Invalid rangeType: \".concat(rangeType));\n  }\n}\n\nvar getBeginPrevious2 = function getBeginPrevious2(rangeType, date) {\n  switch (rangeType) {\n    case 'decade':\n      return getBeginOfPreviousDecade(date, 100);\n\n    case 'year':\n      return getBeginOfPreviousYear(date, 10);\n\n    case 'month':\n      return getBeginOfPreviousMonth(date, 12);\n\n    default:\n      throw new Error(\"Invalid rangeType: \".concat(rangeType));\n  }\n};\n\nexports.getBeginPrevious2 = getBeginPrevious2;\n\nvar getBeginNext2 = function getBeginNext2(rangeType, date) {\n  switch (rangeType) {\n    case 'decade':\n      return getBeginOfNextDecade(date, 100);\n\n    case 'year':\n      return getBeginOfNextYear(date, 10);\n\n    case 'month':\n      return getBeginOfNextMonth(date, 12);\n\n    default:\n      throw new Error(\"Invalid rangeType: \".concat(rangeType));\n  }\n};\n/**\n * Returns the end of a given range.\n *\n * @param {String} rangeType Range type (e.g. 'day')\n * @param {Date} date Date.\n */\n\n\nexports.getBeginNext2 = getBeginNext2;\n\nfunction getEnd(rangeType, date) {\n  switch (rangeType) {\n    case 'century':\n      return getEndOfCentury(date);\n\n    case 'decade':\n      return getEndOfDecade(date);\n\n    case 'year':\n      return getEndOfYear(date);\n\n    case 'month':\n      return getEndOfMonth(date);\n\n    case 'day':\n      return getEndOfDay(date);\n\n    default:\n      throw new Error(\"Invalid rangeType: \".concat(rangeType));\n  }\n}\n\nfunction getEndPrevious(rangeType, date) {\n  switch (rangeType) {\n    case 'century':\n      return getEndOfPreviousCentury(date);\n\n    case 'decade':\n      return getEndOfPreviousDecade(date);\n\n    case 'year':\n      return getEndOfPreviousYear(date);\n\n    case 'month':\n      return getEndOfPreviousMonth(date);\n\n    default:\n      throw new Error(\"Invalid rangeType: \".concat(rangeType));\n  }\n}\n\nvar getEndPrevious2 = function getEndPrevious2(rangeType, date) {\n  switch (rangeType) {\n    case 'decade':\n      return getEndOfPreviousDecade(date, 100);\n\n    case 'year':\n      return getEndOfPreviousYear(date, 10);\n\n    case 'month':\n      return getEndOfPreviousMonth(date, 12);\n\n    default:\n      throw new Error(\"Invalid rangeType: \".concat(rangeType));\n  }\n};\n/**\n * Returns an array with the beginning and the end of a given range.\n *\n * @param {String} rangeType Range type (e.g. 'day')\n * @param {Date} date Date.\n */\n\n\nexports.getEndPrevious2 = getEndPrevious2;\n\nfunction getRange(rangeType, date) {\n  switch (rangeType) {\n    case 'century':\n      return getCenturyRange(date);\n\n    case 'decade':\n      return getDecadeRange(date);\n\n    case 'year':\n      return getYearRange(date);\n\n    case 'month':\n      return getMonthRange(date);\n\n    case 'day':\n      return getDayRange(date);\n\n    default:\n      throw new Error(\"Invalid rangeType: \".concat(rangeType));\n  }\n}\n/**\n * Creates a range out of two values, ensuring they are in order and covering entire period ranges.\n *\n * @param {String} rangeType Range type (e.g. 'day')\n * @param {Date} date1 First date.\n * @param {Date} date2 Second date.\n */\n\n\nfunction getValueRange(rangeType, date1, date2) {\n  var rawNextValue = [date1, date2].sort(function (a, b) {\n    return a - b;\n  });\n  return [getBegin(rangeType, rawNextValue[0]), getEnd(rangeType, rawNextValue[1])];\n}\n/**\n * Returns a number of days in a month of a given date.\n *\n * @param {Date} date Date.\n */\n\n\nfunction getDaysInMonth(date) {\n  var year = getYear(date);\n  var monthIndex = getMonthIndex(date);\n  return new Date(year, monthIndex + 1, 0).getDate();\n}\n\nfunction toYearLabel(_ref) {\n  var _ref2 = _slicedToArray(_ref, 2),\n      start = _ref2[0],\n      end = _ref2[1];\n\n  return \"\".concat(getYear(start), \" \\u2013 \").concat(getYear(end));\n}\n/**\n * Returns a string labelling a century of a given date.\n * For example, for 2017 it will return 2001-2100.\n *\n * @param {Date|String|Number} date Date or a year as a string or as a number.\n */\n\n\nfunction getCenturyLabel(date) {\n  return toYearLabel(getCenturyRange(date));\n}\n/**\n * Returns a string labelling a century of a given date.\n * For example, for 2017 it will return 2011-2020.\n *\n * @param {Date|String|Number} date Date or a year as a string or as a number.\n */\n\n\nfunction getDecadeLabel(date) {\n  return toYearLabel(getDecadeRange(date));\n}\n/**\n * Returns a boolean determining whether a given date is on Saturday or Sunday.\n *\n * @param {Date} date Date.\n */\n\n\nfunction isWeekend(date) {\n  var calendarType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'ISO 8601';\n  var weekday = date.getDay();\n\n  switch (calendarType) {\n    case 'Arabic':\n    case 'Hebrew':\n      return weekday === FRIDAY || weekday === SATURDAY;\n\n    case 'ISO 8601':\n    case 'US':\n      return weekday === SATURDAY || weekday === SUNDAY;\n\n    default:\n      throw new Error('Unsupported calendar type.');\n  }\n}\n/**\n * Returns local month in ISO-like format (YYYY-MM).\n */\n\n\nfunction getISOLocalMonth(value) {\n  if (!value) {\n    return value;\n  }\n\n  var date = new Date(value);\n\n  if (isNaN(date.getTime())) {\n    throw new Error(\"Invalid date: \".concat(value));\n  }\n\n  var year = getYear(date);\n  var month = \"0\".concat(getMonth(date)).slice(-2);\n  return \"\".concat(year, \"-\").concat(month);\n}\n/**\n * Returns local date in ISO-like format (YYYY-MM-DD).\n */\n\n\nfunction getISOLocalDate(value) {\n  if (!value) {\n    return value;\n  }\n\n  var date = new Date(value);\n\n  if (isNaN(date.getTime())) {\n    throw new Error(\"Invalid date: \".concat(value));\n  }\n\n  var year = getYear(date);\n  var month = \"0\".concat(getMonth(date)).slice(-2);\n  var day = \"0\".concat(getDay(date)).slice(-2);\n  return \"\".concat(year, \"-\").concat(month, \"-\").concat(day);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.isValueType = exports.isTime = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar allViews = ['hour', 'minute', 'second'];\nvar allValueTypes = [].concat(allViews);\nvar hourOptionalSecondsRegExp = /^(([0-1])?[0-9]|2[0-3]):[0-5][0-9](:([0-5][0-9]))?$/;\n\nvar isTime = function isTime(props, propName, componentName) {\n  var time = props[propName];\n\n  if (time) {\n    if (!hourOptionalSecondsRegExp.test(time)) {\n      return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(typeof minDate === \"undefined\" ? \"undefined\" : _typeof(minDate), \"` supplied to `\").concat(componentName, \"`, expected time in HH:mm(:ss) format.\"));\n    }\n  } // Everything is fine\n\n\n  return null;\n};\n\nexports.isTime = isTime;\n\nvar isValueType = _propTypes[\"default\"].oneOf(allValueTypes);\n\nexports.isValueType = isValueType;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.callIfDefined = exports.getAmPmLabels = exports.max = exports.min = void 0;\n\nvar _dateFormatter = require(\"./dateFormatter\");\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nvar isValidNumber = function isValidNumber(a) {\n  return typeof a === 'number' && !isNaN(a);\n};\n\nvar min = function min() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return Math.min.apply(Math, _toConsumableArray(args.filter(isValidNumber)));\n};\n\nexports.min = min;\n\nvar max = function max() {\n  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    args[_key2] = arguments[_key2];\n  }\n\n  return Math.max.apply(Math, _toConsumableArray(args.filter(isValidNumber)));\n};\n\nexports.max = max;\nvar nines = ['9', '٩'];\nvar ninesRegExp = new RegExp(\"[\".concat(nines.join(''), \"]\"));\nvar amPmFormatter = (0, _dateFormatter.getFormatter)({\n  hour: 'numeric'\n});\n\nvar getAmPmLabels = function getAmPmLabels(locale) {\n  var amString = amPmFormatter(locale, new Date(2017, 0, 1, 9));\n  var pmString = amPmFormatter(locale, new Date(2017, 0, 1, 21));\n\n  var _amString$split = amString.split(ninesRegExp),\n      _amString$split2 = _slicedToArray(_amString$split, 2),\n      am1 = _amString$split2[0],\n      am2 = _amString$split2[1];\n\n  var _pmString$split = pmString.split(ninesRegExp),\n      _pmString$split2 = _slicedToArray(_pmString$split, 2),\n      pm1 = _pmString$split2[0],\n      pm2 = _pmString$split2[1];\n\n  if (pm2 !== undefined) {\n    // If pm2 is undefined, nine was not found in pmString - this locale is not using 12-hour time\n    if (am1 !== pm1) {\n      return [am1, pm1].map(function (el) {\n        return el.trim();\n      });\n    }\n\n    if (am2 !== pm2) {\n      return [am2, pm2].map(function (el) {\n        return el.trim();\n      });\n    }\n  } // Fallback\n\n\n  return ['AM', 'PM'];\n};\n/**\n * Calls a function, if it's defined, with specified arguments\n * @param {Function} fn\n * @param {Object} args\n */\n\n\nexports.getAmPmLabels = getAmPmLabels;\n\nvar callIfDefined = function callIfDefined(fn) {\n  if (fn && typeof fn === 'function') {\n    for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n      args[_key3 - 1] = arguments[_key3];\n    }\n\n    fn.apply(void 0, args);\n  }\n};\n\nexports.callIfDefined = callIfDefined;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.between = between;\nexports.callIfDefined = callIfDefined;\nexports.safeMin = safeMin;\nexports.safeMax = safeMax;\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\n/**\n * Returns a value no smaller than min and no larger than max.\n *\n * @param {*} value Value to return.\n * @param {*} min Minimum return value.\n * @param {*} max Maximum return value.\n */\nfunction between(value, min, max) {\n  if (min && min > value) {\n    return min;\n  }\n\n  if (max && max < value) {\n    return max;\n  }\n\n  return value;\n}\n/**\n * Calls a function, if it's defined, with specified arguments\n * @param {Function} fn\n * @param {Object} args\n */\n\n\nfunction callIfDefined(fn) {\n  if (fn && typeof fn === 'function') {\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    fn.apply(void 0, args);\n  }\n}\n\nfunction isValidNumber(num) {\n  return num !== null && num !== false && !Number.isNaN(Number(num));\n}\n\nfunction safeMin() {\n  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    args[_key2] = arguments[_key2];\n  }\n\n  return Math.min.apply(Math, _toConsumableArray(args.filter(isValidNumber)));\n}\n\nfunction safeMax() {\n  for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n    args[_key3] = arguments[_key3];\n  }\n\n  return Math.max.apply(Math, _toConsumableArray(args.filter(isValidNumber)));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.formatShortWeekday = exports.formatWeekday = exports.formatMonth = exports.formatMonthYear = exports.formatLongDate = exports.formatDate = void 0;\n\nvar _getUserLocale = _interopRequireDefault(require(\"get-user-locale\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction getFormatter(options) {\n  return function (locale, date) {\n    return date.toLocaleString(locale || (0, _getUserLocale[\"default\"])(), options);\n  };\n}\n/**\n * Changes the hour in a Date to ensure right date formatting even if DST is messed up.\n * Workaround for bug in WebKit and Firefox with historical dates.\n * For more details, see:\n * https://bugs.chromium.org/p/chromium/issues/detail?id=750465\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1385643\n *\n * @param {Date} date Date.\n */\n\n\nfunction toSafeHour(date) {\n  var safeDate = new Date(date);\n  return new Date(safeDate.setHours(12));\n}\n\nfunction getSafeFormatter(options) {\n  return function (locale, date) {\n    return getFormatter(options)(locale, toSafeHour(date));\n  };\n}\n\nvar formatDateOptions = {\n  day: 'numeric',\n  month: 'numeric',\n  year: 'numeric'\n};\nvar formatLongDateOptions = {\n  day: 'numeric',\n  month: 'long',\n  year: 'numeric'\n};\nvar formatMonthYearOptions = {\n  month: 'long',\n  year: 'numeric'\n};\nvar formatMonthOptions = {\n  month: 'long'\n};\nvar formatWeekdayOptions = {\n  weekday: 'long'\n};\nvar formatShortWeekdayOptions = {\n  weekday: 'short'\n};\nvar formatDate = getSafeFormatter(formatDateOptions);\nexports.formatDate = formatDate;\nvar formatLongDate = getSafeFormatter(formatLongDateOptions);\nexports.formatLongDate = formatLongDate;\nvar formatMonthYear = getSafeFormatter(formatMonthYearOptions);\nexports.formatMonthYear = formatMonthYear;\nvar formatMonth = getSafeFormatter(formatMonthOptions);\nexports.formatMonth = formatMonth;\nvar formatWeekday = getSafeFormatter(formatWeekdayOptions);\nexports.formatWeekday = formatWeekday;\nvar formatShortWeekday = getSafeFormatter(formatShortWeekdayOptions);\nexports.formatShortWeekday = formatShortWeekday;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = TileGroup;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _Flex = _interopRequireDefault(require(\"./Flex\"));\n\nvar _utils = require(\"./shared/utils\");\n\nvar _propTypes2 = require(\"./shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction TileGroup(_ref) {\n  var className = _ref.className,\n      count = _ref.count,\n      dateTransform = _ref.dateTransform,\n      dateType = _ref.dateType,\n      end = _ref.end,\n      hover = _ref.hover,\n      offset = _ref.offset,\n      start = _ref.start,\n      step = _ref.step,\n      Tile = _ref.tile,\n      value = _ref.value,\n      valueType = _ref.valueType,\n      tileProps = _objectWithoutProperties(_ref, [\"className\", \"count\", \"dateTransform\", \"dateType\", \"end\", \"hover\", \"offset\", \"start\", \"step\", \"tile\", \"value\", \"valueType\"]);\n\n  var tiles = [];\n\n  for (var point = start; point <= end; point += step) {\n    var date = dateTransform(point);\n    tiles.push(_react[\"default\"].createElement(Tile, _extends({\n      key: date.getTime(),\n      classes: (0, _utils.getTileClasses)({\n        value: value,\n        valueType: valueType,\n        date: date,\n        dateType: dateType,\n        hover: hover\n      }),\n      date: date,\n      point: point\n    }, tileProps)));\n  }\n\n  return _react[\"default\"].createElement(_Flex[\"default\"], {\n    className: className,\n    count: count,\n    offset: offset,\n    wrap: true\n  }, tiles);\n}\n\nTileGroup.propTypes = _objectSpread({}, _propTypes2.tileGroupProps, {\n  activeStartDate: _propTypes[\"default\"].instanceOf(Date),\n  count: _propTypes[\"default\"].number,\n  dateTransform: _propTypes[\"default\"].func.isRequired,\n  offset: _propTypes[\"default\"].number,\n  step: _propTypes[\"default\"].number,\n  tile: _propTypes[\"default\"].func.isRequired\n});\nTileGroup.defaultProps = {\n  count: 3,\n  step: 1\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _mergeClassNames = _interopRequireDefault(require(\"merge-class-names\"));\n\nvar _propTypes2 = require(\"./shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Tile =\n/*#__PURE__*/\nfunction (_Component) {\n  _inherits(Tile, _Component);\n\n  function Tile() {\n    var _getPrototypeOf2;\n\n    var _this;\n\n    _classCallCheck(this, Tile);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Tile)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n    _defineProperty(_assertThisInitialized(_this), \"state\", {});\n\n    return _this;\n  }\n\n  _createClass(Tile, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          activeStartDate = _this$props.activeStartDate,\n          children = _this$props.children,\n          classes = _this$props.classes,\n          date = _this$props.date,\n          formatAbbr = _this$props.formatAbbr,\n          locale = _this$props.locale,\n          maxDate = _this$props.maxDate,\n          maxDateTransform = _this$props.maxDateTransform,\n          minDate = _this$props.minDate,\n          minDateTransform = _this$props.minDateTransform,\n          onClick = _this$props.onClick,\n          onMouseOver = _this$props.onMouseOver,\n          style = _this$props.style,\n          tileDisabled = _this$props.tileDisabled,\n          view = _this$props.view;\n      var _this$state = this.state,\n          tileClassName = _this$state.tileClassName,\n          tileContent = _this$state.tileContent;\n      return _react[\"default\"].createElement(\"button\", {\n        className: (0, _mergeClassNames[\"default\"])(classes, tileClassName),\n        disabled: minDate && minDateTransform(minDate) > date || maxDate && maxDateTransform(maxDate) < date || tileDisabled && tileDisabled({\n          activeStartDate: activeStartDate,\n          date: date,\n          view: view\n        }),\n        onClick: onClick && function () {\n          return onClick(date);\n        },\n        onFocus: onMouseOver && function () {\n          return onMouseOver(date);\n        },\n        onMouseOver: onMouseOver && function () {\n          return onMouseOver(date);\n        },\n        style: style,\n        type: \"button\"\n      }, formatAbbr ? _react[\"default\"].createElement(\"abbr\", {\n        \"aria-label\": formatAbbr(locale, date)\n      }, children) : children, tileContent);\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps, prevState) {\n      var date = nextProps.date,\n          tileClassName = nextProps.tileClassName,\n          tileContent = nextProps.tileContent,\n          view = nextProps.view;\n      var nextState = {};\n\n      if (tileClassName !== prevState.tileClassNameProps) {\n        nextState.tileClassName = typeof tileClassName === 'function' ? tileClassName({\n          date: date,\n          view: view\n        }) : tileClassName;\n        nextState.tileClassNameProps = tileClassName;\n      }\n\n      if (tileContent !== prevState.tileContentProps) {\n        nextState.tileContent = typeof tileContent === 'function' ? tileContent({\n          date: date,\n          view: view\n        }) : tileContent;\n        nextState.tileContentProps = tileContent;\n      }\n\n      return nextState;\n    }\n  }]);\n\n  return Tile;\n}(_react.Component);\n\nexports[\"default\"] = Tile;\nTile.propTypes = _objectSpread({}, _propTypes2.tileProps, {\n  children: _propTypes[\"default\"].node.isRequired,\n  formatAbbr: _propTypes[\"default\"].func,\n  maxDateTransform: _propTypes[\"default\"].func.isRequired,\n  minDateTransform: _propTypes[\"default\"].func.isRequired\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.isMaxDate = exports.isMinDate = exports.isValueType = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nvar allViews = ['century', 'decade', 'year', 'month'];\nvar allValueTypes = [].concat(_toConsumableArray(allViews.slice(1)), ['day']);\n\nvar isValueType = _propTypes[\"default\"].oneOf(allValueTypes);\n\nexports.isValueType = isValueType;\n\nvar isMinDate = function isMinDate(props, propName, componentName) {\n  var minDate = props[propName];\n\n  if (!minDate) {\n    return null;\n  }\n\n  if (!(minDate instanceof Date)) {\n    return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(minDate), \"` supplied to `\").concat(componentName, \"`, expected instance of `Date`.\"));\n  }\n\n  var maxDate = props.maxDate;\n\n  if (maxDate && minDate > maxDate) {\n    return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(minDate), \"` supplied to `\").concat(componentName, \"`, minDate cannot be larger than maxDate.\"));\n  }\n\n  return null;\n};\n\nexports.isMinDate = isMinDate;\n\nvar isMaxDate = function isMaxDate(props, propName, componentName) {\n  var maxDate = props[propName];\n\n  if (!maxDate) {\n    return null;\n  }\n\n  if (!(maxDate instanceof Date)) {\n    return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(maxDate), \"` supplied to `\").concat(componentName, \"`, expected instance of `Date`.\"));\n  }\n\n  var minDate = props.minDate;\n\n  if (minDate && maxDate < minDate) {\n    return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(maxDate), \"` supplied to `\").concat(componentName, \"`, maxDate cannot be smaller than minDate.\"));\n  }\n\n  return null;\n};\n\nexports.isMaxDate = isMaxDate;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = Input;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _mergeClassNames = _interopRequireDefault(require(\"merge-class-names\"));\n\nvar _updateInputWidth = _interopRequireWildcard(require(\"update-input-width\"));\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/* eslint-disable jsx-a11y/no-autofocus */\nfunction onFocus(event) {\n  var target = event.target;\n  requestAnimationFrame(function () {\n    return target.select();\n  });\n}\n\nfunction updateInputWidthOnFontLoad(element) {\n  if (!document.fonts) {\n    return;\n  }\n\n  var font = (0, _updateInputWidth.getFontShorthand)(element);\n\n  if (!font) {\n    return;\n  }\n\n  var isFontLoaded = document.fonts.check(font);\n\n  if (isFontLoaded) {\n    return;\n  }\n\n  function onLoadingDone() {\n    (0, _updateInputWidth[\"default\"])(element);\n  }\n\n  document.fonts.addEventListener('loadingdone', onLoadingDone);\n}\n\nfunction getSelectionString() {\n  if (typeof window === 'undefined') {\n    return null;\n  }\n\n  return window.getSelection().toString();\n}\n\nfunction makeOnKeyPress(maxLength) {\n  return function onKeyPress(event) {\n    var value = event.target.value;\n    var selection = getSelectionString();\n\n    if (selection || value.length < maxLength) {\n      return;\n    }\n\n    event.preventDefault();\n  };\n}\n\nfunction Input(_ref) {\n  var ariaLabel = _ref.ariaLabel,\n      autoFocus = _ref.autoFocus,\n      className = _ref.className,\n      disabled = _ref.disabled,\n      itemRef = _ref.itemRef,\n      max = _ref.max,\n      min = _ref.min,\n      name = _ref.name,\n      nameForClass = _ref.nameForClass,\n      onChange = _ref.onChange,\n      onKeyDown = _ref.onKeyDown,\n      _onKeyUp = _ref.onKeyUp,\n      _ref$placeholder = _ref.placeholder,\n      placeholder = _ref$placeholder === void 0 ? '--' : _ref$placeholder,\n      required = _ref.required,\n      showLeadingZeros = _ref.showLeadingZeros,\n      step = _ref.step,\n      value = _ref.value;\n  var hasLeadingZero = showLeadingZeros && value !== null && value < 10;\n  var maxLength = max.toString().length;\n  return [hasLeadingZero && _react[\"default\"].createElement(\"span\", {\n    key: \"leadingZero\",\n    className: \"\".concat(className, \"__leadingZero\")\n  }, \"0\"), _react[\"default\"].createElement(\"input\", {\n    key: \"input\",\n    \"aria-label\": ariaLabel,\n    autoComplete: \"off\",\n    autoFocus: autoFocus,\n    className: (0, _mergeClassNames[\"default\"])(\"\".concat(className, \"__input\"), \"\".concat(className, \"__\").concat(nameForClass || name), hasLeadingZero && \"\".concat(className, \"__input--hasLeadingZero\")),\n    disabled: disabled,\n    max: max,\n    min: min,\n    name: name,\n    onChange: onChange,\n    onFocus: onFocus,\n    onKeyDown: onKeyDown,\n    onKeyPress: makeOnKeyPress(maxLength),\n    onKeyUp: function onKeyUp(event) {\n      (0, _updateInputWidth[\"default\"])(event.target);\n\n      if (_onKeyUp) {\n        _onKeyUp(event);\n      }\n    },\n    placeholder: placeholder,\n    ref: function ref(_ref2) {\n      if (_ref2) {\n        (0, _updateInputWidth[\"default\"])(_ref2);\n        updateInputWidthOnFontLoad(_ref2);\n      }\n\n      if (itemRef) {\n        itemRef(_ref2, name);\n      }\n    },\n    required: required,\n    step: step,\n    type: \"number\",\n    value: value !== null ? value : ''\n  })];\n}\n\nInput.propTypes = {\n  ariaLabel: _propTypes[\"default\"].string,\n  className: _propTypes[\"default\"].string.isRequired,\n  disabled: _propTypes[\"default\"].bool,\n  itemRef: _propTypes[\"default\"].func,\n  max: _propTypes[\"default\"].number,\n  min: _propTypes[\"default\"].number,\n  onChange: _propTypes[\"default\"].func,\n  onKeyDown: _propTypes[\"default\"].func,\n  required: _propTypes[\"default\"].bool,\n  showLeadingZeros: _propTypes[\"default\"].bool,\n  step: _propTypes[\"default\"].number,\n  value: _propTypes[\"default\"].number\n};","\n'use strict';\n\n\nvar encodeCache = {};\n\n\n// Create a lookup array where anything but characters in `chars` string\n// and alphanumeric chars is percent-encoded.\n//\nfunction getEncodeCache(exclude) {\n  var i, ch, cache = encodeCache[exclude];\n  if (cache) { return cache; }\n\n  cache = encodeCache[exclude] = [];\n\n  for (i = 0; i < 128; i++) {\n    ch = String.fromCharCode(i);\n\n    if (/^[0-9a-z]$/i.test(ch)) {\n      // always allow unencoded alphanumeric characters\n      cache.push(ch);\n    } else {\n      cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2));\n    }\n  }\n\n  for (i = 0; i < exclude.length; i++) {\n    cache[exclude.charCodeAt(i)] = exclude[i];\n  }\n\n  return cache;\n}\n\n\n// Encode unsafe characters with percent-encoding, skipping already\n// encoded sequences.\n//\n//  - string       - string to encode\n//  - exclude      - list of characters to ignore (in addition to a-zA-Z0-9)\n//  - keepEscaped  - don't encode '%' in a correct escape sequence (default: true)\n//\nfunction encode(string, exclude, keepEscaped) {\n  var i, l, code, nextCode, cache,\n      result = '';\n\n  if (typeof exclude !== 'string') {\n    // encode(string, keepEscaped)\n    keepEscaped  = exclude;\n    exclude = encode.defaultChars;\n  }\n\n  if (typeof keepEscaped === 'undefined') {\n    keepEscaped = true;\n  }\n\n  cache = getEncodeCache(exclude);\n\n  for (i = 0, l = string.length; i < l; i++) {\n    code = string.charCodeAt(i);\n\n    if (keepEscaped && code === 0x25 /* % */ && i + 2 < l) {\n      if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {\n        result += string.slice(i, i + 3);\n        i += 2;\n        continue;\n      }\n    }\n\n    if (code < 128) {\n      result += cache[code];\n      continue;\n    }\n\n    if (code >= 0xD800 && code <= 0xDFFF) {\n      if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) {\n        nextCode = string.charCodeAt(i + 1);\n        if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {\n          result += encodeURIComponent(string[i] + string[i + 1]);\n          i++;\n          continue;\n        }\n      }\n      result += '%EF%BF%BD';\n      continue;\n    }\n\n    result += encodeURIComponent(string[i]);\n  }\n\n  return result;\n}\n\nencode.defaultChars   = \";/?:@&=+$,-_.!~*'()#\";\nencode.componentChars = \"-_.!~*'()\";\n\n\nmodule.exports = encode;\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\nfunction componentWillMount() {\n  // Call this.constructor.gDSFP to support sub-classes.\n  var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n  if (state !== null && state !== undefined) {\n    this.setState(state);\n  }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n  // Call this.constructor.gDSFP to support sub-classes.\n  // Use the setState() updater to ensure state isn't stale in certain edge cases.\n  function updater(prevState) {\n    var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n    return state !== null && state !== undefined ? state : null;\n  }\n  // Binding \"this\" is important for shallow renderer support.\n  this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n  try {\n    var prevProps = this.props;\n    var prevState = this.state;\n    this.props = nextProps;\n    this.state = nextState;\n    this.__reactInternalSnapshotFlag = true;\n    this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n      prevProps,\n      prevState\n    );\n  } finally {\n    this.props = prevProps;\n    this.state = prevState;\n  }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n  var prototype = Component.prototype;\n\n  if (!prototype || !prototype.isReactComponent) {\n    throw new Error('Can only polyfill class components');\n  }\n\n  if (\n    typeof Component.getDerivedStateFromProps !== 'function' &&\n    typeof prototype.getSnapshotBeforeUpdate !== 'function'\n  ) {\n    return Component;\n  }\n\n  // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n  // Error if any of these lifecycles are present,\n  // Because they would work differently between older and newer (16.3+) versions of React.\n  var foundWillMountName = null;\n  var foundWillReceivePropsName = null;\n  var foundWillUpdateName = null;\n  if (typeof prototype.componentWillMount === 'function') {\n    foundWillMountName = 'componentWillMount';\n  } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n    foundWillMountName = 'UNSAFE_componentWillMount';\n  }\n  if (typeof prototype.componentWillReceiveProps === 'function') {\n    foundWillReceivePropsName = 'componentWillReceiveProps';\n  } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n    foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n  }\n  if (typeof prototype.componentWillUpdate === 'function') {\n    foundWillUpdateName = 'componentWillUpdate';\n  } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n    foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n  }\n  if (\n    foundWillMountName !== null ||\n    foundWillReceivePropsName !== null ||\n    foundWillUpdateName !== null\n  ) {\n    var componentName = Component.displayName || Component.name;\n    var newApiName =\n      typeof Component.getDerivedStateFromProps === 'function'\n        ? 'getDerivedStateFromProps()'\n        : 'getSnapshotBeforeUpdate()';\n\n    throw Error(\n      'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n        componentName +\n        ' uses ' +\n        newApiName +\n        ' but also contains the following legacy lifecycles:' +\n        (foundWillMountName !== null ? '\\n  ' + foundWillMountName : '') +\n        (foundWillReceivePropsName !== null\n          ? '\\n  ' + foundWillReceivePropsName\n          : '') +\n        (foundWillUpdateName !== null ? '\\n  ' + foundWillUpdateName : '') +\n        '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n        'https://fb.me/react-async-component-lifecycle-hooks'\n    );\n  }\n\n  // React <= 16.2 does not support static getDerivedStateFromProps.\n  // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n  // Newer versions of React will ignore these lifecycles if gDSFP exists.\n  if (typeof Component.getDerivedStateFromProps === 'function') {\n    prototype.componentWillMount = componentWillMount;\n    prototype.componentWillReceiveProps = componentWillReceiveProps;\n  }\n\n  // React <= 16.2 does not support getSnapshotBeforeUpdate.\n  // As a workaround, use cWU to invoke the new lifecycle.\n  // Newer versions of React will ignore that lifecycle if gSBU exists.\n  if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n    if (typeof prototype.componentDidUpdate !== 'function') {\n      throw new Error(\n        'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n      );\n    }\n\n    prototype.componentWillUpdate = componentWillUpdate;\n\n    var componentDidUpdate = prototype.componentDidUpdate;\n\n    prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n      prevProps,\n      prevState,\n      maybeSnapshot\n    ) {\n      // 16.3+ will not execute our will-update method;\n      // It will pass a snapshot value to did-update though.\n      // Older versions will require our polyfilled will-update value.\n      // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n      // Because for <= 15.x versions this might be a \"prevContext\" object.\n      // We also can't just check \"__reactInternalSnapshot\",\n      // Because get-snapshot might return a falsy value.\n      // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n      var snapshot = this.__reactInternalSnapshotFlag\n        ? this.__reactInternalSnapshot\n        : maybeSnapshot;\n\n      componentDidUpdate.call(this, prevProps, prevState, snapshot);\n    };\n  }\n\n  return Component;\n}\n\nexport { polyfill };\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = Flex;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction toPercent(num) {\n  return \"\".concat(num, \"%\");\n}\n\nfunction Flex(_ref) {\n  var children = _ref.children,\n      className = _ref.className,\n      direction = _ref.direction,\n      count = _ref.count,\n      offset = _ref.offset,\n      style = _ref.style,\n      wrap = _ref.wrap,\n      otherProps = _objectWithoutProperties(_ref, [\"children\", \"className\", \"direction\", \"count\", \"offset\", \"style\", \"wrap\"]);\n\n  return _react[\"default\"].createElement(\"div\", _extends({\n    className: className,\n    style: _objectSpread({\n      display: 'flex',\n      flexDirection: direction,\n      flexWrap: wrap ? 'wrap' : 'no-wrap'\n    }, style)\n  }, otherProps), _react[\"default\"].Children.map(children, function (child, index) {\n    return _react[\"default\"].cloneElement(child, _objectSpread({}, child.props, {\n      style: {\n        flexBasis: toPercent(100 / count),\n        maxWidth: toPercent(100 / count),\n        overflow: 'hidden',\n        marginLeft: offset && index === 0 ? toPercent(100 * offset / count) : null\n      }\n    }));\n  }));\n}\n\nFlex.propTypes = {\n  children: _propTypes[\"default\"].node,\n  className: _propTypes[\"default\"].string,\n  count: _propTypes[\"default\"].number.isRequired,\n  direction: _propTypes[\"default\"].string,\n  offset: _propTypes[\"default\"].number,\n  style: _propTypes[\"default\"].objectOf(_propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].number])),\n  wrap: _propTypes[\"default\"].bool\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.isMarkWidth = exports.isMarkLength = exports.isHandWidth = exports.isOppositeHandLength = exports.isHandLength = void 0;\n\nvar _utils = require(\"./utils\");\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar isNumberBetween = function isNumberBetween(min, max) {\n  return function (props, propName, componentName) {\n    var value = props[propName];\n\n    if ((0, _utils.isDefined)(value)) {\n      if (typeof value !== 'number') {\n        return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(value), \"` supplied to `\").concat(componentName, \"`, expected `number`.\"));\n      }\n\n      if (value < min || value > max) {\n        return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(value), \"` supplied to `\").concat(componentName, \"`, length must be between \").concat(min, \" and \").concat(max, \".\"));\n      }\n    } // Everything is fine\n\n\n    return null;\n  };\n};\n\nvar isHandLength = isNumberBetween(0, 100);\nexports.isHandLength = isHandLength;\nvar isOppositeHandLength = isNumberBetween(-100, 100);\nexports.isOppositeHandLength = isOppositeHandLength;\n\nvar isHandWidth = function isHandWidth(props, propName, componentName) {\n  var width = props[propName];\n\n  if ((0, _utils.isDefined)(width)) {\n    if (typeof width !== 'number') {\n      return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(width), \"` supplied to `\").concat(componentName, \"`, expected `number`.\"));\n    }\n\n    if (width < 0) {\n      return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(width), \"` supplied to `\").concat(componentName, \"`, width must be greater or equal to 0.\"));\n    }\n  } // Everything is fine\n\n\n  return null;\n};\n\nexports.isHandWidth = isHandWidth;\nvar isMarkLength = isHandLength;\nexports.isMarkLength = isMarkLength;\nvar isMarkWidth = isHandWidth;\nexports.isMarkWidth = isMarkWidth;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = Input;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _mergeClassNames = _interopRequireDefault(require(\"merge-class-names\"));\n\nvar _updateInputWidth = _interopRequireWildcard(require(\"update-input-width\"));\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/* eslint-disable jsx-a11y/no-autofocus */\nfunction onFocus(event) {\n  var target = event.target;\n  requestAnimationFrame(function () {\n    return target.select();\n  });\n}\n\nfunction updateInputWidthOnFontLoad(element) {\n  if (!document.fonts) {\n    return;\n  }\n\n  var font = (0, _updateInputWidth.getFontShorthand)(element);\n\n  if (!font) {\n    return;\n  }\n\n  var isFontLoaded = document.fonts.check(font);\n\n  if (isFontLoaded) {\n    return;\n  }\n\n  function onLoadingDone() {\n    (0, _updateInputWidth[\"default\"])(element);\n  }\n\n  document.fonts.addEventListener('loadingdone', onLoadingDone);\n}\n\nfunction getSelectionString() {\n  if (typeof window === 'undefined') {\n    return null;\n  }\n\n  return window.getSelection().toString();\n}\n\nfunction makeOnKeyPress(maxLength) {\n  return function onKeyPress(event) {\n    var value = event.target.value;\n    var selection = getSelectionString();\n\n    if (selection || value.length < maxLength) {\n      return;\n    }\n\n    event.preventDefault();\n  };\n}\n\nfunction Input(_ref) {\n  var ariaLabel = _ref.ariaLabel,\n      autoFocus = _ref.autoFocus,\n      className = _ref.className,\n      disabled = _ref.disabled,\n      itemRef = _ref.itemRef,\n      max = _ref.max,\n      min = _ref.min,\n      name = _ref.name,\n      nameForClass = _ref.nameForClass,\n      onChange = _ref.onChange,\n      onKeyDown = _ref.onKeyDown,\n      _onKeyUp = _ref.onKeyUp,\n      _ref$placeholder = _ref.placeholder,\n      placeholder = _ref$placeholder === void 0 ? '--' : _ref$placeholder,\n      required = _ref.required,\n      showLeadingZeros = _ref.showLeadingZeros,\n      step = _ref.step,\n      value = _ref.value;\n  var hasLeadingZero = showLeadingZeros && value !== null && value < 10;\n  var maxLength = max.toString().length;\n  return [hasLeadingZero && _react[\"default\"].createElement(\"span\", {\n    key: \"leadingZero\",\n    className: \"\".concat(className, \"__leadingZero\")\n  }, \"0\"), _react[\"default\"].createElement(\"input\", {\n    key: \"input\",\n    \"aria-label\": ariaLabel,\n    autoComplete: \"off\",\n    autoFocus: autoFocus,\n    className: (0, _mergeClassNames[\"default\"])(\"\".concat(className, \"__input\"), \"\".concat(className, \"__\").concat(nameForClass || name), hasLeadingZero && \"\".concat(className, \"__input--hasLeadingZero\")),\n    disabled: disabled,\n    max: max,\n    min: min,\n    name: name,\n    onChange: onChange,\n    onFocus: onFocus,\n    onKeyDown: onKeyDown,\n    onKeyPress: makeOnKeyPress(maxLength),\n    onKeyUp: function onKeyUp(event) {\n      (0, _updateInputWidth[\"default\"])(event.target);\n\n      if (_onKeyUp) {\n        _onKeyUp(event);\n      }\n    },\n    placeholder: placeholder,\n    ref: function ref(_ref2) {\n      if (_ref2) {\n        (0, _updateInputWidth[\"default\"])(_ref2);\n        updateInputWidthOnFontLoad(_ref2);\n      }\n\n      if (itemRef) {\n        itemRef(_ref2, name);\n      }\n    },\n    required: required,\n    step: step,\n    type: \"number\",\n    value: value !== null ? value : ''\n  })];\n}\n\nInput.propTypes = {\n  className: _propTypes[\"default\"].string.isRequired,\n  disabled: _propTypes[\"default\"].bool,\n  itemRef: _propTypes[\"default\"].func,\n  max: _propTypes[\"default\"].number,\n  min: _propTypes[\"default\"].number,\n  onChange: _propTypes[\"default\"].func,\n  onKeyDown: _propTypes[\"default\"].func,\n  onKeyUp: _propTypes[\"default\"].func,\n  required: _propTypes[\"default\"].bool,\n  showLeadingZeros: _propTypes[\"default\"].bool,\n  step: _propTypes[\"default\"].number,\n  value: _propTypes[\"default\"].number\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.convert12to24 = convert12to24;\nexports.convert24to12 = convert24to12;\n\nfunction convert12to24(hour12, amPm) {\n  var hour24 = parseInt(hour12, 10);\n\n  if (amPm === 'am' && hour24 === 12) {\n    hour24 = 0;\n  } else if (amPm === 'pm' && hour24 < 12) {\n    hour24 += 12;\n  }\n\n  return hour24;\n}\n\nfunction convert24to12(hour24) {\n  var hour12 = hour24 % 12 || 12;\n  return [hour12, hour24 < 12 ? 'am' : 'pm'];\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"isMaxDate\", {\n  enumerable: true,\n  get: function get() {\n    return _propTypes.isMaxDate;\n  }\n});\nObject.defineProperty(exports, \"isMinDate\", {\n  enumerable: true,\n  get: function get() {\n    return _propTypes.isMinDate;\n  }\n});\nObject.defineProperty(exports, \"isValueType\", {\n  enumerable: true,\n  get: function get() {\n    return _propTypes2.isValueType;\n  }\n});\n\nvar _propTypes = require(\"react-calendar/dist/shared/propTypes\");\n\nvar _propTypes2 = require(\"react-time-picker/dist/shared/propTypes\");","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nrequire(\"react-calendar/dist/Calendar.css\");\n\nrequire(\"react-clock/dist/Clock.css\");\n\nvar _DateTimePicker = _interopRequireDefault(require(\"./DateTimePicker\"));\n\nrequire(\"./DateTimePicker.css\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n// File is created during build phase and placed in dist directory\n// eslint-disable-next-line import/no-unresolved\nvar _default = _DateTimePicker[\"default\"];\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = CenturyView;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _Decades = _interopRequireDefault(require(\"./CenturyView/Decades\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction CenturyView(props) {\n  function renderDecades() {\n    return _react[\"default\"].createElement(_Decades[\"default\"], props);\n  }\n\n  return _react[\"default\"].createElement(\"div\", {\n    className: \"react-calendar__century-view\"\n  }, renderDecades());\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.getTileClasses = exports.between = exports.doRangesOverlap = exports.isRangeWithinRange = exports.isValueWithinRange = exports.callIfDefined = exports.mergeFunctions = void 0;\n\nvar _dates = require(\"./dates\");\n\n/**\n * Returns a function that, when called, calls all the functions\n * passed to it, applying its arguments to them.\n *\n * @param {Function[]} functions\n */\nvar mergeFunctions = function mergeFunctions() {\n  for (var _len = arguments.length, functions = new Array(_len), _key = 0; _key < _len; _key++) {\n    functions[_key] = arguments[_key];\n  }\n\n  return function () {\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    return functions.filter(Boolean).forEach(function (f) {\n      return f.apply(void 0, args);\n    });\n  };\n};\n/**\n * Calls a function, if it's defined, with specified arguments\n * @param {Function} fn\n * @param {Object} args\n */\n\n\nexports.mergeFunctions = mergeFunctions;\n\nvar callIfDefined = function callIfDefined(fn) {\n  if (fn && typeof fn === 'function') {\n    for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n      args[_key3 - 1] = arguments[_key3];\n    }\n\n    fn.apply(void 0, args);\n  }\n};\n\nexports.callIfDefined = callIfDefined;\n\nvar isValueWithinRange = function isValueWithinRange(value, range) {\n  return range[0] <= value && range[1] >= value;\n};\n\nexports.isValueWithinRange = isValueWithinRange;\n\nvar isRangeWithinRange = function isRangeWithinRange(greaterRange, smallerRange) {\n  return greaterRange[0] <= smallerRange[0] && greaterRange[1] >= smallerRange[1];\n};\n\nexports.isRangeWithinRange = isRangeWithinRange;\n\nvar doRangesOverlap = function doRangesOverlap(range1, range2) {\n  return isValueWithinRange(range1[0], range2) || isValueWithinRange(range1[1], range2);\n};\n/**\n * Returns a value no smaller than min and no larger than max.\n *\n * @param {*} value Value to return.\n * @param {*} min Minimum return value.\n * @param {*} max Maximum return value.\n */\n\n\nexports.doRangesOverlap = doRangesOverlap;\n\nvar between = function between(value, min, max) {\n  if (min && min > value) {\n    return min;\n  }\n\n  if (max && max < value) {\n    return max;\n  }\n\n  return value;\n};\n\nexports.between = between;\n\nvar getTileClasses = function getTileClasses() {\n  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n      value = _ref.value,\n      valueType = _ref.valueType,\n      date = _ref.date,\n      dateType = _ref.dateType,\n      hover = _ref.hover;\n\n  var className = 'react-calendar__tile';\n  var classes = [className];\n\n  if (!date) {\n    return classes;\n  }\n\n  if (!(date instanceof Array) && !dateType) {\n    throw new Error('getTileClasses(): Unable to get tile activity classes because one or more required arguments were not passed.');\n  }\n\n  var now = new Date();\n  var dateRange = date instanceof Array ? date : (0, _dates.getRange)(dateType, date);\n\n  if (isValueWithinRange(now, dateRange)) {\n    classes.push(\"\".concat(className, \"--now\"));\n  }\n\n  if (!value) {\n    return classes;\n  }\n\n  if (!(value instanceof Array) && !valueType) {\n    throw new Error('getTileClasses(): Unable to get tile activity classes because one or more required arguments were not passed.');\n  }\n\n  var valueRange = value instanceof Array ? value : (0, _dates.getRange)(valueType, value);\n\n  if (isRangeWithinRange(valueRange, dateRange)) {\n    classes.push(\"\".concat(className, \"--active\"));\n  } else if (doRangesOverlap(valueRange, dateRange)) {\n    classes.push(\"\".concat(className, \"--hasActive\"));\n  } else if (hover && ( // Date before value\n  dateRange[1] < valueRange[0] && doRangesOverlap(dateRange, [hover, valueRange[0]]) || // Date after value\n  dateRange[0] > valueRange[1] && doRangesOverlap(dateRange, [valueRange[1], hover]))) {\n    classes.push(\"\".concat(className, \"--hover\"));\n  }\n\n  var isRangeStart = isValueWithinRange(valueRange[0], dateRange);\n  var isRangeEnd = isValueWithinRange(valueRange[1], dateRange);\n\n  if (isRangeStart) {\n    classes.push(\"\".concat(className, \"--rangeStart\"));\n  }\n\n  if (isRangeEnd) {\n    classes.push(\"\".concat(className, \"--rangeEnd\"));\n  }\n\n  if (isRangeStart && isRangeEnd) {\n    classes.push(\"\".concat(className, \"--rangeBothEnds\"));\n  }\n\n  return classes;\n};\n\nexports.getTileClasses = getTileClasses;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = DecadeView;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _Years = _interopRequireDefault(require(\"./DecadeView/Years\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction DecadeView(props) {\n  function renderYears() {\n    return _react[\"default\"].createElement(_Years[\"default\"], props);\n  }\n\n  return _react[\"default\"].createElement(\"div\", {\n    className: \"react-calendar__decade-view\"\n  }, renderYears());\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = YearView;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _Months = _interopRequireDefault(require(\"./YearView/Months\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction YearView(props) {\n  function renderMonths() {\n    return _react[\"default\"].createElement(_Months[\"default\"], props);\n  }\n\n  return _react[\"default\"].createElement(\"div\", {\n    className: \"react-calendar__year-view\"\n  }, renderMonths());\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = MonthView;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _Days = _interopRequireDefault(require(\"./MonthView/Days\"));\n\nvar _Weekdays = _interopRequireDefault(require(\"./MonthView/Weekdays\"));\n\nvar _WeekNumbers = _interopRequireDefault(require(\"./MonthView/WeekNumbers\"));\n\nvar _propTypes2 = require(\"./shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction MonthView(props) {\n  var activeStartDate = props.activeStartDate,\n      locale = props.locale,\n      onMouseLeave = props.onMouseLeave,\n      showFixedNumberOfWeeks = props.showFixedNumberOfWeeks;\n\n  var calendarTypeProps = props.calendarType,\n      formatShortWeekday = props.formatShortWeekday,\n      onClickWeekNumber = props.onClickWeekNumber,\n      showWeekNumbers = props.showWeekNumbers,\n      childProps = _objectWithoutProperties(props, [\"calendarType\", \"formatShortWeekday\", \"onClickWeekNumber\", \"showWeekNumbers\"]);\n\n  var calendarType = function () {\n    if (calendarTypeProps) {\n      return calendarTypeProps;\n    }\n\n    switch (locale) {\n      case 'en-CA':\n      case 'en-US':\n      case 'es-AR':\n      case 'es-BO':\n      case 'es-CL':\n      case 'es-CO':\n      case 'es-CR':\n      case 'es-DO':\n      case 'es-EC':\n      case 'es-GT':\n      case 'es-HN':\n      case 'es-MX':\n      case 'es-NI':\n      case 'es-PA':\n      case 'es-PE':\n      case 'es-PR':\n      case 'es-SV':\n      case 'es-VE':\n      case 'pt-BR':\n        return 'US';\n      // ar-LB, ar-MA intentionally missing\n\n      case 'ar':\n      case 'ar-AE':\n      case 'ar-BH':\n      case 'ar-DZ':\n      case 'ar-EG':\n      case 'ar-IQ':\n      case 'ar-JO':\n      case 'ar-KW':\n      case 'ar-LY':\n      case 'ar-OM':\n      case 'ar-QA':\n      case 'ar-SA':\n      case 'ar-SD':\n      case 'ar-SY':\n      case 'ar-YE':\n      case 'dv':\n      case 'dv-MV':\n      case 'ps':\n      case 'ps-AR':\n        return 'Arabic';\n\n      case 'he':\n      case 'he-IL':\n        return 'Hebrew';\n\n      default:\n        return 'ISO 8601';\n    }\n  }();\n\n  function renderWeekdays() {\n    return _react[\"default\"].createElement(_Weekdays[\"default\"], {\n      calendarType: calendarType,\n      formatShortWeekday: formatShortWeekday,\n      locale: locale,\n      onMouseLeave: onMouseLeave\n    });\n  }\n\n  function renderWeekNumbers() {\n    if (!showWeekNumbers) {\n      return null;\n    }\n\n    return _react[\"default\"].createElement(_WeekNumbers[\"default\"], {\n      activeStartDate: activeStartDate,\n      calendarType: calendarType,\n      onClickWeekNumber: onClickWeekNumber,\n      onMouseLeave: onMouseLeave,\n      showFixedNumberOfWeeks: showFixedNumberOfWeeks\n    });\n  }\n\n  function renderDays() {\n    return _react[\"default\"].createElement(_Days[\"default\"], _extends({\n      calendarType: calendarType\n    }, childProps));\n  }\n\n  var className = 'react-calendar__month-view';\n  return _react[\"default\"].createElement(\"div\", {\n    className: [className, showWeekNumbers ? \"\".concat(className, \"--weekNumbers\") : ''].join(' ')\n  }, _react[\"default\"].createElement(\"div\", {\n    style: {\n      display: 'flex',\n      alignItems: 'flex-end'\n    }\n  }, renderWeekNumbers(), _react[\"default\"].createElement(\"div\", {\n    style: {\n      flexGrow: 1,\n      width: '100%'\n    }\n  }, renderWeekdays(), renderDays())));\n}\n\nMonthView.propTypes = {\n  activeStartDate: _propTypes[\"default\"].instanceOf(Date).isRequired,\n  calendarType: _propTypes2.isCalendarType,\n  formatShortWeekday: _propTypes[\"default\"].func,\n  locale: _propTypes[\"default\"].string,\n  maxDate: _propTypes2.isMaxDate,\n  minDate: _propTypes2.isMinDate,\n  onChange: _propTypes[\"default\"].func,\n  onClickWeekNumber: _propTypes[\"default\"].func,\n  onMouseLeave: _propTypes[\"default\"].func,\n  setActiveRange: _propTypes[\"default\"].func,\n  showFixedNumberOfWeeks: _propTypes[\"default\"].bool,\n  showNeighboringMonth: _propTypes[\"default\"].bool,\n  showWeekNumbers: _propTypes[\"default\"].bool,\n  value: _propTypes2.isValue,\n  valueType: _propTypes[\"default\"].string\n};","var allowedVariants = ['normal', 'small-caps'];\n/**\n * Gets font CSS shorthand property given element.\n *\n * @param {HTMLElement} element Element to get font CSS shorthand property from\n */\n\nexport function getFontShorthand(element) {\n  if (!element) {\n    return '';\n  }\n\n  var style = window.getComputedStyle(element);\n\n  if (style.font) {\n    return style.font;\n  }\n\n  var isFontDefined = style['font-family'] !== '';\n\n  if (!isFontDefined) {\n    return '';\n  }\n\n  var fontVariant = allowedVariants.includes(style['font-variant']) ? style['font-variant'] : 'normal';\n  return \"\".concat(style['font-style'], \" \").concat(fontVariant, \" \").concat(style['font-weight'], \" \").concat(style['font-size'], \" / \").concat(style['line-height'], \" \").concat(style['font-family']);\n}\n/**\n * Measures text width given text and font CSS shorthand.\n *\n * @param {string} text Text to measure\n * @param {string} font Font to use when measuring the text\n */\n\nexport function measureText(text, font) {\n  var canvas = measureText.canvas || (measureText.canvas = document.createElement('canvas'));\n  var context = canvas.getContext('2d'); // Context type not supported\n\n  if (!context) {\n    return null;\n  }\n\n  context.font = font;\n\n  var _context$measureText = context.measureText(text),\n      width = _context$measureText.width;\n\n  return Math.ceil(width);\n}\n/**\n * Updates input element width to fit its content given input element\n * @param {HTMLInputElement} element\n */\n\nexport function updateInputWidth(element) {\n  if (typeof window === 'undefined' || !element) {\n    return null;\n  }\n\n  var font = getFontShorthand(element);\n  var text = element.value || element.placeholder;\n  var width = measureText(text, font);\n\n  if (width === null) {\n    return null;\n  }\n\n  element.style.width = \"\".concat(width, \"px\");\n  return width;\n}\nexport default updateInputWidth;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"between\", {\n  enumerable: true,\n  get: function get() {\n    return _utils.between;\n  }\n});\nObject.defineProperty(exports, \"callIfDefined\", {\n  enumerable: true,\n  get: function get() {\n    return _utils.callIfDefined;\n  }\n});\nObject.defineProperty(exports, \"min\", {\n  enumerable: true,\n  get: function get() {\n    return _utils.min;\n  }\n});\nObject.defineProperty(exports, \"max\", {\n  enumerable: true,\n  get: function get() {\n    return _utils.max;\n  }\n});\nObject.defineProperty(exports, \"getAmPmLabels\", {\n  enumerable: true,\n  get: function get() {\n    return _utils2.getAmPmLabels;\n  }\n});\n\nvar _utils = require(\"react-date-picker/dist/shared/utils\");\n\nvar _utils2 = require(\"react-time-picker/dist/shared/utils\");","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _makeEventProps = _interopRequireDefault(require(\"make-event-props\"));\n\nvar _mergeClassNames = _interopRequireDefault(require(\"merge-class-names\"));\n\nvar _reactFit = _interopRequireDefault(require(\"react-fit\"));\n\nvar _entry = _interopRequireDefault(require(\"react-calendar/dist/entry.nostyle\"));\n\nvar _entry2 = _interopRequireDefault(require(\"react-clock/dist/entry.nostyle\"));\n\nvar _DateTimeInput = _interopRequireDefault(require(\"./DateTimeInput\"));\n\nvar _propTypes2 = require(\"./shared/propTypes\");\n\nvar _utils = require(\"./shared/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar allViews = ['hour', 'minute', 'second'];\nvar baseClassName = 'react-datetime-picker';\nvar outsideActionEvents = ['mousedown', 'focusin', 'touchstart'];\n\nvar DateTimePicker =\n/*#__PURE__*/\nfunction (_PureComponent) {\n  _inherits(DateTimePicker, _PureComponent);\n\n  function DateTimePicker() {\n    var _getPrototypeOf2;\n\n    var _this;\n\n    _classCallCheck(this, DateTimePicker);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(DateTimePicker)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n    _defineProperty(_assertThisInitialized(_this), \"state\", {});\n\n    _defineProperty(_assertThisInitialized(_this), \"onOutsideAction\", function (event) {\n      if (_this.wrapper && !_this.wrapper.contains(event.target)) {\n        _this.closeWidgets();\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onDateChange\", function (value) {\n      var closeWidgets = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n      var prevValue = _this.props.value;\n\n      if (prevValue) {\n        var valueWithHour = new Date(value);\n        valueWithHour.setHours(prevValue.getHours(), prevValue.getMinutes(), prevValue.getSeconds(), prevValue.getMilliseconds());\n\n        _this.onChange(valueWithHour, closeWidgets);\n      } else {\n        _this.onChange(value, closeWidgets);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onChange\", function (value) {\n      var closeWidgets = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n      _this.setState(function (prevState) {\n        return {\n          isCalendarOpen: prevState.isCalendarOpen && !closeWidgets,\n          isClockOpen: prevState.isClockOpen && !closeWidgets\n        };\n      });\n\n      var onChange = _this.props.onChange;\n\n      if (onChange) {\n        onChange(value);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onFocus\", function (event) {\n      var _this$props = _this.props,\n          disabled = _this$props.disabled,\n          onFocus = _this$props.onFocus;\n\n      if (onFocus) {\n        onFocus(event);\n      } // Internet Explorer still fires onFocus on disabled elements\n\n\n      if (disabled) {\n        return;\n      }\n\n      switch (event.target.name) {\n        case 'day':\n        case 'month':\n        case 'year':\n          _this.openCalendar();\n\n          break;\n\n        case 'hour12':\n        case 'hour24':\n        case 'minute':\n        case 'second':\n          _this.openClock();\n\n          break;\n\n        default:\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"openClock\", function () {\n      _this.setState({\n        isCalendarOpen: false,\n        isClockOpen: true\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"openCalendar\", function () {\n      _this.setState({\n        isCalendarOpen: true,\n        isClockOpen: false\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"toggleCalendar\", function () {\n      _this.setState(function (prevState) {\n        return {\n          isCalendarOpen: !prevState.isCalendarOpen,\n          isClockOpen: false\n        };\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"closeWidgets\", function () {\n      _this.setState(function (prevState) {\n        if (!prevState.isCalendarOpen && !prevState.isClockOpen) {\n          return null;\n        }\n\n        return {\n          isCalendarOpen: false,\n          isClockOpen: false\n        };\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"stopPropagation\", function (event) {\n      return event.stopPropagation();\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"clear\", function () {\n      return _this.onChange(null);\n    });\n\n    return _this;\n  }\n\n  _createClass(DateTimePicker, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.handleOutsideActionListeners();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps, prevState) {\n      var _this$state = this.state,\n          isCalendarOpen = _this$state.isCalendarOpen,\n          isClockOpen = _this$state.isClockOpen;\n      var _this$props2 = this.props,\n          onCalendarClose = _this$props2.onCalendarClose,\n          onCalendarOpen = _this$props2.onCalendarOpen,\n          onClockClose = _this$props2.onClockClose,\n          onClockOpen = _this$props2.onClockOpen;\n      var isWidgetOpen = isCalendarOpen || isClockOpen;\n      var prevIsWidgetOpen = prevState.isCalendarOpen || prevState.isClockOpen;\n\n      if (isWidgetOpen !== prevIsWidgetOpen) {\n        this.handleOutsideActionListeners();\n      }\n\n      if (isCalendarOpen !== prevState.isCalendarOpen) {\n        (0, _utils.callIfDefined)(isCalendarOpen ? onCalendarOpen : onCalendarClose);\n      }\n\n      if (isClockOpen !== prevState.isClockOpen) {\n        (0, _utils.callIfDefined)(isClockOpen ? onClockOpen : onClockClose);\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.handleOutsideActionListeners(false);\n    }\n  }, {\n    key: \"handleOutsideActionListeners\",\n    value: function handleOutsideActionListeners(shouldListen) {\n      var _this2 = this;\n\n      var _this$state2 = this.state,\n          isCalendarOpen = _this$state2.isCalendarOpen,\n          isClockOpen = _this$state2.isClockOpen;\n      var isWidgetOpen = isCalendarOpen || isClockOpen;\n      var shouldListenWithFallback = typeof shouldListen !== 'undefined' ? shouldListen : isWidgetOpen;\n      var fnName = shouldListenWithFallback ? 'addEventListener' : 'removeEventListener';\n      outsideActionEvents.forEach(function (eventName) {\n        return document[fnName](eventName, _this2.onOutsideAction);\n      });\n    }\n  }, {\n    key: \"renderInputs\",\n    value: function renderInputs() {\n      var _this$props3 = this.props,\n          amPmAriaLabel = _this$props3.amPmAriaLabel,\n          autoFocus = _this$props3.autoFocus,\n          calendarAriaLabel = _this$props3.calendarAriaLabel,\n          calendarIcon = _this$props3.calendarIcon,\n          clearAriaLabel = _this$props3.clearAriaLabel,\n          clearIcon = _this$props3.clearIcon,\n          dayAriaLabel = _this$props3.dayAriaLabel,\n          dayPlaceholder = _this$props3.dayPlaceholder,\n          disableCalendar = _this$props3.disableCalendar,\n          disabled = _this$props3.disabled,\n          format = _this$props3.format,\n          hourAriaLabel = _this$props3.hourAriaLabel,\n          hourPlaceholder = _this$props3.hourPlaceholder,\n          locale = _this$props3.locale,\n          maxDate = _this$props3.maxDate,\n          maxDetail = _this$props3.maxDetail,\n          minDate = _this$props3.minDate,\n          minuteAriaLabel = _this$props3.minuteAriaLabel,\n          minutePlaceholder = _this$props3.minutePlaceholder,\n          monthAriaLabel = _this$props3.monthAriaLabel,\n          monthPlaceholder = _this$props3.monthPlaceholder,\n          name = _this$props3.name,\n          nativeInputAriaLabel = _this$props3.nativeInputAriaLabel,\n          required = _this$props3.required,\n          secondAriaLabel = _this$props3.secondAriaLabel,\n          secondPlaceholder = _this$props3.secondPlaceholder,\n          showLeadingZeros = _this$props3.showLeadingZeros,\n          value = _this$props3.value,\n          yearAriaLabel = _this$props3.yearAriaLabel,\n          yearPlaceholder = _this$props3.yearPlaceholder;\n      var _this$state3 = this.state,\n          isCalendarOpen = _this$state3.isCalendarOpen,\n          isClockOpen = _this$state3.isClockOpen;\n\n      var _concat = [].concat(value),\n          _concat2 = _slicedToArray(_concat, 1),\n          valueFrom = _concat2[0];\n\n      var ariaLabelProps = {\n        amPmAriaLabel: amPmAriaLabel,\n        dayAriaLabel: dayAriaLabel,\n        hourAriaLabel: hourAriaLabel,\n        minuteAriaLabel: minuteAriaLabel,\n        monthAriaLabel: monthAriaLabel,\n        nativeInputAriaLabel: nativeInputAriaLabel,\n        secondAriaLabel: secondAriaLabel,\n        yearAriaLabel: yearAriaLabel\n      };\n      var placeholderProps = {\n        dayPlaceholder: dayPlaceholder,\n        hourPlaceholder: hourPlaceholder,\n        minutePlaceholder: minutePlaceholder,\n        monthPlaceholder: monthPlaceholder,\n        secondPlaceholder: secondPlaceholder,\n        yearPlaceholder: yearPlaceholder\n      };\n      return _react[\"default\"].createElement(\"div\", {\n        className: \"\".concat(baseClassName, \"__wrapper\")\n      }, _react[\"default\"].createElement(_DateTimeInput[\"default\"], _extends({}, ariaLabelProps, placeholderProps, {\n        autoFocus: autoFocus,\n        className: \"\".concat(baseClassName, \"__inputGroup\"),\n        disabled: disabled,\n        format: format,\n        isWidgetOpen: isCalendarOpen || isClockOpen,\n        locale: locale,\n        maxDate: maxDate,\n        maxDetail: maxDetail,\n        minDate: minDate,\n        name: name,\n        onChange: this.onChange,\n        placeholder: this.placeholder,\n        required: required,\n        showLeadingZeros: showLeadingZeros,\n        value: valueFrom\n      })), clearIcon !== null && _react[\"default\"].createElement(\"button\", {\n        \"aria-label\": clearAriaLabel,\n        className: \"\".concat(baseClassName, \"__clear-button \").concat(baseClassName, \"__button\"),\n        disabled: disabled,\n        onClick: this.clear,\n        onFocus: this.stopPropagation,\n        type: \"button\"\n      }, clearIcon), calendarIcon !== null && !disableCalendar && _react[\"default\"].createElement(\"button\", {\n        \"aria-label\": calendarAriaLabel,\n        className: \"\".concat(baseClassName, \"__calendar-button \").concat(baseClassName, \"__button\"),\n        disabled: disabled,\n        onBlur: this.resetValue,\n        onClick: this.toggleCalendar,\n        onFocus: this.stopPropagation,\n        type: \"button\"\n      }, calendarIcon));\n    }\n  }, {\n    key: \"renderCalendar\",\n    value: function renderCalendar() {\n      var disableCalendar = this.props.disableCalendar;\n      var isCalendarOpen = this.state.isCalendarOpen;\n\n      if (isCalendarOpen === null || disableCalendar) {\n        return null;\n      }\n\n      var _this$props4 = this.props,\n          calendarClassName = _this$props4.calendarClassName,\n          dateTimePickerClassName = _this$props4.className,\n          dateTimePickerMaxDetail = _this$props4.maxDetail,\n          onChange = _this$props4.onChange,\n          value = _this$props4.value,\n          calendarProps = _objectWithoutProperties(_this$props4, [\"calendarClassName\", \"className\", \"maxDetail\", \"onChange\", \"value\"]);\n\n      var className = \"\".concat(baseClassName, \"__calendar\");\n      return _react[\"default\"].createElement(_reactFit[\"default\"], null, _react[\"default\"].createElement(\"div\", {\n        className: (0, _mergeClassNames[\"default\"])(className, \"\".concat(className, \"--\").concat(isCalendarOpen ? 'open' : 'closed'))\n      }, _react[\"default\"].createElement(_entry[\"default\"], _extends({\n        className: calendarClassName,\n        onChange: this.onDateChange,\n        value: value || null\n      }, calendarProps))));\n    }\n  }, {\n    key: \"renderClock\",\n    value: function renderClock() {\n      var disableClock = this.props.disableClock;\n      var isClockOpen = this.state.isClockOpen;\n\n      if (isClockOpen === null || disableClock) {\n        return null;\n      }\n\n      var _this$props5 = this.props,\n          clockClassName = _this$props5.clockClassName,\n          dateTimePickerClassName = _this$props5.className,\n          maxDetail = _this$props5.maxDetail,\n          onChange = _this$props5.onChange,\n          value = _this$props5.value,\n          clockProps = _objectWithoutProperties(_this$props5, [\"clockClassName\", \"className\", \"maxDetail\", \"onChange\", \"value\"]);\n\n      var className = \"\".concat(baseClassName, \"__clock\");\n\n      var _concat3 = [].concat(value),\n          _concat4 = _slicedToArray(_concat3, 1),\n          valueFrom = _concat4[0];\n\n      var maxDetailIndex = allViews.indexOf(maxDetail);\n      return _react[\"default\"].createElement(_reactFit[\"default\"], null, _react[\"default\"].createElement(\"div\", {\n        className: (0, _mergeClassNames[\"default\"])(className, \"\".concat(className, \"--\").concat(isClockOpen ? 'open' : 'closed'))\n      }, _react[\"default\"].createElement(_entry2[\"default\"], _extends({\n        className: clockClassName,\n        renderMinuteHand: maxDetailIndex > 0,\n        renderSecondHand: maxDetailIndex > 1,\n        value: valueFrom\n      }, clockProps))));\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this3 = this;\n\n      var _this$props6 = this.props,\n          className = _this$props6.className,\n          disabled = _this$props6.disabled;\n      var _this$state4 = this.state,\n          isCalendarOpen = _this$state4.isCalendarOpen,\n          isClockOpen = _this$state4.isClockOpen;\n      return _react[\"default\"].createElement(\"div\", _extends({\n        className: (0, _mergeClassNames[\"default\"])(baseClassName, \"\".concat(baseClassName, \"--\").concat(isCalendarOpen || isClockOpen ? 'open' : 'closed'), \"\".concat(baseClassName, \"--\").concat(disabled ? 'disabled' : 'enabled'), className)\n      }, this.eventProps, {\n        onFocus: this.onFocus,\n        ref: function ref(_ref) {\n          if (!_ref) {\n            return;\n          }\n\n          _this3.wrapper = _ref;\n        }\n      }), this.renderInputs(), this.renderCalendar(), this.renderClock());\n    }\n  }, {\n    key: \"eventProps\",\n    get: function get() {\n      return (0, _makeEventProps[\"default\"])(this.props);\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps, prevState) {\n      var nextState = {};\n\n      if (nextProps.isCalendarOpen !== prevState.isCalendarOpenProps) {\n        nextState.isCalendarOpen = nextProps.isCalendarOpen;\n        nextState.isCalendarOpenProps = nextProps.isCalendarOpen;\n      }\n\n      if (nextProps.isClockOpen !== prevState.isClockOpenProps) {\n        nextState.isClockOpen = nextProps.isClockOpen;\n        nextState.isClockOpenProps = nextProps.isClockOpen;\n      }\n\n      return nextState;\n    }\n  }]);\n\n  return DateTimePicker;\n}(_react.PureComponent);\n\nexports[\"default\"] = DateTimePicker;\nvar iconProps = {\n  xmlns: 'http://www.w3.org/2000/svg',\n  width: 19,\n  height: 19,\n  viewBox: '0 0 19 19',\n  stroke: 'black',\n  strokeWidth: 2\n};\n\nvar CalendarIcon = _react[\"default\"].createElement(\"svg\", _extends({}, iconProps, {\n  className: \"\".concat(baseClassName, \"__calendar-button__icon \").concat(baseClassName, \"__button__icon\")\n}), _react[\"default\"].createElement(\"rect\", {\n  fill: \"none\",\n  height: \"15\",\n  width: \"15\",\n  x: \"2\",\n  y: \"2\"\n}), _react[\"default\"].createElement(\"line\", {\n  x1: \"6\",\n  x2: \"6\",\n  y1: \"0\",\n  y2: \"4\"\n}), _react[\"default\"].createElement(\"line\", {\n  x1: \"13\",\n  x2: \"13\",\n  y1: \"0\",\n  y2: \"4\"\n}));\n\nvar ClearIcon = _react[\"default\"].createElement(\"svg\", _extends({}, iconProps, {\n  className: \"\".concat(baseClassName, \"__clear-button__icon \").concat(baseClassName, \"__button__icon\")\n}), _react[\"default\"].createElement(\"line\", {\n  x1: \"4\",\n  x2: \"15\",\n  y1: \"4\",\n  y2: \"15\"\n}), _react[\"default\"].createElement(\"line\", {\n  x1: \"15\",\n  x2: \"4\",\n  y1: \"4\",\n  y2: \"15\"\n}));\n\nDateTimePicker.defaultProps = {\n  calendarIcon: CalendarIcon,\n  clearIcon: ClearIcon,\n  isCalendarOpen: null,\n  isClockOpen: null,\n  maxDetail: 'minute'\n};\n\nvar isValue = _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].instanceOf(Date)]);\n\nDateTimePicker.propTypes = {\n  amPmAriaLabel: _propTypes[\"default\"].string,\n  autoFocus: _propTypes[\"default\"].bool,\n  calendarAriaLabel: _propTypes[\"default\"].string,\n  calendarClassName: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].string)]),\n  calendarIcon: _propTypes[\"default\"].node,\n  className: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].string)]),\n  clearAriaLabel: _propTypes[\"default\"].string,\n  clearIcon: _propTypes[\"default\"].node,\n  clockClassName: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].string)]),\n  dayAriaLabel: _propTypes[\"default\"].string,\n  dayPlaceholder: _propTypes[\"default\"].string,\n  disableCalendar: _propTypes[\"default\"].bool,\n  disableClock: _propTypes[\"default\"].bool,\n  disabled: _propTypes[\"default\"].bool,\n  format: _propTypes[\"default\"].string,\n  hourAriaLabel: _propTypes[\"default\"].string,\n  hourPlaceholder: _propTypes[\"default\"].string,\n  isCalendarOpen: _propTypes[\"default\"].bool,\n  isClockOpen: _propTypes[\"default\"].bool,\n  locale: _propTypes[\"default\"].string,\n  maxDate: _propTypes2.isMaxDate,\n  maxDetail: _propTypes[\"default\"].oneOf(allViews),\n  minDate: _propTypes2.isMinDate,\n  minuteAriaLabel: _propTypes[\"default\"].string,\n  minutePlaceholder: _propTypes[\"default\"].string,\n  monthAriaLabel: _propTypes[\"default\"].string,\n  monthPlaceholder: _propTypes[\"default\"].string,\n  name: _propTypes[\"default\"].string,\n  nativeInputAriaLabel: _propTypes[\"default\"].string,\n  onCalendarClose: _propTypes[\"default\"].func,\n  onCalendarOpen: _propTypes[\"default\"].func,\n  onChange: _propTypes[\"default\"].func,\n  onClockClose: _propTypes[\"default\"].func,\n  onClockOpen: _propTypes[\"default\"].func,\n  onFocus: _propTypes[\"default\"].func,\n  required: _propTypes[\"default\"].bool,\n  secondAriaLabel: _propTypes[\"default\"].string,\n  secondPlaceholder: _propTypes[\"default\"].string,\n  showLeadingZeros: _propTypes[\"default\"].bool,\n  value: _propTypes[\"default\"].oneOfType([isValue, _propTypes[\"default\"].arrayOf(isValue)]),\n  yearAriaLabel: _propTypes[\"default\"].string,\n  yearPlaceholder: _propTypes[\"default\"].string\n};\n(0, _reactLifecyclesCompat.polyfill)(DateTimePicker);","// As defined on the list of supported events: https://reactjs.org/docs/events.html\nexport var clipboardEvents = ['onCopy', 'onCut', 'onPaste'];\nexport var compositionEvents = ['onCompositionEnd', 'onCompositionStart', 'onCompositionUpdate'];\nexport var keyboardEvents = ['onKeyDown', 'onKeyPress', 'onKeyUp'];\nexport var focusEvents = ['onFocus', 'onBlur'];\nexport var formEvents = ['onChange', 'onInput', 'onInvalid', 'onReset', 'onSubmit'];\nexport var genericEvents = ['onError', 'onLoad'];\nexport var mouseEvents = ['onClick', 'onContextMenu', 'onDoubleClick', 'onDrag', 'onDragEnd', 'onDragEnter', 'onDragExit', 'onDragLeave', 'onDragOver', 'onDragStart', 'onDrop', 'onMouseDown', 'onMouseEnter', 'onMouseLeave', 'onMouseMove', 'onMouseOut', 'onMouseOver', 'onMouseUp'];\nexport var pointerEvents = ['onPointerDown', 'onPointerMove', 'onPointerUp', 'onPointerCancel', 'onGotPointerCapture', 'onLostPointerCapture', 'onPointerEnter', 'onPointerLeave', 'onPointerOver', 'onPointerOut'];\nexport var selectionEvents = ['onSelect'];\nexport var touchEvents = ['onTouchCancel', 'onTouchEnd', 'onTouchMove', 'onTouchStart'];\nexport var uiEvents = ['onScroll'];\nexport var wheelEvents = ['onWheel'];\nexport var mediaEvents = ['onAbort', 'onCanPlay', 'onCanPlayThrough', 'onDurationChange', 'onEmptied', 'onEncrypted', 'onEnded', 'onError', 'onLoadedData', 'onLoadedMetadata', 'onLoadStart', 'onPause', 'onPlay', 'onPlaying', 'onProgress', 'onRateChange', 'onSeeked', 'onSeeking', 'onStalled', 'onSuspend', 'onTimeUpdate', 'onVolumeChange', 'onWaiting'];\nexport var imageEvents = ['onLoad', 'onError'];\nexport var animationEvents = ['onAnimationStart', 'onAnimationEnd', 'onAnimationIteration'];\nexport var transitionEvents = ['onTransitionEnd'];\nexport var otherEvents = ['onToggle'];\nexport var allEvents = [].concat(clipboardEvents, compositionEvents, keyboardEvents, focusEvents, formEvents, genericEvents, mouseEvents, pointerEvents, selectionEvents, touchEvents, uiEvents, wheelEvents, mediaEvents, imageEvents, animationEvents, transitionEvents, otherEvents);\n/**\n * Returns an object with on-event callback props curried with provided args.\n * @param {Object} props Props passed to a component.\n * @param {Function=} getArgs A function that returns argument(s) on-event callbacks\n *   shall be curried with.\n */\n\nvar makeEventProps = function makeEventProps(props, getArgs) {\n  var eventProps = {};\n  allEvents.forEach(function (eventName) {\n    if (!(eventName in props)) {\n      return;\n    }\n\n    if (!getArgs) {\n      eventProps[eventName] = props[eventName];\n      return;\n    }\n\n    eventProps[eventName] = function (event) {\n      return props[eventName](event, getArgs(eventName));\n    };\n  });\n  return eventProps;\n};\n\nexport default makeEventProps;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"Calendar\", {\n  enumerable: true,\n  get: function get() {\n    return _Calendar[\"default\"];\n  }\n});\nObject.defineProperty(exports, \"CenturyView\", {\n  enumerable: true,\n  get: function get() {\n    return _CenturyView[\"default\"];\n  }\n});\nObject.defineProperty(exports, \"DecadeView\", {\n  enumerable: true,\n  get: function get() {\n    return _DecadeView[\"default\"];\n  }\n});\nObject.defineProperty(exports, \"YearView\", {\n  enumerable: true,\n  get: function get() {\n    return _YearView[\"default\"];\n  }\n});\nObject.defineProperty(exports, \"MonthView\", {\n  enumerable: true,\n  get: function get() {\n    return _MonthView[\"default\"];\n  }\n});\nexports[\"default\"] = void 0;\n\nvar _Calendar = _interopRequireDefault(require(\"./Calendar\"));\n\nvar _CenturyView = _interopRequireDefault(require(\"./CenturyView\"));\n\nvar _DecadeView = _interopRequireDefault(require(\"./DecadeView\"));\n\nvar _YearView = _interopRequireDefault(require(\"./YearView\"));\n\nvar _MonthView = _interopRequireDefault(require(\"./MonthView\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar _default = _Calendar[\"default\"];\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _mergeClassNames = _interopRequireDefault(require(\"merge-class-names\"));\n\nvar _Navigation = _interopRequireDefault(require(\"./Calendar/Navigation\"));\n\nvar _CenturyView = _interopRequireDefault(require(\"./CenturyView\"));\n\nvar _DecadeView = _interopRequireDefault(require(\"./DecadeView\"));\n\nvar _YearView = _interopRequireDefault(require(\"./YearView\"));\n\nvar _MonthView = _interopRequireDefault(require(\"./MonthView\"));\n\nvar _dates = require(\"./shared/dates\");\n\nvar _propTypes2 = require(\"./shared/propTypes\");\n\nvar _utils = require(\"./shared/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nvar baseClassName = 'react-calendar';\nvar allViews = ['century', 'decade', 'year', 'month'];\nvar allValueTypes = [].concat(_toConsumableArray(allViews.slice(1)), ['day']);\n\nvar datesAreDifferent = function datesAreDifferent(date1, date2) {\n  return date1 && !date2 || !date1 && date2 || date1 && date2 && date1.getTime() !== date2.getTime();\n};\n/**\n * Returns views array with disallowed values cut off.\n */\n\n\nvar getLimitedViews = function getLimitedViews(minDetail, maxDetail) {\n  return allViews.slice(allViews.indexOf(minDetail), allViews.indexOf(maxDetail) + 1);\n};\n/**\n * Determines whether a given view is allowed with currently applied settings.\n */\n\n\nvar isViewAllowed = function isViewAllowed(view, minDetail, maxDetail) {\n  var views = getLimitedViews(minDetail, maxDetail);\n  return views.indexOf(view) !== -1;\n};\n/**\n * Gets either provided view if allowed by minDetail and maxDetail, or gets\n * the default view if not allowed.\n */\n\n\nvar getView = function getView(view, minDetail, maxDetail) {\n  if (isViewAllowed(view, minDetail, maxDetail)) {\n    return view;\n  }\n\n  return getLimitedViews(minDetail, maxDetail).pop();\n};\n/**\n * Returns value type that can be returned with currently applied settings.\n */\n\n\nvar getValueType = function getValueType(maxDetail) {\n  return allValueTypes[allViews.indexOf(maxDetail)];\n};\n\nvar getValueFrom = function getValueFrom(value) {\n  if (!value) {\n    return null;\n  }\n\n  var rawValueFrom = value instanceof Array && value.length === 2 ? value[0] : value;\n\n  if (!rawValueFrom) {\n    return null;\n  }\n\n  var valueFromDate = new Date(rawValueFrom);\n\n  if (isNaN(valueFromDate.getTime())) {\n    throw new Error(\"Invalid date: \".concat(value));\n  }\n\n  return valueFromDate;\n};\n\nvar getDetailValueFrom = function getDetailValueFrom(value, minDate, maxDate, maxDetail) {\n  var valueFrom = getValueFrom(value);\n\n  if (!valueFrom) {\n    return null;\n  }\n\n  var detailValueFrom = (0, _dates.getBegin)(getValueType(maxDetail), valueFrom);\n  return (0, _utils.between)(detailValueFrom, minDate, maxDate);\n};\n\nvar getValueTo = function getValueTo(value) {\n  if (!value) {\n    return null;\n  }\n\n  var rawValueTo = value instanceof Array && value.length === 2 ? value[1] : value;\n\n  if (!rawValueTo) {\n    return null;\n  }\n\n  var valueToDate = new Date(rawValueTo);\n\n  if (isNaN(valueToDate.getTime())) {\n    throw new Error(\"Invalid date: \".concat(value));\n  }\n\n  return valueToDate;\n};\n\nvar getDetailValueTo = function getDetailValueTo(value, minDate, maxDate, maxDetail) {\n  var valueTo = getValueTo(value);\n\n  if (!valueTo) {\n    return null;\n  }\n\n  var detailValueTo = (0, _dates.getEnd)(getValueType(maxDetail), valueTo);\n  return (0, _utils.between)(detailValueTo, minDate, maxDate);\n};\n\nvar getDetailValueArray = function getDetailValueArray(value, minDate, maxDate, maxDetail) {\n  if (value instanceof Array) {\n    return value;\n  }\n\n  return [getDetailValueFrom(value, minDate, maxDate, maxDetail), getDetailValueTo(value, minDate, maxDate, maxDetail)];\n};\n\nvar getActiveStartDate = function getActiveStartDate(props) {\n  var activeStartDate = props.activeStartDate,\n      maxDate = props.maxDate,\n      maxDetail = props.maxDetail,\n      minDate = props.minDate,\n      minDetail = props.minDetail,\n      value = props.value,\n      view = props.view;\n  var rangeType = getView(view, minDetail, maxDetail);\n  var valueFrom = getDetailValueFrom(value, minDate, maxDate, maxDetail) || activeStartDate || new Date();\n  return (0, _dates.getBegin)(rangeType, valueFrom);\n};\n\nvar Calendar =\n/*#__PURE__*/\nfunction (_Component) {\n  _inherits(Calendar, _Component);\n\n  function Calendar() {\n    var _getPrototypeOf2;\n\n    var _this;\n\n    _classCallCheck(this, Calendar);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Calendar)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n    _defineProperty(_assertThisInitialized(_this), \"state\", {});\n\n    _defineProperty(_assertThisInitialized(_this), \"setActiveStartDate\", function (activeStartDate) {\n      var onActiveDateChange = _this.props.onActiveDateChange;\n\n      _this.setState({\n        activeStartDate: activeStartDate\n      }, function () {\n        var view = _this.state.view;\n        (0, _utils.callIfDefined)(onActiveDateChange, {\n          activeStartDate: activeStartDate,\n          view: view\n        });\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"drillDown\", function (activeStartDate) {\n      if (!_this.drillDownAvailable) {\n        return;\n      }\n\n      var _this$props = _this.props,\n          maxDetail = _this$props.maxDetail,\n          minDetail = _this$props.minDetail,\n          onDrillDown = _this$props.onDrillDown;\n      var views = getLimitedViews(minDetail, maxDetail);\n\n      _this.setState(function (prevState) {\n        var nextView = views[views.indexOf(prevState.view) + 1];\n        return {\n          activeStartDate: activeStartDate,\n          view: nextView\n        };\n      }, function () {\n        var view = _this.state.view;\n        (0, _utils.callIfDefined)(onDrillDown, {\n          activeStartDate: activeStartDate,\n          view: view\n        });\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"drillUp\", function () {\n      if (!_this.drillUpAvailable) {\n        return;\n      }\n\n      var _this$props2 = _this.props,\n          maxDetail = _this$props2.maxDetail,\n          minDetail = _this$props2.minDetail,\n          onDrillUp = _this$props2.onDrillUp;\n      var views = getLimitedViews(minDetail, maxDetail);\n\n      _this.setState(function (prevState) {\n        var nextView = views[views.indexOf(prevState.view) - 1];\n        var activeStartDate = (0, _dates.getBegin)(nextView, prevState.activeStartDate);\n        return {\n          activeStartDate: activeStartDate,\n          view: nextView\n        };\n      }, function () {\n        var _this$state = _this.state,\n            activeStartDate = _this$state.activeStartDate,\n            view = _this$state.view;\n        (0, _utils.callIfDefined)(onDrillUp, {\n          activeStartDate: activeStartDate,\n          view: view\n        });\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onChange\", function (value) {\n      var _this$props3 = _this.props,\n          onChange = _this$props3.onChange,\n          selectRange = _this$props3.selectRange;\n      var nextValue;\n      var callback;\n\n      if (selectRange) {\n        var previousValue = _this.state.value; // Range selection turned on\n\n        if (!previousValue || [].concat(previousValue).length !== 1 // 0 or 2 - either way we're starting a new array\n        ) {\n            // First value\n            nextValue = (0, _dates.getBegin)(_this.valueType, value);\n          } else {\n          // Second value\n          nextValue = (0, _dates.getValueRange)(_this.valueType, previousValue, value);\n\n          callback = function callback() {\n            return (0, _utils.callIfDefined)(onChange, nextValue);\n          };\n        }\n      } else {\n        // Range selection turned off\n        nextValue = _this.getProcessedValue(value);\n\n        callback = function callback() {\n          return (0, _utils.callIfDefined)(onChange, nextValue);\n        };\n      }\n\n      _this.setState({\n        value: nextValue\n      }, callback);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onMouseOver\", function (value) {\n      _this.setState(function (prevState) {\n        if (prevState.hover && prevState.hover.getTime() === value.getTime()) {\n          return null;\n        }\n\n        return {\n          hover: value\n        };\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onMouseLeave\", function () {\n      _this.setState({\n        hover: null\n      });\n    });\n\n    return _this;\n  }\n\n  _createClass(Calendar, [{\n    key: \"getProcessedValue\",\n\n    /**\n     * Gets current value in a desired format.\n     */\n    value: function getProcessedValue(value) {\n      var _this$props4 = this.props,\n          minDate = _this$props4.minDate,\n          maxDate = _this$props4.maxDate,\n          maxDetail = _this$props4.maxDetail,\n          returnValue = _this$props4.returnValue;\n\n      var processFunction = function () {\n        switch (returnValue) {\n          case 'start':\n            return getDetailValueFrom;\n\n          case 'end':\n            return getDetailValueTo;\n\n          case 'range':\n            return getDetailValueArray;\n\n          default:\n            throw new Error('Invalid returnValue.');\n        }\n      }();\n\n      return processFunction(value, minDate, maxDate, maxDetail);\n    }\n    /**\n     * Called when the user uses navigation buttons.\n     */\n\n  }, {\n    key: \"renderContent\",\n    value: function renderContent() {\n      var _this$props5 = this.props,\n          calendarType = _this$props5.calendarType,\n          locale = _this$props5.locale,\n          maxDate = _this$props5.maxDate,\n          minDate = _this$props5.minDate,\n          renderChildren = _this$props5.renderChildren,\n          selectRange = _this$props5.selectRange,\n          tileClassName = _this$props5.tileClassName,\n          tileContent = _this$props5.tileContent,\n          tileDisabled = _this$props5.tileDisabled;\n      var _this$state2 = this.state,\n          activeStartDate = _this$state2.activeStartDate,\n          hover = _this$state2.hover,\n          value = _this$state2.value,\n          view = _this$state2.view;\n      var onMouseOver = this.onMouseOver,\n          valueType = this.valueType;\n      var commonProps = {\n        activeStartDate: activeStartDate,\n        hover: hover,\n        locale: locale,\n        maxDate: maxDate,\n        minDate: minDate,\n        onMouseOver: selectRange ? onMouseOver : null,\n        tileClassName: tileClassName,\n        tileContent: tileContent || renderChildren,\n        // For backwards compatibility\n        tileDisabled: tileDisabled,\n        value: value,\n        valueType: valueType\n      };\n      var clickAction = this.drillDownAvailable ? this.drillDown : this.onChange;\n\n      switch (view) {\n        case 'century':\n          {\n            var onClickDecade = this.props.onClickDecade;\n            return _react[\"default\"].createElement(_CenturyView[\"default\"], _extends({\n              onClick: (0, _utils.mergeFunctions)(clickAction, onClickDecade)\n            }, commonProps));\n          }\n\n        case 'decade':\n          {\n            var onClickYear = this.props.onClickYear;\n            return _react[\"default\"].createElement(_DecadeView[\"default\"], _extends({\n              onClick: (0, _utils.mergeFunctions)(clickAction, onClickYear)\n            }, commonProps));\n          }\n\n        case 'year':\n          {\n            var _this$props6 = this.props,\n                formatMonth = _this$props6.formatMonth,\n                onClickMonth = _this$props6.onClickMonth;\n            return _react[\"default\"].createElement(_YearView[\"default\"], _extends({\n              formatMonth: formatMonth,\n              onClick: (0, _utils.mergeFunctions)(clickAction, onClickMonth)\n            }, commonProps));\n          }\n\n        case 'month':\n          {\n            var _this$props7 = this.props,\n                formatShortWeekday = _this$props7.formatShortWeekday,\n                onClickDay = _this$props7.onClickDay,\n                onClickWeekNumber = _this$props7.onClickWeekNumber,\n                showFixedNumberOfWeeks = _this$props7.showFixedNumberOfWeeks,\n                showNeighboringMonth = _this$props7.showNeighboringMonth,\n                showWeekNumbers = _this$props7.showWeekNumbers;\n            var onMouseLeave = this.onMouseLeave;\n            return _react[\"default\"].createElement(_MonthView[\"default\"], _extends({\n              calendarType: calendarType,\n              formatShortWeekday: formatShortWeekday,\n              onClick: (0, _utils.mergeFunctions)(clickAction, onClickDay),\n              onClickWeekNumber: onClickWeekNumber,\n              onMouseLeave: onMouseLeave,\n              showFixedNumberOfWeeks: showFixedNumberOfWeeks,\n              showNeighboringMonth: showNeighboringMonth,\n              showWeekNumbers: showWeekNumbers\n            }, commonProps));\n          }\n\n        default:\n          throw new Error(\"Invalid view: \".concat(view, \".\"));\n      }\n    }\n  }, {\n    key: \"renderNavigation\",\n    value: function renderNavigation() {\n      var showNavigation = this.props.showNavigation;\n\n      if (!showNavigation) {\n        return null;\n      }\n\n      var _this$props8 = this.props,\n          formatMonthYear = _this$props8.formatMonthYear,\n          locale = _this$props8.locale,\n          maxDate = _this$props8.maxDate,\n          maxDetail = _this$props8.maxDetail,\n          minDate = _this$props8.minDate,\n          minDetail = _this$props8.minDetail,\n          navigationAriaLabel = _this$props8.navigationAriaLabel,\n          navigationLabel = _this$props8.navigationLabel,\n          next2AriaLabel = _this$props8.next2AriaLabel,\n          next2Label = _this$props8.next2Label,\n          nextAriaLabel = _this$props8.nextAriaLabel,\n          nextLabel = _this$props8.nextLabel,\n          prev2AriaLabel = _this$props8.prev2AriaLabel,\n          prev2Label = _this$props8.prev2Label,\n          prevAriaLabel = _this$props8.prevAriaLabel,\n          prevLabel = _this$props8.prevLabel;\n      var _this$state3 = this.state,\n          activeStartDate = _this$state3.activeStartDate,\n          view = _this$state3.view;\n      return _react[\"default\"].createElement(_Navigation[\"default\"], {\n        activeStartDate: activeStartDate,\n        drillUp: this.drillUp,\n        formatMonthYear: formatMonthYear,\n        locale: locale,\n        maxDate: maxDate,\n        minDate: minDate,\n        navigationAriaLabel: navigationAriaLabel,\n        navigationLabel: navigationLabel,\n        next2AriaLabel: next2AriaLabel,\n        next2Label: next2Label,\n        nextAriaLabel: nextAriaLabel,\n        nextLabel: nextLabel,\n        prev2AriaLabel: prev2AriaLabel,\n        prev2Label: prev2Label,\n        prevAriaLabel: prevAriaLabel,\n        prevLabel: prevLabel,\n        setActiveStartDate: this.setActiveStartDate,\n        view: view,\n        views: getLimitedViews(minDetail, maxDetail)\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props9 = this.props,\n          className = _this$props9.className,\n          selectRange = _this$props9.selectRange;\n      var value = this.state.value;\n      var onMouseLeave = this.onMouseLeave;\n      var valueArray = [].concat(value);\n      return _react[\"default\"].createElement(\"div\", {\n        className: (0, _mergeClassNames[\"default\"])(baseClassName, selectRange && valueArray.length === 1 && \"\".concat(baseClassName, \"--selectRange\"), className)\n      }, this.renderNavigation(), _react[\"default\"].createElement(\"div\", {\n        className: \"\".concat(baseClassName, \"__viewContainer\"),\n        onBlur: selectRange ? onMouseLeave : null,\n        onMouseLeave: selectRange ? onMouseLeave : null\n      }, this.renderContent()));\n    }\n  }, {\n    key: \"drillDownAvailable\",\n    get: function get() {\n      var _this$props10 = this.props,\n          maxDetail = _this$props10.maxDetail,\n          minDetail = _this$props10.minDetail;\n      var view = this.state.view;\n      var views = getLimitedViews(minDetail, maxDetail);\n      return views.indexOf(view) < views.length - 1;\n    }\n  }, {\n    key: \"drillUpAvailable\",\n    get: function get() {\n      var _this$props11 = this.props,\n          maxDetail = _this$props11.maxDetail,\n          minDetail = _this$props11.minDetail;\n      var view = this.state.view;\n      var views = getLimitedViews(minDetail, maxDetail);\n      return views.indexOf(view) > 0;\n    }\n  }, {\n    key: \"valueType\",\n    get: function get() {\n      var maxDetail = this.props.maxDetail;\n      return getValueType(maxDetail);\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps, prevState) {\n      var minDate = nextProps.minDate,\n          maxDate = nextProps.maxDate,\n          minDetail = nextProps.minDetail,\n          maxDetail = nextProps.maxDetail;\n      var nextState = {};\n      /**\n       * If the next activeStartDate is different from the current one, update\n       * activeStartDate (for display) and activeStartDateProps (for future comparisons)\n       */\n\n      var nextActiveStartDate = getActiveStartDate(nextProps);\n\n      if (datesAreDifferent(nextActiveStartDate, prevState.activeStartDateProps)) {\n        nextState.activeStartDate = nextActiveStartDate;\n        nextState.activeStartDateProps = nextActiveStartDate;\n      }\n      /**\n       * If the next view is different from the current one, and the previously set view is not\n       * valid based on minDetail and maxDetail, get a new one.\n       */\n\n\n      var nextView = getView(nextProps.view, minDetail, maxDetail);\n\n      if (nextView !== prevState.viewProps && !isViewAllowed(prevState.view, minDetail, maxDetail)) {\n        nextState.view = nextView;\n        nextState.viewProps = nextView;\n      }\n      /**\n       * If the next value is different from the current one (with an exception of situation in\n       * which values provided are limited by minDate and maxDate so that the dates are the same),\n       * get a new one.\n       */\n\n\n      var values = [nextProps.value, prevState.valueProps];\n\n      if (nextState.view // Allowed view changed\n      || datesAreDifferent.apply(void 0, _toConsumableArray(values.map(function (value) {\n        return getValueFrom(value, minDate, maxDate, maxDetail);\n      }))) || datesAreDifferent.apply(void 0, _toConsumableArray(values.map(function (value) {\n        return getValueTo(value, minDate, maxDate, maxDetail);\n      })))) {\n        nextState.value = nextProps.value;\n        nextState.valueProps = nextProps.value;\n      }\n\n      if (!nextProps.selectRange && prevState.hover) {\n        nextState.hover = null;\n      }\n\n      return nextState;\n    }\n  }]);\n\n  return Calendar;\n}(_react.Component);\n\nexports[\"default\"] = Calendar;\nCalendar.defaultProps = {\n  maxDetail: 'month',\n  minDetail: 'century',\n  returnValue: 'start',\n  showNavigation: true,\n  showNeighboringMonth: true,\n  view: 'month'\n};\nCalendar.propTypes = {\n  activeStartDate: _propTypes[\"default\"].instanceOf(Date),\n  calendarType: _propTypes2.isCalendarType,\n  className: _propTypes2.isClassName,\n  formatMonth: _propTypes[\"default\"].func,\n  formatMonthYear: _propTypes[\"default\"].func,\n  formatShortWeekday: _propTypes[\"default\"].func,\n  locale: _propTypes[\"default\"].string,\n  maxDate: _propTypes2.isMaxDate,\n  maxDetail: _propTypes[\"default\"].oneOf(allViews),\n  minDate: _propTypes2.isMinDate,\n  minDetail: _propTypes[\"default\"].oneOf(allViews),\n  navigationAriaLabel: _propTypes[\"default\"].string,\n  navigationLabel: _propTypes[\"default\"].func,\n  next2AriaLabel: _propTypes[\"default\"].string,\n  next2Label: _propTypes[\"default\"].node,\n  nextAriaLabel: _propTypes[\"default\"].string,\n  nextLabel: _propTypes[\"default\"].node,\n  onActiveDateChange: _propTypes[\"default\"].func,\n  onChange: _propTypes[\"default\"].func,\n  onClickDay: _propTypes[\"default\"].func,\n  onClickDecade: _propTypes[\"default\"].func,\n  onClickMonth: _propTypes[\"default\"].func,\n  onClickWeekNumber: _propTypes[\"default\"].func,\n  onClickYear: _propTypes[\"default\"].func,\n  onDrillDown: _propTypes[\"default\"].func,\n  onDrillUp: _propTypes[\"default\"].func,\n  prev2AriaLabel: _propTypes[\"default\"].string,\n  prev2Label: _propTypes[\"default\"].node,\n  prevAriaLabel: _propTypes[\"default\"].string,\n  prevLabel: _propTypes[\"default\"].node,\n  renderChildren: _propTypes[\"default\"].func,\n  // For backwards compatibility\n  returnValue: _propTypes[\"default\"].oneOf(['start', 'end', 'range']),\n  selectRange: _propTypes[\"default\"].bool,\n  showFixedNumberOfWeeks: _propTypes[\"default\"].bool,\n  showNavigation: _propTypes[\"default\"].bool,\n  showNeighboringMonth: _propTypes[\"default\"].bool,\n  showWeekNumbers: _propTypes[\"default\"].bool,\n  tileClassName: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].func, _propTypes2.isClassName]),\n  tileContent: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].func, _propTypes[\"default\"].node]),\n  tileDisabled: _propTypes[\"default\"].func,\n  value: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes2.isValue]),\n  view: _propTypes[\"default\"].oneOf(allViews)\n};\n(0, _reactLifecyclesCompat.polyfill)(Calendar);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = Navigation;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _dates = require(\"../shared/dates\");\n\nvar _dateFormatter = require(\"../shared/dateFormatter\");\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar className = 'react-calendar__navigation';\n\nfunction Navigation(_ref) {\n  var date = _ref.activeStartDate,\n      drillUp = _ref.drillUp,\n      formatMonthYear = _ref.formatMonthYear,\n      locale = _ref.locale,\n      maxDate = _ref.maxDate,\n      minDate = _ref.minDate,\n      navigationAriaLabel = _ref.navigationAriaLabel,\n      navigationLabel = _ref.navigationLabel,\n      next2AriaLabel = _ref.next2AriaLabel,\n      next2Label = _ref.next2Label,\n      nextAriaLabel = _ref.nextAriaLabel,\n      nextLabel = _ref.nextLabel,\n      prev2AriaLabel = _ref.prev2AriaLabel,\n      prev2Label = _ref.prev2Label,\n      prevAriaLabel = _ref.prevAriaLabel,\n      prevLabel = _ref.prevLabel,\n      setActiveStartDate = _ref.setActiveStartDate,\n      view = _ref.view,\n      views = _ref.views;\n  var drillUpAvailable = views.indexOf(view) > 0;\n  var shouldShowPrevNext2Buttons = view !== 'century';\n  var previousActiveStartDate = (0, _dates.getBeginPrevious)(view, date);\n  var previousActiveStartDate2 = shouldShowPrevNext2Buttons && (0, _dates.getBeginPrevious2)(view, date);\n  var nextActiveStartDate = (0, _dates.getBeginNext)(view, date);\n  var nextActiveStartDate2 = shouldShowPrevNext2Buttons && (0, _dates.getBeginNext2)(view, date);\n\n  var prevButtonDisabled = function () {\n    if (previousActiveStartDate.getFullYear() < 1000) {\n      return true;\n    }\n\n    var previousActiveEndDate = (0, _dates.getEndPrevious)(view, date);\n    return minDate && minDate >= previousActiveEndDate;\n  }();\n\n  var prev2ButtonDisabled = shouldShowPrevNext2Buttons && function () {\n    if (previousActiveStartDate2.getFullYear() < 1000) {\n      return true;\n    }\n\n    var previousActiveEndDate = (0, _dates.getEndPrevious2)(view, date);\n    return minDate && minDate >= previousActiveEndDate;\n  }();\n\n  var nextButtonDisabled = maxDate && maxDate <= nextActiveStartDate;\n  var next2ButtonDisabled = shouldShowPrevNext2Buttons && maxDate && maxDate <= nextActiveStartDate2;\n\n  function onClickPrevious() {\n    setActiveStartDate(previousActiveStartDate);\n  }\n\n  function onClickPrevious2() {\n    setActiveStartDate(previousActiveStartDate2);\n  }\n\n  function onClickNext() {\n    setActiveStartDate(nextActiveStartDate);\n  }\n\n  function onClickNext2() {\n    setActiveStartDate(nextActiveStartDate2);\n  }\n\n  var label = function () {\n    switch (view) {\n      case 'century':\n        return (0, _dates.getCenturyLabel)(date);\n\n      case 'decade':\n        return (0, _dates.getDecadeLabel)(date);\n\n      case 'year':\n        return (0, _dates.getYear)(date);\n\n      case 'month':\n        return formatMonthYear(locale, date);\n\n      default:\n        throw new Error(\"Invalid view: \".concat(view, \".\"));\n    }\n  }();\n\n  return _react[\"default\"].createElement(\"div\", {\n    className: className,\n    style: {\n      display: 'flex'\n    }\n  }, prev2Label !== null && shouldShowPrevNext2Buttons && _react[\"default\"].createElement(\"button\", {\n    \"aria-label\": prev2AriaLabel,\n    className: \"\".concat(className, \"__arrow \").concat(className, \"__prev2-button\"),\n    disabled: prev2ButtonDisabled,\n    onClick: onClickPrevious2,\n    type: \"button\"\n  }, prev2Label), _react[\"default\"].createElement(\"button\", {\n    \"aria-label\": prevAriaLabel,\n    className: \"\".concat(className, \"__arrow \").concat(className, \"__prev-button\"),\n    disabled: prevButtonDisabled,\n    onClick: onClickPrevious,\n    type: \"button\"\n  }, prevLabel), _react[\"default\"].createElement(\"button\", {\n    \"aria-label\": navigationAriaLabel,\n    className: \"react-calendar__navigation__label\",\n    disabled: !drillUpAvailable,\n    onClick: drillUp,\n    style: {\n      flexGrow: 1\n    },\n    type: \"button\"\n  }, navigationLabel ? navigationLabel({\n    date: date,\n    view: view,\n    label: label\n  }) : label), _react[\"default\"].createElement(\"button\", {\n    \"aria-label\": nextAriaLabel,\n    className: \"\".concat(className, \"__arrow \").concat(className, \"__next-button\"),\n    disabled: nextButtonDisabled,\n    onClick: onClickNext,\n    type: \"button\"\n  }, nextLabel), next2Label !== null && shouldShowPrevNext2Buttons && _react[\"default\"].createElement(\"button\", {\n    \"aria-label\": next2AriaLabel,\n    className: \"\".concat(className, \"__arrow \").concat(className, \"__next2-button\"),\n    disabled: next2ButtonDisabled,\n    onClick: onClickNext2,\n    type: \"button\"\n  }, next2Label));\n}\n\nNavigation.defaultProps = {\n  formatMonthYear: _dateFormatter.formatMonthYear,\n  navigationAriaLabel: '',\n  next2AriaLabel: '',\n  next2Label: '»',\n  nextAriaLabel: '',\n  nextLabel: '›',\n  prev2AriaLabel: '',\n  prev2Label: '«',\n  prevAriaLabel: '',\n  prevLabel: '‹'\n};\nNavigation.propTypes = {\n  activeStartDate: _propTypes[\"default\"].instanceOf(Date).isRequired,\n  drillUp: _propTypes[\"default\"].func.isRequired,\n  formatMonthYear: _propTypes[\"default\"].func,\n  locale: _propTypes[\"default\"].string,\n  maxDate: _propTypes[\"default\"].instanceOf(Date),\n  minDate: _propTypes[\"default\"].instanceOf(Date),\n  navigationAriaLabel: _propTypes[\"default\"].string,\n  navigationLabel: _propTypes[\"default\"].func,\n  next2AriaLabel: _propTypes[\"default\"].string,\n  next2Label: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].node]),\n  nextAriaLabel: _propTypes[\"default\"].string,\n  nextLabel: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].node]),\n  prev2AriaLabel: _propTypes[\"default\"].string,\n  prev2Label: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].node]),\n  prevAriaLabel: _propTypes[\"default\"].string,\n  prevLabel: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].node]),\n  setActiveStartDate: _propTypes[\"default\"].func.isRequired,\n  view: _propTypes2.isView.isRequired,\n  views: _propTypes2.isViews.isRequired\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = Decades;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _TileGroup = _interopRequireDefault(require(\"../TileGroup\"));\n\nvar _Decade = _interopRequireDefault(require(\"./Decade\"));\n\nvar _dates = require(\"../shared/dates\");\n\nvar _propTypes = require(\"../shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction Decades(props) {\n  var activeStartDate = props.activeStartDate;\n  var start = (0, _dates.getBeginOfCenturyYear)(activeStartDate);\n  var end = start + 99;\n  return _react[\"default\"].createElement(_TileGroup[\"default\"], _extends({}, props, {\n    className: \"react-calendar__century-view__decades\",\n    dateTransform: _dates.getBeginOfDecade,\n    dateType: \"decade\",\n    end: end,\n    start: start,\n    step: 10,\n    tile: _Decade[\"default\"]\n  }));\n}\n\nDecades.propTypes = _objectSpread({}, _propTypes.tileGroupProps);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = Decade;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _Tile = _interopRequireDefault(require(\"../Tile\"));\n\nvar _dates = require(\"../shared/dates\");\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nvar className = 'react-calendar__century-view__decades__decade';\n\nfunction Decade(_ref) {\n  var classes = _ref.classes,\n      point = _ref.point,\n      otherProps = _objectWithoutProperties(_ref, [\"classes\", \"point\"]);\n\n  return _react[\"default\"].createElement(_Tile[\"default\"], _extends({}, otherProps, {\n    classes: [].concat(classes, className),\n    maxDateTransform: _dates.getEndOfDecade,\n    minDateTransform: _dates.getBeginOfDecade,\n    view: \"century\"\n  }), (0, _dates.getDecadeLabel)(point));\n}\n\nDecade.propTypes = _objectSpread({}, _propTypes2.tileProps, {\n  point: _propTypes[\"default\"].number.isRequired\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = Years;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _TileGroup = _interopRequireDefault(require(\"../TileGroup\"));\n\nvar _Year = _interopRequireDefault(require(\"./Year\"));\n\nvar _dates = require(\"../shared/dates\");\n\nvar _propTypes = require(\"../shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction Years(props) {\n  var activeStartDate = props.activeStartDate;\n  var start = (0, _dates.getBeginOfDecadeYear)(activeStartDate);\n  var end = start + 9;\n  return _react[\"default\"].createElement(_TileGroup[\"default\"], _extends({}, props, {\n    className: \"react-calendar__decade-view__years\",\n    dateTransform: function dateTransform(year) {\n      return new Date(year, 0, 1);\n    },\n    dateType: \"year\",\n    end: end,\n    start: start,\n    tile: _Year[\"default\"]\n  }));\n}\n\nYears.propTypes = _objectSpread({}, _propTypes.tileGroupProps);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = Year;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _Tile = _interopRequireDefault(require(\"../Tile\"));\n\nvar _dates = require(\"../shared/dates\");\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nvar className = 'react-calendar__decade-view__years__year';\n\nfunction Year(_ref) {\n  var classes = _ref.classes,\n      point = _ref.point,\n      otherProps = _objectWithoutProperties(_ref, [\"classes\", \"point\"]);\n\n  return _react[\"default\"].createElement(_Tile[\"default\"], _extends({}, otherProps, {\n    classes: [].concat(classes, className),\n    maxDateTransform: _dates.getEndOfYear,\n    minDateTransform: _dates.getBeginOfYear,\n    view: \"decade\"\n  }), point);\n}\n\nYear.propTypes = _objectSpread({}, _propTypes2.tileProps, {\n  point: _propTypes[\"default\"].number.isRequired\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = Months;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _TileGroup = _interopRequireDefault(require(\"../TileGroup\"));\n\nvar _Month = _interopRequireDefault(require(\"./Month\"));\n\nvar _dates = require(\"../shared/dates\");\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction Months(props) {\n  var activeStartDate = props.activeStartDate;\n  var start = 0;\n  var end = 11;\n  var year = (0, _dates.getYear)(activeStartDate);\n  return _react[\"default\"].createElement(_TileGroup[\"default\"], _extends({}, props, {\n    className: \"react-calendar__year-view__months\",\n    dateTransform: function dateTransform(monthIndex) {\n      return new Date(year, monthIndex, 1);\n    },\n    dateType: \"month\",\n    end: end,\n    start: start,\n    tile: _Month[\"default\"]\n  }));\n}\n\nMonths.propTypes = _objectSpread({}, _propTypes2.tileGroupProps, {\n  locale: _propTypes[\"default\"].string\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = Month;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _Tile = _interopRequireDefault(require(\"../Tile\"));\n\nvar _dates = require(\"../shared/dates\");\n\nvar _dateFormatter = require(\"../shared/dateFormatter\");\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nvar className = 'react-calendar__year-view__months__month';\n\nfunction Month(_ref) {\n  var classes = _ref.classes,\n      date = _ref.date,\n      formatMonth = _ref.formatMonth,\n      locale = _ref.locale,\n      otherProps = _objectWithoutProperties(_ref, [\"classes\", \"date\", \"formatMonth\", \"locale\"]);\n\n  return _react[\"default\"].createElement(_Tile[\"default\"], _extends({}, otherProps, {\n    classes: [].concat(classes, className),\n    date: date,\n    formatAbbr: _dateFormatter.formatMonthYear,\n    locale: locale,\n    maxDateTransform: _dates.getEndOfMonth,\n    minDateTransform: _dates.getBeginOfMonth,\n    view: \"year\"\n  }), formatMonth(locale, date));\n}\n\nMonth.defaultProps = {\n  formatMonth: _dateFormatter.formatMonth\n};\nMonth.propTypes = _objectSpread({}, _propTypes2.tileProps, {\n  formatMonth: _propTypes[\"default\"].func\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = Days;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _TileGroup = _interopRequireDefault(require(\"../TileGroup\"));\n\nvar _Day = _interopRequireDefault(require(\"./Day\"));\n\nvar _dates = require(\"../shared/dates\");\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction Days(props) {\n  var activeStartDate = props.activeStartDate,\n      calendarType = props.calendarType;\n\n  var showFixedNumberOfWeeks = props.showFixedNumberOfWeeks,\n      showNeighboringMonth = props.showNeighboringMonth,\n      otherProps = _objectWithoutProperties(props, [\"showFixedNumberOfWeeks\", \"showNeighboringMonth\"]);\n\n  var year = (0, _dates.getYear)(activeStartDate);\n  var monthIndex = (0, _dates.getMonthIndex)(activeStartDate);\n  var hasFixedNumberOfWeeks = showFixedNumberOfWeeks || showNeighboringMonth;\n  var dayOfWeek = (0, _dates.getDayOfWeek)(activeStartDate, calendarType);\n  var offset = hasFixedNumberOfWeeks ? 0 : dayOfWeek;\n  /**\n   * Defines on which day of the month the grid shall start. If we simply show current\n   * month, we obviously start on day one, but if showNeighboringMonth is set to\n   * true, we need to find the beginning of the week the first day of the month is in.\n   */\n\n  var start = (hasFixedNumberOfWeeks ? -dayOfWeek : 0) + 1;\n  /**\n   * Defines on which day of the month the grid shall end. If we simply show current\n   * month, we need to stop on the last day of the month, but if showNeighboringMonth\n   * is set to true, we need to find the end of the week the last day of the month is in.\n   */\n\n  var end = function () {\n    if (showFixedNumberOfWeeks) {\n      // Always show 6 weeks\n      return start + 6 * 7 - 1;\n    }\n\n    var daysInMonth = (0, _dates.getDaysInMonth)(activeStartDate);\n\n    if (showNeighboringMonth) {\n      var activeEndDate = new Date(year, monthIndex, daysInMonth);\n      return daysInMonth + (7 - (0, _dates.getDayOfWeek)(activeEndDate, calendarType) - 1);\n    }\n\n    return daysInMonth;\n  }();\n\n  return _react[\"default\"].createElement(_TileGroup[\"default\"], _extends({}, otherProps, {\n    className: \"react-calendar__month-view__days\",\n    count: 7,\n    currentMonthIndex: monthIndex,\n    dateTransform: function dateTransform(day) {\n      return new Date(year, monthIndex, day);\n    },\n    dateType: \"day\",\n    end: end,\n    offset: offset,\n    start: start,\n    tile: _Day[\"default\"]\n  }));\n}\n\nDays.propTypes = _objectSpread({\n  calendarType: _propTypes2.isCalendarType.isRequired,\n  showFixedNumberOfWeeks: _propTypes[\"default\"].bool,\n  showNeighboringMonth: _propTypes[\"default\"].bool\n}, _propTypes2.tileGroupProps);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = Day;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _Tile = _interopRequireDefault(require(\"../Tile\"));\n\nvar _dates = require(\"../shared/dates\");\n\nvar _dateFormatter = require(\"../shared/dateFormatter\");\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nvar className = 'react-calendar__month-view__days__day';\n\nfunction Day(_ref) {\n  var calendarType = _ref.calendarType,\n      classes = _ref.classes,\n      currentMonthIndex = _ref.currentMonthIndex,\n      date = _ref.date,\n      otherProps = _objectWithoutProperties(_ref, [\"calendarType\", \"classes\", \"currentMonthIndex\", \"date\"]);\n\n  return _react[\"default\"].createElement(_Tile[\"default\"], _extends({}, otherProps, {\n    classes: [].concat(classes, className, (0, _dates.isWeekend)(date, calendarType) ? \"\".concat(className, \"--weekend\") : null, date.getMonth() !== currentMonthIndex ? \"\".concat(className, \"--neighboringMonth\") : null),\n    date: date,\n    formatAbbr: _dateFormatter.formatLongDate,\n    maxDateTransform: _dates.getEndOfDay,\n    minDateTransform: _dates.getBeginOfDay,\n    view: \"month\"\n  }), (0, _dates.getDay)(date));\n}\n\nDay.propTypes = _objectSpread({}, _propTypes2.tileProps, {\n  currentMonthIndex: _propTypes[\"default\"].number.isRequired\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = Weekdays;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _Flex = _interopRequireDefault(require(\"../Flex\"));\n\nvar _dates = require(\"../shared/dates\");\n\nvar _dateFormatter = require(\"../shared/dateFormatter\");\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction Weekdays(props) {\n  var calendarType = props.calendarType,\n      formatShortWeekday = props.formatShortWeekday,\n      locale = props.locale,\n      onMouseLeave = props.onMouseLeave;\n  var anyDate = new Date();\n  var beginOfMonth = (0, _dates.getBeginOfMonth)(anyDate);\n  var year = (0, _dates.getYear)(beginOfMonth);\n  var monthIndex = (0, _dates.getMonthIndex)(beginOfMonth);\n  var weekdays = [];\n\n  for (var weekday = 1; weekday <= 7; weekday += 1) {\n    var weekdayDate = new Date(year, monthIndex, weekday - (0, _dates.getDayOfWeek)(beginOfMonth, calendarType));\n    var abbr = (0, _dateFormatter.formatWeekday)(locale, weekdayDate);\n    weekdays.push(_react[\"default\"].createElement(\"div\", {\n      key: weekday,\n      className: \"react-calendar__month-view__weekdays__weekday\"\n    }, _react[\"default\"].createElement(\"abbr\", {\n      \"aria-label\": abbr,\n      title: abbr\n    }, formatShortWeekday(locale, weekdayDate).replace('.', ''))));\n  }\n\n  return _react[\"default\"].createElement(_Flex[\"default\"], {\n    className: \"react-calendar__month-view__weekdays\",\n    count: 7,\n    onFocus: onMouseLeave,\n    onMouseOver: onMouseLeave\n  }, weekdays);\n}\n\nWeekdays.defaultProps = {\n  formatShortWeekday: _dateFormatter.formatShortWeekday\n};\nWeekdays.propTypes = {\n  calendarType: _propTypes2.isCalendarType.isRequired,\n  formatShortWeekday: _propTypes[\"default\"].func,\n  locale: _propTypes[\"default\"].string,\n  onMouseLeave: _propTypes[\"default\"].func\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = WeekNumbers;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _WeekNumber = _interopRequireDefault(require(\"./WeekNumber\"));\n\nvar _Flex = _interopRequireDefault(require(\"../Flex\"));\n\nvar _dates = require(\"../shared/dates\");\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction WeekNumbers(props) {\n  var activeStartDate = props.activeStartDate,\n      calendarType = props.calendarType,\n      onClickWeekNumber = props.onClickWeekNumber,\n      onMouseLeave = props.onMouseLeave,\n      showFixedNumberOfWeeks = props.showFixedNumberOfWeeks;\n\n  var numberOfWeeks = function () {\n    if (showFixedNumberOfWeeks) {\n      return 6;\n    }\n\n    var numberOfDays = (0, _dates.getDaysInMonth)(activeStartDate);\n    var startWeekday = (0, _dates.getDayOfWeek)(activeStartDate, calendarType);\n    var days = numberOfDays - (7 - startWeekday);\n    return 1 + Math.ceil(days / 7);\n  }();\n\n  var dates = function () {\n    var year = (0, _dates.getYear)(activeStartDate);\n    var monthIndex = (0, _dates.getMonthIndex)(activeStartDate);\n    var day = (0, _dates.getDay)(activeStartDate);\n    var result = [];\n\n    for (var index = 0; index < numberOfWeeks; index += 1) {\n      result.push((0, _dates.getBeginOfWeek)(new Date(year, monthIndex, day + index * 7), calendarType));\n    }\n\n    return result;\n  }();\n\n  var weekNumbers = dates.map(function (date) {\n    return (0, _dates.getWeekNumber)(date, calendarType);\n  });\n  return _react[\"default\"].createElement(_Flex[\"default\"], {\n    className: \"react-calendar__month-view__weekNumbers\",\n    count: numberOfWeeks,\n    direction: \"column\",\n    onFocus: onMouseLeave,\n    onMouseOver: onMouseLeave,\n    style: {\n      flexBasis: 'calc(100% * (1 / 8)',\n      flexShrink: 0\n    }\n  }, weekNumbers.map(function (weekNumber, weekIndex) {\n    return _react[\"default\"].createElement(_WeekNumber[\"default\"], {\n      key: weekNumber,\n      date: dates[weekIndex],\n      onClickWeekNumber: onClickWeekNumber,\n      weekNumber: weekNumber\n    });\n  }));\n}\n\nWeekNumbers.propTypes = {\n  activeStartDate: _propTypes[\"default\"].instanceOf(Date).isRequired,\n  calendarType: _propTypes2.isCalendarType.isRequired,\n  onClickWeekNumber: _propTypes[\"default\"].func,\n  onMouseLeave: _propTypes[\"default\"].func,\n  showFixedNumberOfWeeks: _propTypes[\"default\"].bool\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = WeekNumber;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction WeekNumber(_ref) {\n  var date = _ref.date,\n      onClickWeekNumber = _ref.onClickWeekNumber,\n      weekNumber = _ref.weekNumber;\n  return onClickWeekNumber ? _react[\"default\"].createElement(\"button\", {\n    className: \"react-calendar__tile\",\n    onClick: function onClick() {\n      return onClickWeekNumber(weekNumber, date);\n    },\n    style: {\n      flexGrow: 1\n    },\n    type: \"button\"\n  }, _react[\"default\"].createElement(\"span\", null, weekNumber)) : _react[\"default\"].createElement(\"div\", {\n    className: \"react-calendar__tile\",\n    style: {\n      flexGrow: 1\n    }\n  }, _react[\"default\"].createElement(\"span\", null, weekNumber));\n}\n\nWeekNumber.propTypes = {\n  date: _propTypes[\"default\"].instanceOf(Date).isRequired,\n  onClickWeekNumber: _propTypes[\"default\"].func,\n  weekNumber: _propTypes[\"default\"].number.isRequired\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"Clock\", {\n  enumerable: true,\n  get: function get() {\n    return _Clock[\"default\"];\n  }\n});\nexports[\"default\"] = void 0;\n\nvar _Clock = _interopRequireDefault(require(\"./Clock\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar _default = _Clock[\"default\"];\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = Clock;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _mergeClassNames = _interopRequireDefault(require(\"merge-class-names\"));\n\nvar _Hand = _interopRequireDefault(require(\"./Hand\"));\n\nvar _Mark = _interopRequireDefault(require(\"./Mark\"));\n\nvar _dates = require(\"./shared/dates\");\n\nvar _propTypes2 = require(\"./shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction Clock(_ref) {\n  var className = _ref.className,\n      hourHandLength = _ref.hourHandLength,\n      hourHandOppositeLength = _ref.hourHandOppositeLength,\n      hourHandWidth = _ref.hourHandWidth,\n      hourMarksLength = _ref.hourMarksLength,\n      hourMarksWidth = _ref.hourMarksWidth,\n      minuteHandLength = _ref.minuteHandLength,\n      minuteHandOppositeLength = _ref.minuteHandOppositeLength,\n      minuteHandWidth = _ref.minuteHandWidth,\n      minuteMarksLength = _ref.minuteMarksLength,\n      minuteMarksWidth = _ref.minuteMarksWidth,\n      renderHourMarks = _ref.renderHourMarks,\n      renderMinuteHand = _ref.renderMinuteHand,\n      renderMinuteMarks = _ref.renderMinuteMarks,\n      renderNumbers = _ref.renderNumbers,\n      renderSecondHand = _ref.renderSecondHand,\n      secondHandLength = _ref.secondHandLength,\n      secondHandOppositeLength = _ref.secondHandOppositeLength,\n      secondHandWidth = _ref.secondHandWidth,\n      size = _ref.size,\n      value = _ref.value;\n\n  function renderMinuteMarksFn() {\n    if (!renderMinuteMarks) {\n      return null;\n    }\n\n    var minuteMarks = [];\n\n    for (var i = 1; i <= 60; i += 1) {\n      var isHourMark = renderHourMarks && !(i % 5);\n\n      if (!isHourMark) {\n        minuteMarks.push(_react[\"default\"].createElement(_Mark[\"default\"], {\n          key: \"minute_\".concat(i),\n          angle: i * 6,\n          length: minuteMarksLength,\n          name: \"minute\",\n          width: minuteMarksWidth\n        }));\n      }\n    }\n\n    return minuteMarks;\n  }\n\n  function renderHourMarksFn() {\n    if (!renderHourMarks) {\n      return null;\n    }\n\n    var hourMarks = [];\n\n    for (var i = 1; i <= 12; i += 1) {\n      hourMarks.push(_react[\"default\"].createElement(_Mark[\"default\"], {\n        key: \"hour_\".concat(i),\n        angle: i * 30,\n        length: hourMarksLength,\n        name: \"hour\",\n        number: renderNumbers ? i : null,\n        width: hourMarksWidth\n      }));\n    }\n\n    return hourMarks;\n  }\n\n  function renderFace() {\n    return _react[\"default\"].createElement(\"div\", {\n      className: \"react-clock__face\"\n    }, renderMinuteMarksFn(), renderHourMarksFn());\n  }\n\n  function renderHourHandFn() {\n    var angle = value ? (0, _dates.getHours)(value) * 30 + (0, _dates.getMinutes)(value) / 2 + (0, _dates.getSeconds)(value) / 600 : 0;\n    return _react[\"default\"].createElement(_Hand[\"default\"], {\n      angle: angle,\n      length: hourHandLength,\n      name: \"hour\",\n      oppositeLength: hourHandOppositeLength,\n      width: hourHandWidth\n    });\n  }\n\n  function renderMinuteHandFn() {\n    if (!renderMinuteHand) {\n      return null;\n    }\n\n    var angle = value ? (0, _dates.getHours)(value) * 360 + (0, _dates.getMinutes)(value) * 6 + (0, _dates.getSeconds)(value) / 10 : 0;\n    return _react[\"default\"].createElement(_Hand[\"default\"], {\n      angle: angle,\n      length: minuteHandLength,\n      name: \"minute\",\n      oppositeLength: minuteHandOppositeLength,\n      width: minuteHandWidth\n    });\n  }\n\n  function renderSecondHandFn() {\n    if (!renderSecondHand) {\n      return null;\n    }\n\n    var angle = value ? (0, _dates.getMinutes)(value) * 360 + (0, _dates.getSeconds)(value) * 6 : 0;\n    return _react[\"default\"].createElement(_Hand[\"default\"], {\n      angle: angle,\n      length: secondHandLength,\n      name: \"second\",\n      oppositeLength: secondHandOppositeLength,\n      width: secondHandWidth\n    });\n  }\n\n  return _react[\"default\"].createElement(\"time\", {\n    className: (0, _mergeClassNames[\"default\"])('react-clock', className),\n    dateTime: value instanceof Date ? value.toISOString() : value,\n    style: {\n      width: \"\".concat(size, \"px\"),\n      height: \"\".concat(size, \"px\")\n    }\n  }, renderFace(), renderHourHandFn(), renderMinuteHandFn(), renderSecondHandFn());\n}\n\nClock.defaultProps = {\n  hourHandLength: 50,\n  hourHandWidth: 4,\n  hourMarksLength: 10,\n  hourMarksWidth: 3,\n  minuteHandLength: 70,\n  minuteHandWidth: 2,\n  minuteMarksLength: 6,\n  minuteMarksWidth: 1,\n  renderHourMarks: true,\n  renderMinuteHand: true,\n  renderMinuteMarks: true,\n  renderSecondHand: true,\n  secondHandLength: 90,\n  secondHandWidth: 1,\n  size: 150\n};\nClock.propTypes = {\n  className: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].string)]),\n  hourHandLength: _propTypes2.isHandLength,\n  hourHandOppositeLength: _propTypes2.isOppositeHandLength,\n  hourHandWidth: _propTypes2.isHandWidth,\n  hourMarksLength: _propTypes2.isMarkLength,\n  hourMarksWidth: _propTypes2.isMarkWidth,\n  minuteHandLength: _propTypes2.isHandLength,\n  minuteHandOppositeLength: _propTypes2.isOppositeHandLength,\n  minuteHandWidth: _propTypes2.isHandWidth,\n  minuteMarksLength: _propTypes2.isMarkLength,\n  minuteMarksWidth: _propTypes2.isMarkWidth,\n  renderHourMarks: _propTypes[\"default\"].bool,\n  renderMinuteHand: _propTypes[\"default\"].bool,\n  renderMinuteMarks: _propTypes[\"default\"].bool,\n  renderNumbers: _propTypes[\"default\"].bool,\n  renderSecondHand: _propTypes[\"default\"].bool,\n  secondHandLength: _propTypes2.isHandLength,\n  secondHandOppositeLength: _propTypes2.isOppositeHandLength,\n  secondHandWidth: _propTypes2.isHandWidth,\n  size: _propTypes[\"default\"].number,\n  value: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].instanceOf(Date)])\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = Hand;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _propTypes2 = require(\"./shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction Hand(_ref) {\n  var angle = _ref.angle,\n      name = _ref.name,\n      length = _ref.length,\n      oppositeLength = _ref.oppositeLength,\n      width = _ref.width;\n  return _react[\"default\"].createElement(\"div\", {\n    className: \"react-clock__hand react-clock__\".concat(name, \"-hand\"),\n    style: {\n      transform: \"rotate(\".concat(angle, \"deg)\")\n    }\n  }, _react[\"default\"].createElement(\"div\", {\n    className: \"react-clock__hand__body react-clock__\".concat(name, \"-hand__body\"),\n    style: {\n      width: \"\".concat(width, \"px\"),\n      top: \"\".concat(50 - length / 2, \"%\"),\n      bottom: \"\".concat(50 - oppositeLength / 2, \"%\")\n    }\n  }));\n}\n\nHand.defaultProps = {\n  angle: 0,\n  length: 100,\n  oppositeLength: 10,\n  width: 1\n};\nHand.propTypes = {\n  angle: _propTypes[\"default\"].number,\n  length: _propTypes2.isHandLength,\n  name: _propTypes[\"default\"].string.isRequired,\n  oppositeLength: _propTypes2.isHandLength,\n  width: _propTypes[\"default\"].number\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.isDefined = void 0;\n\n/* eslint-disable import/prefer-default-export */\n\n/**\n * Checks whether a variable is defined.\n *\n * @param {*} variable Variable to check\n */\nvar isDefined = function isDefined(variable) {\n  return typeof variable !== 'undefined';\n};\n\nexports.isDefined = isDefined;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = Mark;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _propTypes2 = require(\"./shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction Mark(_ref) {\n  var angle = _ref.angle,\n      length = _ref.length,\n      name = _ref.name,\n      width = _ref.width,\n      number = _ref.number;\n  return _react[\"default\"].createElement(\"div\", {\n    className: \"react-clock__mark react-clock__\".concat(name, \"-mark\"),\n    style: {\n      transform: \"rotate(\".concat(angle, \"deg)\")\n    }\n  }, _react[\"default\"].createElement(\"div\", {\n    className: \"react-clock__mark__body react-clock__\".concat(name, \"-mark__body\"),\n    style: {\n      width: \"\".concat(width, \"px\"),\n      top: 0,\n      bottom: \"\".concat(100 - length / 2, \"%\")\n    }\n  }), number && _react[\"default\"].createElement(\"div\", {\n    className: \"react-clock__mark__number\",\n    style: {\n      transform: \"rotate(-\".concat(angle, \"deg)\"),\n      top: \"\".concat(length / 2, \"%\")\n    }\n  }, number));\n}\n\nMark.defaultProps = {\n  angle: 0,\n  length: 10,\n  width: 1\n};\nMark.propTypes = {\n  angle: _propTypes[\"default\"].number,\n  length: _propTypes2.isMarkLength,\n  name: _propTypes[\"default\"].string.isRequired,\n  number: _propTypes[\"default\"].number,\n  width: _propTypes2.isMarkWidth\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.getHours = getHours;\nexports.getMinutes = getMinutes;\nexports.getSeconds = getSeconds;\nvar hourOptionalSecondsRegExp = /^(([0-1])?[0-9]|2[0-3]):[0-5][0-9](:([0-5][0-9]))?$/;\nvar hourRegExp = /^(([0-1])?[0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9])$/;\n\nfunction getHours(date) {\n  if (date instanceof Date) {\n    return date.getHours();\n  }\n\n  if (typeof date === 'string' && hourOptionalSecondsRegExp.test(date)) {\n    var hourString = date.split(':')[0];\n    return parseInt(hourString, 10);\n  }\n\n  throw new Error(\"Failed to get hours from date: \".concat(date, \".\"));\n}\n\nfunction getMinutes(date) {\n  if (date instanceof Date) {\n    return date.getMinutes();\n  }\n\n  if (typeof date === 'string' && hourOptionalSecondsRegExp.test(date)) {\n    var minuteString = date.split(':')[1];\n    return parseInt(minuteString, 10);\n  }\n\n  throw new Error(\"Failed to get minutes from date: \".concat(date, \".\"));\n}\n\nfunction getSeconds(date) {\n  if (date instanceof Date) {\n    return date.getSeconds();\n  }\n\n  if (typeof date === 'string') {\n    if (hourRegExp.test(date)) {\n      var secondString = date.split(':')[2];\n      return parseInt(secondString, 10);\n    }\n\n    if (hourOptionalSecondsRegExp.test(date)) {\n      return 0;\n    }\n  }\n\n  throw new Error(\"Failed to get seconds from date: \".concat(date, \".\"));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\n\nvar _DayInput = _interopRequireDefault(require(\"react-date-picker/dist/DateInput/DayInput\"));\n\nvar _MonthInput = _interopRequireDefault(require(\"react-date-picker/dist/DateInput/MonthInput\"));\n\nvar _MonthSelect = _interopRequireDefault(require(\"react-date-picker/dist/DateInput/MonthSelect\"));\n\nvar _YearInput = _interopRequireDefault(require(\"react-date-picker/dist/DateInput/YearInput\"));\n\nvar _Hour12Input = _interopRequireDefault(require(\"react-time-picker/dist/TimeInput/Hour12Input\"));\n\nvar _Hour24Input = _interopRequireDefault(require(\"react-time-picker/dist/TimeInput/Hour24Input\"));\n\nvar _MinuteInput = _interopRequireDefault(require(\"react-time-picker/dist/TimeInput/MinuteInput\"));\n\nvar _SecondInput = _interopRequireDefault(require(\"react-time-picker/dist/TimeInput/SecondInput\"));\n\nvar _AmPm = _interopRequireDefault(require(\"react-time-picker/dist/TimeInput/AmPm\"));\n\nvar _Divider = _interopRequireDefault(require(\"./Divider\"));\n\nvar _NativeInput = _interopRequireDefault(require(\"./DateTimeInput/NativeInput\"));\n\nvar _dateFormatter = require(\"./shared/dateFormatter\");\n\nvar _dates = require(\"./shared/dates\");\n\nvar _propTypes2 = require(\"./shared/propTypes\");\n\nvar _utils = require(\"./shared/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nvar defaultMinDate = new Date(-8.64e15);\nvar defaultMaxDate = new Date(8.64e15);\nvar allViews = ['hour', 'minute', 'second'];\n\nfunction datesAreDifferent(date1, date2) {\n  return date1 && !date2 || !date1 && date2 || date1 && date2 && date1.getTime() !== date2.getTime();\n}\n\nfunction isSameDate(date, year, month, day) {\n  return (0, _dateUtils.getYear)(date) === year && (0, _dateUtils.getMonthHuman)(date) === month && (0, _dateUtils.getDate)(date) === day;\n}\n\nfunction getValueFromRange(valueOrArrayOfValues, index) {\n  if (Array.isArray(valueOrArrayOfValues)) {\n    return valueOrArrayOfValues[index];\n  }\n\n  return valueOrArrayOfValues;\n}\n\nfunction parseAndValidateDate(rawValue) {\n  if (!rawValue) {\n    return null;\n  }\n\n  var valueDate = new Date(rawValue);\n\n  if (isNaN(valueDate.getTime())) {\n    throw new Error(\"Invalid date: \".concat(rawValue));\n  }\n\n  return valueDate;\n}\n\nfunction getDetailValue(value, minDate, maxDate) {\n  if (!value) {\n    return null;\n  }\n\n  return (0, _utils.between)(value, minDate, maxDate);\n}\n\nfunction getValueFrom(value) {\n  var valueFrom = getValueFromRange(value, 0);\n  return parseAndValidateDate(valueFrom);\n}\n\nfunction getDetailValueFrom(value, minDate, maxDate) {\n  var valueFrom = getValueFrom(value);\n  return getDetailValue(valueFrom, minDate, maxDate);\n}\n\nfunction getValueTo(value) {\n  var valueTo = getValueFromRange(value, 1);\n  return parseAndValidateDate(valueTo);\n}\n\nfunction getDetailValueTo(value, minDate, maxDate) {\n  var valueTo = getValueTo(value);\n  return getDetailValue(valueTo, minDate, maxDate);\n}\n\nfunction isValidInput(element) {\n  return element.tagName === 'INPUT' && element.type === 'number';\n}\n\nfunction findInput(element, property) {\n  var nextElement = element;\n\n  do {\n    nextElement = nextElement[property];\n  } while (nextElement && !isValidInput(nextElement));\n\n  return nextElement;\n}\n\nfunction focus(element) {\n  if (element) {\n    element.focus();\n  }\n}\n\nfunction _renderCustomInputs(placeholder, elementFunctions, allowMultipleInstances) {\n  var usedFunctions = [];\n  var pattern = new RegExp(Object.keys(elementFunctions).map(function (el) {\n    return \"\".concat(el, \"+\");\n  }).join('|'), 'g');\n  var matches = placeholder.match(pattern);\n  return placeholder.split(pattern).reduce(function (arr, element, index) {\n    var divider = element && // eslint-disable-next-line react/no-array-index-key\n    _react[\"default\"].createElement(_Divider[\"default\"], {\n      key: \"separator_\".concat(index)\n    }, element);\n\n    var res = [].concat(_toConsumableArray(arr), [divider]);\n    var currentMatch = matches && matches[index];\n\n    if (currentMatch) {\n      var renderFunction = elementFunctions[currentMatch] || elementFunctions[Object.keys(elementFunctions).find(function (elementFunction) {\n        return currentMatch.match(elementFunction);\n      })];\n\n      if (!allowMultipleInstances && usedFunctions.includes(renderFunction)) {\n        res.push(currentMatch);\n      } else {\n        res.push(renderFunction(currentMatch, index));\n        usedFunctions.push(renderFunction);\n      }\n    }\n\n    return res;\n  }, []);\n}\n\nvar DateTimeInput =\n/*#__PURE__*/\nfunction (_PureComponent) {\n  _inherits(DateTimeInput, _PureComponent);\n\n  function DateTimeInput() {\n    var _getPrototypeOf2;\n\n    var _this;\n\n    _classCallCheck(this, DateTimeInput);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(DateTimeInput)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n    _defineProperty(_assertThisInitialized(_this), \"state\", {\n      amPm: null,\n      year: null,\n      month: null,\n      day: null,\n      hour: null,\n      minute: null,\n      second: null\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n      if (event.target === event.currentTarget) {\n        // Wrapper was directly clicked\n        var firstInput = event.target.children[1];\n        focus(firstInput);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onKeyDown\", function (event) {\n      switch (event.key) {\n        case 'ArrowLeft':\n        case 'ArrowRight':\n        case _this.dateDivider:\n        case _this.timeDivider:\n          {\n            event.preventDefault();\n            var input = event.target;\n            var property = event.key === 'ArrowLeft' ? 'previousElementSibling' : 'nextElementSibling';\n            var nextInput = findInput(input, property);\n            focus(nextInput);\n            break;\n          }\n\n        default:\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onKeyUp\", function (event) {\n      var key = event.key,\n          input = event.target;\n      var isNumberKey = !isNaN(parseInt(key, 10));\n\n      if (!isNumberKey) {\n        return;\n      }\n\n      var value = input.value;\n      var max = input.getAttribute('max');\n      /**\n       * Given 1, the smallest possible number the user could type by adding another digit is 10.\n       * 10 would be a valid value given max = 12, so we won't jump to the next input.\n       * However, given 2, smallers possible number would be 20, and thus keeping the focus in\n       * this field doesn't make sense.\n       */\n\n      if (value * 10 > max || value.length >= max.length) {\n        var property = 'nextElementSibling';\n        var nextInput = findInput(input, property);\n        focus(nextInput);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onChange\", function (event) {\n      var _event$target = event.target,\n          name = _event$target.name,\n          value = _event$target.value;\n\n      switch (name) {\n        case 'hour12':\n          {\n            _this.setState(function (prevState) {\n              return {\n                hour: value ? (0, _dates.convert12to24)(parseInt(value, 10), prevState.amPm) : null\n              };\n            }, _this.onChangeExternal);\n\n            break;\n          }\n\n        case 'hour24':\n          {\n            _this.setState({\n              hour: value ? parseInt(value, 10) : null\n            }, _this.onChangeExternal);\n\n            break;\n          }\n\n        default:\n          {\n            _this.setState(_defineProperty({}, name, value ? parseInt(value, 10) : null), _this.onChangeExternal);\n          }\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onChangeNative\", function (event) {\n      var onChange = _this.props.onChange;\n      var value = event.target.value;\n\n      if (!onChange) {\n        return;\n      }\n\n      var processedValue = function () {\n        if (!value) {\n          return null;\n        }\n\n        var _value$split = value.split('T'),\n            _value$split2 = _slicedToArray(_value$split, 2),\n            valueDate = _value$split2[0],\n            valueTime = _value$split2[1];\n\n        var _valueDate$split = valueDate.split('-'),\n            _valueDate$split2 = _slicedToArray(_valueDate$split, 3),\n            yearString = _valueDate$split2[0],\n            monthString = _valueDate$split2[1],\n            dayString = _valueDate$split2[2];\n\n        var year = parseInt(yearString, 10);\n        var monthIndex = parseInt(monthString, 10) - 1 || 0;\n        var date = parseInt(dayString, 10) || 1;\n\n        var _valueTime$split = valueTime.split(':'),\n            _valueTime$split2 = _slicedToArray(_valueTime$split, 3),\n            hourString = _valueTime$split2[0],\n            minuteString = _valueTime$split2[1],\n            secondString = _valueTime$split2[2];\n\n        var hour = parseInt(hourString, 10) || 0;\n        var minute = parseInt(minuteString, 10) || 0;\n        var second = parseInt(secondString, 10) || 0;\n        return new Date(year, monthIndex, date, hour, minute, second);\n      }();\n\n      onChange(processedValue, false);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onChangeAmPm\", function (event) {\n      var value = event.target.value;\n\n      _this.setState({\n        amPm: value\n      }, _this.onChangeExternal);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onChangeExternal\", function () {\n      var onChange = _this.props.onChange;\n\n      if (!onChange) {\n        return;\n      }\n\n      var formElements = [_this.dayInput, _this.monthInput, _this.yearInput, _this.hour12Input, _this.hour24Input, _this.minuteInput, _this.secondInput, _this.amPmInput].filter(Boolean);\n      var formElementsWithoutSelect = formElements.slice(0, -1);\n      var values = {};\n      formElements.forEach(function (formElement) {\n        values[formElement.name] = formElement.value;\n      });\n\n      if (formElementsWithoutSelect.every(function (formElement) {\n        return !formElement.value;\n      })) {\n        onChange(null, false);\n      } else if (formElements.every(function (formElement) {\n        return formElement.value && formElement.checkValidity();\n      })) {\n        var year = parseInt(values.year, 10);\n        var month = parseInt(values.month || 1, 10);\n        var day = parseInt(values.day || 1, 10);\n        var hour = parseInt(values.hour24 || (0, _dates.convert12to24)(values.hour12, values.amPm) || 0, 10);\n        var minute = parseInt(values.minute || 0, 10);\n        var second = parseInt(values.second || 0, 10);\n        var proposedValue = new Date(year, month - 1, day, hour, minute, second);\n        var processedValue = proposedValue;\n        onChange(processedValue, false);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"renderDay\", function (currentMatch, index) {\n      var _this$props = _this.props,\n          autoFocus = _this$props.autoFocus,\n          dayAriaLabel = _this$props.dayAriaLabel,\n          dayPlaceholder = _this$props.dayPlaceholder,\n          showLeadingZeros = _this$props.showLeadingZeros;\n      var _this$state = _this.state,\n          day = _this$state.day,\n          month = _this$state.month,\n          year = _this$state.year;\n\n      if (currentMatch && currentMatch.length > 2) {\n        throw new Error(\"Unsupported token: \".concat(currentMatch));\n      }\n\n      var showLeadingZerosFromFormat = currentMatch && currentMatch.length === 2;\n      return _react[\"default\"].createElement(_DayInput[\"default\"], _extends({\n        key: \"day\"\n      }, _this.commonInputProps, {\n        ariaLabel: dayAriaLabel,\n        autoFocus: index === 0 && autoFocus,\n        month: month,\n        placeholder: dayPlaceholder,\n        showLeadingZeros: showLeadingZerosFromFormat || showLeadingZeros,\n        value: day,\n        year: year\n      }));\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"renderMonth\", function (currentMatch, index) {\n      var _this$props2 = _this.props,\n          autoFocus = _this$props2.autoFocus,\n          locale = _this$props2.locale,\n          monthAriaLabel = _this$props2.monthAriaLabel,\n          monthPlaceholder = _this$props2.monthPlaceholder,\n          showLeadingZeros = _this$props2.showLeadingZeros;\n      var _this$state2 = _this.state,\n          month = _this$state2.month,\n          year = _this$state2.year;\n\n      if (currentMatch && currentMatch.length > 4) {\n        throw new Error(\"Unsupported token: \".concat(currentMatch));\n      }\n\n      if (currentMatch.length > 2) {\n        return _react[\"default\"].createElement(_MonthSelect[\"default\"], _extends({\n          key: \"month\"\n        }, _this.commonInputProps, {\n          ariaLabel: monthAriaLabel,\n          autoFocus: index === 0 && autoFocus,\n          locale: locale,\n          placeholder: monthPlaceholder,\n          \"short\": currentMatch.length === 3,\n          value: month,\n          year: year\n        }));\n      }\n\n      var showLeadingZerosFromFormat = currentMatch && currentMatch.length === 2;\n      return _react[\"default\"].createElement(_MonthInput[\"default\"], _extends({\n        key: \"month\"\n      }, _this.commonInputProps, {\n        ariaLabel: monthAriaLabel,\n        autoFocus: index === 0 && autoFocus,\n        placeholder: monthPlaceholder,\n        showLeadingZeros: showLeadingZerosFromFormat || showLeadingZeros,\n        value: month,\n        year: year\n      }));\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"renderYear\", function (currentMatch, index) {\n      var _this$props3 = _this.props,\n          autoFocus = _this$props3.autoFocus,\n          yearAriaLabel = _this$props3.yearAriaLabel,\n          yearPlaceholder = _this$props3.yearPlaceholder;\n      var year = _this.state.year;\n      return _react[\"default\"].createElement(_YearInput[\"default\"], _extends({\n        key: \"year\"\n      }, _this.commonInputProps, {\n        ariaLabel: yearAriaLabel,\n        autoFocus: index === 0 && autoFocus,\n        placeholder: yearPlaceholder,\n        value: year,\n        valueType: \"day\"\n      }));\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"renderHour\", function (currentMatch, index) {\n      if (/h/.test(currentMatch)) {\n        return _this.renderHour12(currentMatch, index);\n      }\n\n      return _this.renderHour24(currentMatch, index);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"renderHour12\", function (currentMatch, index) {\n      var _this$props4 = _this.props,\n          autoFocus = _this$props4.autoFocus,\n          hourAriaLabel = _this$props4.hourAriaLabel,\n          hourPlaceholder = _this$props4.hourPlaceholder;\n      var _this$state3 = _this.state,\n          amPm = _this$state3.amPm,\n          hour = _this$state3.hour;\n\n      if (currentMatch && currentMatch.length > 2) {\n        throw new Error(\"Unsupported token: \".concat(currentMatch));\n      }\n\n      var showLeadingZeros = currentMatch && currentMatch.length === 2;\n      return _react[\"default\"].createElement(_Hour12Input[\"default\"], _extends({\n        key: \"hour12\"\n      }, _this.commonInputProps, {\n        amPm: amPm,\n        ariaLabel: hourAriaLabel,\n        autoFocus: index === 0 && autoFocus,\n        placeholder: hourPlaceholder,\n        showLeadingZeros: showLeadingZeros,\n        value: hour\n      }));\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"renderHour24\", function (currentMatch, index) {\n      var _this$props5 = _this.props,\n          autoFocus = _this$props5.autoFocus,\n          hourAriaLabel = _this$props5.hourAriaLabel,\n          hourPlaceholder = _this$props5.hourPlaceholder;\n      var hour = _this.state.hour;\n\n      if (currentMatch && currentMatch.length > 2) {\n        throw new Error(\"Unsupported token: \".concat(currentMatch));\n      }\n\n      var showLeadingZeros = currentMatch && currentMatch.length === 2;\n      return _react[\"default\"].createElement(_Hour24Input[\"default\"], _extends({\n        key: \"hour24\"\n      }, _this.commonInputProps, {\n        ariaLabel: hourAriaLabel,\n        autoFocus: index === 0 && autoFocus,\n        placeholder: hourPlaceholder,\n        showLeadingZeros: showLeadingZeros,\n        value: hour\n      }));\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"renderMinute\", function (currentMatch, index) {\n      var _this$props6 = _this.props,\n          autoFocus = _this$props6.autoFocus,\n          minuteAriaLabel = _this$props6.minuteAriaLabel,\n          minutePlaceholder = _this$props6.minutePlaceholder;\n      var _this$state4 = _this.state,\n          hour = _this$state4.hour,\n          minute = _this$state4.minute;\n\n      if (currentMatch && currentMatch.length > 2) {\n        throw new Error(\"Unsupported token: \".concat(currentMatch));\n      }\n\n      var showLeadingZeros = currentMatch && currentMatch.length === 2;\n      return _react[\"default\"].createElement(_MinuteInput[\"default\"], _extends({\n        key: \"minute\"\n      }, _this.commonInputProps, {\n        ariaLabel: minuteAriaLabel,\n        autoFocus: index === 0 && autoFocus,\n        hour: hour,\n        placeholder: minutePlaceholder,\n        showLeadingZeros: showLeadingZeros,\n        value: minute\n      }));\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"renderSecond\", function (currentMatch, index) {\n      var _this$props7 = _this.props,\n          autoFocus = _this$props7.autoFocus,\n          secondAriaLabel = _this$props7.secondAriaLabel,\n          secondPlaceholder = _this$props7.secondPlaceholder;\n      var _this$state5 = _this.state,\n          hour = _this$state5.hour,\n          minute = _this$state5.minute,\n          second = _this$state5.second;\n\n      if (currentMatch && currentMatch.length > 2) {\n        throw new Error(\"Unsupported token: \".concat(currentMatch));\n      }\n\n      var showLeadingZeros = currentMatch ? currentMatch.length === 2 : true;\n      return _react[\"default\"].createElement(_SecondInput[\"default\"], _extends({\n        key: \"second\"\n      }, _this.commonInputProps, {\n        ariaLabel: secondAriaLabel,\n        autoFocus: index === 0 && autoFocus,\n        hour: hour,\n        minute: minute,\n        placeholder: secondPlaceholder,\n        showLeadingZeros: showLeadingZeros,\n        value: second\n      }));\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"renderAmPm\", function (currentMatch, index) {\n      var _this$props8 = _this.props,\n          amPmAriaLabel = _this$props8.amPmAriaLabel,\n          autoFocus = _this$props8.autoFocus,\n          locale = _this$props8.locale;\n      var amPm = _this.state.amPm;\n      return _react[\"default\"].createElement(_AmPm[\"default\"], _extends({\n        key: \"ampm\"\n      }, _this.commonInputProps, {\n        ariaLabel: amPmAriaLabel,\n        autoFocus: index === 0 && autoFocus,\n        locale: locale,\n        onChange: _this.onChangeAmPm,\n        value: amPm\n      }));\n    });\n\n    return _this;\n  }\n\n  _createClass(DateTimeInput, [{\n    key: \"renderCustomInputs\",\n    value: function renderCustomInputs() {\n      var placeholder = this.placeholder;\n      var format = this.props.format;\n      var elementFunctions = {\n        d: this.renderDay,\n        M: this.renderMonth,\n        y: this.renderYear,\n        h: this.renderHour,\n        H: this.renderHour,\n        m: this.renderMinute,\n        s: this.renderSecond,\n        a: this.renderAmPm\n      };\n      var allowMultipleInstances = typeof format !== 'undefined';\n      return _renderCustomInputs(placeholder, elementFunctions, allowMultipleInstances);\n    }\n  }, {\n    key: \"renderNativeInput\",\n    value: function renderNativeInput() {\n      var _this$props9 = this.props,\n          disabled = _this$props9.disabled,\n          maxDate = _this$props9.maxDate,\n          minDate = _this$props9.minDate,\n          name = _this$props9.name,\n          nativeInputAriaLabel = _this$props9.nativeInputAriaLabel,\n          required = _this$props9.required;\n      var value = this.state.value;\n      return _react[\"default\"].createElement(_NativeInput[\"default\"], {\n        key: \"time\",\n        ariaLabel: nativeInputAriaLabel,\n        disabled: disabled,\n        maxDate: maxDate || defaultMaxDate,\n        minDate: minDate || defaultMinDate,\n        name: name,\n        onChange: this.onChangeNative,\n        required: required,\n        value: value,\n        valueType: this.valueType\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var className = this.props.className;\n      /* eslint-disable jsx-a11y/click-events-have-key-events */\n\n      /* eslint-disable jsx-a11y/no-static-element-interactions */\n\n      return _react[\"default\"].createElement(\"div\", {\n        className: className,\n        onClick: this.onClick\n      }, this.renderNativeInput(), this.renderCustomInputs());\n    }\n  }, {\n    key: \"formatTime\",\n    get: function get() {\n      var maxDetail = this.props.maxDetail;\n      var options = {\n        hour: 'numeric'\n      };\n      var level = allViews.indexOf(maxDetail);\n\n      if (level >= 1) {\n        options.minute = 'numeric';\n      }\n\n      if (level >= 2) {\n        options.second = 'numeric';\n      }\n\n      return (0, _dateFormatter.getFormatter)(options);\n    } // eslint-disable-next-line class-methods-use-this\n\n  }, {\n    key: \"formatNumber\",\n    get: function get() {\n      var options = {\n        useGrouping: false\n      };\n      return (0, _dateFormatter.getFormatter)(options);\n    }\n  }, {\n    key: \"dateDivider\",\n    get: function get() {\n      return this.datePlaceholder.match(/[^0-9a-z]/i)[0];\n    }\n  }, {\n    key: \"timeDivider\",\n    get: function get() {\n      return this.timePlaceholder.match(/[^0-9a-z]/i)[0];\n    }\n  }, {\n    key: \"datePlaceholder\",\n    get: function get() {\n      var locale = this.props.locale;\n      var year = 2017;\n      var monthIndex = 11;\n      var day = 11;\n      var date = new Date(year, monthIndex, day);\n      return (0, _dateFormatter.formatDate)(locale, date).replace(this.formatNumber(locale, year), 'y').replace(this.formatNumber(locale, monthIndex + 1), 'M').replace(this.formatNumber(locale, day), 'd');\n    }\n  }, {\n    key: \"timePlaceholder\",\n    get: function get() {\n      var locale = this.props.locale;\n      var hour24 = 21;\n      var hour12 = 9;\n      var minute = 13;\n      var second = 14;\n      var date = new Date(2017, 0, 1, hour24, minute, second);\n      return this.formatTime(locale, date).replace(this.formatNumber(locale, hour12), 'h').replace(this.formatNumber(locale, hour24), 'H').replace(this.formatNumber(locale, minute), 'mm').replace(this.formatNumber(locale, second), 'ss').replace(new RegExp((0, _utils.getAmPmLabels)(locale).join('|')), 'a');\n    }\n  }, {\n    key: \"placeholder\",\n    get: function get() {\n      var format = this.props.format;\n\n      if (format) {\n        return format;\n      }\n\n      return \"\".concat(this.datePlaceholder, \"\\xA0\").concat(this.timePlaceholder);\n    }\n  }, {\n    key: \"maxTime\",\n    get: function get() {\n      var maxDate = this.props.maxDate;\n\n      if (!maxDate) {\n        return null;\n      }\n\n      var _this$state6 = this.state,\n          year = _this$state6.year,\n          month = _this$state6.month,\n          day = _this$state6.day;\n\n      if (!isSameDate(maxDate, year, month, day)) {\n        return null;\n      }\n\n      return (0, _dateUtils.getHoursMinutesSeconds)(maxDate);\n    }\n  }, {\n    key: \"minTime\",\n    get: function get() {\n      var minDate = this.props.minDate;\n\n      if (!minDate) {\n        return null;\n      }\n\n      var _this$state7 = this.state,\n          year = _this$state7.year,\n          month = _this$state7.month,\n          day = _this$state7.day;\n\n      if (!isSameDate(minDate, year, month, day)) {\n        return null;\n      }\n\n      return (0, _dateUtils.getHoursMinutesSeconds)(minDate);\n    }\n  }, {\n    key: \"commonInputProps\",\n    get: function get() {\n      var _this2 = this;\n\n      var _this$props10 = this.props,\n          className = _this$props10.className,\n          disabled = _this$props10.disabled,\n          isWidgetOpen = _this$props10.isWidgetOpen,\n          maxDate = _this$props10.maxDate,\n          minDate = _this$props10.minDate,\n          required = _this$props10.required;\n      return {\n        className: className,\n        disabled: disabled,\n        maxDate: maxDate || defaultMaxDate,\n        minDate: minDate || defaultMinDate,\n        onChange: this.onChange,\n        onKeyDown: this.onKeyDown,\n        onKeyUp: this.onKeyUp,\n        placeholder: '--',\n        // This is only for showing validity when editing\n        required: required || isWidgetOpen,\n        itemRef: function itemRef(ref, name) {\n          // Save a reference to each input field\n          _this2[\"\".concat(name, \"Input\")] = ref;\n        }\n      };\n    }\n  }, {\n    key: \"commonTimeInputProps\",\n    get: function get() {\n      var maxTime = this.maxTime,\n          minTime = this.minTime;\n      return {\n        maxTime: maxTime,\n        minTime: minTime\n      };\n    }\n    /**\n     * Returns value type that can be returned with currently applied settings.\n     */\n\n  }, {\n    key: \"valueType\",\n    get: function get() {\n      var maxDetail = this.props.maxDetail;\n      return maxDetail;\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps, prevState) {\n      var minDate = nextProps.minDate,\n          maxDate = nextProps.maxDate;\n      var nextState = {};\n      /**\n       * If isWidgetOpen flag has changed, we have to update it.\n       * It's saved in state purely for use in getDerivedStateFromProps.\n       */\n\n      if (nextProps.isWidgetOpen !== prevState.isWidgetOpen) {\n        nextState.isWidgetOpen = nextProps.isWidgetOpen;\n      }\n      /**\n       * If the next value is different from the current one  (with an exception of situation in\n       * which values provided are limited by minDate and maxDate so that the dates are the same),\n       * get a new one.\n       */\n\n\n      var nextValue = getDetailValueFrom(nextProps.value, minDate, maxDate);\n      var values = [nextValue, prevState.value];\n\n      if ( // Toggling calendar visibility resets values\n      nextState.isCalendarOpen // Flag was toggled\n      || datesAreDifferent.apply(void 0, _toConsumableArray(values.map(function (value) {\n        return getDetailValueFrom(value, minDate, maxDate);\n      }))) || datesAreDifferent.apply(void 0, _toConsumableArray(values.map(function (value) {\n        return getDetailValueTo(value, minDate, maxDate);\n      })))) {\n        if (nextValue) {\n          var _convert24to = (0, _dates.convert24to12)((0, _dateUtils.getHours)(nextValue));\n\n          var _convert24to2 = _slicedToArray(_convert24to, 2);\n\n          nextState.amPm = _convert24to2[1];\n          nextState.year = (0, _dateUtils.getYear)(nextValue);\n          nextState.month = (0, _dateUtils.getMonthHuman)(nextValue);\n          nextState.day = (0, _dateUtils.getDate)(nextValue);\n          nextState.hour = (0, _dateUtils.getHours)(nextValue);\n          nextState.minute = (0, _dateUtils.getMinutes)(nextValue);\n          nextState.second = (0, _dateUtils.getSeconds)(nextValue);\n        } else {\n          nextState.amPm = null;\n          nextState.year = null;\n          nextState.month = null;\n          nextState.day = null;\n          nextState.hour = null;\n          nextState.minute = null;\n          nextState.second = null;\n        }\n\n        nextState.value = nextValue;\n      }\n\n      return nextState;\n    }\n  }]);\n\n  return DateTimeInput;\n}(_react.PureComponent);\n\nexports[\"default\"] = DateTimeInput;\nDateTimeInput.defaultProps = {\n  maxDetail: 'minute',\n  name: 'datetime'\n};\n\nvar isValue = _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].instanceOf(Date)]);\n\nDateTimeInput.propTypes = {\n  amPmAriaLabel: _propTypes[\"default\"].string,\n  autoFocus: _propTypes[\"default\"].bool,\n  className: _propTypes[\"default\"].string.isRequired,\n  dayAriaLabel: _propTypes[\"default\"].string,\n  dayPlaceholder: _propTypes[\"default\"].string,\n  disabled: _propTypes[\"default\"].bool,\n  format: _propTypes[\"default\"].string,\n  hourAriaLabel: _propTypes[\"default\"].string,\n  hourPlaceholder: _propTypes[\"default\"].string,\n  isWidgetOpen: _propTypes[\"default\"].bool,\n  locale: _propTypes[\"default\"].string,\n  maxDate: _propTypes2.isMaxDate,\n  maxDetail: _propTypes[\"default\"].oneOf(allViews),\n  minDate: _propTypes2.isMinDate,\n  minuteAriaLabel: _propTypes[\"default\"].string,\n  minutePlaceholder: _propTypes[\"default\"].string,\n  monthAriaLabel: _propTypes[\"default\"].string,\n  monthPlaceholder: _propTypes[\"default\"].string,\n  name: _propTypes[\"default\"].string,\n  nativeInputAriaLabel: _propTypes[\"default\"].string,\n  onChange: _propTypes[\"default\"].func,\n  required: _propTypes[\"default\"].bool,\n  secondAriaLabel: _propTypes[\"default\"].string,\n  secondPlaceholder: _propTypes[\"default\"].string,\n  showLeadingZeros: _propTypes[\"default\"].bool,\n  value: _propTypes[\"default\"].oneOfType([isValue, _propTypes[\"default\"].arrayOf(isValue)]),\n  yearAriaLabel: _propTypes[\"default\"].string,\n  yearPlaceholder: _propTypes[\"default\"].string\n};\n(0, _reactLifecyclesCompat.polyfill)(DateTimeInput);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = DayInput;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\n\nvar _Input = _interopRequireDefault(require(\"./Input\"));\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nvar _utils = require(\"../shared/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction DayInput(_ref) {\n  var maxDate = _ref.maxDate,\n      minDate = _ref.minDate,\n      month = _ref.month,\n      year = _ref.year,\n      otherProps = _objectWithoutProperties(_ref, [\"maxDate\", \"minDate\", \"month\", \"year\"]);\n\n  var currentMonthMaxDays = function () {\n    if (!month) {\n      return 31;\n    }\n\n    return (0, _dateUtils.getDaysInMonth)(new Date(year, month - 1, 1));\n  }();\n\n  function isSameMonth(date) {\n    return date && year === (0, _dateUtils.getYear)(date) && month === (0, _dateUtils.getMonthHuman)(date);\n  }\n\n  var maxDay = (0, _utils.safeMin)(currentMonthMaxDays, isSameMonth(maxDate) && (0, _dateUtils.getDate)(maxDate));\n  var minDay = (0, _utils.safeMax)(1, isSameMonth(minDate) && (0, _dateUtils.getDate)(minDate));\n  return _react[\"default\"].createElement(_Input[\"default\"], _extends({\n    max: maxDay,\n    min: minDay,\n    name: \"day\"\n  }, otherProps));\n}\n\nDayInput.propTypes = {\n  ariaLabel: _propTypes[\"default\"].string,\n  className: _propTypes[\"default\"].string.isRequired,\n  disabled: _propTypes[\"default\"].bool,\n  itemRef: _propTypes[\"default\"].func,\n  maxDate: _propTypes2.isMaxDate,\n  minDate: _propTypes2.isMinDate,\n  month: _propTypes[\"default\"].number,\n  onChange: _propTypes[\"default\"].func,\n  onKeyDown: _propTypes[\"default\"].func,\n  onKeyUp: _propTypes[\"default\"].func,\n  placeholder: _propTypes[\"default\"].string,\n  required: _propTypes[\"default\"].bool,\n  showLeadingZeros: _propTypes[\"default\"].bool,\n  value: _propTypes[\"default\"].number,\n  year: _propTypes[\"default\"].number\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = MonthInput;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\n\nvar _Input = _interopRequireDefault(require(\"./Input\"));\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nvar _utils = require(\"../shared/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction MonthInput(_ref) {\n  var maxDate = _ref.maxDate,\n      minDate = _ref.minDate,\n      year = _ref.year,\n      otherProps = _objectWithoutProperties(_ref, [\"maxDate\", \"minDate\", \"year\"]);\n\n  function isSameYear(date) {\n    return date && year === (0, _dateUtils.getYear)(date);\n  }\n\n  var maxMonth = (0, _utils.safeMin)(12, isSameYear(maxDate) && (0, _dateUtils.getMonthHuman)(maxDate));\n  var minMonth = (0, _utils.safeMax)(1, isSameYear(minDate) && (0, _dateUtils.getMonthHuman)(minDate));\n  return _react[\"default\"].createElement(_Input[\"default\"], _extends({\n    max: maxMonth,\n    min: minMonth,\n    name: \"month\"\n  }, otherProps));\n}\n\nMonthInput.propTypes = {\n  ariaLabel: _propTypes[\"default\"].string,\n  className: _propTypes[\"default\"].string.isRequired,\n  disabled: _propTypes[\"default\"].bool,\n  itemRef: _propTypes[\"default\"].func,\n  maxDate: _propTypes2.isMaxDate,\n  minDate: _propTypes2.isMinDate,\n  onChange: _propTypes[\"default\"].func,\n  onKeyDown: _propTypes[\"default\"].func,\n  onKeyUp: _propTypes[\"default\"].func,\n  placeholder: _propTypes[\"default\"].string,\n  required: _propTypes[\"default\"].bool,\n  showLeadingZeros: _propTypes[\"default\"].bool,\n  value: _propTypes[\"default\"].number,\n  year: _propTypes[\"default\"].number\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = MonthSelect;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _mergeClassNames = _interopRequireDefault(require(\"merge-class-names\"));\n\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\n\nvar _dateFormatter = require(\"../shared/dateFormatter\");\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nvar _utils = require(\"../shared/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction MonthSelect(_ref) {\n  var ariaLabel = _ref.ariaLabel,\n      className = _ref.className,\n      itemRef = _ref.itemRef,\n      locale = _ref.locale,\n      maxDate = _ref.maxDate,\n      minDate = _ref.minDate,\n      _ref$placeholder = _ref.placeholder,\n      placeholder = _ref$placeholder === void 0 ? '--' : _ref$placeholder,\n      _short = _ref[\"short\"],\n      value = _ref.value,\n      year = _ref.year,\n      otherProps = _objectWithoutProperties(_ref, [\"ariaLabel\", \"className\", \"itemRef\", \"locale\", \"maxDate\", \"minDate\", \"placeholder\", \"short\", \"value\", \"year\"]);\n\n  function isSameYear(date) {\n    return date && year === (0, _dateUtils.getYear)(date);\n  }\n\n  var maxMonth = (0, _utils.safeMin)(12, isSameYear(maxDate) && (0, _dateUtils.getMonthHuman)(maxDate));\n  var minMonth = (0, _utils.safeMax)(1, isSameYear(minDate) && (0, _dateUtils.getMonthHuman)(minDate));\n\n  var dates = _toConsumableArray(Array(12)).map(function (el, index) {\n    return new Date(2019, index, 1);\n  });\n\n  var name = 'month';\n  var formatter = _short ? _dateFormatter.formatShortMonth : _dateFormatter.formatMonth;\n  return _react[\"default\"].createElement(\"select\", _extends({\n    \"aria-label\": ariaLabel,\n    className: (0, _mergeClassNames[\"default\"])(\"\".concat(className, \"__input\"), \"\".concat(className, \"__\").concat(name)),\n    name: name,\n    ref: function ref(_ref2) {\n      if (itemRef) {\n        itemRef(_ref2, name);\n      }\n    },\n    value: value !== null ? value : ''\n  }, otherProps), !value && _react[\"default\"].createElement(\"option\", {\n    value: \"\"\n  }, placeholder), dates.map(function (date) {\n    var month = (0, _dateUtils.getMonthHuman)(date);\n    var disabled = month < minMonth || month > maxMonth;\n    return _react[\"default\"].createElement(\"option\", {\n      key: month,\n      disabled: disabled,\n      value: month\n    }, formatter(locale, date));\n  }));\n}\n\nMonthSelect.propTypes = {\n  ariaLabel: _propTypes[\"default\"].string,\n  className: _propTypes[\"default\"].string.isRequired,\n  disabled: _propTypes[\"default\"].bool,\n  itemRef: _propTypes[\"default\"].func,\n  locale: _propTypes[\"default\"].string,\n  maxDate: _propTypes2.isMaxDate,\n  minDate: _propTypes2.isMinDate,\n  onChange: _propTypes[\"default\"].func,\n  onKeyDown: _propTypes[\"default\"].func,\n  onKeyUp: _propTypes[\"default\"].func,\n  placeholder: _propTypes[\"default\"].string,\n  required: _propTypes[\"default\"].bool,\n  \"short\": _propTypes[\"default\"].bool,\n  value: _propTypes[\"default\"].number,\n  year: _propTypes[\"default\"].number\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.getFormatter = getFormatter;\nexports.formatShortMonth = exports.formatMonth = void 0;\n\nvar _getUserLocale = _interopRequireDefault(require(\"get-user-locale\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction getFormatter(options) {\n  return function (locale, date) {\n    return date.toLocaleString(locale || (0, _getUserLocale[\"default\"])(), options);\n  };\n}\n/**\n * Changes the hour in a Date to ensure right date formatting even if DST is messed up.\n * Workaround for bug in WebKit and Firefox with historical dates.\n * For more details, see:\n * https://bugs.chromium.org/p/chromium/issues/detail?id=750465\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1385643\n *\n * @param {Date} date Date.\n */\n\n\nfunction toSafeHour(date) {\n  var safeDate = new Date(date);\n  return new Date(safeDate.setHours(12));\n}\n\nfunction getSafeFormatter(options) {\n  return function (locale, date) {\n    return getFormatter(options)(locale, toSafeHour(date));\n  };\n}\n\nvar formatMonthOptions = {\n  month: 'long'\n};\nvar formatShortMonthOptions = {\n  month: 'short'\n};\nvar formatMonth = getSafeFormatter(formatMonthOptions);\nexports.formatMonth = formatMonth;\nvar formatShortMonth = getSafeFormatter(formatShortMonthOptions);\nexports.formatShortMonth = formatShortMonth;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = YearInput;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\n\nvar _Input = _interopRequireDefault(require(\"./Input\"));\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nvar _utils = require(\"../shared/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction YearInput(_ref) {\n  var maxDate = _ref.maxDate,\n      minDate = _ref.minDate,\n      _ref$placeholder = _ref.placeholder,\n      placeholder = _ref$placeholder === void 0 ? '----' : _ref$placeholder,\n      valueType = _ref.valueType,\n      otherProps = _objectWithoutProperties(_ref, [\"maxDate\", \"minDate\", \"placeholder\", \"valueType\"]);\n\n  var maxYear = (0, _utils.safeMin)(275760, maxDate && (0, _dateUtils.getYear)(maxDate));\n  var minYear = (0, _utils.safeMax)(1, minDate && (0, _dateUtils.getYear)(minDate));\n\n  var yearStep = function () {\n    if (valueType === 'century') {\n      return 10;\n    }\n\n    return 1;\n  }();\n\n  return _react[\"default\"].createElement(_Input[\"default\"], _extends({\n    max: maxYear,\n    min: minYear,\n    name: \"year\",\n    placeholder: placeholder,\n    step: yearStep\n  }, otherProps));\n}\n\nYearInput.propTypes = {\n  ariaLabel: _propTypes[\"default\"].string,\n  className: _propTypes[\"default\"].string.isRequired,\n  disabled: _propTypes[\"default\"].bool,\n  itemRef: _propTypes[\"default\"].func,\n  maxDate: _propTypes2.isMaxDate,\n  minDate: _propTypes2.isMinDate,\n  onChange: _propTypes[\"default\"].func,\n  onKeyDown: _propTypes[\"default\"].func,\n  onKeyUp: _propTypes[\"default\"].func,\n  placeholder: _propTypes[\"default\"].string,\n  required: _propTypes[\"default\"].bool,\n  value: _propTypes[\"default\"].number,\n  valueType: _propTypes2.isValueType\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = Hour12Input;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\n\nvar _Input = _interopRequireDefault(require(\"./Input\"));\n\nvar _dates = require(\"../shared/dates\");\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nvar _utils = require(\"../shared/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction Hour12Input(_ref) {\n  var amPm = _ref.amPm,\n      hour = _ref.hour,\n      maxTime = _ref.maxTime,\n      minTime = _ref.minTime,\n      value = _ref.value,\n      otherProps = _objectWithoutProperties(_ref, [\"amPm\", \"hour\", \"maxTime\", \"minTime\", \"value\"]);\n\n  var maxHour = (0, _utils.min)(12, maxTime && function () {\n    var _convert24to = (0, _dates.convert24to12)((0, _dateUtils.getHours)(maxTime)),\n        _convert24to2 = _slicedToArray(_convert24to, 2),\n        maxHourResult = _convert24to2[0],\n        maxAmPm = _convert24to2[1];\n\n    if (maxAmPm !== amPm) {\n      // pm is always after am, so we should ignore validation\n      return null;\n    }\n\n    return maxHourResult;\n  }());\n  var minHour = (0, _utils.max)(1, minTime && function () {\n    var _convert24to3 = (0, _dates.convert24to12)((0, _dateUtils.getHours)(minTime)),\n        _convert24to4 = _slicedToArray(_convert24to3, 2),\n        minHourResult = _convert24to4[0],\n        minAmPm = _convert24to4[1];\n\n    if ( // pm is always after am, so we should ignore validation\n    minAmPm !== amPm // If minHour is 12 am/pm, user should be able to enter 12, 1, ..., 11.\n    || minHourResult === 12) {\n      return null;\n    }\n\n    return minHourResult;\n  }());\n  var value12 = value !== null ? (0, _dates.convert24to12)(value)[0] : null;\n  return _react[\"default\"].createElement(_Input[\"default\"], _extends({\n    max: maxHour,\n    min: minHour,\n    name: \"hour12\",\n    nameForClass: \"hour\",\n    value: value12\n  }, otherProps));\n}\n\nHour12Input.propTypes = {\n  amPm: _propTypes[\"default\"].string,\n  ariaLabel: _propTypes[\"default\"].string,\n  className: _propTypes[\"default\"].string.isRequired,\n  disabled: _propTypes[\"default\"].bool,\n  hour: _propTypes[\"default\"].number,\n  itemRef: _propTypes[\"default\"].func,\n  maxTime: _propTypes2.isTime,\n  minTime: _propTypes2.isTime,\n  onChange: _propTypes[\"default\"].func,\n  onKeyDown: _propTypes[\"default\"].func,\n  onKeyUp: _propTypes[\"default\"].func,\n  placeholder: _propTypes[\"default\"].string,\n  required: _propTypes[\"default\"].bool,\n  showLeadingZeros: _propTypes[\"default\"].bool,\n  value: _propTypes[\"default\"].number\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.getFormatter = getFormatter;\n\nvar _getUserLocale = _interopRequireDefault(require(\"get-user-locale\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/* eslint-disable import/prefer-default-export */\nfunction getFormatter(options) {\n  return function (locale, date) {\n    return date.toLocaleString(locale || (0, _getUserLocale[\"default\"])(), options);\n  };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = Hour24Input;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\n\nvar _Input = _interopRequireDefault(require(\"./Input\"));\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nvar _utils = require(\"../shared/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction Hour24Input(_ref) {\n  var hour = _ref.hour,\n      maxTime = _ref.maxTime,\n      minTime = _ref.minTime,\n      otherProps = _objectWithoutProperties(_ref, [\"hour\", \"maxTime\", \"minTime\"]);\n\n  var maxHour = (0, _utils.min)(23, maxTime && (0, _dateUtils.getHours)(maxTime));\n  var minHour = (0, _utils.max)(0, minTime && (0, _dateUtils.getHours)(minTime));\n  return _react[\"default\"].createElement(_Input[\"default\"], _extends({\n    max: maxHour,\n    min: minHour,\n    name: \"hour24\",\n    nameForClass: \"hour\"\n  }, otherProps));\n}\n\nHour24Input.propTypes = {\n  ariaLabel: _propTypes[\"default\"].string,\n  className: _propTypes[\"default\"].string.isRequired,\n  disabled: _propTypes[\"default\"].bool,\n  hour: _propTypes[\"default\"].number,\n  itemRef: _propTypes[\"default\"].func,\n  maxTime: _propTypes2.isTime,\n  minTime: _propTypes2.isTime,\n  onChange: _propTypes[\"default\"].func,\n  onKeyDown: _propTypes[\"default\"].func,\n  onKeyUp: _propTypes[\"default\"].func,\n  placeholder: _propTypes[\"default\"].string,\n  required: _propTypes[\"default\"].bool,\n  showLeadingZeros: _propTypes[\"default\"].bool,\n  value: _propTypes[\"default\"].number\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = MinuteInput;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\n\nvar _Input = _interopRequireDefault(require(\"./Input\"));\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nvar _utils = require(\"../shared/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction MinuteInput(_ref) {\n  var hour = _ref.hour,\n      maxTime = _ref.maxTime,\n      minTime = _ref.minTime,\n      _ref$showLeadingZeros = _ref.showLeadingZeros,\n      showLeadingZeros = _ref$showLeadingZeros === void 0 ? true : _ref$showLeadingZeros,\n      otherProps = _objectWithoutProperties(_ref, [\"hour\", \"maxTime\", \"minTime\", \"showLeadingZeros\"]);\n\n  function isSameHour(date) {\n    return date && hour === (0, _dateUtils.getHours)(date);\n  }\n\n  var maxMinute = (0, _utils.min)(59, isSameHour(maxTime) && (0, _dateUtils.getMinutes)(maxTime));\n  var minMinute = (0, _utils.max)(0, isSameHour(minTime) && (0, _dateUtils.getMinutes)(minTime));\n  return _react[\"default\"].createElement(_Input[\"default\"], _extends({\n    max: maxMinute,\n    min: minMinute,\n    name: \"minute\",\n    showLeadingZeros: showLeadingZeros\n  }, otherProps));\n}\n\nMinuteInput.propTypes = {\n  ariaLabel: _propTypes[\"default\"].string,\n  className: _propTypes[\"default\"].string.isRequired,\n  disabled: _propTypes[\"default\"].bool,\n  hour: _propTypes[\"default\"].number,\n  itemRef: _propTypes[\"default\"].func,\n  maxTime: _propTypes2.isTime,\n  minTime: _propTypes2.isTime,\n  onChange: _propTypes[\"default\"].func,\n  onKeyDown: _propTypes[\"default\"].func,\n  onKeyUp: _propTypes[\"default\"].func,\n  placeholder: _propTypes[\"default\"].string,\n  required: _propTypes[\"default\"].bool,\n  showLeadingZeros: _propTypes[\"default\"].bool,\n  value: _propTypes[\"default\"].number\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = SecondInput;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\n\nvar _Input = _interopRequireDefault(require(\"./Input\"));\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nvar _utils = require(\"../shared/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction SecondInput(_ref) {\n  var hour = _ref.hour,\n      maxTime = _ref.maxTime,\n      minTime = _ref.minTime,\n      minute = _ref.minute,\n      _ref$showLeadingZeros = _ref.showLeadingZeros,\n      showLeadingZeros = _ref$showLeadingZeros === void 0 ? true : _ref$showLeadingZeros,\n      otherProps = _objectWithoutProperties(_ref, [\"hour\", \"maxTime\", \"minTime\", \"minute\", \"showLeadingZeros\"]);\n\n  function isSameMinute(date) {\n    return date && hour === (0, _dateUtils.getHours)(date) && minute === (0, _dateUtils.getMinutes)(date);\n  }\n\n  var maxSecond = (0, _utils.min)(59, isSameMinute(maxTime) && (0, _dateUtils.getSeconds)(maxTime));\n  var minSecond = (0, _utils.max)(0, isSameMinute(minTime) && (0, _dateUtils.getSeconds)(minTime));\n  return _react[\"default\"].createElement(_Input[\"default\"], _extends({\n    max: maxSecond,\n    min: minSecond,\n    name: \"second\",\n    showLeadingZeros: showLeadingZeros\n  }, otherProps));\n}\n\nSecondInput.propTypes = {\n  ariaLabel: _propTypes[\"default\"].string,\n  className: _propTypes[\"default\"].string.isRequired,\n  disabled: _propTypes[\"default\"].bool,\n  hour: _propTypes[\"default\"].number,\n  itemRef: _propTypes[\"default\"].func,\n  maxTime: _propTypes2.isTime,\n  minTime: _propTypes2.isTime,\n  minute: _propTypes[\"default\"].number,\n  onChange: _propTypes[\"default\"].func,\n  onKeyDown: _propTypes[\"default\"].func,\n  onKeyUp: _propTypes[\"default\"].func,\n  placeholder: _propTypes[\"default\"].string,\n  required: _propTypes[\"default\"].bool,\n  showLeadingZeros: _propTypes[\"default\"].bool,\n  value: _propTypes[\"default\"].number\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = AmPm;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _mergeClassNames = _interopRequireDefault(require(\"merge-class-names\"));\n\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\n\nvar _dates = require(\"../shared/dates\");\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nvar _utils = require(\"../shared/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction AmPm(_ref) {\n  var ariaLabel = _ref.ariaLabel,\n      className = _ref.className,\n      disabled = _ref.disabled,\n      itemRef = _ref.itemRef,\n      locale = _ref.locale,\n      maxTime = _ref.maxTime,\n      minTime = _ref.minTime,\n      onChange = _ref.onChange,\n      required = _ref.required,\n      value = _ref.value;\n  var amDisabled = minTime && (0, _dates.convert24to12)((0, _dateUtils.getHours)(minTime))[1] === 'pm';\n  var pmDisabled = maxTime && (0, _dates.convert24to12)((0, _dateUtils.getHours)(maxTime))[1] === 'am';\n  var name = 'amPm';\n\n  var _getAmPmLabels = (0, _utils.getAmPmLabels)(locale),\n      _getAmPmLabels2 = _slicedToArray(_getAmPmLabels, 2),\n      amLabel = _getAmPmLabels2[0],\n      pmLabel = _getAmPmLabels2[1];\n\n  return _react[\"default\"].createElement(\"select\", {\n    \"aria-label\": ariaLabel,\n    className: (0, _mergeClassNames[\"default\"])(\"\".concat(className, \"__input\"), \"\".concat(className, \"__\").concat(name)),\n    disabled: disabled,\n    name: name,\n    onChange: onChange,\n    ref: function ref(_ref2) {\n      if (itemRef) {\n        itemRef(_ref2, name);\n      }\n    },\n    required: required,\n    value: value !== null ? value : ''\n  }, !value && _react[\"default\"].createElement(\"option\", {\n    value: \"\"\n  }, \"--\"), _react[\"default\"].createElement(\"option\", {\n    disabled: amDisabled,\n    value: \"am\"\n  }, amLabel), _react[\"default\"].createElement(\"option\", {\n    disabled: pmDisabled,\n    value: \"pm\"\n  }, pmLabel));\n}\n\nAmPm.propTypes = {\n  ariaLabel: _propTypes[\"default\"].string,\n  className: _propTypes[\"default\"].string.isRequired,\n  disabled: _propTypes[\"default\"].bool,\n  itemRef: _propTypes[\"default\"].func,\n  locale: _propTypes[\"default\"].string,\n  maxTime: _propTypes2.isTime,\n  minTime: _propTypes2.isTime,\n  onChange: _propTypes[\"default\"].func,\n  required: _propTypes[\"default\"].bool,\n  value: _propTypes[\"default\"].oneOf(['am', 'pm'])\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = Divider;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction Divider(_ref) {\n  var children = _ref.children;\n  return _react[\"default\"].createElement(\"span\", {\n    className: \"react-datetime-picker__inputGroup__divider\"\n  }, children);\n}\n\nDivider.propTypes = {\n  children: _propTypes[\"default\"].node\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = NativeInput;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction NativeInput(_ref) {\n  var ariaLabel = _ref.ariaLabel,\n      disabled = _ref.disabled,\n      maxDate = _ref.maxDate,\n      minDate = _ref.minDate,\n      name = _ref.name,\n      onChange = _ref.onChange,\n      required = _ref.required,\n      value = _ref.value,\n      valueType = _ref.valueType;\n\n  var nativeValueParser = function () {\n    switch (valueType) {\n      case 'hour':\n        return function (receivedValue) {\n          return \"\".concat((0, _dateUtils.getISOLocalDate)(receivedValue), \"T\").concat((0, _dateUtils.getHours)(receivedValue), \":00\");\n        };\n\n      case 'minute':\n        return function (receivedValue) {\n          return \"\".concat((0, _dateUtils.getISOLocalDate)(receivedValue), \"T\").concat((0, _dateUtils.getHoursMinutes)(receivedValue));\n        };\n\n      case 'second':\n        return _dateUtils.getISOLocalDateTime;\n\n      default:\n        throw new Error('Invalid valueType.');\n    }\n  }();\n\n  var step = function () {\n    switch (valueType) {\n      case 'hour':\n        return 3600;\n\n      case 'minute':\n        return 60;\n\n      case 'second':\n        return 1;\n\n      default:\n        throw new Error('Invalid valueType.');\n    }\n  }();\n\n  function stopPropagation(event) {\n    event.stopPropagation();\n  }\n\n  return _react[\"default\"].createElement(\"input\", {\n    \"aria-label\": ariaLabel,\n    disabled: disabled,\n    max: maxDate ? nativeValueParser(maxDate) : null,\n    min: minDate ? nativeValueParser(minDate) : null,\n    name: name,\n    onChange: onChange,\n    onFocus: stopPropagation,\n    required: required,\n    step: step,\n    style: {\n      visibility: 'hidden',\n      position: 'absolute',\n      top: '-9999px',\n      left: '-9999px'\n    },\n    type: \"datetime-local\",\n    value: value ? nativeValueParser(value) : ''\n  });\n}\n\nNativeInput.propTypes = {\n  ariaLabel: _propTypes[\"default\"].string,\n  disabled: _propTypes[\"default\"].bool,\n  maxDate: _propTypes2.isMaxDate,\n  minDate: _propTypes2.isMinDate,\n  name: _propTypes[\"default\"].string,\n  onChange: _propTypes[\"default\"].func,\n  required: _propTypes[\"default\"].bool,\n  value: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].instanceOf(Date)]),\n  valueType: _propTypes2.isValueType\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.getFormatter = getFormatter;\nexports.formatDate = void 0;\n\nvar _getUserLocale = _interopRequireDefault(require(\"get-user-locale\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/* eslint-disable import/prefer-default-export */\nfunction getFormatter(options) {\n  return function (locale, date) {\n    return date.toLocaleString(locale || (0, _getUserLocale[\"default\"])(), options);\n  };\n}\n\nvar formatDateOptions = {\n  day: 'numeric',\n  month: 'numeric',\n  year: 'numeric'\n};\nvar formatDate = getFormatter(formatDateOptions);\nexports.formatDate = formatDate;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"convert12to24\", {\n  enumerable: true,\n  get: function get() {\n    return _dates.convert12to24;\n  }\n});\nObject.defineProperty(exports, \"convert24to12\", {\n  enumerable: true,\n  get: function get() {\n    return _dates.convert24to12;\n  }\n});\n\nvar _dates = require(\"react-time-picker/dist/shared/dates\");","/*!\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 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","/*!\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\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","var parse = require('inline-style-parser');\n\n/**\n * Parses inline style to object.\n *\n * @example\n * // returns { 'line-height': '42' }\n * StyleToObject('line-height: 42;');\n *\n * @param  {String}      style      - The inline style.\n * @param  {Function}    [iterator] - The iterator function.\n * @return {null|Object}\n */\nfunction StyleToObject(style, iterator) {\n  var output = null;\n  if (!style || typeof style !== 'string') {\n    return output;\n  }\n\n  var declaration;\n  var declarations = parse(style);\n  var hasIterator = typeof iterator === 'function';\n  var property;\n  var value;\n\n  for (var i = 0, len = declarations.length; i < len; i++) {\n    declaration = declarations[i];\n    property = declaration.property;\n    value = declaration.value;\n\n    if (hasIterator) {\n      iterator(property, value, declaration);\n    } else if (value) {\n      output || (output = {});\n      output[property] = value;\n    }\n  }\n\n  return output;\n}\n\nmodule.exports = StyleToObject;\n","// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar COMMENT_REGEX = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\nvar NEWLINE_REGEX = /\\n/g;\nvar WHITESPACE_REGEX = /^\\s*/;\n\n// declaration\nvar PROPERTY_REGEX = /^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/;\nvar COLON_REGEX = /^:\\s*/;\nvar VALUE_REGEX = /^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/;\nvar SEMICOLON_REGEX = /^[;\\s]*/;\n\n// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\nvar TRIM_REGEX = /^\\s+|\\s+$/g;\n\n// strings\nvar NEWLINE = '\\n';\nvar FORWARD_SLASH = '/';\nvar ASTERISK = '*';\nvar EMPTY_STRING = '';\n\n// types\nvar TYPE_COMMENT = 'comment';\nvar TYPE_DECLARATION = 'declaration';\n\n/**\n * @param {String} style\n * @param {Object} [options]\n * @return {Object[]}\n * @throws {TypeError}\n * @throws {Error}\n */\nmodule.exports = function(style, options) {\n  if (typeof style !== 'string') {\n    throw new TypeError('First argument must be a string');\n  }\n\n  if (!style) return [];\n\n  options = options || {};\n\n  /**\n   * Positional.\n   */\n  var lineno = 1;\n  var column = 1;\n\n  /**\n   * Update lineno and column based on `str`.\n   *\n   * @param {String} str\n   */\n  function updatePosition(str) {\n    var lines = str.match(NEWLINE_REGEX);\n    if (lines) lineno += lines.length;\n    var i = str.lastIndexOf(NEWLINE);\n    column = ~i ? str.length - i : column + str.length;\n  }\n\n  /**\n   * Mark position and patch `node.position`.\n   *\n   * @return {Function}\n   */\n  function position() {\n    var start = { line: lineno, column: column };\n    return function(node) {\n      node.position = new Position(start);\n      whitespace();\n      return node;\n    };\n  }\n\n  /**\n   * Store position information for a node.\n   *\n   * @constructor\n   * @property {Object} start\n   * @property {Object} end\n   * @property {undefined|String} source\n   */\n  function Position(start) {\n    this.start = start;\n    this.end = { line: lineno, column: column };\n    this.source = options.source;\n  }\n\n  /**\n   * Non-enumerable source string.\n   */\n  Position.prototype.content = style;\n\n  var errorsList = [];\n\n  /**\n   * Error `msg`.\n   *\n   * @param {String} msg\n   * @throws {Error}\n   */\n  function error(msg) {\n    var err = new Error(\n      options.source + ':' + lineno + ':' + column + ': ' + msg\n    );\n    err.reason = msg;\n    err.filename = options.source;\n    err.line = lineno;\n    err.column = column;\n    err.source = style;\n\n    if (options.silent) {\n      errorsList.push(err);\n    } else {\n      throw err;\n    }\n  }\n\n  /**\n   * Match `re` and return captures.\n   *\n   * @param {RegExp} re\n   * @return {undefined|Array}\n   */\n  function match(re) {\n    var m = re.exec(style);\n    if (!m) return;\n    var str = m[0];\n    updatePosition(str);\n    style = style.slice(str.length);\n    return m;\n  }\n\n  /**\n   * Parse whitespace.\n   */\n  function whitespace() {\n    match(WHITESPACE_REGEX);\n  }\n\n  /**\n   * Parse comments.\n   *\n   * @param {Object[]} [rules]\n   * @return {Object[]}\n   */\n  function comments(rules) {\n    var c;\n    rules = rules || [];\n    while ((c = comment())) {\n      if (c !== false) {\n        rules.push(c);\n      }\n    }\n    return rules;\n  }\n\n  /**\n   * Parse comment.\n   *\n   * @return {Object}\n   * @throws {Error}\n   */\n  function comment() {\n    var pos = position();\n    if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;\n\n    var i = 2;\n    while (\n      EMPTY_STRING != style.charAt(i) &&\n      (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))\n    ) {\n      ++i;\n    }\n    i += 2;\n\n    if (EMPTY_STRING === style.charAt(i - 1)) {\n      return error('End of comment missing');\n    }\n\n    var str = style.slice(2, i - 2);\n    column += 2;\n    updatePosition(str);\n    style = style.slice(i);\n    column += 2;\n\n    return pos({\n      type: TYPE_COMMENT,\n      comment: str\n    });\n  }\n\n  /**\n   * Parse declaration.\n   *\n   * @return {Object}\n   * @throws {Error}\n   */\n  function declaration() {\n    var pos = position();\n\n    // prop\n    var prop = match(PROPERTY_REGEX);\n    if (!prop) return;\n    comment();\n\n    // :\n    if (!match(COLON_REGEX)) return error(\"property missing ':'\");\n\n    // val\n    var val = match(VALUE_REGEX);\n\n    var ret = pos({\n      type: TYPE_DECLARATION,\n      property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),\n      value: val\n        ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))\n        : EMPTY_STRING\n    });\n\n    // ;\n    match(SEMICOLON_REGEX);\n\n    return ret;\n  }\n\n  /**\n   * Parse declarations.\n   *\n   * @return {Object[]}\n   */\n  function declarations() {\n    var decls = [];\n\n    comments(decls);\n\n    // declarations\n    var decl;\n    while ((decl = declaration())) {\n      if (decl !== false) {\n        decls.push(decl);\n        comments(decls);\n      }\n    }\n\n    return decls;\n  }\n\n  whitespace();\n  return declarations();\n};\n\n/**\n * Trim `str`.\n *\n * @param {String} str\n * @return {String}\n */\nfunction trim(str) {\n  return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;\n}\n","import javascript from \"highlight.js/lib/languages/javascript\";\nexport default javascript;","import python from \"highlight.js/lib/languages/python\";\nexport default python;","import r from \"highlight.js/lib/languages/r\";\nexport default r;","export default {\n  \"hljs\": {\n    \"display\": \"block\",\n    \"overflowX\": \"auto\",\n    \"padding\": \"0.5em\",\n    \"color\": \"#333\",\n    \"background\": \"#f8f8f8\"\n  },\n  \"hljs-comment\": {\n    \"color\": \"#998\",\n    \"fontStyle\": \"italic\"\n  },\n  \"hljs-quote\": {\n    \"color\": \"#998\",\n    \"fontStyle\": \"italic\"\n  },\n  \"hljs-keyword\": {\n    \"color\": \"#333\",\n    \"fontWeight\": \"bold\"\n  },\n  \"hljs-selector-tag\": {\n    \"color\": \"#333\",\n    \"fontWeight\": \"bold\"\n  },\n  \"hljs-subst\": {\n    \"color\": \"#333\",\n    \"fontWeight\": \"normal\"\n  },\n  \"hljs-number\": {\n    \"color\": \"#008080\"\n  },\n  \"hljs-literal\": {\n    \"color\": \"#008080\"\n  },\n  \"hljs-variable\": {\n    \"color\": \"#008080\"\n  },\n  \"hljs-template-variable\": {\n    \"color\": \"#008080\"\n  },\n  \"hljs-tag .hljs-attr\": {\n    \"color\": \"#008080\"\n  },\n  \"hljs-string\": {\n    \"color\": \"#d14\"\n  },\n  \"hljs-doctag\": {\n    \"color\": \"#d14\"\n  },\n  \"hljs-title\": {\n    \"color\": \"#900\",\n    \"fontWeight\": \"bold\"\n  },\n  \"hljs-section\": {\n    \"color\": \"#900\",\n    \"fontWeight\": \"bold\"\n  },\n  \"hljs-selector-id\": {\n    \"color\": \"#900\",\n    \"fontWeight\": \"bold\"\n  },\n  \"hljs-type\": {\n    \"color\": \"#458\",\n    \"fontWeight\": \"bold\"\n  },\n  \"hljs-class .hljs-title\": {\n    \"color\": \"#458\",\n    \"fontWeight\": \"bold\"\n  },\n  \"hljs-tag\": {\n    \"color\": \"#000080\",\n    \"fontWeight\": \"normal\"\n  },\n  \"hljs-name\": {\n    \"color\": \"#000080\",\n    \"fontWeight\": \"normal\"\n  },\n  \"hljs-attribute\": {\n    \"color\": \"#000080\",\n    \"fontWeight\": \"normal\"\n  },\n  \"hljs-regexp\": {\n    \"color\": \"#009926\"\n  },\n  \"hljs-link\": {\n    \"color\": \"#009926\"\n  },\n  \"hljs-symbol\": {\n    \"color\": \"#990073\"\n  },\n  \"hljs-bullet\": {\n    \"color\": \"#990073\"\n  },\n  \"hljs-built_in\": {\n    \"color\": \"#0086b3\"\n  },\n  \"hljs-builtin-name\": {\n    \"color\": \"#0086b3\"\n  },\n  \"hljs-meta\": {\n    \"color\": \"#999\",\n    \"fontWeight\": \"bold\"\n  },\n  \"hljs-deletion\": {\n    \"background\": \"#fdd\"\n  },\n  \"hljs-addition\": {\n    \"background\": \"#dfd\"\n  },\n  \"hljs-emphasis\": {\n    \"fontStyle\": \"italic\"\n  },\n  \"hljs-strong\": {\n    \"fontWeight\": \"bold\"\n  }\n};"],"sourceRoot":""}