{"version":3,"file":"static/js/main.4a7c53f2.js","mappings":"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,KAC5BiE,GAAe/kH,OAAO8gH,OAAO,CAAC,GEAnB,YACtB1zG,EACA43G,EACApwD,GAEA,YAAO,IAFP,MAAiEmwD,IAEzD33G,EAAM63G,QAAUrwD,EAAaqwD,OAAS73G,EAAM63G,OAAUD,GAAiBpwD,EAAaqwD,KAC9F,CCPA,IAwIAC,GAAe,IAAIz0E,IAxIF,CACf,IACA,OACA,UACA,OACA,UACA,QACA,QACA,IACA,OACA,MACA,MACA,MACA,aACA,OACA,KACA,SACA,SACA,UACA,OACA,OACA,MACA,WACA,OACA,WACA,KACA,MACA,UACA,MACA,SACA,MACA,KACA,KACA,KACA,QACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,SACA,SACA,KACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,SACA,QACA,SACA,KACA,OACA,OACA,MACA,OACA,OACA,WACA,OACA,QACA,MACA,WACA,SACA,KACA,WACA,SACA,SACA,IACA,QACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,SACA,UACA,SACA,QACA,SACA,OACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,KACA,QACA,IACA,KACA,MACA,MACA,QACA,MACA,SACA,WACA,OACA,UACA,gBACA,IACA,QACA,OACA,iBACA,SACA,OACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,MACA,OACA,UCrII00E,GAAc,wCAEdC,GAAe,WAMG,YAAOtwG,GAC7B,OAAOA,EACJtR,QAAQ2hH,GAAa,KACrB3hH,QAAQ4hH,GAAc,GAC3B,CCdA,IAAMC,GAAgB,WAIhBC,GAAc,GAGdC,GAAoB,SAAC9/G,GAAiB,OAAAlC,OAAOQ,aAAa0B,GAAQA,EAAO,GAAK,GAAK,IAA7C,EAGpB,YAAuBA,GAC7C,IACIqE,EADA2C,EAAO,GAIX,IAAK3C,EAAI2U,KAAKiD,IAAIjc,GAAOqE,EAAIw7G,GAAax7G,EAAKA,EAAIw7G,GAAe,EAChE74G,EAAO84G,GA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","sources":["../node_modules/@formspree/core/dist/index.js","../node_modules/@stripe/react-stripe-js/dist/react-stripe.umd.js","../node_modules/@stripe/stripe-js/dist/pure.js","../node_modules/@stripe/stripe-js/pure.js","../node_modules/extend/index.js","../node_modules/gsap/dist/ScrollTrigger.js","../node_modules/inline-style-parser/index.js","../node_modules/is-buffer/index.js","../node_modules/object-assign/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react-markdown/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-markdown/node_modules/react-is/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/shallowequal/index.js","../node_modules/style-to-object/index.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../webpack/runtime/nonce","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","../node_modules/gsap/gsap-core.js","../node_modules/gsap/CSSPlugin.js","../node_modules/gsap/index.js","../node_modules/gsap/ScrollToPlugin.js","../node_modules/gsap/Observer.js","../node_modules/gsap/ScrollTrigger.js","../node_modules/react-gsap/src/types.ts","../node_modules/react-gsap/src/helper.ts","../node_modules/react-gsap/src/plugins/PlugInSvgDraw.ts","../node_modules/react-gsap/src/Provider.tsx","../node_modules/react-gsap/src/plugins/PlugInCount.ts","../node_modules/react-gsap/src/Tween.tsx","../node_modules/react-gsap/src/tools/Reveal.tsx","../node_modules/react-gsap/src/Timeline.tsx","../node_modules/react-gsap/src/tools/ScrollTrigger.tsx","../node_modules/react-gsap/src/tools/SplitText.tsx","components/utils/ScrollContainer/index.js","components/Button.js","../node_modules/@formspree/react/dist/index.mjs","utils/index.js","components/sections/TopBanner/index.js","assets/images/chipset/chipset.svg","components/sections/Chipset/index.js","components/sections/Bluetooth/index.js","assets/images/cards/arrow.svg","components/utils/Cardlist/index.js","assets/images/cards/i10.svg","components/sections/Cards/index.js","assets/images/cards/i01.svg","assets/images/cards/i02.svg","assets/images/cards/i03.svg","assets/images/cards/i04.svg","assets/images/cards/i05.svg","assets/images/cards/i06.svg","assets/images/cards/i07.svg","assets/images/cards/i08.svg","assets/images/cards/i09.svg","assets/images/navbar/Logo.svg","components/Footer.js","components/sections/CTA/Cta.js","pages/Home.js","../node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","assets/images/navbar/Menu.svg","assets/images/navbar/Close.svg","../node_modules/styled-components/node_modules/tslib/tslib.es6.js","../node_modules/stylis/src/Enum.js","../node_modules/stylis/src/Utility.js","../node_modules/stylis/src/Tokenizer.js","../node_modules/stylis/src/Serializer.js","../node_modules/stylis/src/Prefixer.js","../node_modules/stylis/src/Middleware.js","../node_modules/stylis/src/Parser.js","../node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../node_modules/styled-components/src/constants.ts","../node_modules/styled-components/src/utils/empties.ts","../node_modules/styled-components/src/utils/checkDynamicCreation.ts","../node_modules/styled-components/src/utils/determineTheme.ts","../node_modules/styled-components/src/utils/domElements.ts","../node_modules/styled-components/src/utils/escape.ts","../node_modules/styled-components/src/utils/generateAlphabeticName.ts","../node_modules/styled-components/src/utils/hash.ts","../node_modules/styled-components/src/utils/generateComponentId.ts","../node_modules/styled-components/src/utils/getComponentName.ts","../node_modules/styled-components/src/utils/isTag.ts","../node_modules/styled-components/src/utils/hoist.ts","../node_modules/styled-components/src/utils/isFunction.ts","../node_modules/styled-components/src/utils/isStyledComponent.ts","../node_modules/styled-components/src/utils/joinStrings.ts","../node_modules/styled-components/src/utils/isPlainObject.ts","../node_modules/styled-components/src/utils/mixinDeep.ts","../node_modules/styled-components/src/utils/setToString.ts","../node_modules/styled-components/src/utils/error.ts","../node_modules/styled-components/src/sheet/GroupedTag.ts","../node_modules/styled-components/src/sheet/GroupIDAllocator.ts","../node_modules/styled-components/src/sheet/Rehydration.ts","../node_modules/styled-components/src/utils/nonce.ts","../node_modules/styled-components/src/sheet/dom.ts","../node_modules/styled-components/src/sheet/Tag.ts","../node_modules/styled-components/src/sheet/Sheet.ts","../node_modules/styled-components/src/utils/stylis.ts","../node_modules/styled-components/src/models/StyleSheetManager.tsx","../node_modules/styled-components/src/models/Keyframes.ts","../node_modules/styled-components/src/utils/hyphenateStyleName.ts","../node_modules/styled-components/src/utils/flatten.ts","../node_modules/styled-components/src/utils/addUnitIfNeeded.ts","../node_modules/styled-components/src/utils/isStatelessFunction.ts","../node_modules/styled-components/src/utils/isStaticRules.ts","../node_modules/styled-components/src/models/ComponentStyle.ts","../node_modules/styled-components/src/models/ThemeProvider.tsx","../node_modules/styled-components/src/models/StyledComponent.ts","../node_modules/styled-components/src/utils/generateDisplayName.ts","../node_modules/styled-components/src/utils/interleave.ts","../node_modules/styled-components/src/constructors/css.ts","../node_modules/styled-components/src/constructors/constructWithOptions.ts","../node_modules/styled-components/src/constructors/styled.tsx","../node_modules/styled-components/src/models/GlobalStyle.ts","../node_modules/styled-components/src/models/ServerStyleSheet.tsx","../node_modules/styled-components/src/base.ts","components/Navigation.js","../node_modules/unist-util-stringify-position/lib/index.js","../node_modules/vfile-message/lib/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/bail/index.js","../node_modules/unified/node_modules/is-plain-obj/index.js","../node_modules/trough/lib/index.js","../node_modules/unified/lib/index.js","../node_modules/mdast-util-to-string/lib/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/index.dom.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/lib/index.js","../node_modules/micromark-util-sanitize-uri/index.js","../node_modules/unist-util-is/lib/index.js","../node_modules/unist-util-visit-parents/lib/index.js","../node_modules/unist-util-visit/lib/index.js","../node_modules/unist-util-position/lib/index.js","../node_modules/mdast-util-definitions/lib/index.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/table-cell.js","../node_modules/mdast-util-to-hast/lib/handlers/table-row.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/state.js","../node_modules/unist-util-generated/lib/index.js","../node_modules/mdast-util-to-hast/lib/index.js","../node_modules/mdast-util-to-hast/lib/footer.js","../node_modules/remark-rehype/lib/index.js","../node_modules/property-information/lib/util/schema.js","../node_modules/property-information/lib/util/merge.js","../node_modules/property-information/lib/normalize.js","../node_modules/property-information/lib/util/info.js","../node_modules/property-information/lib/util/types.js","../node_modules/property-information/lib/util/defined-info.js","../node_modules/property-information/lib/util/create.js","../node_modules/property-information/lib/xlink.js","../node_modules/property-information/lib/xml.js","../node_modules/property-information/lib/util/case-sensitive-transform.js","../node_modules/property-information/lib/util/case-insensitive-transform.js","../node_modules/property-information/lib/xmlns.js","../node_modules/property-information/lib/aria.js","../node_modules/property-information/lib/html.js","../node_modules/property-information/lib/svg.js","../node_modules/property-information/index.js","../node_modules/react-markdown/lib/rehype-filter.js","../node_modules/hast-util-whitespace/index.js","../node_modules/property-information/lib/find.js","../node_modules/property-information/lib/hast-to-react.js","../node_modules/style-to-object/index.mjs","../node_modules/react-markdown/lib/uri-transformer.js","../node_modules/react-markdown/lib/ast-to-react.js","../node_modules/comma-separated-tokens/index.js","../node_modules/space-separated-tokens/index.js","../node_modules/react-markdown/lib/react-markdown.js","../node_modules/micromark-extension-gfm-autolink-literal/lib/syntax.js","../node_modules/micromark-extension-gfm-footnote/lib/syntax.js","../node_modules/micromark-extension-gfm-strikethrough/lib/syntax.js","../node_modules/micromark-extension-gfm-table/lib/edit-map.js","../node_modules/micromark-extension-gfm-table/lib/infer.js","../node_modules/micromark-extension-gfm-table/lib/syntax.js","../node_modules/micromark-extension-gfm-task-list-item/lib/syntax.js","../node_modules/ccount/index.js","../node_modules/mdast-util-find-and-replace/lib/index.js","../node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp/index.js","../node_modules/mdast-util-gfm-autolink-literal/lib/index.js","../node_modules/mdast-util-to-markdown/lib/util/association.js","../node_modules/mdast-util-to-markdown/lib/util/container-flow.js","../node_modules/mdast-util-to-markdown/lib/util/indent-lines.js","../node_modules/mdast-util-to-markdown/lib/util/pattern-compile.js","../node_modules/mdast-util-to-markdown/lib/util/pattern-in-scope.js","../node_modules/mdast-util-to-markdown/lib/util/safe.js","../node_modules/mdast-util-to-markdown/lib/util/track.js","../node_modules/mdast-util-gfm-footnote/lib/index.js","../node_modules/mdast-util-to-markdown/lib/util/container-phrasing.js","../node_modules/mdast-util-gfm-strikethrough/lib/index.js","../node_modules/mdast-util-to-markdown/lib/handle/inline-code.js","../node_modules/markdown-table/index.js","../node_modules/mdast-util-gfm-table/lib/index.js","../node_modules/mdast-util-to-markdown/lib/handle/list-item.js","../node_modules/mdast-util-to-markdown/lib/util/check-list-item-indent.js","../node_modules/mdast-util-to-markdown/lib/util/check-bullet.js","../node_modules/mdast-util-gfm-task-list-item/lib/index.js","../node_modules/remark-gfm/index.js","../node_modules/micromark-extension-gfm/index.js","../node_modules/mdast-util-gfm/lib/index.js","components/MarkdownViewer.js","services/fetchMarkdown.js","pages/Terms.js","pages/Privacy.js","pages/AppSupport.js","pages/Subprocessors.js","pages/AppPrivacy.js","pages/JobBoard.js","App.js","reportWebVitals.js","index.js"],"sourcesContent":["var g=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var L=Object.getOwnPropertyNames;var V=Object.prototype.hasOwnProperty;var Y=(e,r)=>{for(var t in r)g(e,t,{get:r[t],enumerable:!0})},K=(e,r,t,o)=>{if(r&&typeof r==\"object\"||typeof r==\"function\")for(let s of L(r))!V.call(e,s)&&s!==t&&g(e,s,{get:()=>r[s],enumerable:!(o=j(r,s))||o.enumerable});return e};var $=e=>K(g({},\"__esModule\",{value:!0}),e);var h=(e,r,t)=>new Promise((o,s)=>{var i=a=>{try{l(t.next(a))}catch(m){s(m)}},c=a=>{try{l(t.throw(a))}catch(m){s(m)}},l=a=>a.done?o(a.value):Promise.resolve(a.value).then(i,c);l((t=t.apply(e,r)).next())});var W={};Y(W,{SubmissionError:()=>p,appendExtraData:()=>E,createClient:()=>F,getDefaultClient:()=>U,isSubmissionError:()=>A});module.exports=$(W);var u=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",J=/^(?:[A-Za-z\\d+\\/]{4})*?(?:[A-Za-z\\d+\\/]{2}(?:==)?|[A-Za-z\\d+\\/]{3}=?)?$/;function I(e){e=String(e);for(var r,t,o,s,i=\"\",c=0,l=e.length%3;c<e.length;){if((t=e.charCodeAt(c++))>255||(o=e.charCodeAt(c++))>255||(s=e.charCodeAt(c++))>255)throw new TypeError(\"Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.\");r=t<<16|o<<8|s,i+=u.charAt(r>>18&63)+u.charAt(r>>12&63)+u.charAt(r>>6&63)+u.charAt(r&63)}return l?i.slice(0,l-3)+\"===\".substring(l):i}function O(e){if(e=String(e).replace(/[\\t\\n\\f\\r ]+/g,\"\"),!J.test(e))throw new TypeError(\"Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.\");e+=\"==\".slice(2-(e.length&3));for(var r,t=\"\",o,s,i=0;i<e.length;)r=u.indexOf(e.charAt(i++))<<18|u.indexOf(e.charAt(i++))<<12|(o=u.indexOf(e.charAt(i++)))<<6|(s=u.indexOf(e.charAt(i++))),t+=o===64?String.fromCharCode(r>>16&255):s===64?String.fromCharCode(r>>16&255,r>>8&255):String.fromCharCode(r>>16&255,r>>8&255,r&255);return t}var G=()=>navigator.webdriver||!!document.documentElement.getAttribute(O(\"d2ViZHJpdmVy\"))||!!window.callPhantom||!!window._phantom,y=class{constructor(){this.loadedAt=Date.now(),this.webdriver=G()}data(){return{loadedAt:this.loadedAt,webdriver:this.webdriver}}};var S=class{constructor(r){this.kind=\"success\";this.next=r.next}};function w(e){return\"next\"in e&&typeof e.next==\"string\"}var b=class{constructor(r,t){this.paymentIntentClientSecret=r;this.resubmitKey=t;this.kind=\"stripePluginPending\"}};function _(e){if(\"stripe\"in e&&\"resubmitKey\"in e&&typeof e.resubmitKey==\"string\"){let{stripe:r}=e;return typeof r==\"object\"&&r!=null&&\"paymentIntentClientSecret\"in r&&typeof r.paymentIntentClientSecret==\"string\"}return!1}function A(e){return e.kind===\"error\"}var p=class{constructor(...r){this.kind=\"error\";this.formErrors=[];this.fieldErrors=new Map;var t;for(let o of r){if(!o.field){this.formErrors.push({code:o.code&&z(o.code)?o.code:\"UNSPECIFIED\",message:o.message});continue}let s=(t=this.fieldErrors.get(o.field))!=null?t:[];s.push({code:o.code&&Q(o.code)?o.code:\"UNSPECIFIED\",message:o.message}),this.fieldErrors.set(o.field,s)}}getFormErrors(){return[...this.formErrors]}getFieldErrors(r){var t;return(t=this.fieldErrors.get(r))!=null?t:[]}getAllFieldErrors(){return Array.from(this.fieldErrors)}};function z(e){return e in B}var B={BLOCKED:\"BLOCKED\",EMPTY:\"EMPTY\",FILES_TOO_BIG:\"FILES_TOO_BIG\",FORM_NOT_FOUND:\"FORM_NOT_FOUND\",INACTIVE:\"INACTIVE\",NO_FILE_UPLOADS:\"NO_FILE_UPLOADS\",PROJECT_NOT_FOUND:\"PROJECT_NOT_FOUND\",TOO_MANY_FILES:\"TOO_MANY_FILES\"};function Q(e){return e in Z}var Z={REQUIRED_FIELD_EMPTY:\"REQUIRED_FIELD_EMPTY\",REQUIRED_FIELD_MISSING:\"REQUIRED_FIELD_MISSING\",STRIPE_CLIENT_ERROR:\"STRIPE_CLIENT_ERROR\",STRIPE_SCA_ERROR:\"STRIPE_SCA_ERROR\",TYPE_EMAIL:\"TYPE_EMAIL\",TYPE_NUMERIC:\"TYPE_NUMERIC\",TYPE_TEXT:\"TYPE_TEXT\"};function P(e){return\"errors\"in e&&Array.isArray(e.errors)&&e.errors.every(r=>typeof r.message==\"string\")||\"error\"in e&&typeof e.error==\"string\"}var D=\"3.0.1\";var v=e=>I(JSON.stringify(e)),N=e=>{let r=`@formspree/core@${D}`;return e?`${e} ${r}`:r};function E(e,r,t){e instanceof FormData?e.append(r,t):e[r]=t}function M(e){return e!==null&&typeof e==\"object\"}var R=class{constructor(r={}){this.project=r.project,this.stripe=r.stripe,typeof window!=\"undefined\"&&(this.session=new y)}submitForm(s,i){return h(this,arguments,function*(r,t,o={}){let c=o.endpoint||\"https://formspree.io\",l=this.project?`${c}/p/${this.project}/f/${r}`:`${c}/f/${r}`,a={Accept:\"application/json\",\"Formspree-Client\":N(o.clientName)};this.session&&(a[\"Formspree-Session-Data\"]=v(this.session.data())),t instanceof FormData||(a[\"Content-Type\"]=\"application/json\");function m(f){return h(this,null,function*(){try{let n=yield(yield fetch(l,{method:\"POST\",mode:\"cors\",body:f instanceof FormData?f:JSON.stringify(f),headers:a})).json();if(M(n)){if(P(n))return Array.isArray(n.errors)?new p(...n.errors):new p({message:n.error});if(_(n))return new b(n.stripe.paymentIntentClientSecret,n.resubmitKey);if(w(n))return new S({next:n.next})}return new p({message:\"Unexpected response format\"})}catch(d){let n=d instanceof Error?d.message:`Unknown error while posting to Formspree: ${JSON.stringify(d)}`;return new p({message:n})}})}if(this.stripe&&o.createPaymentMethod){let f=yield o.createPaymentMethod();if(f.error)return new p({code:\"STRIPE_CLIENT_ERROR\",field:\"paymentMethod\",message:\"Error creating payment method\"});E(t,\"paymentMethod\",f.paymentMethod.id);let d=yield m(t);if(d.kind===\"error\")return d;if(d.kind===\"stripePluginPending\"){let n=yield this.stripe.handleCardAction(d.paymentIntentClientSecret);if(n.error)return new p({code:\"STRIPE_CLIENT_ERROR\",field:\"paymentMethod\",message:\"Stripe SCA error\"});t instanceof FormData?t.delete(\"paymentMethod\"):delete t.paymentMethod,E(t,\"paymentIntent\",n.paymentIntent.id),E(t,\"resubmitKey\",d.resubmitKey);let x=yield m(t);return k(x),x}return d}let T=yield m(t);return k(T),T})}};function k(e){let{kind:r}=e;if(r!==\"success\"&&r!==\"error\")throw new Error(`Unexpected submission result (kind: ${r})`)}var F=e=>new R(e),U=()=>(C||(C=F()),C),C;0&&(module.exports={SubmissionError,appendExtraData,createClient,getDefaultClient,isSubmissionError});\n","(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react')) :\n  typeof define === 'function' && define.amd ? define(['exports', 'react'], factory) :\n  (global = global || self, factory(global.ReactStripe = {}, global.React));\n}(this, (function (exports, React) { 'use strict';\n\n  React = React && Object.prototype.hasOwnProperty.call(React, 'default') ? React['default'] : React;\n\n  function ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n\n    if (Object.getOwnPropertySymbols) {\n      var symbols = Object.getOwnPropertySymbols(object);\n\n      if (enumerableOnly) {\n        symbols = symbols.filter(function (sym) {\n          return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n        });\n      }\n\n      keys.push.apply(keys, symbols);\n    }\n\n    return keys;\n  }\n\n  function _objectSpread2(target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i] != null ? arguments[i] : {};\n\n      if (i % 2) {\n        ownKeys(Object(source), true).forEach(function (key) {\n          _defineProperty(target, key, source[key]);\n        });\n      } else if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n      } else {\n        ownKeys(Object(source)).forEach(function (key) {\n          Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n      }\n    }\n\n    return target;\n  }\n\n  function _typeof(obj) {\n    \"@babel/helpers - typeof\";\n\n    if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n      _typeof = function (obj) {\n        return typeof obj;\n      };\n    } else {\n      _typeof = function (obj) {\n        return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n      };\n    }\n\n    return _typeof(obj);\n  }\n\n  function _defineProperty(obj, key, value) {\n    if (key in obj) {\n      Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n      });\n    } else {\n      obj[key] = value;\n    }\n\n    return obj;\n  }\n\n  function _slicedToArray(arr, i) {\n    return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n  }\n\n  function _arrayWithHoles(arr) {\n    if (Array.isArray(arr)) return arr;\n  }\n\n  function _iterableToArrayLimit(arr, i) {\n    var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]);\n\n    if (_i == null) return;\n    var _arr = [];\n    var _n = true;\n    var _d = false;\n\n    var _s, _e;\n\n    try {\n      for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n        _arr.push(_s.value);\n\n        if (i && _arr.length === i) break;\n      }\n    } catch (err) {\n      _d = true;\n      _e = err;\n    } finally {\n      try {\n        if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n      } finally {\n        if (_d) throw _e;\n      }\n    }\n\n    return _arr;\n  }\n\n  function _unsupportedIterableToArray(o, minLen) {\n    if (!o) return;\n    if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n    var n = Object.prototype.toString.call(o).slice(8, -1);\n    if (n === \"Object\" && o.constructor) n = o.constructor.name;\n    if (n === \"Map\" || n === \"Set\") return Array.from(o);\n    if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n  }\n\n  function _arrayLikeToArray(arr, len) {\n    if (len == null || len > arr.length) len = arr.length;\n\n    for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n    return arr2;\n  }\n\n  function _nonIterableRest() {\n    throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n  }\n\n  function createCommonjsModule(fn, module) {\n  \treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n  }\n\n  /**\n   * Copyright (c) 2013-present, Facebook, Inc.\n   *\n   * This source code is licensed under the MIT license found in the\n   * LICENSE file in the root directory of this source tree.\n   */\n\n  var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n  var ReactPropTypesSecret_1 = ReactPropTypesSecret;\n\n  function emptyFunction() {}\n\n  function emptyFunctionWithReset() {}\n\n  emptyFunctionWithReset.resetWarningCache = emptyFunction;\n\n  var factoryWithThrowingShims = function () {\n    function shim(props, propName, componentName, location, propFullName, secret) {\n      if (secret === ReactPropTypesSecret_1) {\n        // It is still safe when called from React.\n        return;\n      }\n\n      var err = new Error('Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use PropTypes.checkPropTypes() to call them. ' + 'Read more at http://fb.me/use-check-prop-types');\n      err.name = 'Invariant Violation';\n      throw err;\n    }\n    shim.isRequired = shim;\n\n    function getShim() {\n      return shim;\n    }\n    // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n\n    var ReactPropTypes = {\n      array: shim,\n      bool: shim,\n      func: shim,\n      number: shim,\n      object: shim,\n      string: shim,\n      symbol: shim,\n      any: shim,\n      arrayOf: getShim,\n      element: shim,\n      elementType: shim,\n      instanceOf: getShim,\n      node: shim,\n      objectOf: getShim,\n      oneOf: getShim,\n      oneOfType: getShim,\n      shape: getShim,\n      exact: getShim,\n      checkPropTypes: emptyFunctionWithReset,\n      resetWarningCache: emptyFunction\n    };\n    ReactPropTypes.PropTypes = ReactPropTypes;\n    return ReactPropTypes;\n  };\n\n  var propTypes = createCommonjsModule(function (module) {\n  /**\n   * Copyright (c) 2013-present, Facebook, Inc.\n   *\n   * This source code is licensed under the MIT license found in the\n   * LICENSE file in the root directory of this source tree.\n   */\n  {\n    // By explicitly using `prop-types` you are opting into new production behavior.\n    // http://fb.me/prop-types-in-prod\n    module.exports = factoryWithThrowingShims();\n  }\n  });\n\n  var usePrevious = function usePrevious(value) {\n    var ref = React.useRef(value);\n    React.useEffect(function () {\n      ref.current = value;\n    }, [value]);\n    return ref.current;\n  };\n\n  var isUnknownObject = function isUnknownObject(raw) {\n    return raw !== null && _typeof(raw) === 'object';\n  };\n  var isPromise = function isPromise(raw) {\n    return isUnknownObject(raw) && typeof raw.then === 'function';\n  }; // We are using types to enforce the `stripe` prop in this lib,\n  // but in an untyped integration `stripe` could be anything, so we need\n  // to do some sanity validation to prevent type errors.\n\n  var isStripe = function isStripe(raw) {\n    return isUnknownObject(raw) && typeof raw.elements === 'function' && typeof raw.createToken === 'function' && typeof raw.createPaymentMethod === 'function' && typeof raw.confirmCardPayment === 'function';\n  };\n\n  var PLAIN_OBJECT_STR = '[object Object]';\n  var isEqual = function isEqual(left, right) {\n    if (!isUnknownObject(left) || !isUnknownObject(right)) {\n      return left === right;\n    }\n\n    var leftArray = Array.isArray(left);\n    var rightArray = Array.isArray(right);\n    if (leftArray !== rightArray) return false;\n    var leftPlainObject = Object.prototype.toString.call(left) === PLAIN_OBJECT_STR;\n    var rightPlainObject = Object.prototype.toString.call(right) === PLAIN_OBJECT_STR;\n    if (leftPlainObject !== rightPlainObject) return false; // not sure what sort of special object this is (regexp is one option), so\n    // fallback to reference check.\n\n    if (!leftPlainObject && !leftArray) return left === right;\n    var leftKeys = Object.keys(left);\n    var rightKeys = Object.keys(right);\n    if (leftKeys.length !== rightKeys.length) return false;\n    var keySet = {};\n\n    for (var i = 0; i < leftKeys.length; i += 1) {\n      keySet[leftKeys[i]] = true;\n    }\n\n    for (var _i = 0; _i < rightKeys.length; _i += 1) {\n      keySet[rightKeys[_i]] = true;\n    }\n\n    var allKeys = Object.keys(keySet);\n\n    if (allKeys.length !== leftKeys.length) {\n      return false;\n    }\n\n    var l = left;\n    var r = right;\n\n    var pred = function pred(key) {\n      return isEqual(l[key], r[key]);\n    };\n\n    return allKeys.every(pred);\n  };\n\n  var extractAllowedOptionsUpdates = function extractAllowedOptionsUpdates(options, prevOptions, immutableKeys) {\n    if (!isUnknownObject(options)) {\n      return null;\n    }\n\n    return Object.keys(options).reduce(function (newOptions, key) {\n      var isUpdated = !isUnknownObject(prevOptions) || !isEqual(options[key], prevOptions[key]);\n\n      if (immutableKeys.includes(key)) {\n        if (isUpdated) {\n          console.warn(\"Unsupported prop change: options.\".concat(key, \" is not a mutable property.\"));\n        }\n\n        return newOptions;\n      }\n\n      if (!isUpdated) {\n        return newOptions;\n      }\n\n      return _objectSpread2(_objectSpread2({}, newOptions || {}), {}, _defineProperty({}, key, options[key]));\n    }, null);\n  };\n\n  var INVALID_STRIPE_ERROR = 'Invalid prop `stripe` supplied to `Elements`. We recommend using the `loadStripe` utility from `@stripe/stripe-js`. See https://stripe.com/docs/stripe-js/react#elements-props-stripe for details.'; // We are using types to enforce the `stripe` prop in this lib, but in a real\n  // integration `stripe` could be anything, so we need to do some sanity\n  // validation to prevent type errors.\n\n  var validateStripe = function validateStripe(maybeStripe) {\n    if (maybeStripe === null || isStripe(maybeStripe)) {\n      return maybeStripe;\n    }\n\n    throw new Error(INVALID_STRIPE_ERROR);\n  };\n\n  var parseStripeProp = function parseStripeProp(raw) {\n    if (isPromise(raw)) {\n      return {\n        tag: 'async',\n        stripePromise: Promise.resolve(raw).then(validateStripe)\n      };\n    }\n\n    var stripe = validateStripe(raw);\n\n    if (stripe === null) {\n      return {\n        tag: 'empty'\n      };\n    }\n\n    return {\n      tag: 'sync',\n      stripe: stripe\n    };\n  };\n\n  var ElementsContext = /*#__PURE__*/React.createContext(null);\n  ElementsContext.displayName = 'ElementsContext';\n  var parseElementsContext = function parseElementsContext(ctx, useCase) {\n    if (!ctx) {\n      throw new Error(\"Could not find Elements context; You need to wrap the part of your app that \".concat(useCase, \" in an <Elements> provider.\"));\n    }\n\n    return ctx;\n  };\n  var CartElementContext = /*#__PURE__*/React.createContext(null);\n  CartElementContext.displayName = 'CartElementContext';\n  var parseCartElementContext = function parseCartElementContext(ctx, useCase) {\n    if (!ctx) {\n      throw new Error(\"Could not find Elements context; You need to wrap the part of your app that \".concat(useCase, \" in an <Elements> provider.\"));\n    }\n\n    return ctx;\n  };\n  /**\n   * The `Elements` provider allows you to use [Element components](https://stripe.com/docs/stripe-js/react#element-components) and access the [Stripe object](https://stripe.com/docs/js/initializing) in any nested component.\n   * Render an `Elements` provider at the root of your React app so that it is available everywhere you need it.\n   *\n   * To use the `Elements` provider, call `loadStripe` from `@stripe/stripe-js` with your publishable key.\n   * The `loadStripe` function will asynchronously load the Stripe.js script and initialize a `Stripe` object.\n   * Pass the returned `Promise` to `Elements`.\n   *\n   * @docs https://stripe.com/docs/stripe-js/react#elements-provider\n   */\n\n  var Elements = function Elements(_ref) {\n    var rawStripeProp = _ref.stripe,\n        options = _ref.options,\n        children = _ref.children;\n    var parsed = React.useMemo(function () {\n      return parseStripeProp(rawStripeProp);\n    }, [rawStripeProp]);\n\n    var _React$useState = React.useState(null),\n        _React$useState2 = _slicedToArray(_React$useState, 2),\n        cart = _React$useState2[0],\n        setCart = _React$useState2[1];\n\n    var _React$useState3 = React.useState(null),\n        _React$useState4 = _slicedToArray(_React$useState3, 2),\n        cartState = _React$useState4[0],\n        setCartState = _React$useState4[1]; // For a sync stripe instance, initialize into context\n\n\n    var _React$useState5 = React.useState(function () {\n      return {\n        stripe: parsed.tag === 'sync' ? parsed.stripe : null,\n        elements: parsed.tag === 'sync' ? parsed.stripe.elements(options) : null\n      };\n    }),\n        _React$useState6 = _slicedToArray(_React$useState5, 2),\n        ctx = _React$useState6[0],\n        setContext = _React$useState6[1];\n\n    React.useEffect(function () {\n      var isMounted = true;\n\n      var safeSetContext = function safeSetContext(stripe) {\n        setContext(function (ctx) {\n          // no-op if we already have a stripe instance (https://github.com/stripe/react-stripe-js/issues/296)\n          if (ctx.stripe) return ctx;\n          return {\n            stripe: stripe,\n            elements: stripe.elements(options)\n          };\n        });\n      }; // For an async stripePromise, store it in context once resolved\n\n\n      if (parsed.tag === 'async' && !ctx.stripe) {\n        parsed.stripePromise.then(function (stripe) {\n          if (stripe && isMounted) {\n            // Only update Elements context if the component is still mounted\n            // and stripe is not null. We allow stripe to be null to make\n            // handling SSR easier.\n            safeSetContext(stripe);\n          }\n        });\n      } else if (parsed.tag === 'sync' && !ctx.stripe) {\n        // Or, handle a sync stripe instance going from null -> populated\n        safeSetContext(parsed.stripe);\n      }\n\n      return function () {\n        isMounted = false;\n      };\n    }, [parsed, ctx, options]); // Warn on changes to stripe prop\n\n    var prevStripe = usePrevious(rawStripeProp);\n    React.useEffect(function () {\n      if (prevStripe !== null && prevStripe !== rawStripeProp) {\n        console.warn('Unsupported prop change on Elements: You cannot change the `stripe` prop after setting it.');\n      }\n    }, [prevStripe, rawStripeProp]); // Apply updates to elements when options prop has relevant changes\n\n    var prevOptions = usePrevious(options);\n    React.useEffect(function () {\n      if (!ctx.elements) {\n        return;\n      }\n\n      var updates = extractAllowedOptionsUpdates(options, prevOptions, ['clientSecret', 'fonts']);\n\n      if (updates) {\n        ctx.elements.update(updates);\n      }\n    }, [options, prevOptions, ctx.elements]); // Attach react-stripe-js version to stripe.js instance\n\n    React.useEffect(function () {\n      var anyStripe = ctx.stripe;\n\n      if (!anyStripe || !anyStripe._registerWrapper || !anyStripe.registerAppInfo) {\n        return;\n      }\n\n      anyStripe._registerWrapper({\n        name: 'react-stripe-js',\n        version: \"1.16.5\"\n      });\n\n      anyStripe.registerAppInfo({\n        name: 'react-stripe-js',\n        version: \"1.16.5\",\n        url: 'https://stripe.com/docs/stripe-js/react'\n      });\n    }, [ctx.stripe]);\n    return /*#__PURE__*/React.createElement(ElementsContext.Provider, {\n      value: ctx\n    }, /*#__PURE__*/React.createElement(CartElementContext.Provider, {\n      value: {\n        cart: cart,\n        setCart: setCart,\n        cartState: cartState,\n        setCartState: setCartState\n      }\n    }, children));\n  };\n  Elements.propTypes = {\n    stripe: propTypes.any,\n    options: propTypes.object\n  };\n  var useElementsContextWithUseCase = function useElementsContextWithUseCase(useCaseMessage) {\n    var ctx = React.useContext(ElementsContext);\n    return parseElementsContext(ctx, useCaseMessage);\n  };\n  var useCartElementContextWithUseCase = function useCartElementContextWithUseCase(useCaseMessage) {\n    var ctx = React.useContext(CartElementContext);\n    return parseCartElementContext(ctx, useCaseMessage);\n  };\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#useelements-hook\n   */\n\n  var useElements = function useElements() {\n    var _useElementsContextWi = useElementsContextWithUseCase('calls useElements()'),\n        elements = _useElementsContextWi.elements;\n\n    return elements;\n  };\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#usestripe-hook\n   */\n\n  var useStripe = function useStripe() {\n    var _useElementsContextWi2 = useElementsContextWithUseCase('calls useStripe()'),\n        stripe = _useElementsContextWi2.stripe;\n\n    return stripe;\n  };\n  /**\n   * @docs https://stripe.com/docs/payments/checkout/cart-element\n   */\n\n  var useCartElement = function useCartElement() {\n    var _useCartElementContex = useCartElementContextWithUseCase('calls useCartElement()'),\n        cart = _useCartElementContex.cart;\n\n    return cart;\n  };\n  /**\n   * @docs https://stripe.com/docs/payments/checkout/cart-element\n   */\n\n  var useCartElementState = function useCartElementState() {\n    var _useCartElementContex2 = useCartElementContextWithUseCase('calls useCartElementState()'),\n        cartState = _useCartElementContex2.cartState;\n\n    return cartState;\n  };\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#elements-consumer\n   */\n\n  var ElementsConsumer = function ElementsConsumer(_ref2) {\n    var children = _ref2.children;\n    var ctx = useElementsContextWithUseCase('mounts <ElementsConsumer>'); // Assert to satisfy the busted React.FC return type (it should be ReactNode)\n\n    return children(ctx);\n  };\n  ElementsConsumer.propTypes = {\n    children: propTypes.func.isRequired\n  };\n\n  var useAttachEvent = function useAttachEvent(element, event, cb) {\n    var cbDefined = !!cb;\n    var cbRef = React.useRef(cb); // In many integrations the callback prop changes on each render.\n    // Using a ref saves us from calling element.on/.off every render.\n\n    React.useEffect(function () {\n      cbRef.current = cb;\n    }, [cb]);\n    React.useEffect(function () {\n      if (!cbDefined || !element) {\n        return function () {};\n      }\n\n      var decoratedCb = function decoratedCb() {\n        if (cbRef.current) {\n          cbRef.current.apply(cbRef, arguments);\n        }\n      };\n\n      element.on(event, decoratedCb);\n      return function () {\n        element.off(event, decoratedCb);\n      };\n    }, [cbDefined, event, element, cbRef]);\n  };\n\n  var capitalized = function capitalized(str) {\n    return str.charAt(0).toUpperCase() + str.slice(1);\n  };\n\n  var createElementComponent = function createElementComponent(type, isServer) {\n    var displayName = \"\".concat(capitalized(type), \"Element\");\n\n    var ClientElement = function ClientElement(_ref) {\n      var id = _ref.id,\n          className = _ref.className,\n          _ref$options = _ref.options,\n          options = _ref$options === void 0 ? {} : _ref$options,\n          onBlur = _ref.onBlur,\n          onFocus = _ref.onFocus,\n          onReady = _ref.onReady,\n          onChange = _ref.onChange,\n          onEscape = _ref.onEscape,\n          onClick = _ref.onClick,\n          onLoadError = _ref.onLoadError,\n          onLoaderStart = _ref.onLoaderStart,\n          onNetworksChange = _ref.onNetworksChange,\n          onCheckout = _ref.onCheckout,\n          onLineItemClick = _ref.onLineItemClick,\n          onConfirm = _ref.onConfirm,\n          onCancel = _ref.onCancel,\n          onShippingAddressChange = _ref.onShippingAddressChange,\n          onShippingRateChange = _ref.onShippingRateChange;\n\n      var _useElementsContextWi = useElementsContextWithUseCase(\"mounts <\".concat(displayName, \">\")),\n          elements = _useElementsContextWi.elements;\n\n      var _React$useState = React.useState(null),\n          _React$useState2 = _slicedToArray(_React$useState, 2),\n          element = _React$useState2[0],\n          setElement = _React$useState2[1];\n\n      var elementRef = React.useRef(null);\n      var domNode = React.useRef(null);\n\n      var _useCartElementContex = useCartElementContextWithUseCase(\"mounts <\".concat(displayName, \">\")),\n          setCart = _useCartElementContex.setCart,\n          setCartState = _useCartElementContex.setCartState; // For every event where the merchant provides a callback, call element.on\n      // with that callback. If the merchant ever changes the callback, removes\n      // the old callback with element.off and then call element.on with the new one.\n\n\n      useAttachEvent(element, 'blur', onBlur);\n      useAttachEvent(element, 'focus', onFocus);\n      useAttachEvent(element, 'escape', onEscape);\n      useAttachEvent(element, 'click', onClick);\n      useAttachEvent(element, 'loaderror', onLoadError);\n      useAttachEvent(element, 'loaderstart', onLoaderStart);\n      useAttachEvent(element, 'networkschange', onNetworksChange);\n      useAttachEvent(element, 'lineitemclick', onLineItemClick);\n      useAttachEvent(element, 'confirm', onConfirm);\n      useAttachEvent(element, 'cancel', onCancel);\n      useAttachEvent(element, 'shippingaddresschange', onShippingAddressChange);\n      useAttachEvent(element, 'shippingratechange', onShippingRateChange);\n      var readyCallback;\n\n      if (type === 'cart') {\n        readyCallback = function readyCallback(event) {\n          setCartState(event);\n          onReady && onReady(event);\n        };\n      } else if (onReady) {\n        if (type === 'payButton') {\n          // Passes through the event, which includes visible PM types\n          readyCallback = onReady;\n        } else {\n          // For other Elements, pass through the Element itself.\n          readyCallback = function readyCallback() {\n            onReady(element);\n          };\n        }\n      }\n\n      useAttachEvent(element, 'ready', readyCallback);\n      var changeCallback = type === 'cart' ? function (event) {\n        setCartState(event);\n        onChange && onChange(event);\n      } : onChange;\n      useAttachEvent(element, 'change', changeCallback);\n      var checkoutCallback = type === 'cart' ? function (event) {\n        setCartState(event);\n        onCheckout && onCheckout(event);\n      } : onCheckout;\n      useAttachEvent(element, 'checkout', checkoutCallback);\n      React.useLayoutEffect(function () {\n        if (elementRef.current === null && elements && domNode.current !== null) {\n          var newElement = elements.create(type, options);\n\n          if (type === 'cart' && setCart) {\n            // we know that elements.create return value must be of type StripeCartElement if type is 'cart',\n            // we need to cast because typescript is not able to infer which overloaded method is used based off param type\n            setCart(newElement);\n          } // Store element in a ref to ensure it's _immediately_ available in cleanup hooks in StrictMode\n\n\n          elementRef.current = newElement; // Store element in state to facilitate event listener attachment\n\n          setElement(newElement);\n          newElement.mount(domNode.current);\n        }\n      }, [elements, options, setCart]);\n      var prevOptions = usePrevious(options);\n      React.useEffect(function () {\n        if (!elementRef.current) {\n          return;\n        }\n\n        var updates = extractAllowedOptionsUpdates(options, prevOptions, ['paymentRequest']);\n\n        if (updates) {\n          elementRef.current.update(updates);\n        }\n      }, [options, prevOptions]);\n      React.useLayoutEffect(function () {\n        return function () {\n          if (elementRef.current) {\n            elementRef.current.destroy();\n            elementRef.current = null;\n          }\n        };\n      }, []);\n      return /*#__PURE__*/React.createElement(\"div\", {\n        id: id,\n        className: className,\n        ref: domNode\n      });\n    }; // Only render the Element wrapper in a server environment.\n\n\n    var ServerElement = function ServerElement(props) {\n      // Validate that we are in the right context by calling useElementsContextWithUseCase.\n      useElementsContextWithUseCase(\"mounts <\".concat(displayName, \">\"));\n      useCartElementContextWithUseCase(\"mounts <\".concat(displayName, \">\"));\n      var id = props.id,\n          className = props.className;\n      return /*#__PURE__*/React.createElement(\"div\", {\n        id: id,\n        className: className\n      });\n    };\n\n    var Element = isServer ? ServerElement : ClientElement;\n    Element.propTypes = {\n      id: propTypes.string,\n      className: propTypes.string,\n      onChange: propTypes.func,\n      onBlur: propTypes.func,\n      onFocus: propTypes.func,\n      onReady: propTypes.func,\n      onEscape: propTypes.func,\n      onClick: propTypes.func,\n      onLoadError: propTypes.func,\n      onLoaderStart: propTypes.func,\n      onNetworksChange: propTypes.func,\n      onCheckout: propTypes.func,\n      onLineItemClick: propTypes.func,\n      onConfirm: propTypes.func,\n      onCancel: propTypes.func,\n      onShippingAddressChange: propTypes.func,\n      onShippingRateChange: propTypes.func,\n      options: propTypes.object\n    };\n    Element.displayName = displayName;\n    Element.__elementType = type;\n    return Element;\n  };\n\n  var isServer = typeof window === 'undefined';\n  /**\n   * Requires beta access:\n   * Contact [Stripe support](https://support.stripe.com/) for more information.\n   *\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var AuBankAccountElement = createElementComponent('auBankAccount', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var CardElement = createElementComponent('card', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var CardNumberElement = createElementComponent('cardNumber', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var CardExpiryElement = createElementComponent('cardExpiry', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var CardCvcElement = createElementComponent('cardCvc', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var FpxBankElement = createElementComponent('fpxBank', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var IbanElement = createElementComponent('iban', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var IdealBankElement = createElementComponent('idealBank', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var P24BankElement = createElementComponent('p24Bank', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var EpsBankElement = createElementComponent('epsBank', isServer);\n  var PaymentElement = createElementComponent('payment', isServer);\n  /**\n   * Requires beta access:\n   * Contact [Stripe support](https://support.stripe.com/) for more information.\n   *\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var PayButtonElement = createElementComponent('payButton', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var PaymentRequestButtonElement = createElementComponent('paymentRequestButton', isServer);\n  /**\n   * Requires beta access:\n   * Contact [Stripe support](https://support.stripe.com/) for more information.\n   *\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var LinkAuthenticationElement = createElementComponent('linkAuthentication', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var AddressElement = createElementComponent('address', isServer);\n  /**\n   * @deprecated\n   * Use `AddressElement` instead.\n   *\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var ShippingAddressElement = createElementComponent('shippingAddress', isServer);\n  /**\n   * Requires beta access:\n   * Contact [Stripe support](https://support.stripe.com/) for more information.\n   *\n   * @docs https://stripe.com/docs/elements/cart-element\n   */\n\n  var CartElement = createElementComponent('cart', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var PaymentMethodMessagingElement = createElementComponent('paymentMethodMessaging', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var AffirmMessageElement = createElementComponent('affirmMessage', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var AfterpayClearpayMessageElement = createElementComponent('afterpayClearpayMessage', isServer);\n\n  exports.AddressElement = AddressElement;\n  exports.AffirmMessageElement = AffirmMessageElement;\n  exports.AfterpayClearpayMessageElement = AfterpayClearpayMessageElement;\n  exports.AuBankAccountElement = AuBankAccountElement;\n  exports.CardCvcElement = CardCvcElement;\n  exports.CardElement = CardElement;\n  exports.CardExpiryElement = CardExpiryElement;\n  exports.CardNumberElement = CardNumberElement;\n  exports.CartElement = CartElement;\n  exports.Elements = Elements;\n  exports.ElementsConsumer = ElementsConsumer;\n  exports.EpsBankElement = EpsBankElement;\n  exports.FpxBankElement = FpxBankElement;\n  exports.IbanElement = IbanElement;\n  exports.IdealBankElement = IdealBankElement;\n  exports.LinkAuthenticationElement = LinkAuthenticationElement;\n  exports.P24BankElement = P24BankElement;\n  exports.PayButtonElement = PayButtonElement;\n  exports.PaymentElement = PaymentElement;\n  exports.PaymentMethodMessagingElement = PaymentMethodMessagingElement;\n  exports.PaymentRequestButtonElement = PaymentRequestButtonElement;\n  exports.ShippingAddressElement = ShippingAddressElement;\n  exports.useCartElement = useCartElement;\n  exports.useCartElementState = useCartElementState;\n  exports.useElements = useElements;\n  exports.useStripe = useStripe;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nvar V3_URL = 'https://js.stripe.com/v3';\nvar V3_URL_REGEX = /^https:\\/\\/js\\.stripe\\.com\\/v3\\/?(\\?.*)?$/;\nvar EXISTING_SCRIPT_MESSAGE = 'loadStripe.setLoadParameters was called but an existing Stripe.js script already exists in the document; existing script parameters will be used';\nvar findScript = function findScript() {\n  var scripts = document.querySelectorAll(\"script[src^=\\\"\".concat(V3_URL, \"\\\"]\"));\n\n  for (var i = 0; i < scripts.length; i++) {\n    var script = scripts[i];\n\n    if (!V3_URL_REGEX.test(script.src)) {\n      continue;\n    }\n\n    return script;\n  }\n\n  return null;\n};\n\nvar injectScript = function injectScript(params) {\n  var queryString = params && !params.advancedFraudSignals ? '?advancedFraudSignals=false' : '';\n  var script = document.createElement('script');\n  script.src = \"\".concat(V3_URL).concat(queryString);\n  var headOrBody = document.head || document.body;\n\n  if (!headOrBody) {\n    throw new Error('Expected document.body not to be null. Stripe.js requires a <body> element.');\n  }\n\n  headOrBody.appendChild(script);\n  return script;\n};\n\nvar registerWrapper = function registerWrapper(stripe, startTime) {\n  if (!stripe || !stripe._registerWrapper) {\n    return;\n  }\n\n  stripe._registerWrapper({\n    name: 'stripe-js',\n    version: \"1.54.2\",\n    startTime: startTime\n  });\n};\n\nvar stripePromise = null;\nvar loadScript = function loadScript(params) {\n  // Ensure that we only attempt to load Stripe.js at most once\n  if (stripePromise !== null) {\n    return stripePromise;\n  }\n\n  stripePromise = new Promise(function (resolve, reject) {\n    if (typeof window === 'undefined' || typeof document === 'undefined') {\n      // Resolve to null when imported server side. This makes the module\n      // safe to import in an isomorphic code base.\n      resolve(null);\n      return;\n    }\n\n    if (window.Stripe && params) {\n      console.warn(EXISTING_SCRIPT_MESSAGE);\n    }\n\n    if (window.Stripe) {\n      resolve(window.Stripe);\n      return;\n    }\n\n    try {\n      var script = findScript();\n\n      if (script && params) {\n        console.warn(EXISTING_SCRIPT_MESSAGE);\n      } else if (!script) {\n        script = injectScript(params);\n      }\n\n      script.addEventListener('load', function () {\n        if (window.Stripe) {\n          resolve(window.Stripe);\n        } else {\n          reject(new Error('Stripe.js not available'));\n        }\n      });\n      script.addEventListener('error', function () {\n        reject(new Error('Failed to load Stripe.js'));\n      });\n    } catch (error) {\n      reject(error);\n      return;\n    }\n  });\n  return stripePromise;\n};\nvar initStripe = function initStripe(maybeStripe, args, startTime) {\n  if (maybeStripe === null) {\n    return null;\n  }\n\n  var stripe = maybeStripe.apply(undefined, args);\n  registerWrapper(stripe, startTime);\n  return stripe;\n}; // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\nvar validateLoadParams = function validateLoadParams(params) {\n  var errorMessage = \"invalid load parameters; expected object of shape\\n\\n    {advancedFraudSignals: boolean}\\n\\nbut received\\n\\n    \".concat(JSON.stringify(params), \"\\n\");\n\n  if (params === null || _typeof(params) !== 'object') {\n    throw new Error(errorMessage);\n  }\n\n  if (Object.keys(params).length === 1 && typeof params.advancedFraudSignals === 'boolean') {\n    return params;\n  }\n\n  throw new Error(errorMessage);\n};\n\nvar loadParams;\nvar loadStripeCalled = false;\nvar loadStripe = function loadStripe() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  loadStripeCalled = true;\n  var startTime = Date.now();\n  return loadScript(loadParams).then(function (maybeStripe) {\n    return initStripe(maybeStripe, args, startTime);\n  });\n};\n\nloadStripe.setLoadParameters = function (params) {\n  // we won't throw an error if setLoadParameters is called with the same values as before\n  if (loadStripeCalled && loadParams) {\n    var validatedParams = validateLoadParams(params);\n    var parameterKeys = Object.keys(validatedParams);\n    var sameParameters = parameterKeys.reduce(function (previousValue, currentValue) {\n      var _loadParams;\n\n      return previousValue && params[currentValue] === ((_loadParams = loadParams) === null || _loadParams === void 0 ? void 0 : _loadParams[currentValue]);\n    }, true);\n\n    if (sameParameters) {\n      return;\n    }\n  }\n\n  if (loadStripeCalled) {\n    throw new Error('You cannot change load parameters after calling loadStripe');\n  }\n\n  loadParams = validateLoadParams(params);\n};\n\nexports.loadStripe = loadStripe;\n","module.exports = require('./dist/pure.js');\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","(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n  typeof define === 'function' && define.amd ? define(['exports'], factory) :\n  (global = global || self, factory(global.window = global.window || {}));\n}(this, (function (exports) { 'use strict';\n\n  function _defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  function _createClass(Constructor, protoProps, staticProps) {\n    if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) _defineProperties(Constructor, staticProps);\n    return Constructor;\n  }\n\n  /*!\n   * Observer 3.12.5\n   * https://gsap.com\n   *\n   * @license Copyright 2008-2024, GreenSock. All rights reserved.\n   * Subject to the terms at https://gsap.com/standard-license or for\n   * Club GSAP members, the agreement issued with that membership.\n   * @author: Jack Doyle, jack@greensock.com\n  */\n  var gsap,\n      _coreInitted,\n      _clamp,\n      _win,\n      _doc,\n      _docEl,\n      _body,\n      _isTouch,\n      _pointerType,\n      ScrollTrigger,\n      _root,\n      _normalizer,\n      _eventTypes,\n      _context,\n      _getGSAP = function _getGSAP() {\n    return gsap || typeof window !== \"undefined\" && (gsap = window.gsap) && gsap.registerPlugin && gsap;\n  },\n      _startup = 1,\n      _observers = [],\n      _scrollers = [],\n      _proxies = [],\n      _getTime = Date.now,\n      _bridge = function _bridge(name, value) {\n    return value;\n  },\n      _integrate = function _integrate() {\n    var core = ScrollTrigger.core,\n        data = core.bridge || {},\n        scrollers = core._scrollers,\n        proxies = core._proxies;\n    scrollers.push.apply(scrollers, _scrollers);\n    proxies.push.apply(proxies, _proxies);\n    _scrollers = scrollers;\n    _proxies = proxies;\n\n    _bridge = function _bridge(name, value) {\n      return data[name](value);\n    };\n  },\n      _getProxyProp = function _getProxyProp(element, property) {\n    return ~_proxies.indexOf(element) && _proxies[_proxies.indexOf(element) + 1][property];\n  },\n      _isViewport = function _isViewport(el) {\n    return !!~_root.indexOf(el);\n  },\n      _addListener = function _addListener(element, type, func, passive, capture) {\n    return element.addEventListener(type, func, {\n      passive: passive !== false,\n      capture: !!capture\n    });\n  },\n      _removeListener = function _removeListener(element, type, func, capture) {\n    return element.removeEventListener(type, func, !!capture);\n  },\n      _scrollLeft = \"scrollLeft\",\n      _scrollTop = \"scrollTop\",\n      _onScroll = function _onScroll() {\n    return _normalizer && _normalizer.isPressed || _scrollers.cache++;\n  },\n      _scrollCacheFunc = function _scrollCacheFunc(f, doNotCache) {\n    var cachingFunc = function cachingFunc(value) {\n      if (value || value === 0) {\n        _startup && (_win.history.scrollRestoration = \"manual\");\n        var isNormalizing = _normalizer && _normalizer.isPressed;\n        value = cachingFunc.v = Math.round(value) || (_normalizer && _normalizer.iOS ? 1 : 0);\n        f(value);\n        cachingFunc.cacheID = _scrollers.cache;\n        isNormalizing && _bridge(\"ss\", value);\n      } else if (doNotCache || _scrollers.cache !== cachingFunc.cacheID || _bridge(\"ref\")) {\n        cachingFunc.cacheID = _scrollers.cache;\n        cachingFunc.v = f();\n      }\n\n      return cachingFunc.v + cachingFunc.offset;\n    };\n\n    cachingFunc.offset = 0;\n    return f && cachingFunc;\n  },\n      _horizontal = {\n    s: _scrollLeft,\n    p: \"left\",\n    p2: \"Left\",\n    os: \"right\",\n    os2: \"Right\",\n    d: \"width\",\n    d2: \"Width\",\n    a: \"x\",\n    sc: _scrollCacheFunc(function (value) {\n      return arguments.length ? _win.scrollTo(value, _vertical.sc()) : _win.pageXOffset || _doc[_scrollLeft] || _docEl[_scrollLeft] || _body[_scrollLeft] || 0;\n    })\n  },\n      _vertical = {\n    s: _scrollTop,\n    p: \"top\",\n    p2: \"Top\",\n    os: \"bottom\",\n    os2: \"Bottom\",\n    d: \"height\",\n    d2: \"Height\",\n    a: \"y\",\n    op: _horizontal,\n    sc: _scrollCacheFunc(function (value) {\n      return arguments.length ? _win.scrollTo(_horizontal.sc(), value) : _win.pageYOffset || _doc[_scrollTop] || _docEl[_scrollTop] || _body[_scrollTop] || 0;\n    })\n  },\n      _getTarget = function _getTarget(t, self) {\n    return (self && self._ctx && self._ctx.selector || gsap.utils.toArray)(t)[0] || (typeof t === \"string\" && gsap.config().nullTargetWarn !== false ? console.warn(\"Element not found:\", t) : null);\n  },\n      _getScrollFunc = function _getScrollFunc(element, _ref) {\n    var s = _ref.s,\n        sc = _ref.sc;\n    _isViewport(element) && (element = _doc.scrollingElement || _docEl);\n\n    var i = _scrollers.indexOf(element),\n        offset = sc === _vertical.sc ? 1 : 2;\n\n    !~i && (i = _scrollers.push(element) - 1);\n    _scrollers[i + offset] || _addListener(element, \"scroll\", _onScroll);\n    var prev = _scrollers[i + offset],\n        func = prev || (_scrollers[i + offset] = _scrollCacheFunc(_getProxyProp(element, s), true) || (_isViewport(element) ? sc : _scrollCacheFunc(function (value) {\n      return arguments.length ? element[s] = value : element[s];\n    })));\n    func.target = element;\n    prev || (func.smooth = gsap.getProperty(element, \"scrollBehavior\") === \"smooth\");\n    return func;\n  },\n      _getVelocityProp = function _getVelocityProp(value, minTimeRefresh, useDelta) {\n    var v1 = value,\n        v2 = value,\n        t1 = _getTime(),\n        t2 = t1,\n        min = minTimeRefresh || 50,\n        dropToZeroTime = Math.max(500, min * 3),\n        update = function update(value, force) {\n      var t = _getTime();\n\n      if (force || t - t1 > min) {\n        v2 = v1;\n        v1 = value;\n        t2 = t1;\n        t1 = t;\n      } else if (useDelta) {\n        v1 += value;\n      } else {\n        v1 = v2 + (value - v2) / (t - t2) * (t1 - t2);\n      }\n    },\n        reset = function reset() {\n      v2 = v1 = useDelta ? 0 : v1;\n      t2 = t1 = 0;\n    },\n        getVelocity = function getVelocity(latestValue) {\n      var tOld = t2,\n          vOld = v2,\n          t = _getTime();\n\n      (latestValue || latestValue === 0) && latestValue !== v1 && update(latestValue);\n      return t1 === t2 || t - t2 > dropToZeroTime ? 0 : (v1 + (useDelta ? vOld : -vOld)) / ((useDelta ? t : t1) - tOld) * 1000;\n    };\n\n    return {\n      update: update,\n      reset: reset,\n      getVelocity: getVelocity\n    };\n  },\n      _getEvent = function _getEvent(e, preventDefault) {\n    preventDefault && !e._gsapAllow && e.preventDefault();\n    return e.changedTouches ? e.changedTouches[0] : e;\n  },\n      _getAbsoluteMax = function _getAbsoluteMax(a) {\n    var max = Math.max.apply(Math, a),\n        min = Math.min.apply(Math, a);\n    return Math.abs(max) >= Math.abs(min) ? max : min;\n  },\n      _setScrollTrigger = function _setScrollTrigger() {\n    ScrollTrigger = gsap.core.globals().ScrollTrigger;\n    ScrollTrigger && ScrollTrigger.core && _integrate();\n  },\n      _initCore = function _initCore(core) {\n    gsap = core || _getGSAP();\n\n    if (!_coreInitted && gsap && typeof document !== \"undefined\" && document.body) {\n      _win = window;\n      _doc = document;\n      _docEl = _doc.documentElement;\n      _body = _doc.body;\n      _root = [_win, _doc, _docEl, _body];\n      _clamp = gsap.utils.clamp;\n\n      _context = gsap.core.context || function () {};\n\n      _pointerType = \"onpointerenter\" in _body ? \"pointer\" : \"mouse\";\n      _isTouch = Observer.isTouch = _win.matchMedia && _win.matchMedia(\"(hover: none), (pointer: coarse)\").matches ? 1 : \"ontouchstart\" in _win || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0 ? 2 : 0;\n      _eventTypes = Observer.eventTypes = (\"ontouchstart\" in _docEl ? \"touchstart,touchmove,touchcancel,touchend\" : !(\"onpointerdown\" in _docEl) ? \"mousedown,mousemove,mouseup,mouseup\" : \"pointerdown,pointermove,pointercancel,pointerup\").split(\",\");\n      setTimeout(function () {\n        return _startup = 0;\n      }, 500);\n\n      _setScrollTrigger();\n\n      _coreInitted = 1;\n    }\n\n    return _coreInitted;\n  };\n\n  _horizontal.op = _vertical;\n  _scrollers.cache = 0;\n  var Observer = function () {\n    function Observer(vars) {\n      this.init(vars);\n    }\n\n    var _proto = Observer.prototype;\n\n    _proto.init = function init(vars) {\n      _coreInitted || _initCore(gsap) || console.warn(\"Please gsap.registerPlugin(Observer)\");\n      ScrollTrigger || _setScrollTrigger();\n      var tolerance = vars.tolerance,\n          dragMinimum = vars.dragMinimum,\n          type = vars.type,\n          target = vars.target,\n          lineHeight = vars.lineHeight,\n          debounce = vars.debounce,\n          preventDefault = vars.preventDefault,\n          onStop = vars.onStop,\n          onStopDelay = vars.onStopDelay,\n          ignore = vars.ignore,\n          wheelSpeed = vars.wheelSpeed,\n          event = vars.event,\n          onDragStart = vars.onDragStart,\n          onDragEnd = vars.onDragEnd,\n          onDrag = vars.onDrag,\n          onPress = vars.onPress,\n          onRelease = vars.onRelease,\n          onRight = vars.onRight,\n          onLeft = vars.onLeft,\n          onUp = vars.onUp,\n          onDown = vars.onDown,\n          onChangeX = vars.onChangeX,\n          onChangeY = vars.onChangeY,\n          onChange = vars.onChange,\n          onToggleX = vars.onToggleX,\n          onToggleY = vars.onToggleY,\n          onHover = vars.onHover,\n          onHoverEnd = vars.onHoverEnd,\n          onMove = vars.onMove,\n          ignoreCheck = vars.ignoreCheck,\n          isNormalizer = vars.isNormalizer,\n          onGestureStart = vars.onGestureStart,\n          onGestureEnd = vars.onGestureEnd,\n          onWheel = vars.onWheel,\n          onEnable = vars.onEnable,\n          onDisable = vars.onDisable,\n          onClick = vars.onClick,\n          scrollSpeed = vars.scrollSpeed,\n          capture = vars.capture,\n          allowClicks = vars.allowClicks,\n          lockAxis = vars.lockAxis,\n          onLockAxis = vars.onLockAxis;\n      this.target = target = _getTarget(target) || _docEl;\n      this.vars = vars;\n      ignore && (ignore = gsap.utils.toArray(ignore));\n      tolerance = tolerance || 1e-9;\n      dragMinimum = dragMinimum || 0;\n      wheelSpeed = wheelSpeed || 1;\n      scrollSpeed = scrollSpeed || 1;\n      type = type || \"wheel,touch,pointer\";\n      debounce = debounce !== false;\n      lineHeight || (lineHeight = parseFloat(_win.getComputedStyle(_body).lineHeight) || 22);\n\n      var id,\n          onStopDelayedCall,\n          dragged,\n          moved,\n          wheeled,\n          locked,\n          axis,\n          self = this,\n          prevDeltaX = 0,\n          prevDeltaY = 0,\n          passive = vars.passive || !preventDefault,\n          scrollFuncX = _getScrollFunc(target, _horizontal),\n          scrollFuncY = _getScrollFunc(target, _vertical),\n          scrollX = scrollFuncX(),\n          scrollY = scrollFuncY(),\n          limitToTouch = ~type.indexOf(\"touch\") && !~type.indexOf(\"pointer\") && _eventTypes[0] === \"pointerdown\",\n          isViewport = _isViewport(target),\n          ownerDoc = target.ownerDocument || _doc,\n          deltaX = [0, 0, 0],\n          deltaY = [0, 0, 0],\n          onClickTime = 0,\n          clickCapture = function clickCapture() {\n        return onClickTime = _getTime();\n      },\n          _ignoreCheck = function _ignoreCheck(e, isPointerOrTouch) {\n        return (self.event = e) && ignore && ~ignore.indexOf(e.target) || isPointerOrTouch && limitToTouch && e.pointerType !== \"touch\" || ignoreCheck && ignoreCheck(e, isPointerOrTouch);\n      },\n          onStopFunc = function onStopFunc() {\n        self._vx.reset();\n\n        self._vy.reset();\n\n        onStopDelayedCall.pause();\n        onStop && onStop(self);\n      },\n          update = function update() {\n        var dx = self.deltaX = _getAbsoluteMax(deltaX),\n            dy = self.deltaY = _getAbsoluteMax(deltaY),\n            changedX = Math.abs(dx) >= tolerance,\n            changedY = Math.abs(dy) >= tolerance;\n\n        onChange && (changedX || changedY) && onChange(self, dx, dy, deltaX, deltaY);\n\n        if (changedX) {\n          onRight && self.deltaX > 0 && onRight(self);\n          onLeft && self.deltaX < 0 && onLeft(self);\n          onChangeX && onChangeX(self);\n          onToggleX && self.deltaX < 0 !== prevDeltaX < 0 && onToggleX(self);\n          prevDeltaX = self.deltaX;\n          deltaX[0] = deltaX[1] = deltaX[2] = 0;\n        }\n\n        if (changedY) {\n          onDown && self.deltaY > 0 && onDown(self);\n          onUp && self.deltaY < 0 && onUp(self);\n          onChangeY && onChangeY(self);\n          onToggleY && self.deltaY < 0 !== prevDeltaY < 0 && onToggleY(self);\n          prevDeltaY = self.deltaY;\n          deltaY[0] = deltaY[1] = deltaY[2] = 0;\n        }\n\n        if (moved || dragged) {\n          onMove && onMove(self);\n\n          if (dragged) {\n            onDrag(self);\n            dragged = false;\n          }\n\n          moved = false;\n        }\n\n        locked && !(locked = false) && onLockAxis && onLockAxis(self);\n\n        if (wheeled) {\n          onWheel(self);\n          wheeled = false;\n        }\n\n        id = 0;\n      },\n          onDelta = function onDelta(x, y, index) {\n        deltaX[index] += x;\n        deltaY[index] += y;\n\n        self._vx.update(x);\n\n        self._vy.update(y);\n\n        debounce ? id || (id = requestAnimationFrame(update)) : update();\n      },\n          onTouchOrPointerDelta = function onTouchOrPointerDelta(x, y) {\n        if (lockAxis && !axis) {\n          self.axis = axis = Math.abs(x) > Math.abs(y) ? \"x\" : \"y\";\n          locked = true;\n        }\n\n        if (axis !== \"y\") {\n          deltaX[2] += x;\n\n          self._vx.update(x, true);\n        }\n\n        if (axis !== \"x\") {\n          deltaY[2] += y;\n\n          self._vy.update(y, true);\n        }\n\n        debounce ? id || (id = requestAnimationFrame(update)) : update();\n      },\n          _onDrag = function _onDrag(e) {\n        if (_ignoreCheck(e, 1)) {\n          return;\n        }\n\n        e = _getEvent(e, preventDefault);\n        var x = e.clientX,\n            y = e.clientY,\n            dx = x - self.x,\n            dy = y - self.y,\n            isDragging = self.isDragging;\n        self.x = x;\n        self.y = y;\n\n        if (isDragging || Math.abs(self.startX - x) >= dragMinimum || Math.abs(self.startY - y) >= dragMinimum) {\n          onDrag && (dragged = true);\n          isDragging || (self.isDragging = true);\n          onTouchOrPointerDelta(dx, dy);\n          isDragging || onDragStart && onDragStart(self);\n        }\n      },\n          _onPress = self.onPress = function (e) {\n        if (_ignoreCheck(e, 1) || e && e.button) {\n          return;\n        }\n\n        self.axis = axis = null;\n        onStopDelayedCall.pause();\n        self.isPressed = true;\n        e = _getEvent(e);\n        prevDeltaX = prevDeltaY = 0;\n        self.startX = self.x = e.clientX;\n        self.startY = self.y = e.clientY;\n\n        self._vx.reset();\n\n        self._vy.reset();\n\n        _addListener(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, passive, true);\n\n        self.deltaX = self.deltaY = 0;\n        onPress && onPress(self);\n      },\n          _onRelease = self.onRelease = function (e) {\n        if (_ignoreCheck(e, 1)) {\n          return;\n        }\n\n        _removeListener(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, true);\n\n        var isTrackingDrag = !isNaN(self.y - self.startY),\n            wasDragging = self.isDragging,\n            isDragNotClick = wasDragging && (Math.abs(self.x - self.startX) > 3 || Math.abs(self.y - self.startY) > 3),\n            eventData = _getEvent(e);\n\n        if (!isDragNotClick && isTrackingDrag) {\n          self._vx.reset();\n\n          self._vy.reset();\n\n          if (preventDefault && allowClicks) {\n            gsap.delayedCall(0.08, function () {\n              if (_getTime() - onClickTime > 300 && !e.defaultPrevented) {\n                if (e.target.click) {\n                  e.target.click();\n                } else if (ownerDoc.createEvent) {\n                  var syntheticEvent = ownerDoc.createEvent(\"MouseEvents\");\n                  syntheticEvent.initMouseEvent(\"click\", true, true, _win, 1, eventData.screenX, eventData.screenY, eventData.clientX, eventData.clientY, false, false, false, false, 0, null);\n                  e.target.dispatchEvent(syntheticEvent);\n                }\n              }\n            });\n          }\n        }\n\n        self.isDragging = self.isGesturing = self.isPressed = false;\n        onStop && wasDragging && !isNormalizer && onStopDelayedCall.restart(true);\n        onDragEnd && wasDragging && onDragEnd(self);\n        onRelease && onRelease(self, isDragNotClick);\n      },\n          _onGestureStart = function _onGestureStart(e) {\n        return e.touches && e.touches.length > 1 && (self.isGesturing = true) && onGestureStart(e, self.isDragging);\n      },\n          _onGestureEnd = function _onGestureEnd() {\n        return (self.isGesturing = false) || onGestureEnd(self);\n      },\n          onScroll = function onScroll(e) {\n        if (_ignoreCheck(e)) {\n          return;\n        }\n\n        var x = scrollFuncX(),\n            y = scrollFuncY();\n        onDelta((x - scrollX) * scrollSpeed, (y - scrollY) * scrollSpeed, 1);\n        scrollX = x;\n        scrollY = y;\n        onStop && onStopDelayedCall.restart(true);\n      },\n          _onWheel = function _onWheel(e) {\n        if (_ignoreCheck(e)) {\n          return;\n        }\n\n        e = _getEvent(e, preventDefault);\n        onWheel && (wheeled = true);\n        var multiplier = (e.deltaMode === 1 ? lineHeight : e.deltaMode === 2 ? _win.innerHeight : 1) * wheelSpeed;\n        onDelta(e.deltaX * multiplier, e.deltaY * multiplier, 0);\n        onStop && !isNormalizer && onStopDelayedCall.restart(true);\n      },\n          _onMove = function _onMove(e) {\n        if (_ignoreCheck(e)) {\n          return;\n        }\n\n        var x = e.clientX,\n            y = e.clientY,\n            dx = x - self.x,\n            dy = y - self.y;\n        self.x = x;\n        self.y = y;\n        moved = true;\n        onStop && onStopDelayedCall.restart(true);\n        (dx || dy) && onTouchOrPointerDelta(dx, dy);\n      },\n          _onHover = function _onHover(e) {\n        self.event = e;\n        onHover(self);\n      },\n          _onHoverEnd = function _onHoverEnd(e) {\n        self.event = e;\n        onHoverEnd(self);\n      },\n          _onClick = function _onClick(e) {\n        return _ignoreCheck(e) || _getEvent(e, preventDefault) && onClick(self);\n      };\n\n      onStopDelayedCall = self._dc = gsap.delayedCall(onStopDelay || 0.25, onStopFunc).pause();\n      self.deltaX = self.deltaY = 0;\n      self._vx = _getVelocityProp(0, 50, true);\n      self._vy = _getVelocityProp(0, 50, true);\n      self.scrollX = scrollFuncX;\n      self.scrollY = scrollFuncY;\n      self.isDragging = self.isGesturing = self.isPressed = false;\n\n      _context(this);\n\n      self.enable = function (e) {\n        if (!self.isEnabled) {\n          _addListener(isViewport ? ownerDoc : target, \"scroll\", _onScroll);\n\n          type.indexOf(\"scroll\") >= 0 && _addListener(isViewport ? ownerDoc : target, \"scroll\", onScroll, passive, capture);\n          type.indexOf(\"wheel\") >= 0 && _addListener(target, \"wheel\", _onWheel, passive, capture);\n\n          if (type.indexOf(\"touch\") >= 0 && _isTouch || type.indexOf(\"pointer\") >= 0) {\n            _addListener(target, _eventTypes[0], _onPress, passive, capture);\n\n            _addListener(ownerDoc, _eventTypes[2], _onRelease);\n\n            _addListener(ownerDoc, _eventTypes[3], _onRelease);\n\n            allowClicks && _addListener(target, \"click\", clickCapture, true, true);\n            onClick && _addListener(target, \"click\", _onClick);\n            onGestureStart && _addListener(ownerDoc, \"gesturestart\", _onGestureStart);\n            onGestureEnd && _addListener(ownerDoc, \"gestureend\", _onGestureEnd);\n            onHover && _addListener(target, _pointerType + \"enter\", _onHover);\n            onHoverEnd && _addListener(target, _pointerType + \"leave\", _onHoverEnd);\n            onMove && _addListener(target, _pointerType + \"move\", _onMove);\n          }\n\n          self.isEnabled = true;\n          e && e.type && _onPress(e);\n          onEnable && onEnable(self);\n        }\n\n        return self;\n      };\n\n      self.disable = function () {\n        if (self.isEnabled) {\n          _observers.filter(function (o) {\n            return o !== self && _isViewport(o.target);\n          }).length || _removeListener(isViewport ? ownerDoc : target, \"scroll\", _onScroll);\n\n          if (self.isPressed) {\n            self._vx.reset();\n\n            self._vy.reset();\n\n            _removeListener(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, true);\n          }\n\n          _removeListener(isViewport ? ownerDoc : target, \"scroll\", onScroll, capture);\n\n          _removeListener(target, \"wheel\", _onWheel, capture);\n\n          _removeListener(target, _eventTypes[0], _onPress, capture);\n\n          _removeListener(ownerDoc, _eventTypes[2], _onRelease);\n\n          _removeListener(ownerDoc, _eventTypes[3], _onRelease);\n\n          _removeListener(target, \"click\", clickCapture, true);\n\n          _removeListener(target, \"click\", _onClick);\n\n          _removeListener(ownerDoc, \"gesturestart\", _onGestureStart);\n\n          _removeListener(ownerDoc, \"gestureend\", _onGestureEnd);\n\n          _removeListener(target, _pointerType + \"enter\", _onHover);\n\n          _removeListener(target, _pointerType + \"leave\", _onHoverEnd);\n\n          _removeListener(target, _pointerType + \"move\", _onMove);\n\n          self.isEnabled = self.isPressed = self.isDragging = false;\n          onDisable && onDisable(self);\n        }\n      };\n\n      self.kill = self.revert = function () {\n        self.disable();\n\n        var i = _observers.indexOf(self);\n\n        i >= 0 && _observers.splice(i, 1);\n        _normalizer === self && (_normalizer = 0);\n      };\n\n      _observers.push(self);\n\n      isNormalizer && _isViewport(target) && (_normalizer = self);\n      self.enable(event);\n    };\n\n    _createClass(Observer, [{\n      key: \"velocityX\",\n      get: function get() {\n        return this._vx.getVelocity();\n      }\n    }, {\n      key: \"velocityY\",\n      get: function get() {\n        return this._vy.getVelocity();\n      }\n    }]);\n\n    return Observer;\n  }();\n  Observer.version = \"3.12.5\";\n\n  Observer.create = function (vars) {\n    return new Observer(vars);\n  };\n\n  Observer.register = _initCore;\n\n  Observer.getAll = function () {\n    return _observers.slice();\n  };\n\n  Observer.getById = function (id) {\n    return _observers.filter(function (o) {\n      return o.vars.id === id;\n    })[0];\n  };\n\n  _getGSAP() && gsap.registerPlugin(Observer);\n\n  /*!\n   * ScrollTrigger 3.12.5\n   * https://gsap.com\n   *\n   * @license Copyright 2008-2024, GreenSock. All rights reserved.\n   * Subject to the terms at https://gsap.com/standard-license or for\n   * Club GSAP members, the agreement issued with that membership.\n   * @author: Jack Doyle, jack@greensock.com\n  */\n\n  var gsap$1,\n      _coreInitted$1,\n      _win$1,\n      _doc$1,\n      _docEl$1,\n      _body$1,\n      _root$1,\n      _resizeDelay,\n      _toArray,\n      _clamp$1,\n      _time2,\n      _syncInterval,\n      _refreshing,\n      _pointerIsDown,\n      _transformProp,\n      _i,\n      _prevWidth,\n      _prevHeight,\n      _autoRefresh,\n      _sort,\n      _suppressOverwrites,\n      _ignoreResize,\n      _normalizer$1,\n      _ignoreMobileResize,\n      _baseScreenHeight,\n      _baseScreenWidth,\n      _fixIOSBug,\n      _context$1,\n      _scrollRestoration,\n      _div100vh,\n      _100vh,\n      _isReverted,\n      _clampingMax,\n      _limitCallbacks,\n      _startup$1 = 1,\n      _getTime$1 = Date.now,\n      _time1 = _getTime$1(),\n      _lastScrollTime = 0,\n      _enabled = 0,\n      _parseClamp = function _parseClamp(value, type, self) {\n    var clamp = _isString(value) && (value.substr(0, 6) === \"clamp(\" || value.indexOf(\"max\") > -1);\n    self[\"_\" + type + \"Clamp\"] = clamp;\n    return clamp ? value.substr(6, value.length - 7) : value;\n  },\n      _keepClamp = function _keepClamp(value, clamp) {\n    return clamp && (!_isString(value) || value.substr(0, 6) !== \"clamp(\") ? \"clamp(\" + value + \")\" : value;\n  },\n      _rafBugFix = function _rafBugFix() {\n    return _enabled && requestAnimationFrame(_rafBugFix);\n  },\n      _pointerDownHandler = function _pointerDownHandler() {\n    return _pointerIsDown = 1;\n  },\n      _pointerUpHandler = function _pointerUpHandler() {\n    return _pointerIsDown = 0;\n  },\n      _passThrough = function _passThrough(v) {\n    return v;\n  },\n      _round = function _round(value) {\n    return Math.round(value * 100000) / 100000 || 0;\n  },\n      _windowExists = function _windowExists() {\n    return typeof window !== \"undefined\";\n  },\n      _getGSAP$1 = function _getGSAP() {\n    return gsap$1 || _windowExists() && (gsap$1 = window.gsap) && gsap$1.registerPlugin && gsap$1;\n  },\n      _isViewport$1 = function _isViewport(e) {\n    return !!~_root$1.indexOf(e);\n  },\n      _getViewportDimension = function _getViewportDimension(dimensionProperty) {\n    return (dimensionProperty === \"Height\" ? _100vh : _win$1[\"inner\" + dimensionProperty]) || _docEl$1[\"client\" + dimensionProperty] || _body$1[\"client\" + dimensionProperty];\n  },\n      _getBoundsFunc = function _getBoundsFunc(element) {\n    return _getProxyProp(element, \"getBoundingClientRect\") || (_isViewport$1(element) ? function () {\n      _winOffsets.width = _win$1.innerWidth;\n      _winOffsets.height = _100vh;\n      return _winOffsets;\n    } : function () {\n      return _getBounds(element);\n    });\n  },\n      _getSizeFunc = function _getSizeFunc(scroller, isViewport, _ref) {\n    var d = _ref.d,\n        d2 = _ref.d2,\n        a = _ref.a;\n    return (a = _getProxyProp(scroller, \"getBoundingClientRect\")) ? function () {\n      return a()[d];\n    } : function () {\n      return (isViewport ? _getViewportDimension(d2) : scroller[\"client\" + d2]) || 0;\n    };\n  },\n      _getOffsetsFunc = function _getOffsetsFunc(element, isViewport) {\n    return !isViewport || ~_proxies.indexOf(element) ? _getBoundsFunc(element) : function () {\n      return _winOffsets;\n    };\n  },\n      _maxScroll = function _maxScroll(element, _ref2) {\n    var s = _ref2.s,\n        d2 = _ref2.d2,\n        d = _ref2.d,\n        a = _ref2.a;\n    return Math.max(0, (s = \"scroll\" + d2) && (a = _getProxyProp(element, s)) ? a() - _getBoundsFunc(element)()[d] : _isViewport$1(element) ? (_docEl$1[s] || _body$1[s]) - _getViewportDimension(d2) : element[s] - element[\"offset\" + d2]);\n  },\n      _iterateAutoRefresh = function _iterateAutoRefresh(func, events) {\n    for (var i = 0; i < _autoRefresh.length; i += 3) {\n      (!events || ~events.indexOf(_autoRefresh[i + 1])) && func(_autoRefresh[i], _autoRefresh[i + 1], _autoRefresh[i + 2]);\n    }\n  },\n      _isString = function _isString(value) {\n    return typeof value === \"string\";\n  },\n      _isFunction = function _isFunction(value) {\n    return typeof value === \"function\";\n  },\n      _isNumber = function _isNumber(value) {\n    return typeof value === \"number\";\n  },\n      _isObject = function _isObject(value) {\n    return typeof value === \"object\";\n  },\n      _endAnimation = function _endAnimation(animation, reversed, pause) {\n    return animation && animation.progress(reversed ? 0 : 1) && pause && animation.pause();\n  },\n      _callback = function _callback(self, func) {\n    if (self.enabled) {\n      var result = self._ctx ? self._ctx.add(function () {\n        return func(self);\n      }) : func(self);\n      result && result.totalTime && (self.callbackAnimation = result);\n    }\n  },\n      _abs = Math.abs,\n      _left = \"left\",\n      _top = \"top\",\n      _right = \"right\",\n      _bottom = \"bottom\",\n      _width = \"width\",\n      _height = \"height\",\n      _Right = \"Right\",\n      _Left = \"Left\",\n      _Top = \"Top\",\n      _Bottom = \"Bottom\",\n      _padding = \"padding\",\n      _margin = \"margin\",\n      _Width = \"Width\",\n      _Height = \"Height\",\n      _px = \"px\",\n      _getComputedStyle = function _getComputedStyle(element) {\n    return _win$1.getComputedStyle(element);\n  },\n      _makePositionable = function _makePositionable(element) {\n    var position = _getComputedStyle(element).position;\n\n    element.style.position = position === \"absolute\" || position === \"fixed\" ? position : \"relative\";\n  },\n      _setDefaults = function _setDefaults(obj, defaults) {\n    for (var p in defaults) {\n      p in obj || (obj[p] = defaults[p]);\n    }\n\n    return obj;\n  },\n      _getBounds = function _getBounds(element, withoutTransforms) {\n    var tween = withoutTransforms && _getComputedStyle(element)[_transformProp] !== \"matrix(1, 0, 0, 1, 0, 0)\" && gsap$1.to(element, {\n      x: 0,\n      y: 0,\n      xPercent: 0,\n      yPercent: 0,\n      rotation: 0,\n      rotationX: 0,\n      rotationY: 0,\n      scale: 1,\n      skewX: 0,\n      skewY: 0\n    }).progress(1),\n        bounds = element.getBoundingClientRect();\n    tween && tween.progress(0).kill();\n    return bounds;\n  },\n      _getSize = function _getSize(element, _ref3) {\n    var d2 = _ref3.d2;\n    return element[\"offset\" + d2] || element[\"client\" + d2] || 0;\n  },\n      _getLabelRatioArray = function _getLabelRatioArray(timeline) {\n    var a = [],\n        labels = timeline.labels,\n        duration = timeline.duration(),\n        p;\n\n    for (p in labels) {\n      a.push(labels[p] / duration);\n    }\n\n    return a;\n  },\n      _getClosestLabel = function _getClosestLabel(animation) {\n    return function (value) {\n      return gsap$1.utils.snap(_getLabelRatioArray(animation), value);\n    };\n  },\n      _snapDirectional = function _snapDirectional(snapIncrementOrArray) {\n    var snap = gsap$1.utils.snap(snapIncrementOrArray),\n        a = Array.isArray(snapIncrementOrArray) && snapIncrementOrArray.slice(0).sort(function (a, b) {\n      return a - b;\n    });\n    return a ? function (value, direction, threshold) {\n      if (threshold === void 0) {\n        threshold = 1e-3;\n      }\n\n      var i;\n\n      if (!direction) {\n        return snap(value);\n      }\n\n      if (direction > 0) {\n        value -= threshold;\n\n        for (i = 0; i < a.length; i++) {\n          if (a[i] >= value) {\n            return a[i];\n          }\n        }\n\n        return a[i - 1];\n      } else {\n        i = a.length;\n        value += threshold;\n\n        while (i--) {\n          if (a[i] <= value) {\n            return a[i];\n          }\n        }\n      }\n\n      return a[0];\n    } : function (value, direction, threshold) {\n      if (threshold === void 0) {\n        threshold = 1e-3;\n      }\n\n      var snapped = snap(value);\n      return !direction || Math.abs(snapped - value) < threshold || snapped - value < 0 === direction < 0 ? snapped : snap(direction < 0 ? value - snapIncrementOrArray : value + snapIncrementOrArray);\n    };\n  },\n      _getLabelAtDirection = function _getLabelAtDirection(timeline) {\n    return function (value, st) {\n      return _snapDirectional(_getLabelRatioArray(timeline))(value, st.direction);\n    };\n  },\n      _multiListener = function _multiListener(func, element, types, callback) {\n    return types.split(\",\").forEach(function (type) {\n      return func(element, type, callback);\n    });\n  },\n      _addListener$1 = function _addListener(element, type, func, nonPassive, capture) {\n    return element.addEventListener(type, func, {\n      passive: !nonPassive,\n      capture: !!capture\n    });\n  },\n      _removeListener$1 = function _removeListener(element, type, func, capture) {\n    return element.removeEventListener(type, func, !!capture);\n  },\n      _wheelListener = function _wheelListener(func, el, scrollFunc) {\n    scrollFunc = scrollFunc && scrollFunc.wheelHandler;\n\n    if (scrollFunc) {\n      func(el, \"wheel\", scrollFunc);\n      func(el, \"touchmove\", scrollFunc);\n    }\n  },\n      _markerDefaults = {\n    startColor: \"green\",\n    endColor: \"red\",\n    indent: 0,\n    fontSize: \"16px\",\n    fontWeight: \"normal\"\n  },\n      _defaults = {\n    toggleActions: \"play\",\n    anticipatePin: 0\n  },\n      _keywords = {\n    top: 0,\n    left: 0,\n    center: 0.5,\n    bottom: 1,\n    right: 1\n  },\n      _offsetToPx = function _offsetToPx(value, size) {\n    if (_isString(value)) {\n      var eqIndex = value.indexOf(\"=\"),\n          relative = ~eqIndex ? +(value.charAt(eqIndex - 1) + 1) * parseFloat(value.substr(eqIndex + 1)) : 0;\n\n      if (~eqIndex) {\n        value.indexOf(\"%\") > eqIndex && (relative *= size / 100);\n        value = value.substr(0, eqIndex - 1);\n      }\n\n      value = relative + (value in _keywords ? _keywords[value] * size : ~value.indexOf(\"%\") ? parseFloat(value) * size / 100 : parseFloat(value) || 0);\n    }\n\n    return value;\n  },\n      _createMarker = function _createMarker(type, name, container, direction, _ref4, offset, matchWidthEl, containerAnimation) {\n    var startColor = _ref4.startColor,\n        endColor = _ref4.endColor,\n        fontSize = _ref4.fontSize,\n        indent = _ref4.indent,\n        fontWeight = _ref4.fontWeight;\n\n    var e = _doc$1.createElement(\"div\"),\n        useFixedPosition = _isViewport$1(container) || _getProxyProp(container, \"pinType\") === \"fixed\",\n        isScroller = type.indexOf(\"scroller\") !== -1,\n        parent = useFixedPosition ? _body$1 : container,\n        isStart = type.indexOf(\"start\") !== -1,\n        color = isStart ? startColor : endColor,\n        css = \"border-color:\" + color + \";font-size:\" + fontSize + \";color:\" + color + \";font-weight:\" + fontWeight + \";pointer-events:none;white-space:nowrap;font-family:sans-serif,Arial;z-index:1000;padding:4px 8px;border-width:0;border-style:solid;\";\n\n    css += \"position:\" + ((isScroller || containerAnimation) && useFixedPosition ? \"fixed;\" : \"absolute;\");\n    (isScroller || containerAnimation || !useFixedPosition) && (css += (direction === _vertical ? _right : _bottom) + \":\" + (offset + parseFloat(indent)) + \"px;\");\n    matchWidthEl && (css += \"box-sizing:border-box;text-align:left;width:\" + matchWidthEl.offsetWidth + \"px;\");\n    e._isStart = isStart;\n    e.setAttribute(\"class\", \"gsap-marker-\" + type + (name ? \" marker-\" + name : \"\"));\n    e.style.cssText = css;\n    e.innerText = name || name === 0 ? type + \"-\" + name : type;\n    parent.children[0] ? parent.insertBefore(e, parent.children[0]) : parent.appendChild(e);\n    e._offset = e[\"offset\" + direction.op.d2];\n\n    _positionMarker(e, 0, direction, isStart);\n\n    return e;\n  },\n      _positionMarker = function _positionMarker(marker, start, direction, flipped) {\n    var vars = {\n      display: \"block\"\n    },\n        side = direction[flipped ? \"os2\" : \"p2\"],\n        oppositeSide = direction[flipped ? \"p2\" : \"os2\"];\n    marker._isFlipped = flipped;\n    vars[direction.a + \"Percent\"] = flipped ? -100 : 0;\n    vars[direction.a] = flipped ? \"1px\" : 0;\n    vars[\"border\" + side + _Width] = 1;\n    vars[\"border\" + oppositeSide + _Width] = 0;\n    vars[direction.p] = start + \"px\";\n    gsap$1.set(marker, vars);\n  },\n      _triggers = [],\n      _ids = {},\n      _rafID,\n      _sync = function _sync() {\n    return _getTime$1() - _lastScrollTime > 34 && (_rafID || (_rafID = requestAnimationFrame(_updateAll)));\n  },\n      _onScroll$1 = function _onScroll() {\n    if (!_normalizer$1 || !_normalizer$1.isPressed || _normalizer$1.startX > _body$1.clientWidth) {\n      _scrollers.cache++;\n\n      if (_normalizer$1) {\n        _rafID || (_rafID = requestAnimationFrame(_updateAll));\n      } else {\n        _updateAll();\n      }\n\n      _lastScrollTime || _dispatch(\"scrollStart\");\n      _lastScrollTime = _getTime$1();\n    }\n  },\n      _setBaseDimensions = function _setBaseDimensions() {\n    _baseScreenWidth = _win$1.innerWidth;\n    _baseScreenHeight = _win$1.innerHeight;\n  },\n      _onResize = function _onResize() {\n    _scrollers.cache++;\n    !_refreshing && !_ignoreResize && !_doc$1.fullscreenElement && !_doc$1.webkitFullscreenElement && (!_ignoreMobileResize || _baseScreenWidth !== _win$1.innerWidth || Math.abs(_win$1.innerHeight - _baseScreenHeight) > _win$1.innerHeight * 0.25) && _resizeDelay.restart(true);\n  },\n      _listeners = {},\n      _emptyArray = [],\n      _softRefresh = function _softRefresh() {\n    return _removeListener$1(ScrollTrigger$1, \"scrollEnd\", _softRefresh) || _refreshAll(true);\n  },\n      _dispatch = function _dispatch(type) {\n    return _listeners[type] && _listeners[type].map(function (f) {\n      return f();\n    }) || _emptyArray;\n  },\n      _savedStyles = [],\n      _revertRecorded = function _revertRecorded(media) {\n    for (var i = 0; i < _savedStyles.length; i += 5) {\n      if (!media || _savedStyles[i + 4] && _savedStyles[i + 4].query === media) {\n        _savedStyles[i].style.cssText = _savedStyles[i + 1];\n        _savedStyles[i].getBBox && _savedStyles[i].setAttribute(\"transform\", _savedStyles[i + 2] || \"\");\n        _savedStyles[i + 3].uncache = 1;\n      }\n    }\n  },\n      _revertAll = function _revertAll(kill, media) {\n    var trigger;\n\n    for (_i = 0; _i < _triggers.length; _i++) {\n      trigger = _triggers[_i];\n\n      if (trigger && (!media || trigger._ctx === media)) {\n        if (kill) {\n          trigger.kill(1);\n        } else {\n          trigger.revert(true, true);\n        }\n      }\n    }\n\n    _isReverted = true;\n    media && _revertRecorded(media);\n    media || _dispatch(\"revert\");\n  },\n      _clearScrollMemory = function _clearScrollMemory(scrollRestoration, force) {\n    _scrollers.cache++;\n    (force || !_refreshingAll) && _scrollers.forEach(function (obj) {\n      return _isFunction(obj) && obj.cacheID++ && (obj.rec = 0);\n    });\n    _isString(scrollRestoration) && (_win$1.history.scrollRestoration = _scrollRestoration = scrollRestoration);\n  },\n      _refreshingAll,\n      _refreshID = 0,\n      _queueRefreshID,\n      _queueRefreshAll = function _queueRefreshAll() {\n    if (_queueRefreshID !== _refreshID) {\n      var id = _queueRefreshID = _refreshID;\n      requestAnimationFrame(function () {\n        return id === _refreshID && _refreshAll(true);\n      });\n    }\n  },\n      _refresh100vh = function _refresh100vh() {\n    _body$1.appendChild(_div100vh);\n\n    _100vh = !_normalizer$1 && _div100vh.offsetHeight || _win$1.innerHeight;\n\n    _body$1.removeChild(_div100vh);\n  },\n      _hideAllMarkers = function _hideAllMarkers(hide) {\n    return _toArray(\".gsap-marker-start, .gsap-marker-end, .gsap-marker-scroller-start, .gsap-marker-scroller-end\").forEach(function (el) {\n      return el.style.display = hide ? \"none\" : \"block\";\n    });\n  },\n      _refreshAll = function _refreshAll(force, skipRevert) {\n    if (_lastScrollTime && !force && !_isReverted) {\n      _addListener$1(ScrollTrigger$1, \"scrollEnd\", _softRefresh);\n\n      return;\n    }\n\n    _refresh100vh();\n\n    _refreshingAll = ScrollTrigger$1.isRefreshing = true;\n\n    _scrollers.forEach(function (obj) {\n      return _isFunction(obj) && ++obj.cacheID && (obj.rec = obj());\n    });\n\n    var refreshInits = _dispatch(\"refreshInit\");\n\n    _sort && ScrollTrigger$1.sort();\n    skipRevert || _revertAll();\n\n    _scrollers.forEach(function (obj) {\n      if (_isFunction(obj)) {\n        obj.smooth && (obj.target.style.scrollBehavior = \"auto\");\n        obj(0);\n      }\n    });\n\n    _triggers.slice(0).forEach(function (t) {\n      return t.refresh();\n    });\n\n    _isReverted = false;\n\n    _triggers.forEach(function (t) {\n      if (t._subPinOffset && t.pin) {\n        var prop = t.vars.horizontal ? \"offsetWidth\" : \"offsetHeight\",\n            original = t.pin[prop];\n        t.revert(true, 1);\n        t.adjustPinSpacing(t.pin[prop] - original);\n        t.refresh();\n      }\n    });\n\n    _clampingMax = 1;\n\n    _hideAllMarkers(true);\n\n    _triggers.forEach(function (t) {\n      var max = _maxScroll(t.scroller, t._dir),\n          endClamp = t.vars.end === \"max\" || t._endClamp && t.end > max,\n          startClamp = t._startClamp && t.start >= max;\n\n      (endClamp || startClamp) && t.setPositions(startClamp ? max - 1 : t.start, endClamp ? Math.max(startClamp ? max : t.start + 1, max) : t.end, true);\n    });\n\n    _hideAllMarkers(false);\n\n    _clampingMax = 0;\n    refreshInits.forEach(function (result) {\n      return result && result.render && result.render(-1);\n    });\n\n    _scrollers.forEach(function (obj) {\n      if (_isFunction(obj)) {\n        obj.smooth && requestAnimationFrame(function () {\n          return obj.target.style.scrollBehavior = \"smooth\";\n        });\n        obj.rec && obj(obj.rec);\n      }\n    });\n\n    _clearScrollMemory(_scrollRestoration, 1);\n\n    _resizeDelay.pause();\n\n    _refreshID++;\n    _refreshingAll = 2;\n\n    _updateAll(2);\n\n    _triggers.forEach(function (t) {\n      return _isFunction(t.vars.onRefresh) && t.vars.onRefresh(t);\n    });\n\n    _refreshingAll = ScrollTrigger$1.isRefreshing = false;\n\n    _dispatch(\"refresh\");\n  },\n      _lastScroll = 0,\n      _direction = 1,\n      _primary,\n      _updateAll = function _updateAll(force) {\n    if (force === 2 || !_refreshingAll && !_isReverted) {\n      ScrollTrigger$1.isUpdating = true;\n      _primary && _primary.update(0);\n\n      var l = _triggers.length,\n          time = _getTime$1(),\n          recordVelocity = time - _time1 >= 50,\n          scroll = l && _triggers[0].scroll();\n\n      _direction = _lastScroll > scroll ? -1 : 1;\n      _refreshingAll || (_lastScroll = scroll);\n\n      if (recordVelocity) {\n        if (_lastScrollTime && !_pointerIsDown && time - _lastScrollTime > 200) {\n          _lastScrollTime = 0;\n\n          _dispatch(\"scrollEnd\");\n        }\n\n        _time2 = _time1;\n        _time1 = time;\n      }\n\n      if (_direction < 0) {\n        _i = l;\n\n        while (_i-- > 0) {\n          _triggers[_i] && _triggers[_i].update(0, recordVelocity);\n        }\n\n        _direction = 1;\n      } else {\n        for (_i = 0; _i < l; _i++) {\n          _triggers[_i] && _triggers[_i].update(0, recordVelocity);\n        }\n      }\n\n      ScrollTrigger$1.isUpdating = false;\n    }\n\n    _rafID = 0;\n  },\n      _propNamesToCopy = [_left, _top, _bottom, _right, _margin + _Bottom, _margin + _Right, _margin + _Top, _margin + _Left, \"display\", \"flexShrink\", \"float\", \"zIndex\", \"gridColumnStart\", \"gridColumnEnd\", \"gridRowStart\", \"gridRowEnd\", \"gridArea\", \"justifySelf\", \"alignSelf\", \"placeSelf\", \"order\"],\n      _stateProps = _propNamesToCopy.concat([_width, _height, \"boxSizing\", \"max\" + _Width, \"max\" + _Height, \"position\", _margin, _padding, _padding + _Top, _padding + _Right, _padding + _Bottom, _padding + _Left]),\n      _swapPinOut = function _swapPinOut(pin, spacer, state) {\n    _setState(state);\n\n    var cache = pin._gsap;\n\n    if (cache.spacerIsNative) {\n      _setState(cache.spacerState);\n    } else if (pin._gsap.swappedIn) {\n      var parent = spacer.parentNode;\n\n      if (parent) {\n        parent.insertBefore(pin, spacer);\n        parent.removeChild(spacer);\n      }\n    }\n\n    pin._gsap.swappedIn = false;\n  },\n      _swapPinIn = function _swapPinIn(pin, spacer, cs, spacerState) {\n    if (!pin._gsap.swappedIn) {\n      var i = _propNamesToCopy.length,\n          spacerStyle = spacer.style,\n          pinStyle = pin.style,\n          p;\n\n      while (i--) {\n        p = _propNamesToCopy[i];\n        spacerStyle[p] = cs[p];\n      }\n\n      spacerStyle.position = cs.position === \"absolute\" ? \"absolute\" : \"relative\";\n      cs.display === \"inline\" && (spacerStyle.display = \"inline-block\");\n      pinStyle[_bottom] = pinStyle[_right] = \"auto\";\n      spacerStyle.flexBasis = cs.flexBasis || \"auto\";\n      spacerStyle.overflow = \"visible\";\n      spacerStyle.boxSizing = \"border-box\";\n      spacerStyle[_width] = _getSize(pin, _horizontal) + _px;\n      spacerStyle[_height] = _getSize(pin, _vertical) + _px;\n      spacerStyle[_padding] = pinStyle[_margin] = pinStyle[_top] = pinStyle[_left] = \"0\";\n\n      _setState(spacerState);\n\n      pinStyle[_width] = pinStyle[\"max\" + _Width] = cs[_width];\n      pinStyle[_height] = pinStyle[\"max\" + _Height] = cs[_height];\n      pinStyle[_padding] = cs[_padding];\n\n      if (pin.parentNode !== spacer) {\n        pin.parentNode.insertBefore(spacer, pin);\n        spacer.appendChild(pin);\n      }\n\n      pin._gsap.swappedIn = true;\n    }\n  },\n      _capsExp = /([A-Z])/g,\n      _setState = function _setState(state) {\n    if (state) {\n      var style = state.t.style,\n          l = state.length,\n          i = 0,\n          p,\n          value;\n      (state.t._gsap || gsap$1.core.getCache(state.t)).uncache = 1;\n\n      for (; i < l; i += 2) {\n        value = state[i + 1];\n        p = state[i];\n\n        if (value) {\n          style[p] = value;\n        } else if (style[p]) {\n          style.removeProperty(p.replace(_capsExp, \"-$1\").toLowerCase());\n        }\n      }\n    }\n  },\n      _getState = function _getState(element) {\n    var l = _stateProps.length,\n        style = element.style,\n        state = [],\n        i = 0;\n\n    for (; i < l; i++) {\n      state.push(_stateProps[i], style[_stateProps[i]]);\n    }\n\n    state.t = element;\n    return state;\n  },\n      _copyState = function _copyState(state, override, omitOffsets) {\n    var result = [],\n        l = state.length,\n        i = omitOffsets ? 8 : 0,\n        p;\n\n    for (; i < l; i += 2) {\n      p = state[i];\n      result.push(p, p in override ? override[p] : state[i + 1]);\n    }\n\n    result.t = state.t;\n    return result;\n  },\n      _winOffsets = {\n    left: 0,\n    top: 0\n  },\n      _parsePosition = function _parsePosition(value, trigger, scrollerSize, direction, scroll, marker, markerScroller, self, scrollerBounds, borderWidth, useFixedPosition, scrollerMax, containerAnimation, clampZeroProp) {\n    _isFunction(value) && (value = value(self));\n\n    if (_isString(value) && value.substr(0, 3) === \"max\") {\n      value = scrollerMax + (value.charAt(4) === \"=\" ? _offsetToPx(\"0\" + value.substr(3), scrollerSize) : 0);\n    }\n\n    var time = containerAnimation ? containerAnimation.time() : 0,\n        p1,\n        p2,\n        element;\n    containerAnimation && containerAnimation.seek(0);\n    isNaN(value) || (value = +value);\n\n    if (!_isNumber(value)) {\n      _isFunction(trigger) && (trigger = trigger(self));\n      var offsets = (value || \"0\").split(\" \"),\n          bounds,\n          localOffset,\n          globalOffset,\n          display;\n      element = _getTarget(trigger, self) || _body$1;\n      bounds = _getBounds(element) || {};\n\n      if ((!bounds || !bounds.left && !bounds.top) && _getComputedStyle(element).display === \"none\") {\n        display = element.style.display;\n        element.style.display = \"block\";\n        bounds = _getBounds(element);\n        display ? element.style.display = display : element.style.removeProperty(\"display\");\n      }\n\n      localOffset = _offsetToPx(offsets[0], bounds[direction.d]);\n      globalOffset = _offsetToPx(offsets[1] || \"0\", scrollerSize);\n      value = bounds[direction.p] - scrollerBounds[direction.p] - borderWidth + localOffset + scroll - globalOffset;\n      markerScroller && _positionMarker(markerScroller, globalOffset, direction, scrollerSize - globalOffset < 20 || markerScroller._isStart && globalOffset > 20);\n      scrollerSize -= scrollerSize - globalOffset;\n    } else {\n      containerAnimation && (value = gsap$1.utils.mapRange(containerAnimation.scrollTrigger.start, containerAnimation.scrollTrigger.end, 0, scrollerMax, value));\n      markerScroller && _positionMarker(markerScroller, scrollerSize, direction, true);\n    }\n\n    if (clampZeroProp) {\n      self[clampZeroProp] = value || -0.001;\n      value < 0 && (value = 0);\n    }\n\n    if (marker) {\n      var position = value + scrollerSize,\n          isStart = marker._isStart;\n      p1 = \"scroll\" + direction.d2;\n\n      _positionMarker(marker, position, direction, isStart && position > 20 || !isStart && (useFixedPosition ? Math.max(_body$1[p1], _docEl$1[p1]) : marker.parentNode[p1]) <= position + 1);\n\n      if (useFixedPosition) {\n        scrollerBounds = _getBounds(markerScroller);\n        useFixedPosition && (marker.style[direction.op.p] = scrollerBounds[direction.op.p] - direction.op.m - marker._offset + _px);\n      }\n    }\n\n    if (containerAnimation && element) {\n      p1 = _getBounds(element);\n      containerAnimation.seek(scrollerMax);\n      p2 = _getBounds(element);\n      containerAnimation._caScrollDist = p1[direction.p] - p2[direction.p];\n      value = value / containerAnimation._caScrollDist * scrollerMax;\n    }\n\n    containerAnimation && containerAnimation.seek(time);\n    return containerAnimation ? value : Math.round(value);\n  },\n      _prefixExp = /(webkit|moz|length|cssText|inset)/i,\n      _reparent = function _reparent(element, parent, top, left) {\n    if (element.parentNode !== parent) {\n      var style = element.style,\n          p,\n          cs;\n\n      if (parent === _body$1) {\n        element._stOrig = style.cssText;\n        cs = _getComputedStyle(element);\n\n        for (p in cs) {\n          if (!+p && !_prefixExp.test(p) && cs[p] && typeof style[p] === \"string\" && p !== \"0\") {\n            style[p] = cs[p];\n          }\n        }\n\n        style.top = top;\n        style.left = left;\n      } else {\n        style.cssText = element._stOrig;\n      }\n\n      gsap$1.core.getCache(element).uncache = 1;\n      parent.appendChild(element);\n    }\n  },\n      _interruptionTracker = function _interruptionTracker(getValueFunc, initialValue, onInterrupt) {\n    var last1 = initialValue,\n        last2 = last1;\n    return function (value) {\n      var current = Math.round(getValueFunc());\n\n      if (current !== last1 && current !== last2 && Math.abs(current - last1) > 3 && Math.abs(current - last2) > 3) {\n        value = current;\n        onInterrupt && onInterrupt();\n      }\n\n      last2 = last1;\n      last1 = value;\n      return value;\n    };\n  },\n      _shiftMarker = function _shiftMarker(marker, direction, value) {\n    var vars = {};\n    vars[direction.p] = \"+=\" + value;\n    gsap$1.set(marker, vars);\n  },\n      _getTweenCreator = function _getTweenCreator(scroller, direction) {\n    var getScroll = _getScrollFunc(scroller, direction),\n        prop = \"_scroll\" + direction.p2,\n        getTween = function getTween(scrollTo, vars, initialValue, change1, change2) {\n      var tween = getTween.tween,\n          onComplete = vars.onComplete,\n          modifiers = {};\n      initialValue = initialValue || getScroll();\n\n      var checkForInterruption = _interruptionTracker(getScroll, initialValue, function () {\n        tween.kill();\n        getTween.tween = 0;\n      });\n\n      change2 = change1 && change2 || 0;\n      change1 = change1 || scrollTo - initialValue;\n      tween && tween.kill();\n      vars[prop] = scrollTo;\n      vars.inherit = false;\n      vars.modifiers = modifiers;\n\n      modifiers[prop] = function () {\n        return checkForInterruption(initialValue + change1 * tween.ratio + change2 * tween.ratio * tween.ratio);\n      };\n\n      vars.onUpdate = function () {\n        _scrollers.cache++;\n        getTween.tween && _updateAll();\n      };\n\n      vars.onComplete = function () {\n        getTween.tween = 0;\n        onComplete && onComplete.call(tween);\n      };\n\n      tween = getTween.tween = gsap$1.to(scroller, vars);\n      return tween;\n    };\n\n    scroller[prop] = getScroll;\n\n    getScroll.wheelHandler = function () {\n      return getTween.tween && getTween.tween.kill() && (getTween.tween = 0);\n    };\n\n    _addListener$1(scroller, \"wheel\", getScroll.wheelHandler);\n\n    ScrollTrigger$1.isTouch && _addListener$1(scroller, \"touchmove\", getScroll.wheelHandler);\n    return getTween;\n  };\n\n  var ScrollTrigger$1 = function () {\n    function ScrollTrigger(vars, animation) {\n      _coreInitted$1 || ScrollTrigger.register(gsap$1) || console.warn(\"Please gsap.registerPlugin(ScrollTrigger)\");\n\n      _context$1(this);\n\n      this.init(vars, animation);\n    }\n\n    var _proto = ScrollTrigger.prototype;\n\n    _proto.init = function init(vars, animation) {\n      this.progress = this.start = 0;\n      this.vars && this.kill(true, true);\n\n      if (!_enabled) {\n        this.update = this.refresh = this.kill = _passThrough;\n        return;\n      }\n\n      vars = _setDefaults(_isString(vars) || _isNumber(vars) || vars.nodeType ? {\n        trigger: vars\n      } : vars, _defaults);\n\n      var _vars = vars,\n          onUpdate = _vars.onUpdate,\n          toggleClass = _vars.toggleClass,\n          id = _vars.id,\n          onToggle = _vars.onToggle,\n          onRefresh = _vars.onRefresh,\n          scrub = _vars.scrub,\n          trigger = _vars.trigger,\n          pin = _vars.pin,\n          pinSpacing = _vars.pinSpacing,\n          invalidateOnRefresh = _vars.invalidateOnRefresh,\n          anticipatePin = _vars.anticipatePin,\n          onScrubComplete = _vars.onScrubComplete,\n          onSnapComplete = _vars.onSnapComplete,\n          once = _vars.once,\n          snap = _vars.snap,\n          pinReparent = _vars.pinReparent,\n          pinSpacer = _vars.pinSpacer,\n          containerAnimation = _vars.containerAnimation,\n          fastScrollEnd = _vars.fastScrollEnd,\n          preventOverlaps = _vars.preventOverlaps,\n          direction = vars.horizontal || vars.containerAnimation && vars.horizontal !== false ? _horizontal : _vertical,\n          isToggle = !scrub && scrub !== 0,\n          scroller = _getTarget(vars.scroller || _win$1),\n          scrollerCache = gsap$1.core.getCache(scroller),\n          isViewport = _isViewport$1(scroller),\n          useFixedPosition = (\"pinType\" in vars ? vars.pinType : _getProxyProp(scroller, \"pinType\") || isViewport && \"fixed\") === \"fixed\",\n          callbacks = [vars.onEnter, vars.onLeave, vars.onEnterBack, vars.onLeaveBack],\n          toggleActions = isToggle && vars.toggleActions.split(\" \"),\n          markers = \"markers\" in vars ? vars.markers : _defaults.markers,\n          borderWidth = isViewport ? 0 : parseFloat(_getComputedStyle(scroller)[\"border\" + direction.p2 + _Width]) || 0,\n          self = this,\n          onRefreshInit = vars.onRefreshInit && function () {\n        return vars.onRefreshInit(self);\n      },\n          getScrollerSize = _getSizeFunc(scroller, isViewport, direction),\n          getScrollerOffsets = _getOffsetsFunc(scroller, isViewport),\n          lastSnap = 0,\n          lastRefresh = 0,\n          prevProgress = 0,\n          scrollFunc = _getScrollFunc(scroller, direction),\n          tweenTo,\n          pinCache,\n          snapFunc,\n          scroll1,\n          scroll2,\n          start,\n          end,\n          markerStart,\n          markerEnd,\n          markerStartTrigger,\n          markerEndTrigger,\n          markerVars,\n          executingOnRefresh,\n          change,\n          pinOriginalState,\n          pinActiveState,\n          pinState,\n          spacer,\n          offset,\n          pinGetter,\n          pinSetter,\n          pinStart,\n          pinChange,\n          spacingStart,\n          spacerState,\n          markerStartSetter,\n          pinMoves,\n          markerEndSetter,\n          cs,\n          snap1,\n          snap2,\n          scrubTween,\n          scrubSmooth,\n          snapDurClamp,\n          snapDelayedCall,\n          prevScroll,\n          prevAnimProgress,\n          caMarkerSetter,\n          customRevertReturn;\n\n      self._startClamp = self._endClamp = false;\n      self._dir = direction;\n      anticipatePin *= 45;\n      self.scroller = scroller;\n      self.scroll = containerAnimation ? containerAnimation.time.bind(containerAnimation) : scrollFunc;\n      scroll1 = scrollFunc();\n      self.vars = vars;\n      animation = animation || vars.animation;\n\n      if (\"refreshPriority\" in vars) {\n        _sort = 1;\n        vars.refreshPriority === -9999 && (_primary = self);\n      }\n\n      scrollerCache.tweenScroll = scrollerCache.tweenScroll || {\n        top: _getTweenCreator(scroller, _vertical),\n        left: _getTweenCreator(scroller, _horizontal)\n      };\n      self.tweenTo = tweenTo = scrollerCache.tweenScroll[direction.p];\n\n      self.scrubDuration = function (value) {\n        scrubSmooth = _isNumber(value) && value;\n\n        if (!scrubSmooth) {\n          scrubTween && scrubTween.progress(1).kill();\n          scrubTween = 0;\n        } else {\n          scrubTween ? scrubTween.duration(value) : scrubTween = gsap$1.to(animation, {\n            ease: \"expo\",\n            totalProgress: \"+=0\",\n            inherit: false,\n            duration: scrubSmooth,\n            paused: true,\n            onComplete: function onComplete() {\n              return onScrubComplete && onScrubComplete(self);\n            }\n          });\n        }\n      };\n\n      if (animation) {\n        animation.vars.lazy = false;\n        animation._initted && !self.isReverted || animation.vars.immediateRender !== false && vars.immediateRender !== false && animation.duration() && animation.render(0, true, true);\n        self.animation = animation.pause();\n        animation.scrollTrigger = self;\n        self.scrubDuration(scrub);\n        snap1 = 0;\n        id || (id = animation.vars.id);\n      }\n\n      if (snap) {\n        if (!_isObject(snap) || snap.push) {\n          snap = {\n            snapTo: snap\n          };\n        }\n\n        \"scrollBehavior\" in _body$1.style && gsap$1.set(isViewport ? [_body$1, _docEl$1] : scroller, {\n          scrollBehavior: \"auto\"\n        });\n\n        _scrollers.forEach(function (o) {\n          return _isFunction(o) && o.target === (isViewport ? _doc$1.scrollingElement || _docEl$1 : scroller) && (o.smooth = false);\n        });\n\n        snapFunc = _isFunction(snap.snapTo) ? snap.snapTo : snap.snapTo === \"labels\" ? _getClosestLabel(animation) : snap.snapTo === \"labelsDirectional\" ? _getLabelAtDirection(animation) : snap.directional !== false ? function (value, st) {\n          return _snapDirectional(snap.snapTo)(value, _getTime$1() - lastRefresh < 500 ? 0 : st.direction);\n        } : gsap$1.utils.snap(snap.snapTo);\n        snapDurClamp = snap.duration || {\n          min: 0.1,\n          max: 2\n        };\n        snapDurClamp = _isObject(snapDurClamp) ? _clamp$1(snapDurClamp.min, snapDurClamp.max) : _clamp$1(snapDurClamp, snapDurClamp);\n        snapDelayedCall = gsap$1.delayedCall(snap.delay || scrubSmooth / 2 || 0.1, function () {\n          var scroll = scrollFunc(),\n              refreshedRecently = _getTime$1() - lastRefresh < 500,\n              tween = tweenTo.tween;\n\n          if ((refreshedRecently || Math.abs(self.getVelocity()) < 10) && !tween && !_pointerIsDown && lastSnap !== scroll) {\n            var progress = (scroll - start) / change,\n                totalProgress = animation && !isToggle ? animation.totalProgress() : progress,\n                velocity = refreshedRecently ? 0 : (totalProgress - snap2) / (_getTime$1() - _time2) * 1000 || 0,\n                change1 = gsap$1.utils.clamp(-progress, 1 - progress, _abs(velocity / 2) * velocity / 0.185),\n                naturalEnd = progress + (snap.inertia === false ? 0 : change1),\n                endValue,\n                endScroll,\n                _snap = snap,\n                onStart = _snap.onStart,\n                _onInterrupt = _snap.onInterrupt,\n                _onComplete = _snap.onComplete;\n            endValue = snapFunc(naturalEnd, self);\n            _isNumber(endValue) || (endValue = naturalEnd);\n            endScroll = Math.round(start + endValue * change);\n\n            if (scroll <= end && scroll >= start && endScroll !== scroll) {\n              if (tween && !tween._initted && tween.data <= _abs(endScroll - scroll)) {\n                return;\n              }\n\n              if (snap.inertia === false) {\n                change1 = endValue - progress;\n              }\n\n              tweenTo(endScroll, {\n                duration: snapDurClamp(_abs(Math.max(_abs(naturalEnd - totalProgress), _abs(endValue - totalProgress)) * 0.185 / velocity / 0.05 || 0)),\n                ease: snap.ease || \"power3\",\n                data: _abs(endScroll - scroll),\n                onInterrupt: function onInterrupt() {\n                  return snapDelayedCall.restart(true) && _onInterrupt && _onInterrupt(self);\n                },\n                onComplete: function onComplete() {\n                  self.update();\n                  lastSnap = scrollFunc();\n\n                  if (animation) {\n                    scrubTween ? scrubTween.resetTo(\"totalProgress\", endValue, animation._tTime / animation._tDur) : animation.progress(endValue);\n                  }\n\n                  snap1 = snap2 = animation && !isToggle ? animation.totalProgress() : self.progress;\n                  onSnapComplete && onSnapComplete(self);\n                  _onComplete && _onComplete(self);\n                }\n              }, scroll, change1 * change, endScroll - scroll - change1 * change);\n              onStart && onStart(self, tweenTo.tween);\n            }\n          } else if (self.isActive && lastSnap !== scroll) {\n            snapDelayedCall.restart(true);\n          }\n        }).pause();\n      }\n\n      id && (_ids[id] = self);\n      trigger = self.trigger = _getTarget(trigger || pin !== true && pin);\n      customRevertReturn = trigger && trigger._gsap && trigger._gsap.stRevert;\n      customRevertReturn && (customRevertReturn = customRevertReturn(self));\n      pin = pin === true ? trigger : _getTarget(pin);\n      _isString(toggleClass) && (toggleClass = {\n        targets: trigger,\n        className: toggleClass\n      });\n\n      if (pin) {\n        pinSpacing === false || pinSpacing === _margin || (pinSpacing = !pinSpacing && pin.parentNode && pin.parentNode.style && _getComputedStyle(pin.parentNode).display === \"flex\" ? false : _padding);\n        self.pin = pin;\n        pinCache = gsap$1.core.getCache(pin);\n\n        if (!pinCache.spacer) {\n          if (pinSpacer) {\n            pinSpacer = _getTarget(pinSpacer);\n            pinSpacer && !pinSpacer.nodeType && (pinSpacer = pinSpacer.current || pinSpacer.nativeElement);\n            pinCache.spacerIsNative = !!pinSpacer;\n            pinSpacer && (pinCache.spacerState = _getState(pinSpacer));\n          }\n\n          pinCache.spacer = spacer = pinSpacer || _doc$1.createElement(\"div\");\n          spacer.classList.add(\"pin-spacer\");\n          id && spacer.classList.add(\"pin-spacer-\" + id);\n          pinCache.pinState = pinOriginalState = _getState(pin);\n        } else {\n          pinOriginalState = pinCache.pinState;\n        }\n\n        vars.force3D !== false && gsap$1.set(pin, {\n          force3D: true\n        });\n        self.spacer = spacer = pinCache.spacer;\n        cs = _getComputedStyle(pin);\n        spacingStart = cs[pinSpacing + direction.os2];\n        pinGetter = gsap$1.getProperty(pin);\n        pinSetter = gsap$1.quickSetter(pin, direction.a, _px);\n\n        _swapPinIn(pin, spacer, cs);\n\n        pinState = _getState(pin);\n      }\n\n      if (markers) {\n        markerVars = _isObject(markers) ? _setDefaults(markers, _markerDefaults) : _markerDefaults;\n        markerStartTrigger = _createMarker(\"scroller-start\", id, scroller, direction, markerVars, 0);\n        markerEndTrigger = _createMarker(\"scroller-end\", id, scroller, direction, markerVars, 0, markerStartTrigger);\n        offset = markerStartTrigger[\"offset\" + direction.op.d2];\n\n        var content = _getTarget(_getProxyProp(scroller, \"content\") || scroller);\n\n        markerStart = this.markerStart = _createMarker(\"start\", id, content, direction, markerVars, offset, 0, containerAnimation);\n        markerEnd = this.markerEnd = _createMarker(\"end\", id, content, direction, markerVars, offset, 0, containerAnimation);\n        containerAnimation && (caMarkerSetter = gsap$1.quickSetter([markerStart, markerEnd], direction.a, _px));\n\n        if (!useFixedPosition && !(_proxies.length && _getProxyProp(scroller, \"fixedMarkers\") === true)) {\n          _makePositionable(isViewport ? _body$1 : scroller);\n\n          gsap$1.set([markerStartTrigger, markerEndTrigger], {\n            force3D: true\n          });\n          markerStartSetter = gsap$1.quickSetter(markerStartTrigger, direction.a, _px);\n          markerEndSetter = gsap$1.quickSetter(markerEndTrigger, direction.a, _px);\n        }\n      }\n\n      if (containerAnimation) {\n        var oldOnUpdate = containerAnimation.vars.onUpdate,\n            oldParams = containerAnimation.vars.onUpdateParams;\n        containerAnimation.eventCallback(\"onUpdate\", function () {\n          self.update(0, 0, 1);\n          oldOnUpdate && oldOnUpdate.apply(containerAnimation, oldParams || []);\n        });\n      }\n\n      self.previous = function () {\n        return _triggers[_triggers.indexOf(self) - 1];\n      };\n\n      self.next = function () {\n        return _triggers[_triggers.indexOf(self) + 1];\n      };\n\n      self.revert = function (revert, temp) {\n        if (!temp) {\n          return self.kill(true);\n        }\n\n        var r = revert !== false || !self.enabled,\n            prevRefreshing = _refreshing;\n\n        if (r !== self.isReverted) {\n          if (r) {\n            prevScroll = Math.max(scrollFunc(), self.scroll.rec || 0);\n            prevProgress = self.progress;\n            prevAnimProgress = animation && animation.progress();\n          }\n\n          markerStart && [markerStart, markerEnd, markerStartTrigger, markerEndTrigger].forEach(function (m) {\n            return m.style.display = r ? \"none\" : \"block\";\n          });\n\n          if (r) {\n            _refreshing = self;\n            self.update(r);\n          }\n\n          if (pin && (!pinReparent || !self.isActive)) {\n            if (r) {\n              _swapPinOut(pin, spacer, pinOriginalState);\n            } else {\n              _swapPinIn(pin, spacer, _getComputedStyle(pin), spacerState);\n            }\n          }\n\n          r || self.update(r);\n          _refreshing = prevRefreshing;\n          self.isReverted = r;\n        }\n      };\n\n      self.refresh = function (soft, force, position, pinOffset) {\n        if ((_refreshing || !self.enabled) && !force) {\n          return;\n        }\n\n        if (pin && soft && _lastScrollTime) {\n          _addListener$1(ScrollTrigger, \"scrollEnd\", _softRefresh);\n\n          return;\n        }\n\n        !_refreshingAll && onRefreshInit && onRefreshInit(self);\n        _refreshing = self;\n\n        if (tweenTo.tween && !position) {\n          tweenTo.tween.kill();\n          tweenTo.tween = 0;\n        }\n\n        scrubTween && scrubTween.pause();\n        invalidateOnRefresh && animation && animation.revert({\n          kill: false\n        }).invalidate();\n        self.isReverted || self.revert(true, true);\n        self._subPinOffset = false;\n\n        var size = getScrollerSize(),\n            scrollerBounds = getScrollerOffsets(),\n            max = containerAnimation ? containerAnimation.duration() : _maxScroll(scroller, direction),\n            isFirstRefresh = change <= 0.01,\n            offset = 0,\n            otherPinOffset = pinOffset || 0,\n            parsedEnd = _isObject(position) ? position.end : vars.end,\n            parsedEndTrigger = vars.endTrigger || trigger,\n            parsedStart = _isObject(position) ? position.start : vars.start || (vars.start === 0 || !trigger ? 0 : pin ? \"0 0\" : \"0 100%\"),\n            pinnedContainer = self.pinnedContainer = vars.pinnedContainer && _getTarget(vars.pinnedContainer, self),\n            triggerIndex = trigger && Math.max(0, _triggers.indexOf(self)) || 0,\n            i = triggerIndex,\n            cs,\n            bounds,\n            scroll,\n            isVertical,\n            override,\n            curTrigger,\n            curPin,\n            oppositeScroll,\n            initted,\n            revertedPins,\n            forcedOverflow,\n            markerStartOffset,\n            markerEndOffset;\n\n        if (markers && _isObject(position)) {\n          markerStartOffset = gsap$1.getProperty(markerStartTrigger, direction.p);\n          markerEndOffset = gsap$1.getProperty(markerEndTrigger, direction.p);\n        }\n\n        while (i--) {\n          curTrigger = _triggers[i];\n          curTrigger.end || curTrigger.refresh(0, 1) || (_refreshing = self);\n          curPin = curTrigger.pin;\n\n          if (curPin && (curPin === trigger || curPin === pin || curPin === pinnedContainer) && !curTrigger.isReverted) {\n            revertedPins || (revertedPins = []);\n            revertedPins.unshift(curTrigger);\n            curTrigger.revert(true, true);\n          }\n\n          if (curTrigger !== _triggers[i]) {\n            triggerIndex--;\n            i--;\n          }\n        }\n\n        _isFunction(parsedStart) && (parsedStart = parsedStart(self));\n        parsedStart = _parseClamp(parsedStart, \"start\", self);\n        start = _parsePosition(parsedStart, trigger, size, direction, scrollFunc(), markerStart, markerStartTrigger, self, scrollerBounds, borderWidth, useFixedPosition, max, containerAnimation, self._startClamp && \"_startClamp\") || (pin ? -0.001 : 0);\n        _isFunction(parsedEnd) && (parsedEnd = parsedEnd(self));\n\n        if (_isString(parsedEnd) && !parsedEnd.indexOf(\"+=\")) {\n          if (~parsedEnd.indexOf(\" \")) {\n            parsedEnd = (_isString(parsedStart) ? parsedStart.split(\" \")[0] : \"\") + parsedEnd;\n          } else {\n            offset = _offsetToPx(parsedEnd.substr(2), size);\n            parsedEnd = _isString(parsedStart) ? parsedStart : (containerAnimation ? gsap$1.utils.mapRange(0, containerAnimation.duration(), containerAnimation.scrollTrigger.start, containerAnimation.scrollTrigger.end, start) : start) + offset;\n            parsedEndTrigger = trigger;\n          }\n        }\n\n        parsedEnd = _parseClamp(parsedEnd, \"end\", self);\n        end = Math.max(start, _parsePosition(parsedEnd || (parsedEndTrigger ? \"100% 0\" : max), parsedEndTrigger, size, direction, scrollFunc() + offset, markerEnd, markerEndTrigger, self, scrollerBounds, borderWidth, useFixedPosition, max, containerAnimation, self._endClamp && \"_endClamp\")) || -0.001;\n        offset = 0;\n        i = triggerIndex;\n\n        while (i--) {\n          curTrigger = _triggers[i];\n          curPin = curTrigger.pin;\n\n          if (curPin && curTrigger.start - curTrigger._pinPush <= start && !containerAnimation && curTrigger.end > 0) {\n            cs = curTrigger.end - (self._startClamp ? Math.max(0, curTrigger.start) : curTrigger.start);\n\n            if ((curPin === trigger && curTrigger.start - curTrigger._pinPush < start || curPin === pinnedContainer) && isNaN(parsedStart)) {\n              offset += cs * (1 - curTrigger.progress);\n            }\n\n            curPin === pin && (otherPinOffset += cs);\n          }\n        }\n\n        start += offset;\n        end += offset;\n        self._startClamp && (self._startClamp += offset);\n\n        if (self._endClamp && !_refreshingAll) {\n          self._endClamp = end || -0.001;\n          end = Math.min(end, _maxScroll(scroller, direction));\n        }\n\n        change = end - start || (start -= 0.01) && 0.001;\n\n        if (isFirstRefresh) {\n          prevProgress = gsap$1.utils.clamp(0, 1, gsap$1.utils.normalize(start, end, prevScroll));\n        }\n\n        self._pinPush = otherPinOffset;\n\n        if (markerStart && offset) {\n          cs = {};\n          cs[direction.a] = \"+=\" + offset;\n          pinnedContainer && (cs[direction.p] = \"-=\" + scrollFunc());\n          gsap$1.set([markerStart, markerEnd], cs);\n        }\n\n        if (pin && !(_clampingMax && self.end >= _maxScroll(scroller, direction))) {\n          cs = _getComputedStyle(pin);\n          isVertical = direction === _vertical;\n          scroll = scrollFunc();\n          pinStart = parseFloat(pinGetter(direction.a)) + otherPinOffset;\n\n          if (!max && end > 1) {\n            forcedOverflow = (isViewport ? _doc$1.scrollingElement || _docEl$1 : scroller).style;\n            forcedOverflow = {\n              style: forcedOverflow,\n              value: forcedOverflow[\"overflow\" + direction.a.toUpperCase()]\n            };\n\n            if (isViewport && _getComputedStyle(_body$1)[\"overflow\" + direction.a.toUpperCase()] !== \"scroll\") {\n              forcedOverflow.style[\"overflow\" + direction.a.toUpperCase()] = \"scroll\";\n            }\n          }\n\n          _swapPinIn(pin, spacer, cs);\n\n          pinState = _getState(pin);\n          bounds = _getBounds(pin, true);\n          oppositeScroll = useFixedPosition && _getScrollFunc(scroller, isVertical ? _horizontal : _vertical)();\n\n          if (pinSpacing) {\n            spacerState = [pinSpacing + direction.os2, change + otherPinOffset + _px];\n            spacerState.t = spacer;\n            i = pinSpacing === _padding ? _getSize(pin, direction) + change + otherPinOffset : 0;\n\n            if (i) {\n              spacerState.push(direction.d, i + _px);\n              spacer.style.flexBasis !== \"auto\" && (spacer.style.flexBasis = i + _px);\n            }\n\n            _setState(spacerState);\n\n            if (pinnedContainer) {\n              _triggers.forEach(function (t) {\n                if (t.pin === pinnedContainer && t.vars.pinSpacing !== false) {\n                  t._subPinOffset = true;\n                }\n              });\n            }\n\n            useFixedPosition && scrollFunc(prevScroll);\n          } else {\n            i = _getSize(pin, direction);\n            i && spacer.style.flexBasis !== \"auto\" && (spacer.style.flexBasis = i + _px);\n          }\n\n          if (useFixedPosition) {\n            override = {\n              top: bounds.top + (isVertical ? scroll - start : oppositeScroll) + _px,\n              left: bounds.left + (isVertical ? oppositeScroll : scroll - start) + _px,\n              boxSizing: \"border-box\",\n              position: \"fixed\"\n            };\n            override[_width] = override[\"max\" + _Width] = Math.ceil(bounds.width) + _px;\n            override[_height] = override[\"max\" + _Height] = Math.ceil(bounds.height) + _px;\n            override[_margin] = override[_margin + _Top] = override[_margin + _Right] = override[_margin + _Bottom] = override[_margin + _Left] = \"0\";\n            override[_padding] = cs[_padding];\n            override[_padding + _Top] = cs[_padding + _Top];\n            override[_padding + _Right] = cs[_padding + _Right];\n            override[_padding + _Bottom] = cs[_padding + _Bottom];\n            override[_padding + _Left] = cs[_padding + _Left];\n            pinActiveState = _copyState(pinOriginalState, override, pinReparent);\n            _refreshingAll && scrollFunc(0);\n          }\n\n          if (animation) {\n            initted = animation._initted;\n\n            _suppressOverwrites(1);\n\n            animation.render(animation.duration(), true, true);\n            pinChange = pinGetter(direction.a) - pinStart + change + otherPinOffset;\n            pinMoves = Math.abs(change - pinChange) > 1;\n            useFixedPosition && pinMoves && pinActiveState.splice(pinActiveState.length - 2, 2);\n            animation.render(0, true, true);\n            initted || animation.invalidate(true);\n            animation.parent || animation.totalTime(animation.totalTime());\n\n            _suppressOverwrites(0);\n          } else {\n            pinChange = change;\n          }\n\n          forcedOverflow && (forcedOverflow.value ? forcedOverflow.style[\"overflow\" + direction.a.toUpperCase()] = forcedOverflow.value : forcedOverflow.style.removeProperty(\"overflow-\" + direction.a));\n        } else if (trigger && scrollFunc() && !containerAnimation) {\n          bounds = trigger.parentNode;\n\n          while (bounds && bounds !== _body$1) {\n            if (bounds._pinOffset) {\n              start -= bounds._pinOffset;\n              end -= bounds._pinOffset;\n            }\n\n            bounds = bounds.parentNode;\n          }\n        }\n\n        revertedPins && revertedPins.forEach(function (t) {\n          return t.revert(false, true);\n        });\n        self.start = start;\n        self.end = end;\n        scroll1 = scroll2 = _refreshingAll ? prevScroll : scrollFunc();\n\n        if (!containerAnimation && !_refreshingAll) {\n          scroll1 < prevScroll && scrollFunc(prevScroll);\n          self.scroll.rec = 0;\n        }\n\n        self.revert(false, true);\n        lastRefresh = _getTime$1();\n\n        if (snapDelayedCall) {\n          lastSnap = -1;\n          snapDelayedCall.restart(true);\n        }\n\n        _refreshing = 0;\n        animation && isToggle && (animation._initted || prevAnimProgress) && animation.progress() !== prevAnimProgress && animation.progress(prevAnimProgress || 0, true).render(animation.time(), true, true);\n\n        if (isFirstRefresh || prevProgress !== self.progress || containerAnimation || invalidateOnRefresh) {\n          animation && !isToggle && animation.totalProgress(containerAnimation && start < -0.001 && !prevProgress ? gsap$1.utils.normalize(start, end, 0) : prevProgress, true);\n          self.progress = isFirstRefresh || (scroll1 - start) / change === prevProgress ? 0 : prevProgress;\n        }\n\n        pin && pinSpacing && (spacer._pinOffset = Math.round(self.progress * pinChange));\n        scrubTween && scrubTween.invalidate();\n\n        if (!isNaN(markerStartOffset)) {\n          markerStartOffset -= gsap$1.getProperty(markerStartTrigger, direction.p);\n          markerEndOffset -= gsap$1.getProperty(markerEndTrigger, direction.p);\n\n          _shiftMarker(markerStartTrigger, direction, markerStartOffset);\n\n          _shiftMarker(markerStart, direction, markerStartOffset - (pinOffset || 0));\n\n          _shiftMarker(markerEndTrigger, direction, markerEndOffset);\n\n          _shiftMarker(markerEnd, direction, markerEndOffset - (pinOffset || 0));\n        }\n\n        isFirstRefresh && !_refreshingAll && self.update();\n\n        if (onRefresh && !_refreshingAll && !executingOnRefresh) {\n          executingOnRefresh = true;\n          onRefresh(self);\n          executingOnRefresh = false;\n        }\n      };\n\n      self.getVelocity = function () {\n        return (scrollFunc() - scroll2) / (_getTime$1() - _time2) * 1000 || 0;\n      };\n\n      self.endAnimation = function () {\n        _endAnimation(self.callbackAnimation);\n\n        if (animation) {\n          scrubTween ? scrubTween.progress(1) : !animation.paused() ? _endAnimation(animation, animation.reversed()) : isToggle || _endAnimation(animation, self.direction < 0, 1);\n        }\n      };\n\n      self.labelToScroll = function (label) {\n        return animation && animation.labels && (start || self.refresh() || start) + animation.labels[label] / animation.duration() * change || 0;\n      };\n\n      self.getTrailing = function (name) {\n        var i = _triggers.indexOf(self),\n            a = self.direction > 0 ? _triggers.slice(0, i).reverse() : _triggers.slice(i + 1);\n\n        return (_isString(name) ? a.filter(function (t) {\n          return t.vars.preventOverlaps === name;\n        }) : a).filter(function (t) {\n          return self.direction > 0 ? t.end <= start : t.start >= end;\n        });\n      };\n\n      self.update = function (reset, recordVelocity, forceFake) {\n        if (containerAnimation && !forceFake && !reset) {\n          return;\n        }\n\n        var scroll = _refreshingAll === true ? prevScroll : self.scroll(),\n            p = reset ? 0 : (scroll - start) / change,\n            clipped = p < 0 ? 0 : p > 1 ? 1 : p || 0,\n            prevProgress = self.progress,\n            isActive,\n            wasActive,\n            toggleState,\n            action,\n            stateChanged,\n            toggled,\n            isAtMax,\n            isTakingAction;\n\n        if (recordVelocity) {\n          scroll2 = scroll1;\n          scroll1 = containerAnimation ? scrollFunc() : scroll;\n\n          if (snap) {\n            snap2 = snap1;\n            snap1 = animation && !isToggle ? animation.totalProgress() : clipped;\n          }\n        }\n\n        if (anticipatePin && pin && !_refreshing && !_startup$1 && _lastScrollTime) {\n          if (!clipped && start < scroll + (scroll - scroll2) / (_getTime$1() - _time2) * anticipatePin) {\n            clipped = 0.0001;\n          } else if (clipped === 1 && end > scroll + (scroll - scroll2) / (_getTime$1() - _time2) * anticipatePin) {\n            clipped = 0.9999;\n          }\n        }\n\n        if (clipped !== prevProgress && self.enabled) {\n          isActive = self.isActive = !!clipped && clipped < 1;\n          wasActive = !!prevProgress && prevProgress < 1;\n          toggled = isActive !== wasActive;\n          stateChanged = toggled || !!clipped !== !!prevProgress;\n          self.direction = clipped > prevProgress ? 1 : -1;\n          self.progress = clipped;\n\n          if (stateChanged && !_refreshing) {\n            toggleState = clipped && !prevProgress ? 0 : clipped === 1 ? 1 : prevProgress === 1 ? 2 : 3;\n\n            if (isToggle) {\n              action = !toggled && toggleActions[toggleState + 1] !== \"none\" && toggleActions[toggleState + 1] || toggleActions[toggleState];\n              isTakingAction = animation && (action === \"complete\" || action === \"reset\" || action in animation);\n            }\n          }\n\n          preventOverlaps && (toggled || isTakingAction) && (isTakingAction || scrub || !animation) && (_isFunction(preventOverlaps) ? preventOverlaps(self) : self.getTrailing(preventOverlaps).forEach(function (t) {\n            return t.endAnimation();\n          }));\n\n          if (!isToggle) {\n            if (scrubTween && !_refreshing && !_startup$1) {\n              scrubTween._dp._time - scrubTween._start !== scrubTween._time && scrubTween.render(scrubTween._dp._time - scrubTween._start);\n\n              if (scrubTween.resetTo) {\n                scrubTween.resetTo(\"totalProgress\", clipped, animation._tTime / animation._tDur);\n              } else {\n                scrubTween.vars.totalProgress = clipped;\n                scrubTween.invalidate().restart();\n              }\n            } else if (animation) {\n              animation.totalProgress(clipped, !!(_refreshing && (lastRefresh || reset)));\n            }\n          }\n\n          if (pin) {\n            reset && pinSpacing && (spacer.style[pinSpacing + direction.os2] = spacingStart);\n\n            if (!useFixedPosition) {\n              pinSetter(_round(pinStart + pinChange * clipped));\n            } else if (stateChanged) {\n              isAtMax = !reset && clipped > prevProgress && end + 1 > scroll && scroll + 1 >= _maxScroll(scroller, direction);\n\n              if (pinReparent) {\n                if (!reset && (isActive || isAtMax)) {\n                  var bounds = _getBounds(pin, true),\n                      _offset = scroll - start;\n\n                  _reparent(pin, _body$1, bounds.top + (direction === _vertical ? _offset : 0) + _px, bounds.left + (direction === _vertical ? 0 : _offset) + _px);\n                } else {\n                  _reparent(pin, spacer);\n                }\n              }\n\n              _setState(isActive || isAtMax ? pinActiveState : pinState);\n\n              pinMoves && clipped < 1 && isActive || pinSetter(pinStart + (clipped === 1 && !isAtMax ? pinChange : 0));\n            }\n          }\n\n          snap && !tweenTo.tween && !_refreshing && !_startup$1 && snapDelayedCall.restart(true);\n          toggleClass && (toggled || once && clipped && (clipped < 1 || !_limitCallbacks)) && _toArray(toggleClass.targets).forEach(function (el) {\n            return el.classList[isActive || once ? \"add\" : \"remove\"](toggleClass.className);\n          });\n          onUpdate && !isToggle && !reset && onUpdate(self);\n\n          if (stateChanged && !_refreshing) {\n            if (isToggle) {\n              if (isTakingAction) {\n                if (action === \"complete\") {\n                  animation.pause().totalProgress(1);\n                } else if (action === \"reset\") {\n                  animation.restart(true).pause();\n                } else if (action === \"restart\") {\n                  animation.restart(true);\n                } else {\n                  animation[action]();\n                }\n              }\n\n              onUpdate && onUpdate(self);\n            }\n\n            if (toggled || !_limitCallbacks) {\n              onToggle && toggled && _callback(self, onToggle);\n              callbacks[toggleState] && _callback(self, callbacks[toggleState]);\n              once && (clipped === 1 ? self.kill(false, 1) : callbacks[toggleState] = 0);\n\n              if (!toggled) {\n                toggleState = clipped === 1 ? 1 : 3;\n                callbacks[toggleState] && _callback(self, callbacks[toggleState]);\n              }\n            }\n\n            if (fastScrollEnd && !isActive && Math.abs(self.getVelocity()) > (_isNumber(fastScrollEnd) ? fastScrollEnd : 2500)) {\n              _endAnimation(self.callbackAnimation);\n\n              scrubTween ? scrubTween.progress(1) : _endAnimation(animation, action === \"reverse\" ? 1 : !clipped, 1);\n            }\n          } else if (isToggle && onUpdate && !_refreshing) {\n            onUpdate(self);\n          }\n        }\n\n        if (markerEndSetter) {\n          var n = containerAnimation ? scroll / containerAnimation.duration() * (containerAnimation._caScrollDist || 0) : scroll;\n          markerStartSetter(n + (markerStartTrigger._isFlipped ? 1 : 0));\n          markerEndSetter(n);\n        }\n\n        caMarkerSetter && caMarkerSetter(-scroll / containerAnimation.duration() * (containerAnimation._caScrollDist || 0));\n      };\n\n      self.enable = function (reset, refresh) {\n        if (!self.enabled) {\n          self.enabled = true;\n\n          _addListener$1(scroller, \"resize\", _onResize);\n\n          isViewport || _addListener$1(scroller, \"scroll\", _onScroll$1);\n          onRefreshInit && _addListener$1(ScrollTrigger, \"refreshInit\", onRefreshInit);\n\n          if (reset !== false) {\n            self.progress = prevProgress = 0;\n            scroll1 = scroll2 = lastSnap = scrollFunc();\n          }\n\n          refresh !== false && self.refresh();\n        }\n      };\n\n      self.getTween = function (snap) {\n        return snap && tweenTo ? tweenTo.tween : scrubTween;\n      };\n\n      self.setPositions = function (newStart, newEnd, keepClamp, pinOffset) {\n        if (containerAnimation) {\n          var st = containerAnimation.scrollTrigger,\n              duration = containerAnimation.duration(),\n              _change = st.end - st.start;\n\n          newStart = st.start + _change * newStart / duration;\n          newEnd = st.start + _change * newEnd / duration;\n        }\n\n        self.refresh(false, false, {\n          start: _keepClamp(newStart, keepClamp && !!self._startClamp),\n          end: _keepClamp(newEnd, keepClamp && !!self._endClamp)\n        }, pinOffset);\n        self.update();\n      };\n\n      self.adjustPinSpacing = function (amount) {\n        if (spacerState && amount) {\n          var i = spacerState.indexOf(direction.d) + 1;\n          spacerState[i] = parseFloat(spacerState[i]) + amount + _px;\n          spacerState[1] = parseFloat(spacerState[1]) + amount + _px;\n\n          _setState(spacerState);\n        }\n      };\n\n      self.disable = function (reset, allowAnimation) {\n        if (self.enabled) {\n          reset !== false && self.revert(true, true);\n          self.enabled = self.isActive = false;\n          allowAnimation || scrubTween && scrubTween.pause();\n          prevScroll = 0;\n          pinCache && (pinCache.uncache = 1);\n          onRefreshInit && _removeListener$1(ScrollTrigger, \"refreshInit\", onRefreshInit);\n\n          if (snapDelayedCall) {\n            snapDelayedCall.pause();\n            tweenTo.tween && tweenTo.tween.kill() && (tweenTo.tween = 0);\n          }\n\n          if (!isViewport) {\n            var i = _triggers.length;\n\n            while (i--) {\n              if (_triggers[i].scroller === scroller && _triggers[i] !== self) {\n                return;\n              }\n            }\n\n            _removeListener$1(scroller, \"resize\", _onResize);\n\n            isViewport || _removeListener$1(scroller, \"scroll\", _onScroll$1);\n          }\n        }\n      };\n\n      self.kill = function (revert, allowAnimation) {\n        self.disable(revert, allowAnimation);\n        scrubTween && !allowAnimation && scrubTween.kill();\n        id && delete _ids[id];\n\n        var i = _triggers.indexOf(self);\n\n        i >= 0 && _triggers.splice(i, 1);\n        i === _i && _direction > 0 && _i--;\n        i = 0;\n\n        _triggers.forEach(function (t) {\n          return t.scroller === self.scroller && (i = 1);\n        });\n\n        i || _refreshingAll || (self.scroll.rec = 0);\n\n        if (animation) {\n          animation.scrollTrigger = null;\n          revert && animation.revert({\n            kill: false\n          });\n          allowAnimation || animation.kill();\n        }\n\n        markerStart && [markerStart, markerEnd, markerStartTrigger, markerEndTrigger].forEach(function (m) {\n          return m.parentNode && m.parentNode.removeChild(m);\n        });\n        _primary === self && (_primary = 0);\n\n        if (pin) {\n          pinCache && (pinCache.uncache = 1);\n          i = 0;\n\n          _triggers.forEach(function (t) {\n            return t.pin === pin && i++;\n          });\n\n          i || (pinCache.spacer = 0);\n        }\n\n        vars.onKill && vars.onKill(self);\n      };\n\n      _triggers.push(self);\n\n      self.enable(false, false);\n      customRevertReturn && customRevertReturn(self);\n\n      if (animation && animation.add && !change) {\n        var updateFunc = self.update;\n\n        self.update = function () {\n          self.update = updateFunc;\n          start || end || self.refresh();\n        };\n\n        gsap$1.delayedCall(0.01, self.update);\n        change = 0.01;\n        start = end = 0;\n      } else {\n        self.refresh();\n      }\n\n      pin && _queueRefreshAll();\n    };\n\n    ScrollTrigger.register = function register(core) {\n      if (!_coreInitted$1) {\n        gsap$1 = core || _getGSAP$1();\n        _windowExists() && window.document && ScrollTrigger.enable();\n        _coreInitted$1 = _enabled;\n      }\n\n      return _coreInitted$1;\n    };\n\n    ScrollTrigger.defaults = function defaults(config) {\n      if (config) {\n        for (var p in config) {\n          _defaults[p] = config[p];\n        }\n      }\n\n      return _defaults;\n    };\n\n    ScrollTrigger.disable = function disable(reset, kill) {\n      _enabled = 0;\n\n      _triggers.forEach(function (trigger) {\n        return trigger[kill ? \"kill\" : \"disable\"](reset);\n      });\n\n      _removeListener$1(_win$1, \"wheel\", _onScroll$1);\n\n      _removeListener$1(_doc$1, \"scroll\", _onScroll$1);\n\n      clearInterval(_syncInterval);\n\n      _removeListener$1(_doc$1, \"touchcancel\", _passThrough);\n\n      _removeListener$1(_body$1, \"touchstart\", _passThrough);\n\n      _multiListener(_removeListener$1, _doc$1, \"pointerdown,touchstart,mousedown\", _pointerDownHandler);\n\n      _multiListener(_removeListener$1, _doc$1, \"pointerup,touchend,mouseup\", _pointerUpHandler);\n\n      _resizeDelay.kill();\n\n      _iterateAutoRefresh(_removeListener$1);\n\n      for (var i = 0; i < _scrollers.length; i += 3) {\n        _wheelListener(_removeListener$1, _scrollers[i], _scrollers[i + 1]);\n\n        _wheelListener(_removeListener$1, _scrollers[i], _scrollers[i + 2]);\n      }\n    };\n\n    ScrollTrigger.enable = function enable() {\n      _win$1 = window;\n      _doc$1 = document;\n      _docEl$1 = _doc$1.documentElement;\n      _body$1 = _doc$1.body;\n\n      if (gsap$1) {\n        _toArray = gsap$1.utils.toArray;\n        _clamp$1 = gsap$1.utils.clamp;\n        _context$1 = gsap$1.core.context || _passThrough;\n        _suppressOverwrites = gsap$1.core.suppressOverwrites || _passThrough;\n        _scrollRestoration = _win$1.history.scrollRestoration || \"auto\";\n        _lastScroll = _win$1.pageYOffset;\n        gsap$1.core.globals(\"ScrollTrigger\", ScrollTrigger);\n\n        if (_body$1) {\n          _enabled = 1;\n          _div100vh = document.createElement(\"div\");\n          _div100vh.style.height = \"100vh\";\n          _div100vh.style.position = \"absolute\";\n\n          _refresh100vh();\n\n          _rafBugFix();\n\n          Observer.register(gsap$1);\n          ScrollTrigger.isTouch = Observer.isTouch;\n          _fixIOSBug = Observer.isTouch && /(iPad|iPhone|iPod|Mac)/g.test(navigator.userAgent);\n          _ignoreMobileResize = Observer.isTouch === 1;\n\n          _addListener$1(_win$1, \"wheel\", _onScroll$1);\n\n          _root$1 = [_win$1, _doc$1, _docEl$1, _body$1];\n\n          if (gsap$1.matchMedia) {\n            ScrollTrigger.matchMedia = function (vars) {\n              var mm = gsap$1.matchMedia(),\n                  p;\n\n              for (p in vars) {\n                mm.add(p, vars[p]);\n              }\n\n              return mm;\n            };\n\n            gsap$1.addEventListener(\"matchMediaInit\", function () {\n              return _revertAll();\n            });\n            gsap$1.addEventListener(\"matchMediaRevert\", function () {\n              return _revertRecorded();\n            });\n            gsap$1.addEventListener(\"matchMedia\", function () {\n              _refreshAll(0, 1);\n\n              _dispatch(\"matchMedia\");\n            });\n            gsap$1.matchMedia(\"(orientation: portrait)\", function () {\n              _setBaseDimensions();\n\n              return _setBaseDimensions;\n            });\n          } else {\n            console.warn(\"Requires GSAP 3.11.0 or later\");\n          }\n\n          _setBaseDimensions();\n\n          _addListener$1(_doc$1, \"scroll\", _onScroll$1);\n\n          var bodyStyle = _body$1.style,\n              border = bodyStyle.borderTopStyle,\n              AnimationProto = gsap$1.core.Animation.prototype,\n              bounds,\n              i;\n          AnimationProto.revert || Object.defineProperty(AnimationProto, \"revert\", {\n            value: function value() {\n              return this.time(-0.01, true);\n            }\n          });\n          bodyStyle.borderTopStyle = \"solid\";\n          bounds = _getBounds(_body$1);\n          _vertical.m = Math.round(bounds.top + _vertical.sc()) || 0;\n          _horizontal.m = Math.round(bounds.left + _horizontal.sc()) || 0;\n          border ? bodyStyle.borderTopStyle = border : bodyStyle.removeProperty(\"border-top-style\");\n          _syncInterval = setInterval(_sync, 250);\n          gsap$1.delayedCall(0.5, function () {\n            return _startup$1 = 0;\n          });\n\n          _addListener$1(_doc$1, \"touchcancel\", _passThrough);\n\n          _addListener$1(_body$1, \"touchstart\", _passThrough);\n\n          _multiListener(_addListener$1, _doc$1, \"pointerdown,touchstart,mousedown\", _pointerDownHandler);\n\n          _multiListener(_addListener$1, _doc$1, \"pointerup,touchend,mouseup\", _pointerUpHandler);\n\n          _transformProp = gsap$1.utils.checkPrefix(\"transform\");\n\n          _stateProps.push(_transformProp);\n\n          _coreInitted$1 = _getTime$1();\n          _resizeDelay = gsap$1.delayedCall(0.2, _refreshAll).pause();\n          _autoRefresh = [_doc$1, \"visibilitychange\", function () {\n            var w = _win$1.innerWidth,\n                h = _win$1.innerHeight;\n\n            if (_doc$1.hidden) {\n              _prevWidth = w;\n              _prevHeight = h;\n            } else if (_prevWidth !== w || _prevHeight !== h) {\n              _onResize();\n            }\n          }, _doc$1, \"DOMContentLoaded\", _refreshAll, _win$1, \"load\", _refreshAll, _win$1, \"resize\", _onResize];\n\n          _iterateAutoRefresh(_addListener$1);\n\n          _triggers.forEach(function (trigger) {\n            return trigger.enable(0, 1);\n          });\n\n          for (i = 0; i < _scrollers.length; i += 3) {\n            _wheelListener(_removeListener$1, _scrollers[i], _scrollers[i + 1]);\n\n            _wheelListener(_removeListener$1, _scrollers[i], _scrollers[i + 2]);\n          }\n        }\n      }\n    };\n\n    ScrollTrigger.config = function config(vars) {\n      \"limitCallbacks\" in vars && (_limitCallbacks = !!vars.limitCallbacks);\n      var ms = vars.syncInterval;\n      ms && clearInterval(_syncInterval) || (_syncInterval = ms) && setInterval(_sync, ms);\n      \"ignoreMobileResize\" in vars && (_ignoreMobileResize = ScrollTrigger.isTouch === 1 && vars.ignoreMobileResize);\n\n      if (\"autoRefreshEvents\" in vars) {\n        _iterateAutoRefresh(_removeListener$1) || _iterateAutoRefresh(_addListener$1, vars.autoRefreshEvents || \"none\");\n        _ignoreResize = (vars.autoRefreshEvents + \"\").indexOf(\"resize\") === -1;\n      }\n    };\n\n    ScrollTrigger.scrollerProxy = function scrollerProxy(target, vars) {\n      var t = _getTarget(target),\n          i = _scrollers.indexOf(t),\n          isViewport = _isViewport$1(t);\n\n      if (~i) {\n        _scrollers.splice(i, isViewport ? 6 : 2);\n      }\n\n      if (vars) {\n        isViewport ? _proxies.unshift(_win$1, vars, _body$1, vars, _docEl$1, vars) : _proxies.unshift(t, vars);\n      }\n    };\n\n    ScrollTrigger.clearMatchMedia = function clearMatchMedia(query) {\n      _triggers.forEach(function (t) {\n        return t._ctx && t._ctx.query === query && t._ctx.kill(true, true);\n      });\n    };\n\n    ScrollTrigger.isInViewport = function isInViewport(element, ratio, horizontal) {\n      var bounds = (_isString(element) ? _getTarget(element) : element).getBoundingClientRect(),\n          offset = bounds[horizontal ? _width : _height] * ratio || 0;\n      return horizontal ? bounds.right - offset > 0 && bounds.left + offset < _win$1.innerWidth : bounds.bottom - offset > 0 && bounds.top + offset < _win$1.innerHeight;\n    };\n\n    ScrollTrigger.positionInViewport = function positionInViewport(element, referencePoint, horizontal) {\n      _isString(element) && (element = _getTarget(element));\n      var bounds = element.getBoundingClientRect(),\n          size = bounds[horizontal ? _width : _height],\n          offset = referencePoint == null ? size / 2 : referencePoint in _keywords ? _keywords[referencePoint] * size : ~referencePoint.indexOf(\"%\") ? parseFloat(referencePoint) * size / 100 : parseFloat(referencePoint) || 0;\n      return horizontal ? (bounds.left + offset) / _win$1.innerWidth : (bounds.top + offset) / _win$1.innerHeight;\n    };\n\n    ScrollTrigger.killAll = function killAll(allowListeners) {\n      _triggers.slice(0).forEach(function (t) {\n        return t.vars.id !== \"ScrollSmoother\" && t.kill();\n      });\n\n      if (allowListeners !== true) {\n        var listeners = _listeners.killAll || [];\n        _listeners = {};\n        listeners.forEach(function (f) {\n          return f();\n        });\n      }\n    };\n\n    return ScrollTrigger;\n  }();\n  ScrollTrigger$1.version = \"3.12.5\";\n\n  ScrollTrigger$1.saveStyles = function (targets) {\n    return targets ? _toArray(targets).forEach(function (target) {\n      if (target && target.style) {\n        var i = _savedStyles.indexOf(target);\n\n        i >= 0 && _savedStyles.splice(i, 5);\n\n        _savedStyles.push(target, target.style.cssText, target.getBBox && target.getAttribute(\"transform\"), gsap$1.core.getCache(target), _context$1());\n      }\n    }) : _savedStyles;\n  };\n\n  ScrollTrigger$1.revert = function (soft, media) {\n    return _revertAll(!soft, media);\n  };\n\n  ScrollTrigger$1.create = function (vars, animation) {\n    return new ScrollTrigger$1(vars, animation);\n  };\n\n  ScrollTrigger$1.refresh = function (safe) {\n    return safe ? _onResize() : (_coreInitted$1 || ScrollTrigger$1.register()) && _refreshAll(true);\n  };\n\n  ScrollTrigger$1.update = function (force) {\n    return ++_scrollers.cache && _updateAll(force === true ? 2 : 0);\n  };\n\n  ScrollTrigger$1.clearScrollMemory = _clearScrollMemory;\n\n  ScrollTrigger$1.maxScroll = function (element, horizontal) {\n    return _maxScroll(element, horizontal ? _horizontal : _vertical);\n  };\n\n  ScrollTrigger$1.getScrollFunc = function (element, horizontal) {\n    return _getScrollFunc(_getTarget(element), horizontal ? _horizontal : _vertical);\n  };\n\n  ScrollTrigger$1.getById = function (id) {\n    return _ids[id];\n  };\n\n  ScrollTrigger$1.getAll = function () {\n    return _triggers.filter(function (t) {\n      return t.vars.id !== \"ScrollSmoother\";\n    });\n  };\n\n  ScrollTrigger$1.isScrolling = function () {\n    return !!_lastScrollTime;\n  };\n\n  ScrollTrigger$1.snapDirectional = _snapDirectional;\n\n  ScrollTrigger$1.addEventListener = function (type, callback) {\n    var a = _listeners[type] || (_listeners[type] = []);\n    ~a.indexOf(callback) || a.push(callback);\n  };\n\n  ScrollTrigger$1.removeEventListener = function (type, callback) {\n    var a = _listeners[type],\n        i = a && a.indexOf(callback);\n    i >= 0 && a.splice(i, 1);\n  };\n\n  ScrollTrigger$1.batch = function (targets, vars) {\n    var result = [],\n        varsCopy = {},\n        interval = vars.interval || 0.016,\n        batchMax = vars.batchMax || 1e9,\n        proxyCallback = function proxyCallback(type, callback) {\n      var elements = [],\n          triggers = [],\n          delay = gsap$1.delayedCall(interval, function () {\n        callback(elements, triggers);\n        elements = [];\n        triggers = [];\n      }).pause();\n      return function (self) {\n        elements.length || delay.restart(true);\n        elements.push(self.trigger);\n        triggers.push(self);\n        batchMax <= elements.length && delay.progress(1);\n      };\n    },\n        p;\n\n    for (p in vars) {\n      varsCopy[p] = p.substr(0, 2) === \"on\" && _isFunction(vars[p]) && p !== \"onRefreshInit\" ? proxyCallback(p, vars[p]) : vars[p];\n    }\n\n    if (_isFunction(batchMax)) {\n      batchMax = batchMax();\n\n      _addListener$1(ScrollTrigger$1, \"refresh\", function () {\n        return batchMax = vars.batchMax();\n      });\n    }\n\n    _toArray(targets).forEach(function (target) {\n      var config = {};\n\n      for (p in varsCopy) {\n        config[p] = varsCopy[p];\n      }\n\n      config.trigger = target;\n      result.push(ScrollTrigger$1.create(config));\n    });\n\n    return result;\n  };\n\n  var _clampScrollAndGetDurationMultiplier = function _clampScrollAndGetDurationMultiplier(scrollFunc, current, end, max) {\n    current > max ? scrollFunc(max) : current < 0 && scrollFunc(0);\n    return end > max ? (max - current) / (end - current) : end < 0 ? current / (current - end) : 1;\n  },\n      _allowNativePanning = function _allowNativePanning(target, direction) {\n    if (direction === true) {\n      target.style.removeProperty(\"touch-action\");\n    } else {\n      target.style.touchAction = direction === true ? \"auto\" : direction ? \"pan-\" + direction + (Observer.isTouch ? \" pinch-zoom\" : \"\") : \"none\";\n    }\n\n    target === _docEl$1 && _allowNativePanning(_body$1, direction);\n  },\n      _overflow = {\n    auto: 1,\n    scroll: 1\n  },\n      _nestedScroll = function _nestedScroll(_ref5) {\n    var event = _ref5.event,\n        target = _ref5.target,\n        axis = _ref5.axis;\n\n    var node = (event.changedTouches ? event.changedTouches[0] : event).target,\n        cache = node._gsap || gsap$1.core.getCache(node),\n        time = _getTime$1(),\n        cs;\n\n    if (!cache._isScrollT || time - cache._isScrollT > 2000) {\n      while (node && node !== _body$1 && (node.scrollHeight <= node.clientHeight && node.scrollWidth <= node.clientWidth || !(_overflow[(cs = _getComputedStyle(node)).overflowY] || _overflow[cs.overflowX]))) {\n        node = node.parentNode;\n      }\n\n      cache._isScroll = node && node !== target && !_isViewport$1(node) && (_overflow[(cs = _getComputedStyle(node)).overflowY] || _overflow[cs.overflowX]);\n      cache._isScrollT = time;\n    }\n\n    if (cache._isScroll || axis === \"x\") {\n      event.stopPropagation();\n      event._gsapAllow = true;\n    }\n  },\n      _inputObserver = function _inputObserver(target, type, inputs, nested) {\n    return Observer.create({\n      target: target,\n      capture: true,\n      debounce: false,\n      lockAxis: true,\n      type: type,\n      onWheel: nested = nested && _nestedScroll,\n      onPress: nested,\n      onDrag: nested,\n      onScroll: nested,\n      onEnable: function onEnable() {\n        return inputs && _addListener$1(_doc$1, Observer.eventTypes[0], _captureInputs, false, true);\n      },\n      onDisable: function onDisable() {\n        return _removeListener$1(_doc$1, Observer.eventTypes[0], _captureInputs, true);\n      }\n    });\n  },\n      _inputExp = /(input|label|select|textarea)/i,\n      _inputIsFocused,\n      _captureInputs = function _captureInputs(e) {\n    var isInput = _inputExp.test(e.target.tagName);\n\n    if (isInput || _inputIsFocused) {\n      e._gsapAllow = true;\n      _inputIsFocused = isInput;\n    }\n  },\n      _getScrollNormalizer = function _getScrollNormalizer(vars) {\n    _isObject(vars) || (vars = {});\n    vars.preventDefault = vars.isNormalizer = vars.allowClicks = true;\n    vars.type || (vars.type = \"wheel,touch\");\n    vars.debounce = !!vars.debounce;\n    vars.id = vars.id || \"normalizer\";\n\n    var _vars2 = vars,\n        normalizeScrollX = _vars2.normalizeScrollX,\n        momentum = _vars2.momentum,\n        allowNestedScroll = _vars2.allowNestedScroll,\n        onRelease = _vars2.onRelease,\n        self,\n        maxY,\n        target = _getTarget(vars.target) || _docEl$1,\n        smoother = gsap$1.core.globals().ScrollSmoother,\n        smootherInstance = smoother && smoother.get(),\n        content = _fixIOSBug && (vars.content && _getTarget(vars.content) || smootherInstance && vars.content !== false && !smootherInstance.smooth() && smootherInstance.content()),\n        scrollFuncY = _getScrollFunc(target, _vertical),\n        scrollFuncX = _getScrollFunc(target, _horizontal),\n        scale = 1,\n        initialScale = (Observer.isTouch && _win$1.visualViewport ? _win$1.visualViewport.scale * _win$1.visualViewport.width : _win$1.outerWidth) / _win$1.innerWidth,\n        wheelRefresh = 0,\n        resolveMomentumDuration = _isFunction(momentum) ? function () {\n      return momentum(self);\n    } : function () {\n      return momentum || 2.8;\n    },\n        lastRefreshID,\n        skipTouchMove,\n        inputObserver = _inputObserver(target, vars.type, true, allowNestedScroll),\n        resumeTouchMove = function resumeTouchMove() {\n      return skipTouchMove = false;\n    },\n        scrollClampX = _passThrough,\n        scrollClampY = _passThrough,\n        updateClamps = function updateClamps() {\n      maxY = _maxScroll(target, _vertical);\n      scrollClampY = _clamp$1(_fixIOSBug ? 1 : 0, maxY);\n      normalizeScrollX && (scrollClampX = _clamp$1(0, _maxScroll(target, _horizontal)));\n      lastRefreshID = _refreshID;\n    },\n        removeContentOffset = function removeContentOffset() {\n      content._gsap.y = _round(parseFloat(content._gsap.y) + scrollFuncY.offset) + \"px\";\n      content.style.transform = \"matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, \" + parseFloat(content._gsap.y) + \", 0, 1)\";\n      scrollFuncY.offset = scrollFuncY.cacheID = 0;\n    },\n        ignoreDrag = function ignoreDrag() {\n      if (skipTouchMove) {\n        requestAnimationFrame(resumeTouchMove);\n\n        var offset = _round(self.deltaY / 2),\n            scroll = scrollClampY(scrollFuncY.v - offset);\n\n        if (content && scroll !== scrollFuncY.v + scrollFuncY.offset) {\n          scrollFuncY.offset = scroll - scrollFuncY.v;\n\n          var y = _round((parseFloat(content && content._gsap.y) || 0) - scrollFuncY.offset);\n\n          content.style.transform = \"matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, \" + y + \", 0, 1)\";\n          content._gsap.y = y + \"px\";\n          scrollFuncY.cacheID = _scrollers.cache;\n\n          _updateAll();\n        }\n\n        return true;\n      }\n\n      scrollFuncY.offset && removeContentOffset();\n      skipTouchMove = true;\n    },\n        tween,\n        startScrollX,\n        startScrollY,\n        onStopDelayedCall,\n        onResize = function onResize() {\n      updateClamps();\n\n      if (tween.isActive() && tween.vars.scrollY > maxY) {\n        scrollFuncY() > maxY ? tween.progress(1) && scrollFuncY(maxY) : tween.resetTo(\"scrollY\", maxY);\n      }\n    };\n\n    content && gsap$1.set(content, {\n      y: \"+=0\"\n    });\n\n    vars.ignoreCheck = function (e) {\n      return _fixIOSBug && e.type === \"touchmove\" && ignoreDrag() || scale > 1.05 && e.type !== \"touchstart\" || self.isGesturing || e.touches && e.touches.length > 1;\n    };\n\n    vars.onPress = function () {\n      skipTouchMove = false;\n      var prevScale = scale;\n      scale = _round((_win$1.visualViewport && _win$1.visualViewport.scale || 1) / initialScale);\n      tween.pause();\n      prevScale !== scale && _allowNativePanning(target, scale > 1.01 ? true : normalizeScrollX ? false : \"x\");\n      startScrollX = scrollFuncX();\n      startScrollY = scrollFuncY();\n      updateClamps();\n      lastRefreshID = _refreshID;\n    };\n\n    vars.onRelease = vars.onGestureStart = function (self, wasDragging) {\n      scrollFuncY.offset && removeContentOffset();\n\n      if (!wasDragging) {\n        onStopDelayedCall.restart(true);\n      } else {\n        _scrollers.cache++;\n        var dur = resolveMomentumDuration(),\n            currentScroll,\n            endScroll;\n\n        if (normalizeScrollX) {\n          currentScroll = scrollFuncX();\n          endScroll = currentScroll + dur * 0.05 * -self.velocityX / 0.227;\n          dur *= _clampScrollAndGetDurationMultiplier(scrollFuncX, currentScroll, endScroll, _maxScroll(target, _horizontal));\n          tween.vars.scrollX = scrollClampX(endScroll);\n        }\n\n        currentScroll = scrollFuncY();\n        endScroll = currentScroll + dur * 0.05 * -self.velocityY / 0.227;\n        dur *= _clampScrollAndGetDurationMultiplier(scrollFuncY, currentScroll, endScroll, _maxScroll(target, _vertical));\n        tween.vars.scrollY = scrollClampY(endScroll);\n        tween.invalidate().duration(dur).play(0.01);\n\n        if (_fixIOSBug && tween.vars.scrollY >= maxY || currentScroll >= maxY - 1) {\n          gsap$1.to({}, {\n            onUpdate: onResize,\n            duration: dur\n          });\n        }\n      }\n\n      onRelease && onRelease(self);\n    };\n\n    vars.onWheel = function () {\n      tween._ts && tween.pause();\n\n      if (_getTime$1() - wheelRefresh > 1000) {\n        lastRefreshID = 0;\n        wheelRefresh = _getTime$1();\n      }\n    };\n\n    vars.onChange = function (self, dx, dy, xArray, yArray) {\n      _refreshID !== lastRefreshID && updateClamps();\n      dx && normalizeScrollX && scrollFuncX(scrollClampX(xArray[2] === dx ? startScrollX + (self.startX - self.x) : scrollFuncX() + dx - xArray[1]));\n\n      if (dy) {\n        scrollFuncY.offset && removeContentOffset();\n        var isTouch = yArray[2] === dy,\n            y = isTouch ? startScrollY + self.startY - self.y : scrollFuncY() + dy - yArray[1],\n            yClamped = scrollClampY(y);\n        isTouch && y !== yClamped && (startScrollY += yClamped - y);\n        scrollFuncY(yClamped);\n      }\n\n      (dy || dx) && _updateAll();\n    };\n\n    vars.onEnable = function () {\n      _allowNativePanning(target, normalizeScrollX ? false : \"x\");\n\n      ScrollTrigger$1.addEventListener(\"refresh\", onResize);\n\n      _addListener$1(_win$1, \"resize\", onResize);\n\n      if (scrollFuncY.smooth) {\n        scrollFuncY.target.style.scrollBehavior = \"auto\";\n        scrollFuncY.smooth = scrollFuncX.smooth = false;\n      }\n\n      inputObserver.enable();\n    };\n\n    vars.onDisable = function () {\n      _allowNativePanning(target, true);\n\n      _removeListener$1(_win$1, \"resize\", onResize);\n\n      ScrollTrigger$1.removeEventListener(\"refresh\", onResize);\n      inputObserver.kill();\n    };\n\n    vars.lockAxis = vars.lockAxis !== false;\n    self = new Observer(vars);\n    self.iOS = _fixIOSBug;\n    _fixIOSBug && !scrollFuncY() && scrollFuncY(1);\n    _fixIOSBug && gsap$1.ticker.add(_passThrough);\n    onStopDelayedCall = self._dc;\n    tween = gsap$1.to(self, {\n      ease: \"power4\",\n      paused: true,\n      inherit: false,\n      scrollX: normalizeScrollX ? \"+=0.1\" : \"+=0\",\n      scrollY: \"+=0.1\",\n      modifiers: {\n        scrollY: _interruptionTracker(scrollFuncY, scrollFuncY(), function () {\n          return tween.pause();\n        })\n      },\n      onUpdate: _updateAll,\n      onComplete: onStopDelayedCall.vars.onComplete\n    });\n    return self;\n  };\n\n  ScrollTrigger$1.sort = function (func) {\n    return _triggers.sort(func || function (a, b) {\n      return (a.vars.refreshPriority || 0) * -1e6 + a.start - (b.start + (b.vars.refreshPriority || 0) * -1e6);\n    });\n  };\n\n  ScrollTrigger$1.observe = function (vars) {\n    return new Observer(vars);\n  };\n\n  ScrollTrigger$1.normalizeScroll = function (vars) {\n    if (typeof vars === \"undefined\") {\n      return _normalizer$1;\n    }\n\n    if (vars === true && _normalizer$1) {\n      return _normalizer$1.enable();\n    }\n\n    if (vars === false) {\n      _normalizer$1 && _normalizer$1.kill();\n      _normalizer$1 = vars;\n      return;\n    }\n\n    var normalizer = vars instanceof Observer ? vars : _getScrollNormalizer(vars);\n    _normalizer$1 && _normalizer$1.target === normalizer.target && _normalizer$1.kill();\n    _isViewport$1(normalizer.target) && (_normalizer$1 = normalizer);\n    return normalizer;\n  };\n\n  ScrollTrigger$1.core = {\n    _getVelocityProp: _getVelocityProp,\n    _inputObserver: _inputObserver,\n    _scrollers: _scrollers,\n    _proxies: _proxies,\n    bridge: {\n      ss: function ss() {\n        _lastScrollTime || _dispatch(\"scrollStart\");\n        _lastScrollTime = _getTime$1();\n      },\n      ref: function ref() {\n        return _refreshing;\n      }\n    }\n  };\n  _getGSAP$1() && gsap$1.registerPlugin(ScrollTrigger$1);\n\n  exports.ScrollTrigger = ScrollTrigger$1;\n  exports.default = ScrollTrigger$1;\n\n  if (typeof(window) === 'undefined' || window !== exports) {Object.defineProperty(exports, '__esModule', { value: true });} else {delete window.default;}\n\n})));\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","/*!\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","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/** @license React v17.0.2\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),m=require(\"object-assign\"),r=require(\"scheduler\");function y(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}if(!aa)throw Error(y(227));var ba=new Set,ca={};function da(a,b){ea(a,b);ea(a+\"Capture\",b)}\nfunction ea(a,b){ca[a]=b;for(a=0;a<b.length;a++)ba.add(b[a])}\nvar fa=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ha=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,ia=Object.prototype.hasOwnProperty,\nja={},ka={};function la(a){if(ia.call(ka,a))return!0;if(ia.call(ja,a))return!1;if(ha.test(a))return ka[a]=!0;ja[a]=!0;return!1}function ma(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction na(a,b,c,d){if(null===b||\"undefined\"===typeof b||ma(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function B(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1]?!1:!0;f||(na(b,c,e,d)&&(c=null),d||null===e?la(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c))))}\nvar ra=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,sa=60103,ta=60106,ua=60107,wa=60108,xa=60114,ya=60109,za=60110,Aa=60112,Ba=60113,Ca=60120,Da=60115,Ea=60116,Fa=60121,Ga=60128,Ha=60129,Ia=60130,Ja=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var E=Symbol.for;sa=E(\"react.element\");ta=E(\"react.portal\");ua=E(\"react.fragment\");wa=E(\"react.strict_mode\");xa=E(\"react.profiler\");ya=E(\"react.provider\");za=E(\"react.context\");Aa=E(\"react.forward_ref\");Ba=E(\"react.suspense\");Ca=E(\"react.suspense_list\");Da=E(\"react.memo\");Ea=E(\"react.lazy\");Fa=E(\"react.block\");E(\"react.scope\");Ga=E(\"react.opaque.id\");Ha=E(\"react.debug_trace_mode\");Ia=E(\"react.offscreen\");Ja=E(\"react.legacy_hidden\")}\nvar Ka=\"function\"===typeof Symbol&&Symbol.iterator;function La(a){if(null===a||\"object\"!==typeof a)return null;a=Ka&&a[Ka]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var Ma;function Na(a){if(void 0===Ma)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);Ma=b&&b[1]||\"\"}return\"\\n\"+Ma+a}var Oa=!1;\nfunction Pa(a,b){if(!a||Oa)return\"\";Oa=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(k){var d=k}Reflect.construct(a,[],b)}else{try{b.call()}catch(k){d=k}a.call(b.prototype)}else{try{throw Error();}catch(k){d=k}a()}}catch(k){if(k&&d&&\"string\"===typeof k.stack){for(var e=k.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(y(91));return m({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(y(92));if(Array.isArray(c)){if(!(1>=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(a,b,c,d,e){return a(b,c,d,e)}function Ib(){}var Jb=Gb,Kb=!1,Lb=!1;function Mb(){if(null!==zb||null!==Ab)Ib(),Fb()}\nfunction Nb(a,b,c){if(Lb)return a(b,c);Lb=!0;try{return Jb(a,b,c)}finally{Lb=!1,Mb()}}\nfunction Ob(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(y(231,b,typeof c));return c}var Pb=!1;if(fa)try{var Qb={};Object.defineProperty(Qb,\"passive\",{get:function(){Pb=!0}});window.addEventListener(\"test\",Qb,Qb);window.removeEventListener(\"test\",Qb,Qb)}catch(a){Pb=!1}function Rb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(n){this.onError(n)}}var Sb=!1,Tb=null,Ub=!1,Vb=null,Wb={onError:function(a){Sb=!0;Tb=a}};function Xb(a,b,c,d,e,f,g,h,k){Sb=!1;Tb=null;Rb.apply(Wb,arguments)}\nfunction Yb(a,b,c,d,e,f,g,h,k){Xb.apply(this,arguments);if(Sb){if(Sb){var l=Tb;Sb=!1;Tb=null}else throw Error(y(198));Ub||(Ub=!0,Vb=l)}}function Zb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function $b(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function ac(a){if(Zb(a)!==a)throw Error(y(188));}\nfunction bc(a){var b=a.alternate;if(!b){b=Zb(a);if(null===b)throw Error(y(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return ac(e),a;if(f===d)return ac(e),b;f=f.sibling}throw Error(y(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(y(189));}}if(c.alternate!==d)throw Error(y(190));}if(3!==c.tag)throw Error(y(188));return c.stateNode.current===c?a:b}function cc(a){a=bc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nfunction dc(a,b){for(var c=a.alternate;null!==b;){if(b===a||b===c)return!0;b=b.return}return!1}var ec,fc,gc,hc,ic=!1,jc=[],kc=null,lc=null,mc=null,nc=new Map,oc=new Map,pc=[],qc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction rc(a,b,c,d,e){return{blockedOn:a,domEventName:b,eventSystemFlags:c|16,nativeEvent:e,targetContainers:[d]}}function sc(a,b){switch(a){case \"focusin\":case \"focusout\":kc=null;break;case \"dragenter\":case \"dragleave\":lc=null;break;case \"mouseover\":case \"mouseout\":mc=null;break;case \"pointerover\":case \"pointerout\":nc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":oc.delete(b.pointerId)}}\nfunction tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a=rc(b,c,d,e,f),null!==b&&(b=Cb(b),null!==b&&fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction uc(a,b,c,d,e){switch(b){case \"focusin\":return kc=tc(kc,a,b,c,d,e),!0;case \"dragenter\":return lc=tc(lc,a,b,c,d,e),!0;case \"mouseover\":return mc=tc(mc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;nc.set(f,tc(nc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,oc.set(f,tc(oc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction vc(a){var b=wc(a.target);if(null!==b){var c=Zb(b);if(null!==c)if(b=c.tag,13===b){if(b=$b(c),null!==b){a.blockedOn=b;hc(a.lanePriority,function(){r.unstable_runWithPriority(a.priority,function(){gc(c)})});return}}else if(3===b&&c.stateNode.hydrate){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null!==c)return b=Cb(c),null!==b&&fc(b),a.blockedOn=c,!1;b.shift()}return!0}function zc(a,b,c){xc(a)&&c.delete(b)}\nfunction Ac(){for(ic=!1;0<jc.length;){var a=jc[0];if(null!==a.blockedOn){a=Cb(a.blockedOn);null!==a&&ec(a);break}for(var b=a.targetContainers;0<b.length;){var c=yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null!==c){a.blockedOn=c;break}b.shift()}null===a.blockedOn&&jc.shift()}null!==kc&&xc(kc)&&(kc=null);null!==lc&&xc(lc)&&(lc=null);null!==mc&&xc(mc)&&(mc=null);nc.forEach(zc);oc.forEach(zc)}\nfunction Bc(a,b){a.blockedOn===b&&(a.blockedOn=null,ic||(ic=!0,r.unstable_scheduleCallback(r.unstable_NormalPriority,Ac)))}\nfunction Cc(a){function b(b){return Bc(b,a)}if(0<jc.length){Bc(jc[0],a);for(var c=1;c<jc.length;c++){var d=jc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==kc&&Bc(kc,a);null!==lc&&Bc(lc,a);null!==mc&&Bc(mc,a);nc.forEach(b);oc.forEach(b);for(c=0;c<pc.length;c++)d=pc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<pc.length&&(c=pc[0],null===c.blockedOn);)vc(c),null===c.blockedOn&&pc.shift()}\nfunction Dc(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Ec={animationend:Dc(\"Animation\",\"AnimationEnd\"),animationiteration:Dc(\"Animation\",\"AnimationIteration\"),animationstart:Dc(\"Animation\",\"AnimationStart\"),transitionend:Dc(\"Transition\",\"TransitionEnd\")},Fc={},Gc={};\nfa&&(Gc=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Ec.animationend.animation,delete Ec.animationiteration.animation,delete Ec.animationstart.animation),\"TransitionEvent\"in window||delete Ec.transitionend.transition);function Hc(a){if(Fc[a])return Fc[a];if(!Ec[a])return a;var b=Ec[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Gc)return Fc[a]=b[c];return a}\nvar Ic=Hc(\"animationend\"),Jc=Hc(\"animationiteration\"),Kc=Hc(\"animationstart\"),Lc=Hc(\"transitionend\"),Mc=new Map,Nc=new Map,Oc=[\"abort\",\"abort\",Ic,\"animationEnd\",Jc,\"animationIteration\",Kc,\"animationStart\",\"canplay\",\"canPlay\",\"canplaythrough\",\"canPlayThrough\",\"durationchange\",\"durationChange\",\"emptied\",\"emptied\",\"encrypted\",\"encrypted\",\"ended\",\"ended\",\"error\",\"error\",\"gotpointercapture\",\"gotPointerCapture\",\"load\",\"load\",\"loadeddata\",\"loadedData\",\"loadedmetadata\",\"loadedMetadata\",\"loadstart\",\"loadStart\",\n\"lostpointercapture\",\"lostPointerCapture\",\"playing\",\"playing\",\"progress\",\"progress\",\"seeking\",\"seeking\",\"stalled\",\"stalled\",\"suspend\",\"suspend\",\"timeupdate\",\"timeUpdate\",Lc,\"transitionEnd\",\"waiting\",\"waiting\"];function Pc(a,b){for(var c=0;c<a.length;c+=2){var d=a[c],e=a[c+1];e=\"on\"+(e[0].toUpperCase()+e.slice(1));Nc.set(d,b);Mc.set(d,e);da(e,[d])}}var Qc=r.unstable_now;Qc();var F=8;\nfunction Rc(a){if(0!==(1&a))return F=15,1;if(0!==(2&a))return F=14,2;if(0!==(4&a))return F=13,4;var b=24&a;if(0!==b)return F=12,b;if(0!==(a&32))return F=11,32;b=192&a;if(0!==b)return F=10,b;if(0!==(a&256))return F=9,256;b=3584&a;if(0!==b)return F=8,b;if(0!==(a&4096))return F=7,4096;b=4186112&a;if(0!==b)return F=6,b;b=62914560&a;if(0!==b)return F=5,b;if(a&67108864)return F=4,67108864;if(0!==(a&134217728))return F=3,134217728;b=805306368&a;if(0!==b)return F=2,b;if(0!==(1073741824&a))return F=1,1073741824;\nF=8;return a}function Sc(a){switch(a){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}function Tc(a){switch(a){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(y(358,a));}}\nfunction Uc(a,b){var c=a.pendingLanes;if(0===c)return F=0;var d=0,e=0,f=a.expiredLanes,g=a.suspendedLanes,h=a.pingedLanes;if(0!==f)d=f,e=F=15;else if(f=c&134217727,0!==f){var k=f&~g;0!==k?(d=Rc(k),e=F):(h&=f,0!==h&&(d=Rc(h),e=F))}else f=c&~g,0!==f?(d=Rc(f),e=F):0!==h&&(d=Rc(h),e=F);if(0===d)return 0;d=31-Vc(d);d=c&((0>d?0:1<<d)<<1)-1;if(0!==b&&b!==d&&0===(b&g)){Rc(b);if(e<=F)return b;F=e}b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-Vc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction Wc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function Xc(a,b){switch(a){case 15:return 1;case 14:return 2;case 12:return a=Yc(24&~b),0===a?Xc(10,b):a;case 10:return a=Yc(192&~b),0===a?Xc(8,b):a;case 8:return a=Yc(3584&~b),0===a&&(a=Yc(4186112&~b),0===a&&(a=512)),a;case 2:return b=Yc(805306368&~b),0===b&&(b=268435456),b}throw Error(y(358,a));}function Yc(a){return a&-a}function Zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0<jc.length&&-1<qc.indexOf(a))a=rc(null,a,b,c,d),jc.push(a);else{var f=yc(a,b,c,d);if(null===f)e&&sc(a,d);else{if(e){if(-1<qc.indexOf(a)){a=rc(f,a,b,c,d);jc.push(a);return}if(uc(f,a,b,c,d))return;sc(a,d)}jd(a,b,d,null,c)}}}}\nfunction yc(a,b,c,d){var e=xb(d);e=wc(e);if(null!==e){var f=Zb(e);if(null===f)e=null;else{var g=f.tag;if(13===g){e=$b(f);if(null!==e)return e;e=null}else if(3===g){if(f.stateNode.hydrate)return 3===f.tag?f.stateNode.containerInfo:null;e=null}else f!==e&&(e=null)}}jd(a,b,d,e,c);return null}var kd=null,ld=null,md=null;\nfunction nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}function od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}m(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=m({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=m({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=m({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=m({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=m({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=m({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=m({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=m({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=m({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=m({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=m({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=m({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=fa&&\"CompositionEvent\"in window,be=null;fa&&\"documentMode\"in document&&(be=document.documentMode);var ce=fa&&\"TextEvent\"in window&&!be,de=fa&&(!ae||be&&8<be&&11>=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(fa){var xe;if(fa){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));a=re;if(Kb)a(b);else{Kb=!0;try{Gb(a,b)}finally{Kb=!1,Mb()}}}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge,Ie=Object.prototype.hasOwnProperty;\nfunction Je(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++)if(!Ie.call(b,c[d])||!He(a[c[d]],b[c[d]]))return!1;return!0}function Ke(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Le(a,b){var c=Ke(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nPc(\"cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange\".split(\" \"),\n0);Pc(\"drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel\".split(\" \"),1);Pc(Oc,2);for(var Ve=\"change selectionchange textInput compositionstart compositionend compositionupdate\".split(\" \"),We=0;We<Ve.length;We++)Nc.set(Ve[We],0);ea(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);\nea(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ea(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);ea(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);da(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));da(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));da(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);da(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));\nda(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));da(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var Xe=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),Ye=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(Xe));\nfunction Ze(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Yb(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;Ze(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;Ze(e,h,l);f=k}}}if(Ub)throw a=Vb,Ub=!1,Vb=null,a;}\nfunction G(a,b){var c=$e(b),d=a+\"__bubble\";c.has(d)||(af(b,a,2,!1),c.add(d))}var bf=\"_reactListening\"+Math.random().toString(36).slice(2);function cf(a){a[bf]||(a[bf]=!0,ba.forEach(function(b){Ye.has(b)||df(b,!1,a,null);df(b,!0,a,null)}))}\nfunction df(a,b,c,d){var e=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,f=c;\"selectionchange\"===a&&9!==c.nodeType&&(f=c.ownerDocument);if(null!==d&&!b&&Ye.has(a)){if(\"scroll\"!==a)return;e|=2;f=d}var g=$e(f),h=a+\"__\"+(b?\"capture\":\"bubble\");g.has(h)||(b&&(e|=4),af(f,a,e,b),g.add(h))}\nfunction af(a,b,c,d){var e=Nc.get(b);switch(void 0===e?2:e){case 0:e=gd;break;case 1:e=id;break;default:e=hd}c=e.bind(null,b,c,a);e=void 0;!Pb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction jd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Nb(function(){var d=f,e=xb(c),g=[];\na:{var h=Mc.get(a);if(void 0!==h){var k=td,x=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":x=\"focus\";k=Fd;break;case \"focusout\":x=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case Ic:case Jc:case Kc:k=Hd;break;case Lc:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var w=0!==(b&4),z=!w&&\"scroll\"===a,u=w?null!==h?h+\"Capture\":null:h;w=[];for(var t=d,q;null!==\nt;){q=t;var v=q.stateNode;5===q.tag&&null!==v&&(q=v,null!==u&&(v=Ob(t,u),null!=v&&w.push(ef(t,v,q))));if(z)break;t=t.return}0<w.length&&(h=new k(h,x,null,c,e),g.push({event:h,listeners:w}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&0===(b&16)&&(x=c.relatedTarget||c.fromElement)&&(wc(x)||x[ff]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(x=c.relatedTarget||c.toElement,k=d,x=x?wc(x):null,null!==\nx&&(z=Zb(x),x!==z||5!==x.tag&&6!==x.tag))x=null}else k=null,x=d;if(k!==x){w=Bd;v=\"onMouseLeave\";u=\"onMouseEnter\";t=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)w=Td,v=\"onPointerLeave\",u=\"onPointerEnter\",t=\"pointer\";z=null==k?h:ue(k);q=null==x?h:ue(x);h=new w(v,t+\"leave\",k,c,e);h.target=z;h.relatedTarget=q;v=null;wc(e)===d&&(w=new w(u,t+\"enter\",x,c,e),w.target=q,w.relatedTarget=z,v=w);z=v;if(k&&x)b:{w=k;u=x;t=0;for(q=w;q;q=gf(q))t++;q=0;for(v=u;v;v=gf(v))q++;for(;0<t-q;)w=gf(w),t--;for(;0<q-t;)u=\ngf(u),q--;for(;t--;){if(w===u||null!==u&&w===u.alternate)break b;w=gf(w);u=gf(u)}w=null}else w=null;null!==k&&hf(g,h,k,w,!1);null!==x&&null!==z&&hf(g,z,x,w,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var J=ve;else if(me(h))if(we)J=Fe;else{J=De;var K=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(J=Ee);if(J&&(J=J(a,d))){ne(g,J,c,e);break a}K&&K(a,h,d);\"focusout\"===a&&(K=h._wrapperState)&&\nK.controlled&&\"number\"===h.type&&bb(h,\"number\",h.value)}K=d?ue(d):window;switch(a){case \"focusin\":if(me(K)||\"true\"===K.contentEditable)Qe=K,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var Q;if(ae)b:{switch(a){case \"compositionstart\":var L=\"onCompositionStart\";break b;case \"compositionend\":L=\"onCompositionEnd\";break b;\ncase \"compositionupdate\":L=\"onCompositionUpdate\";break b}L=void 0}else ie?ge(a,c)&&(L=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(L=\"onCompositionStart\");L&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==L?\"onCompositionEnd\"===L&&ie&&(Q=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),K=oe(d,L),0<K.length&&(L=new Ld(L,a,null,c,e),g.push({event:L,listeners:K}),Q?L.data=Q:(Q=he(c),null!==Q&&(L.data=Q))));if(Q=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),0<d.length&&(e=new Ld(\"onBeforeInput\",\n\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=Q)}se(g,b)})}function ef(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Ob(a,c),null!=f&&d.unshift(ef(a,f,e)),f=Ob(a,b),null!=f&&d.push(ef(a,f,e)));a=a.return}return d}function gf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction hf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Ob(c,f),null!=k&&g.unshift(ef(c,k,h))):e||(k=Ob(c,f),null!=k&&g.push(ef(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}function jf(){}var kf=null,lf=null;function mf(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction nf(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var of=\"function\"===typeof setTimeout?setTimeout:void 0,pf=\"function\"===typeof clearTimeout?clearTimeout:void 0;function qf(a){1===a.nodeType?a.textContent=\"\":9===a.nodeType&&(a=a.body,null!=a&&(a.textContent=\"\"))}\nfunction rf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}function sf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var tf=0;function uf(a){return{$$typeof:Ga,toString:a,valueOf:a}}var vf=Math.random().toString(36).slice(2),wf=\"__reactFiber$\"+vf,xf=\"__reactProps$\"+vf,ff=\"__reactContainer$\"+vf,yf=\"__reactEvents$\"+vf;\nfunction wc(a){var b=a[wf];if(b)return b;for(var c=a.parentNode;c;){if(b=c[ff]||c[wf]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=sf(a);null!==a;){if(c=a[wf])return c;a=sf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[wf]||a[ff];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(y(33));}function Db(a){return a[xf]||null}\nfunction $e(a){var b=a[yf];void 0===b&&(b=a[yf]=new Set);return b}var zf=[],Af=-1;function Bf(a){return{current:a}}function H(a){0>Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;a<b.length;a++){var c=b[a];do c=c(!0);while(null!==c)}});ag=null}catch(c){throw null!==ag&&(ag=ag.slice(a+1)),Of(Uf,ig),c;}finally{cg=!1}}}var kg=ra.ReactCurrentBatchConfig;function lg(a,b){if(a&&a.defaultProps){b=m({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}var mg=Bf(null),ng=null,og=null,pg=null;function qg(){pg=og=ng=null}\nfunction rg(a){var b=mg.current;H(mg);a.type._context._currentValue=b}function sg(a,b){for(;null!==a;){var c=a.alternate;if((a.childLanes&b)===b)if(null===c||(c.childLanes&b)===b)break;else c.childLanes|=b;else a.childLanes|=b,null!==c&&(c.childLanes|=b);a=a.return}}function tg(a,b){ng=a;pg=og=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(ug=!0),a.firstContext=null)}\nfunction vg(a,b){if(pg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)pg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===og){if(null===ng)throw Error(y(308));og=b;ng.dependencies={lanes:0,firstContext:b,responders:null}}else og=og.next=b}return a._currentValue}var wg=!1;function xg(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}\nfunction yg(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function zg(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}function Ag(a,b){a=a.updateQueue;if(null!==a){a=a.shared;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}}\nfunction Bg(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction Cg(a,b,c,d){var e=a.updateQueue;wg=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var n=a.alternate;if(null!==n){n=n.updateQueue;var A=n.lastBaseUpdate;A!==g&&(null===A?n.firstBaseUpdate=l:A.next=l,n.lastBaseUpdate=k)}}if(null!==f){A=e.baseState;g=0;n=l=k=null;do{h=f.lane;var p=f.eventTime;if((d&h)===h){null!==n&&(n=n.next={eventTime:p,lane:0,tag:f.tag,payload:f.payload,callback:f.callback,\nnext:null});a:{var C=a,x=f;h=b;p=c;switch(x.tag){case 1:C=x.payload;if(\"function\"===typeof C){A=C.call(p,A,h);break a}A=C;break a;case 3:C.flags=C.flags&-4097|64;case 0:C=x.payload;h=\"function\"===typeof C?C.call(p,A,h):C;if(null===h||void 0===h)break a;A=m({},A,h);break a;case 2:wg=!0}}null!==f.callback&&(a.flags|=32,h=e.effects,null===h?e.effects=[f]:h.push(f))}else p={eventTime:p,lane:h,tag:f.tag,payload:f.payload,callback:f.callback,next:null},null===n?(l=n=p,k=A):n=n.next=p,g|=h;f=f.next;if(null===\nf)if(h=e.shared.pending,null===h)break;else f=h.next,h.next=null,e.lastBaseUpdate=h,e.shared.pending=null}while(1);null===n&&(k=A);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=n;Dg|=g;a.lanes=g;a.memoizedState=A}}function Eg(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(y(191,e));e.call(d)}}}var Fg=(new aa.Component).refs;\nfunction Gg(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:m({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar Kg={isMounted:function(a){return(a=a._reactInternals)?Zb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=Hg(),e=Ig(a),f=zg(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);Ag(a,f);Jg(a,e,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=Hg(),e=Ig(a),f=zg(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);Ag(a,f);Jg(a,e,d)},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=Hg(),d=Ig(a),e=zg(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=\nb);Ag(a,e);Jg(a,d,c)}};function Lg(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Je(c,d)||!Je(e,f):!0}\nfunction Mg(a,b,c){var d=!1,e=Cf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=vg(f):(e=Ff(b)?Df:M.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Ef(a,e):Cf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Kg;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Ng(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Kg.enqueueReplaceState(b,b.state,null)}\nfunction Og(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=Fg;xg(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=vg(f):(f=Ff(b)?Df:M.current,e.context=Ef(a,f));Cg(a,c,e,d);e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Gg(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||\n(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Kg.enqueueReplaceState(e,e.state,null),Cg(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4)}var Pg=Array.isArray;\nfunction Qg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(y(309));var d=c.stateNode}if(!d)throw Error(y(147,a));var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===Fg&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}if(\"string\"!==typeof a)throw Error(y(284));if(!c._owner)throw Error(y(290,a));}return a}\nfunction Rg(a,b){if(\"textarea\"!==a.type)throw Error(y(31,\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b));}\nfunction Sg(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.flags=8}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Tg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags=2,\nc):d;b.flags=2;return c}function g(b){a&&null===b.alternate&&(b.flags=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Ug(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){if(null!==b&&b.elementType===c.type)return d=e(b,c.props),d.ref=Qg(a,b,c),d.return=a,d;d=Vg(c.type,c.key,c.props,null,a.mode,d);d.ref=Qg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||b.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=\nWg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function n(a,b,c,d,f){if(null===b||7!==b.tag)return b=Xg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function A(a,b,c){if(\"string\"===typeof b||\"number\"===typeof b)return b=Ug(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case sa:return c=Vg(b.type,b.key,b.props,null,a.mode,c),c.ref=Qg(a,null,b),c.return=a,c;case ta:return b=Wg(b,a.mode,c),b.return=a,b}if(Pg(b)||La(b))return b=Xg(b,\na.mode,c,null),b.return=a,b;Rg(a,b)}return null}function p(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case sa:return c.key===e?c.type===ua?n(a,b,c.props.children,d,e):k(a,b,c,d):null;case ta:return c.key===e?l(a,b,c,d):null}if(Pg(c)||La(c))return null!==e?null:n(a,b,c,d,null);Rg(a,c)}return null}function C(a,b,c,d,e){if(\"string\"===typeof d||\"number\"===typeof d)return a=a.get(c)||\nnull,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case sa:return a=a.get(null===d.key?c:d.key)||null,d.type===ua?n(b,a,d.props.children,e,d.key):k(b,a,d,e);case ta:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e)}if(Pg(d)||La(d))return a=a.get(c)||null,n(b,a,d,e,null);Rg(b,d)}return null}function x(e,g,h,k){for(var l=null,t=null,u=g,z=g=0,q=null;null!==u&&z<h.length;z++){u.index>z?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;z<h.length;z++)u=A(e,h[z],k),null!==u&&(g=f(u,g,z),null===t?l=u:t.sibling=u,t=u);return l}for(u=d(e,u);z<h.length;z++)q=C(u,e,z,h[z],k),null!==q&&(a&&null!==q.alternate&&u.delete(null===q.key?z:q.key),g=f(q,g,z),null===t?l=q:t.sibling=q,t=q);a&&u.forEach(function(a){return b(e,a)});return l}function w(e,g,h,k){var l=La(h);if(\"function\"!==typeof l)throw Error(y(150));h=l.call(h);if(null==\nh)throw Error(y(151));for(var t=l=null,u=g,z=g=0,q=null,n=h.next();null!==u&&!n.done;z++,n=h.next()){u.index>z?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;a<th.length;a++)th[a]._workInProgressVersionPrimary=null;th.length=0}var vh=ra.ReactCurrentDispatcher,wh=ra.ReactCurrentBatchConfig,xh=0,R=null,S=null,T=null,yh=!1,zh=!1;function Ah(){throw Error(y(321));}function Bh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Ch(a,b,c,d,e,f){xh=f;R=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;vh.current=null===a||null===a.memoizedState?Dh:Eh;a=c(d,e);if(zh){f=0;do{zh=!1;if(!(25>f))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0<h;){var k=31-Vc(h),v=1<<k;d[k]|=a;h&=~v}}},[c,b,d]);h.useEffect(function(){return d(b._source,function(){var a=p.getSnapshot,c=p.setSnapshot;try{c(a(b._source));var d=Ig(w);e.mutableReadLanes|=d&e.pendingLanes}catch(q){c(function(){throw q;})}})},[b,d]);He(C,c)&&He(x,b)&&He(A,d)||(a={pending:null,dispatch:null,lastRenderedReducer:Jh,lastRenderedState:n},a.dispatch=l=Oh.bind(null,R,a),k.queue=a,k.baseQueue=null,n=Mh(e,b,c),k.memoizedState=k.baseState=n);return n}\nfunction Ph(a,b,c){var d=Ih();return Nh(d,a,b,c)}function Qh(a){var b=Hh();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={pending:null,dispatch:null,lastRenderedReducer:Jh,lastRenderedState:a};a=a.dispatch=Oh.bind(null,R,a);return[b.memoizedState,a]}\nfunction Rh(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=R.updateQueue;null===b?(b={lastEffect:null},R.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function Sh(a){var b=Hh();a={current:a};return b.memoizedState=a}function Th(){return Ih().memoizedState}function Uh(a,b,c,d){var e=Hh();R.flags|=a;e.memoizedState=Rh(1|b,c,void 0,void 0===d?null:d)}\nfunction Vh(a,b,c,d){var e=Ih();d=void 0===d?null:d;var f=void 0;if(null!==S){var g=S.memoizedState;f=g.destroy;if(null!==d&&Bh(d,g.deps)){Rh(b,c,f,d);return}}R.flags|=a;e.memoizedState=Rh(1|b,c,f,d)}function Wh(a,b){return Uh(516,4,a,b)}function Xh(a,b){return Vh(516,4,a,b)}function Yh(a,b){return Vh(4,2,a,b)}function Zh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}\nfunction $h(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Vh(4,2,Zh.bind(null,b,a),c)}function ai(){}function bi(a,b){var c=Ih();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Bh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}function ci(a,b){var c=Ih();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Bh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}\nfunction di(a,b){var c=eg();gg(98>c?98:c,function(){a(!0)});gg(97<c?97:c,function(){var c=wh.transition;wh.transition=1;try{a(!1),b()}finally{wh.transition=c}})}\nfunction Oh(a,b,c){var d=Hg(),e=Ig(a),f={lane:e,action:c,eagerReducer:null,eagerState:null,next:null},g=b.pending;null===g?f.next=f:(f.next=g.next,g.next=f);b.pending=f;g=a.alternate;if(a===R||null!==g&&g===R)zh=yh=!0;else{if(0===a.lanes&&(null===g||0===g.lanes)&&(g=b.lastRenderedReducer,null!==g))try{var h=b.lastRenderedState,k=g(h,c);f.eagerReducer=g;f.eagerState=k;if(He(k,h))return}catch(l){}finally{}Jg(a,e,d)}}\nvar Gh={readContext:vg,useCallback:Ah,useContext:Ah,useEffect:Ah,useImperativeHandle:Ah,useLayoutEffect:Ah,useMemo:Ah,useReducer:Ah,useRef:Ah,useState:Ah,useDebugValue:Ah,useDeferredValue:Ah,useTransition:Ah,useMutableSource:Ah,useOpaqueIdentifier:Ah,unstable_isNewReconciler:!1},Dh={readContext:vg,useCallback:function(a,b){Hh().memoizedState=[a,void 0===b?null:b];return a},useContext:vg,useEffect:Wh,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Uh(4,2,Zh.bind(null,\nb,a),c)},useLayoutEffect:function(a,b){return Uh(4,2,a,b)},useMemo:function(a,b){var c=Hh();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Hh();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={pending:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=Oh.bind(null,R,a);return[d.memoizedState,a]},useRef:Sh,useState:Qh,useDebugValue:ai,useDeferredValue:function(a){var b=Qh(a),c=b[0],d=b[1];Wh(function(){var b=wh.transition;\nwh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Qh(!1),b=a[0];a=di.bind(null,a[1]);Sh(a);return[a,b]},useMutableSource:function(a,b,c){var d=Hh();d.memoizedState={refs:{getSnapshot:b,setSnapshot:null},source:a,subscribe:c};return Nh(d,a,b,c)},useOpaqueIdentifier:function(){if(lh){var a=!1,b=uf(function(){a||(a=!0,c(\"r:\"+(tf++).toString(36)));throw Error(y(355));}),c=Qh(b)[1];0===(R.mode&2)&&(R.flags|=516,Rh(5,function(){c(\"r:\"+(tf++).toString(36))},\nvoid 0,null));return b}b=\"r:\"+(tf++).toString(36);Qh(b);return b},unstable_isNewReconciler:!1},Eh={readContext:vg,useCallback:bi,useContext:vg,useEffect:Xh,useImperativeHandle:$h,useLayoutEffect:Yh,useMemo:ci,useReducer:Kh,useRef:Th,useState:function(){return Kh(Jh)},useDebugValue:ai,useDeferredValue:function(a){var b=Kh(Jh),c=b[0],d=b[1];Xh(function(){var b=wh.transition;wh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Kh(Jh)[0];return[Th().current,\na]},useMutableSource:Ph,useOpaqueIdentifier:function(){return Kh(Jh)[0]},unstable_isNewReconciler:!1},Fh={readContext:vg,useCallback:bi,useContext:vg,useEffect:Xh,useImperativeHandle:$h,useLayoutEffect:Yh,useMemo:ci,useReducer:Lh,useRef:Th,useState:function(){return Lh(Jh)},useDebugValue:ai,useDeferredValue:function(a){var b=Lh(Jh),c=b[0],d=b[1];Xh(function(){var b=wh.transition;wh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Lh(Jh)[0];return[Th().current,\na]},useMutableSource:Ph,useOpaqueIdentifier:function(){return Lh(Jh)[0]},unstable_isNewReconciler:!1},ei=ra.ReactCurrentOwner,ug=!1;function fi(a,b,c,d){b.child=null===a?Zg(b,null,c,d):Yg(b,a.child,c,d)}function gi(a,b,c,d,e){c=c.render;var f=b.ref;tg(b,e);d=Ch(a,b,c,d,f,e);if(null!==a&&!ug)return b.updateQueue=a.updateQueue,b.flags&=-517,a.lanes&=~e,hi(a,b,e);b.flags|=1;fi(a,b,d,e);return b.child}\nfunction ii(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!ji(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,ki(a,b,g,d,e,f);a=Vg(c.type,null,d,b,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(0===(e&f)&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:Je,c(e,d)&&a.ref===b.ref))return hi(a,b,f);b.flags|=1;a=Tg(g,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction ki(a,b,c,d,e,f){if(null!==a&&Je(a.memoizedProps,d)&&a.ref===b.ref)if(ug=!1,0!==(f&e))0!==(a.flags&16384)&&(ug=!0);else return b.lanes=a.lanes,hi(a,b,f);return li(a,b,c,d,f)}\nfunction mi(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode||\"unstable-defer-without-hiding\"===d.mode)if(0===(b.mode&4))b.memoizedState={baseLanes:0},ni(b,c);else if(0!==(c&1073741824))b.memoizedState={baseLanes:0},ni(b,null!==f?f.baseLanes:c);else return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a},ni(b,a),null;else null!==f?(d=f.baseLanes|c,b.memoizedState=null):d=c,ni(b,d);fi(a,b,e,c);return b.child}\nfunction oi(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=128}function li(a,b,c,d,e){var f=Ff(c)?Df:M.current;f=Ef(b,f);tg(b,e);c=Ch(a,b,c,d,f,e);if(null!==a&&!ug)return b.updateQueue=a.updateQueue,b.flags&=-517,a.lanes&=~e,hi(a,b,e);b.flags|=1;fi(a,b,c,e);return b.child}\nfunction pi(a,b,c,d,e){if(Ff(c)){var f=!0;Jf(b)}else f=!1;tg(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),Mg(b,c,d),Og(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=vg(l):(l=Ff(c)?Df:M.current,l=Ef(b,l));var n=c.getDerivedStateFromProps,A=\"function\"===typeof n||\"function\"===typeof g.getSnapshotBeforeUpdate;A||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Ng(b,g,d,l);wg=!1;var p=b.memoizedState;g.state=p;Cg(b,d,g,e);k=b.memoizedState;h!==d||p!==k||N.current||wg?(\"function\"===typeof n&&(Gg(b,c,n,d),k=b.memoizedState),(h=wg||Lg(b,c,h,d,p,k,l))?(A||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===\ntypeof g.componentDidMount&&(b.flags|=4)):(\"function\"===typeof g.componentDidMount&&(b.flags|=4),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4),d=!1)}else{g=b.stateNode;yg(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:lg(b.type,h);g.props=l;A=b.pendingProps;p=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=vg(k):(k=Ff(c)?Df:M.current,k=Ef(b,k));var C=c.getDerivedStateFromProps;(n=\"function\"===typeof C||\n\"function\"===typeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==A||p!==k)&&Ng(b,g,d,k);wg=!1;p=b.memoizedState;g.state=p;Cg(b,d,g,e);var x=b.memoizedState;h!==A||p!==x||N.current||wg?(\"function\"===typeof C&&(Gg(b,c,C,d),x=b.memoizedState),(l=wg||Lg(b,c,l,d,p,x,k))?(n||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,\nx,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,x,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=256)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=256),b.memoizedProps=d,b.memoizedState=x),g.props=d,g.state=x,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||\nh===a.memoizedProps&&p===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=256),d=!1)}return qi(a,b,c,d,f,e)}\nfunction qi(a,b,c,d,e,f){oi(a,b);var g=0!==(b.flags&64);if(!d&&!g)return e&&Kf(b,c,!1),hi(a,b,f);d=b.stateNode;ei.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Yg(b,a.child,null,f),b.child=Yg(b,null,h,f)):fi(a,b,h,f);b.memoizedState=d.state;e&&Kf(b,c,!0);return b.child}function ri(a){var b=a.stateNode;b.pendingContext?Hf(a,b.pendingContext,b.pendingContext!==b.context):b.context&&Hf(a,b.context,!1);eh(a,b.containerInfo)}\nvar si={dehydrated:null,retryLane:0};\nfunction ti(a,b,c){var d=b.pendingProps,e=P.current,f=!1,g;(g=0!==(b.flags&64))||(g=null!==a&&null===a.memoizedState?!1:0!==(e&2));g?(f=!0,b.flags&=-65):null!==a&&null===a.memoizedState||void 0===d.fallback||!0===d.unstable_avoidThisFallback||(e|=1);I(P,e&1);if(null===a){void 0!==d.fallback&&ph(b);a=d.children;e=d.fallback;if(f)return a=ui(b,a,e,c),b.child.memoizedState={baseLanes:c},b.memoizedState=si,a;if(\"number\"===typeof d.unstable_expectedLoadTime)return a=ui(b,a,e,c),b.child.memoizedState={baseLanes:c},\nb.memoizedState=si,b.lanes=33554432,a;c=vi({mode:\"visible\",children:a},b.mode,c,null);c.return=b;return b.child=c}if(null!==a.memoizedState){if(f)return d=wi(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?{baseLanes:c}:{baseLanes:e.baseLanes|c},f.childLanes=a.childLanes&~c,b.memoizedState=si,d;c=xi(a,b,d.children,c);b.memoizedState=null;return c}if(f)return d=wi(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?{baseLanes:c}:\n{baseLanes:e.baseLanes|c},f.childLanes=a.childLanes&~c,b.memoizedState=si,d;c=xi(a,b,d.children,c);b.memoizedState=null;return c}function ui(a,b,c,d){var e=a.mode,f=a.child;b={mode:\"hidden\",children:b};0===(e&2)&&null!==f?(f.childLanes=0,f.pendingProps=b):f=vi(b,e,0,null);c=Xg(c,e,d,null);f.return=a;c.return=a;f.sibling=c;a.child=f;return c}\nfunction xi(a,b,c,d){var e=a.child;a=e.sibling;c=Tg(e,{mode:\"visible\",children:c});0===(b.mode&2)&&(c.lanes=d);c.return=b;c.sibling=null;null!==a&&(a.nextEffect=null,a.flags=8,b.firstEffect=b.lastEffect=a);return b.child=c}\nfunction wi(a,b,c,d,e){var f=b.mode,g=a.child;a=g.sibling;var h={mode:\"hidden\",children:c};0===(f&2)&&b.child!==g?(c=b.child,c.childLanes=0,c.pendingProps=h,g=c.lastEffect,null!==g?(b.firstEffect=c.firstEffect,b.lastEffect=g,g.nextEffect=null):b.firstEffect=b.lastEffect=null):c=Tg(g,h);null!==a?d=Tg(a,d):(d=Xg(d,f,e,null),d.flags|=2);d.return=b;c.return=b;c.sibling=d;b.child=c;return d}function yi(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);sg(a.return,b)}\nfunction zi(a,b,c,d,e,f){var g=a.memoizedState;null===g?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e,lastEffect:f}:(g.isBackwards=b,g.rendering=null,g.renderingStartTime=0,g.last=d,g.tail=c,g.tailMode=e,g.lastEffect=f)}\nfunction Ai(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;fi(a,b,d.children,c);d=P.current;if(0!==(d&2))d=d&1|2,b.flags|=64;else{if(null!==a&&0!==(a.flags&64))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&yi(a,c);else if(19===a.tag)yi(a,c);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}I(P,d);if(0===(b.mode&2))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===ih(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);zi(b,!1,e,c,f,b.lastEffect);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===ih(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}zi(b,!0,c,null,f,b.lastEffect);break;case \"together\":zi(b,!1,null,null,void 0,b.lastEffect);break;default:b.memoizedState=null}return b.child}\nfunction hi(a,b,c){null!==a&&(b.dependencies=a.dependencies);Dg|=b.lanes;if(0!==(c&b.childLanes)){if(null!==a&&b.child!==a.child)throw Error(y(153));if(null!==b.child){a=b.child;c=Tg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Tg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}return null}var Bi,Ci,Di,Ei;\nBi=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Ci=function(){};\nDi=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;dh(ah.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"option\":e=eb(a,e);d=eb(a,d);f=[];break;case \"select\":e=m({},e,{value:void 0});d=m({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=jf)}vb(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===\nl){var h=e[l];for(g in h)h.hasOwnProperty(g)&&(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ca.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||\n(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,c)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ca.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&G(\"scroll\",a),f||h===k||(f=[])):\"object\"===typeof k&&null!==k&&k.$$typeof===Ga?k.toString():(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",\nc);var l=f;if(b.updateQueue=l)b.flags|=4}};Ei=function(a,b,c,d){c!==d&&(b.flags|=4)};function Fi(a,b){if(!lh)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction Gi(a,b,c){var d=b.pendingProps;switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return Ff(b.type)&&Gf(),null;case 3:fh();H(N);H(M);uh();d=b.stateNode;d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)rh(b)?b.flags|=4:d.hydrate||(b.flags|=256);Ci(b);return null;case 5:hh(b);var e=dh(ch.current);c=b.type;if(null!==a&&null!=b.stateNode)Di(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=128);else{if(!d){if(null===\nb.stateNode)throw Error(y(166));return null}a=dh(ah.current);if(rh(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[wf]=b;d[xf]=f;switch(c){case \"dialog\":G(\"cancel\",d);G(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",d);break;case \"video\":case \"audio\":for(a=0;a<Xe.length;a++)G(Xe[a],d);break;case \"source\":G(\"error\",d);break;case \"img\":case \"image\":case \"link\":G(\"error\",d);G(\"load\",d);break;case \"details\":G(\"toggle\",d);break;case \"input\":Za(d,f);G(\"invalid\",d);break;case \"select\":d._wrapperState=\n{wasMultiple:!!f.multiple};G(\"invalid\",d);break;case \"textarea\":hb(d,f),G(\"invalid\",d)}vb(c,f);a=null;for(var g in f)f.hasOwnProperty(g)&&(e=f[g],\"children\"===g?\"string\"===typeof e?d.textContent!==e&&(a=[\"children\",e]):\"number\"===typeof e&&d.textContent!==\"\"+e&&(a=[\"children\",\"\"+e]):ca.hasOwnProperty(g)&&null!=e&&\"onScroll\"===g&&G(\"scroll\",d));switch(c){case \"input\":Va(d);cb(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=\njf)}d=a;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;a===kb.html&&(a=lb(c));a===kb.html?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<Xe.length;e++)G(Xe[e],a);e=d;break;case \"source\":G(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":G(\"error\",a);G(\"load\",a);e=d;break;case \"details\":G(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);G(\"invalid\",a);break;case \"option\":e=eb(a,d);break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=m({},d,{value:void 0});G(\"invalid\",a);break;case \"textarea\":hb(a,d);e=\ngb(a,d);G(\"invalid\",a);break;default:e=d}vb(c,e);var h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?tb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&ob(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==c||\"\"!==k)&&pb(a,k):\"number\"===typeof k&&pb(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ca.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&G(\"scroll\",a):null!=k&&qa(a,f,k,g))}switch(c){case \"input\":Va(a);cb(a,d,!1);\nbreak;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=jf)}mf(c,d)&&(b.flags|=4)}null!==b.ref&&(b.flags|=128)}return null;case 6:if(a&&null!=b.stateNode)Ei(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(y(166));\nc=dh(ch.current);dh(ah.current);rh(b)?(d=b.stateNode,c=b.memoizedProps,d[wf]=b,d.nodeValue!==c&&(b.flags|=4)):(d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[wf]=b,b.stateNode=d)}return null;case 13:H(P);d=b.memoizedState;if(0!==(b.flags&64))return b.lanes=c,b;d=null!==d;c=!1;null===a?void 0!==b.memoizedProps.fallback&&rh(b):c=null!==a.memoizedState;if(d&&!c&&0!==(b.mode&2))if(null===a&&!0!==b.memoizedProps.unstable_avoidThisFallback||0!==(P.current&1))0===V&&(V=3);else{if(0===V||3===V)V=\n4;null===U||0===(Dg&134217727)&&0===(Hi&134217727)||Ii(U,W)}if(d||c)b.flags|=4;return null;case 4:return fh(),Ci(b),null===a&&cf(b.stateNode.containerInfo),null;case 10:return rg(b),null;case 17:return Ff(b.type)&&Gf(),null;case 19:H(P);d=b.memoizedState;if(null===d)return null;f=0!==(b.flags&64);g=d.rendering;if(null===g)if(f)Fi(d,!1);else{if(0!==V||null!==a&&0!==(a.flags&64))for(a=b.child;null!==a;){g=ih(a);if(null!==g){b.flags|=64;Fi(d,!1);f=g.updateQueue;null!==f&&(b.updateQueue=f,b.flags|=4);\nnull===d.lastEffect&&(b.firstEffect=null);b.lastEffect=d.lastEffect;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=2,f.nextEffect=null,f.firstEffect=null,f.lastEffect=null,g=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,\nf.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;I(P,P.current&1|2);return b.child}a=a.sibling}null!==d.tail&&O()>Ji&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;e<f.length;e+=\n2){var g=f[e],h=f[e+1];\"style\"===g?tb(c,h):\"dangerouslySetInnerHTML\"===g?ob(c,h):\"children\"===g?pb(c,h):qa(c,g,h,b)}switch(a){case \"input\":ab(c,d);break;case \"textarea\":ib(c,d);break;case \"select\":a=c._wrapperState.wasMultiple,c._wrapperState.wasMultiple=!!d.multiple,f=d.value,null!=f?fb(c,!!d.multiple,f,!1):a!==!!d.multiple&&(null!=d.defaultValue?fb(c,!!d.multiple,d.defaultValue,!0):fb(c,!!d.multiple,d.multiple?[]:\"\",!1))}}}return;case 6:if(null===b.stateNode)throw Error(y(162));b.stateNode.nodeValue=\nb.memoizedProps;return;case 3:c=b.stateNode;c.hydrate&&(c.hydrate=!1,Cc(c.containerInfo));return;case 12:return;case 13:null!==b.memoizedState&&(jj=O(),aj(b.child,!0));kj(b);return;case 19:kj(b);return;case 17:return;case 23:case 24:aj(b,null!==b.memoizedState);return}throw Error(y(163));}function kj(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Ui);b.forEach(function(b){var d=lj.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction mj(a,b){return null!==a&&(a=a.memoizedState,null===a||null!==a.dehydrated)?(b=b.memoizedState,null!==b&&null===b.dehydrated):!1}var nj=Math.ceil,oj=ra.ReactCurrentDispatcher,pj=ra.ReactCurrentOwner,X=0,U=null,Y=null,W=0,qj=0,rj=Bf(0),V=0,sj=null,tj=0,Dg=0,Hi=0,uj=0,vj=null,jj=0,Ji=Infinity;function wj(){Ji=O()+500}var Z=null,Qi=!1,Ri=null,Ti=null,xj=!1,yj=null,zj=90,Aj=[],Bj=[],Cj=null,Dj=0,Ej=null,Fj=-1,Gj=0,Hj=0,Ij=null,Jj=!1;function Hg(){return 0!==(X&48)?O():-1!==Fj?Fj:Fj=O()}\nfunction Ig(a){a=a.mode;if(0===(a&2))return 1;if(0===(a&4))return 99===eg()?1:2;0===Gj&&(Gj=tj);if(0!==kg.transition){0!==Hj&&(Hj=null!==vj?vj.pendingLanes:0);a=Gj;var b=4186112&~Hj;b&=-b;0===b&&(a=4186112&~a,b=a&-a,0===b&&(b=8192));return b}a=eg();0!==(X&4)&&98===a?a=Xc(12,Gj):(a=Sc(a),a=Xc(a,Gj));return a}\nfunction Jg(a,b,c){if(50<Dj)throw Dj=0,Ej=null,Error(y(185));a=Kj(a,b);if(null===a)return null;$c(a,b,c);a===U&&(Hi|=b,4===V&&Ii(a,W));var d=eg();1===b?0!==(X&8)&&0===(X&48)?Lj(a):(Mj(a,c),0===X&&(wj(),ig())):(0===(X&4)||98!==d&&99!==d||(null===Cj?Cj=new Set([a]):Cj.add(a)),Mj(a,c));vj=a}function Kj(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}\nfunction Mj(a,b){for(var c=a.callbackNode,d=a.suspendedLanes,e=a.pingedLanes,f=a.expirationTimes,g=a.pendingLanes;0<g;){var h=31-Vc(g),k=1<<h,l=f[h];if(-1===l){if(0===(k&d)||0!==(k&e)){l=b;Rc(k);var n=F;f[h]=10<=n?l+250:6<=n?l+5E3:-1}}else l<=b&&(a.expiredLanes|=k);g&=~k}d=Uc(a,a===U?W:0);b=F;if(0===d)null!==c&&(c!==Zf&&Pf(c),a.callbackNode=null,a.callbackPriority=0);else{if(null!==c){if(a.callbackPriority===b)return;c!==Zf&&Pf(c)}15===b?(c=Lj.bind(null,a),null===ag?(ag=[c],bg=Of(Uf,jg)):ag.push(c),\nc=Zf):14===b?c=hg(99,Lj.bind(null,a)):(c=Tc(b),c=hg(c,Nj.bind(null,a)));a.callbackPriority=b;a.callbackNode=c}}\nfunction Nj(a){Fj=-1;Hj=Gj=0;if(0!==(X&48))throw Error(y(327));var b=a.callbackNode;if(Oj()&&a.callbackNode!==b)return null;var c=Uc(a,a===U?W:0);if(0===c)return null;var d=c;var e=X;X|=16;var f=Pj();if(U!==a||W!==d)wj(),Qj(a,d);do try{Rj();break}catch(h){Sj(a,h)}while(1);qg();oj.current=f;X=e;null!==Y?d=0:(U=null,W=0,d=V);if(0!==(tj&Hi))Qj(a,0);else if(0!==d){2===d&&(X|=64,a.hydrate&&(a.hydrate=!1,qf(a.containerInfo)),c=Wc(a),0!==c&&(d=Tj(a,c)));if(1===d)throw b=sj,Qj(a,0),Ii(a,c),Mj(a,O()),b;a.finishedWork=\na.current.alternate;a.finishedLanes=c;switch(d){case 0:case 1:throw Error(y(345));case 2:Uj(a);break;case 3:Ii(a,c);if((c&62914560)===c&&(d=jj+500-O(),10<d)){if(0!==Uc(a,0))break;e=a.suspendedLanes;if((e&c)!==c){Hg();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=of(Uj.bind(null,a),d);break}Uj(a);break;case 4:Ii(a,c);if((c&4186112)===c)break;d=a.eventTimes;for(e=-1;0<c;){var g=31-Vc(c);f=1<<g;g=d[g];g>e&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10<c){a.timeoutHandle=of(Uj.bind(null,a),c);break}Uj(a);break;case 5:Uj(a);break;default:throw Error(y(329));}}Mj(a,O());return a.callbackNode===b?Nj.bind(null,a):null}function Ii(a,b){b&=~uj;b&=~Hi;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-Vc(b),d=1<<c;a[c]=-1;b&=~d}}\nfunction Lj(a){if(0!==(X&48))throw Error(y(327));Oj();if(a===U&&0!==(a.expiredLanes&W)){var b=W;var c=Tj(a,b);0!==(tj&Hi)&&(b=Uc(a,b),c=Tj(a,b))}else b=Uc(a,0),c=Tj(a,b);0!==a.tag&&2===c&&(X|=64,a.hydrate&&(a.hydrate=!1,qf(a.containerInfo)),b=Wc(a),0!==b&&(c=Tj(a,b)));if(1===c)throw c=sj,Qj(a,0),Ii(a,b),Mj(a,O()),c;a.finishedWork=a.current.alternate;a.finishedLanes=b;Uj(a);Mj(a,O());return null}\nfunction Vj(){if(null!==Cj){var a=Cj;Cj=null;a.forEach(function(a){a.expiredLanes|=24&a.pendingLanes;Mj(a,O())})}ig()}function Wj(a,b){var c=X;X|=1;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}}function Xj(a,b){var c=X;X&=-2;X|=8;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}}function ni(a,b){I(rj,qj);qj|=b;tj|=b}function Ki(){qj=rj.current;H(rj)}\nfunction Qj(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,pf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&Gf();break;case 3:fh();H(N);H(M);uh();break;case 5:hh(d);break;case 4:fh();break;case 13:H(P);break;case 19:H(P);break;case 10:rg(d);break;case 23:case 24:Ki()}c=c.return}U=a;Y=Tg(a.current,null);W=qj=tj=b;V=0;sj=null;uj=Hi=Dg=0}\nfunction Sj(a,b){do{var c=Y;try{qg();vh.current=Gh;if(yh){for(var d=R.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}yh=!1}xh=0;T=S=R=null;zh=!1;pj.current=null;if(null===c||null===c.return){V=1;sj=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=W;h.flags|=2048;h.firstEffect=h.lastEffect=null;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k;if(0===(h.mode&2)){var n=h.alternate;n?(h.updateQueue=n.updateQueue,h.memoizedState=n.memoizedState,h.lanes=n.lanes):\n(h.updateQueue=null,h.memoizedState=null)}var A=0!==(P.current&1),p=g;do{var C;if(C=13===p.tag){var x=p.memoizedState;if(null!==x)C=null!==x.dehydrated?!0:!1;else{var w=p.memoizedProps;C=void 0===w.fallback?!1:!0!==w.unstable_avoidThisFallback?!0:A?!1:!0}}if(C){var z=p.updateQueue;if(null===z){var u=new Set;u.add(l);p.updateQueue=u}else z.add(l);if(0===(p.mode&2)){p.flags|=64;h.flags|=16384;h.flags&=-2981;if(1===h.tag)if(null===h.alternate)h.tag=17;else{var t=zg(-1,1);t.tag=2;Ag(h,t)}h.lanes|=1;break a}k=\nvoid 0;h=b;var q=f.pingCache;null===q?(q=f.pingCache=new Oi,k=new Set,q.set(l,k)):(k=q.get(l),void 0===k&&(k=new Set,q.set(l,k)));if(!k.has(h)){k.add(h);var v=Yj.bind(null,f,l,h);l.then(v,v)}p.flags|=4096;p.lanes=b;break a}p=p.return}while(null!==p);k=Error((Ra(h.type)||\"A React component\")+\" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1<b.flags&&(null!==\na.lastEffect?a.lastEffect.nextEffect=b:a.firstEffect=b,a.lastEffect=b))}else{c=Li(b);if(null!==c){c.flags&=2047;Y=c;return}null!==a&&(a.firstEffect=a.lastEffect=null,a.flags|=2048)}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===V&&(V=5)}function Uj(a){var b=eg();gg(99,dk.bind(null,a,b));return null}\nfunction dk(a,b){do Oj();while(null!==yj);if(0!==(X&48))throw Error(y(327));var c=a.finishedWork;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(y(177));a.callbackNode=null;var d=c.lanes|c.childLanes,e=d,f=a.pendingLanes&~e;a.pendingLanes=e;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=e;a.mutableReadLanes&=e;a.entangledLanes&=e;e=a.entanglements;for(var g=a.eventTimes,h=a.expirationTimes;0<f;){var k=31-Vc(f),l=1<<k;e[k]=0;g[k]=-1;h[k]=-1;f&=~l}null!==\nCj&&0===(d&24)&&Cj.has(a)&&Cj.delete(a);a===U&&(Y=U=null,W=0);1<c.flags?null!==c.lastEffect?(c.lastEffect.nextEffect=c,d=c.firstEffect):d=c:d=c.firstEffect;if(null!==d){e=X;X|=32;pj.current=null;kf=fd;g=Ne();if(Oe(g)){if(\"selectionStart\"in g)h={start:g.selectionStart,end:g.selectionEnd};else a:if(h=(h=g.ownerDocument)&&h.defaultView||window,(l=h.getSelection&&h.getSelection())&&0!==l.rangeCount){h=l.anchorNode;f=l.anchorOffset;k=l.focusNode;l=l.focusOffset;try{h.nodeType,k.nodeType}catch(va){h=null;\nbreak a}var n=0,A=-1,p=-1,C=0,x=0,w=g,z=null;b:for(;;){for(var u;;){w!==h||0!==f&&3!==w.nodeType||(A=n+f);w!==k||0!==l&&3!==w.nodeType||(p=n+l);3===w.nodeType&&(n+=w.nodeValue.length);if(null===(u=w.firstChild))break;z=w;w=u}for(;;){if(w===g)break b;z===h&&++C===f&&(A=n);z===k&&++x===l&&(p=n);if(null!==(u=w.nextSibling))break;w=z;z=w.parentNode}w=u}h=-1===A||-1===p?null:{start:A,end:p}}else h=null;h=h||{start:0,end:0}}else h=null;lf={focusedElem:g,selectionRange:h};fd=!1;Ij=null;Jj=!1;Z=d;do try{ek()}catch(va){if(null===\nZ)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);Ij=null;Z=d;do try{for(g=a;null!==Z;){var t=Z.flags;t&16&&pb(Z.stateNode,\"\");if(t&128){var q=Z.alternate;if(null!==q){var v=q.ref;null!==v&&(\"function\"===typeof v?v(null):v.current=null)}}switch(t&1038){case 2:fj(Z);Z.flags&=-3;break;case 6:fj(Z);Z.flags&=-3;ij(Z.alternate,Z);break;case 1024:Z.flags&=-1025;break;case 1028:Z.flags&=-1025;ij(Z.alternate,Z);break;case 4:ij(Z.alternate,Z);break;case 8:h=Z;cj(g,h);var J=h.alternate;dj(h);null!==\nJ&&dj(J)}Z=Z.nextEffect}}catch(va){if(null===Z)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);v=lf;q=Ne();t=v.focusedElem;g=v.selectionRange;if(q!==t&&t&&t.ownerDocument&&Me(t.ownerDocument.documentElement,t)){null!==g&&Oe(t)&&(q=g.start,v=g.end,void 0===v&&(v=q),\"selectionStart\"in t?(t.selectionStart=q,t.selectionEnd=Math.min(v,t.value.length)):(v=(q=t.ownerDocument||document)&&q.defaultView||window,v.getSelection&&(v=v.getSelection(),h=t.textContent.length,J=Math.min(g.start,h),g=void 0===\ng.end?J:Math.min(g.end,h),!v.extend&&J>g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;t<q.length;t++)v=q[t],v.element.scrollLeft=v.left,v.element.scrollTop=v.top}fd=!!kf;lf=kf=null;a.current=c;Z=d;do try{for(t=a;null!==Z;){var K=Z.flags;K&36&&Yi(t,Z.alternate,Z);if(K&128){q=void 0;var Q=Z.ref;if(null!==Q){var L=Z.stateNode;switch(Z.tag){case 5:q=L;break;default:q=L}\"function\"===typeof Q?Q(q):Q.current=q}}Z=Z.nextEffect}}catch(va){if(null===Z)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);Z=null;$f();X=e}else a.current=c;if(xj)xj=!1,yj=a,zj=b;else for(Z=d;null!==Z;)b=\nZ.nextEffect,Z.nextEffect=null,Z.flags&8&&(K=Z,K.sibling=null,K.stateNode=null),Z=b;d=a.pendingLanes;0===d&&(Ti=null);1===d?a===Ej?Dj++:(Dj=0,Ej=a):Dj=0;c=c.stateNode;if(Mf&&\"function\"===typeof Mf.onCommitFiberRoot)try{Mf.onCommitFiberRoot(Lf,c,void 0,64===(c.current.flags&64))}catch(va){}Mj(a,O());if(Qi)throw Qi=!1,a=Ri,Ri=null,a;if(0!==(X&8))return null;ig();return null}\nfunction ek(){for(;null!==Z;){var a=Z.alternate;Jj||null===Ij||(0!==(Z.flags&8)?dc(Z,Ij)&&(Jj=!0):13===Z.tag&&mj(a,Z)&&dc(Z,Ij)&&(Jj=!0));var b=Z.flags;0!==(b&256)&&Xi(a,Z);0===(b&512)||xj||(xj=!0,hg(97,function(){Oj();return null}));Z=Z.nextEffect}}function Oj(){if(90!==zj){var a=97<zj?97:zj;zj=90;return gg(a,fk)}return!1}function $i(a,b){Aj.push(b,a);xj||(xj=!0,hg(97,function(){Oj();return null}))}function Zi(a,b){Bj.push(b,a);xj||(xj=!0,hg(97,function(){Oj();return null}))}\nfunction fk(){if(null===yj)return!1;var a=yj;yj=null;if(0!==(X&48))throw Error(y(331));var b=X;X|=32;var c=Bj;Bj=[];for(var d=0;d<c.length;d+=2){var e=c[d],f=c[d+1],g=e.destroy;e.destroy=void 0;if(\"function\"===typeof g)try{g()}catch(k){if(null===f)throw Error(y(330));Wi(f,k)}}c=Aj;Aj=[];for(d=0;d<c.length;d+=2){e=c[d];f=c[d+1];try{var h=e.create;e.destroy=h()}catch(k){if(null===f)throw Error(y(330));Wi(f,k)}}for(h=a.current.firstEffect;null!==h;)a=h.nextEffect,h.nextEffect=null,h.flags&8&&(h.sibling=\nnull,h.stateNode=null),h=a;X=b;ig();return!0}function gk(a,b,c){b=Mi(c,b);b=Pi(a,b,1);Ag(a,b);b=Hg();a=Kj(a,1);null!==a&&($c(a,1,b),Mj(a,b))}\nfunction Wi(a,b){if(3===a.tag)gk(a,a,b);else for(var c=a.return;null!==c;){if(3===c.tag){gk(c,a,b);break}else if(1===c.tag){var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Ti||!Ti.has(d))){a=Mi(b,a);var e=Si(c,a,1);Ag(c,e);e=Hg();c=Kj(c,1);if(null!==c)$c(c,1,e),Mj(c,e);else if(\"function\"===typeof d.componentDidCatch&&(null===Ti||!Ti.has(d)))try{d.componentDidCatch(b,a)}catch(f){}break}}c=c.return}}\nfunction Yj(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=Hg();a.pingedLanes|=a.suspendedLanes&c;U===a&&(W&c)===c&&(4===V||3===V&&(W&62914560)===W&&500>O()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e<a.length;e+=2)f=a[e],f._workInProgressVersionPrimary=a[e+1],th.push(f);c=Zg(b,null,d,c);for(b.child=c;c;)c.flags=c.flags&-3|1024,c=c.sibling}else fi(a,b,d,c),sh();b=b.child}return b;case 5:return gh(b),null===a&&\nph(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,nf(d,e)?g=null:null!==f&&nf(d,f)&&(b.flags|=16),oi(a,b),fi(a,b,g,c),b.child;case 6:return null===a&&ph(b),null;case 13:return ti(a,b,c);case 4:return eh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Yg(b,null,d,c):fi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),gi(a,b,d,e,c);case 7:return fi(a,b,b.pendingProps,c),b.child;case 8:return fi(a,b,b.pendingProps.children,\nc),b.child;case 12:return fi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;var h=b.type._context;I(mg,h._currentValue);h._currentValue=f;if(null!==g)if(h=g.value,f=He(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0,0===f){if(g.children===e.children&&!N.current){b=hi(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==k){g=h.child;for(var l=\nk.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=zg(-1,c&-c),l.tag=2,Ag(h,l));h.lanes|=c;l=h.alternate;null!==l&&(l.lanes|=c);sg(h.return,c);k.lanes|=c;break}l=l.next}}else g=10===h.tag?h.type===b.type?null:h.child:h.child;if(null!==g)g.return=h;else for(g=h;null!==g;){if(g===b){g=null;break}h=g.sibling;if(null!==h){h.return=g.return;g=h;break}g=g.return}h=g}fi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,f=b.pendingProps,d=f.children,tg(b,c),e=vg(e,\nf.unstable_observedBits),d=d(e),b.flags|=1,fi(a,b,d,c),b.child;case 14:return e=b.type,f=lg(e,b.pendingProps),f=lg(e.type,f),ii(a,b,e,f,d,c);case 15:return ki(a,b,b.type,b.pendingProps,d,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),b.tag=1,Ff(d)?(a=!0,Jf(b)):a=!1,tg(b,c),Mg(b,d,e),Og(b,d,e,c),qi(null,b,d,!0,a,c);case 19:return Ai(a,b,c);case 23:return mi(a,b,c);case 24:return mi(a,b,c)}throw Error(y(156,b.tag));\n};function ik(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.flags=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childLanes=this.lanes=0;this.alternate=null}function nh(a,b,c,d){return new ik(a,b,c,d)}function ji(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction hk(a){if(\"function\"===typeof a)return ji(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Aa)return 11;if(a===Da)return 14}return 2}\nfunction Tg(a,b){var c=a.alternate;null===c?(c=nh(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null);c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Vg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)ji(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ua:return Xg(c.children,e,f,b);case Ha:g=8;e|=16;break;case wa:g=8;e|=1;break;case xa:return a=nh(12,c,b,e|8),a.elementType=xa,a.type=xa,a.lanes=f,a;case Ba:return a=nh(13,c,b,e),a.type=Ba,a.elementType=Ba,a.lanes=f,a;case Ca:return a=nh(19,c,b,e),a.elementType=Ca,a.lanes=f,a;case Ia:return vi(c,e,f,b);case Ja:return a=nh(24,c,b,e),a.elementType=Ja,a.lanes=f,a;default:if(\"object\"===\ntypeof a&&null!==a)switch(a.$$typeof){case ya:g=10;break a;case za:g=9;break a;case Aa:g=11;break a;case Da:g=14;break a;case Ea:g=16;d=null;break a;case Fa:g=22;break a}throw Error(y(130,null==a?a:typeof a,\"\"));}b=nh(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Xg(a,b,c,d){a=nh(7,a,d,b);a.lanes=c;return a}function vi(a,b,c,d){a=nh(23,a,d,b);a.elementType=Ia;a.lanes=c;return a}function Ug(a,b,c){a=nh(6,a,null,b);a.lanes=c;return a}\nfunction Wg(a,b,c){b=nh(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction jk(a,b,c){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.pendingContext=this.context=null;this.hydrate=c;this.callbackNode=null;this.callbackPriority=0;this.eventTimes=Zc(0);this.expirationTimes=Zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=Zc(0);this.mutableSourceEagerHydrationData=null}\nfunction kk(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:ta,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction lk(a,b,c,d){var e=b.current,f=Hg(),g=Ig(e);a:if(c){c=c._reactInternals;b:{if(Zb(c)!==c||1!==c.tag)throw Error(y(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(Ff(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(y(171));}if(1===c.tag){var k=c.type;if(Ff(k)){c=If(c,k,h);break a}}c=h}else c=Cf;null===b.context?b.context=c:b.pendingContext=c;b=zg(f,g);b.payload={element:a};d=void 0===d?null:d;null!==\nd&&(b.callback=d);Ag(e,b);Jg(e,g,f);return g}function mk(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function nk(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function ok(a,b){nk(a,b);(a=a.alternate)&&nk(a,b)}function pk(){return null}\nfunction qk(a,b,c){var d=null!=c&&null!=c.hydrationOptions&&c.hydrationOptions.mutableSources||null;c=new jk(a,b,null!=c&&!0===c.hydrate);b=nh(3,null,null,2===b?7:1===b?3:0);c.current=b;b.stateNode=c;xg(b);a[ff]=c.current;cf(8===a.nodeType?a.parentNode:a);if(d)for(a=0;a<d.length;a++){b=d[a];var e=b._getVersion;e=e(b._source);null==c.mutableSourceEagerHydrationData?c.mutableSourceEagerHydrationData=[b,e]:c.mutableSourceEagerHydrationData.push(b,e)}this._internalRoot=c}\nqk.prototype.render=function(a){lk(a,this._internalRoot,null,null)};qk.prototype.unmount=function(){var a=this._internalRoot,b=a.containerInfo;lk(null,a,null,function(){b[ff]=null})};function rk(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}\nfunction sk(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new qk(a,0,b?{hydrate:!0}:void 0)}\nfunction tk(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f._internalRoot;if(\"function\"===typeof e){var h=e;e=function(){var a=mk(g);h.call(a)}}lk(b,g,a,e)}else{f=c._reactRootContainer=sk(c,d);g=f._internalRoot;if(\"function\"===typeof e){var k=e;e=function(){var a=mk(g);k.call(a)}}Xj(function(){lk(b,g,a,e)})}return mk(g)}ec=function(a){if(13===a.tag){var b=Hg();Jg(a,4,b);ok(a,4)}};fc=function(a){if(13===a.tag){var b=Hg();Jg(a,67108864,b);ok(a,67108864)}};\ngc=function(a){if(13===a.tag){var b=Hg(),c=Ig(a);Jg(a,c,b);ok(a,c)}};hc=function(a,b){return b()};\nyb=function(a,b,c){switch(b){case \"input\":ab(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(y(90));Wa(d);ab(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Wj;\nHb=function(a,b,c,d,e){var f=X;X|=4;try{return gg(98,a.bind(null,b,c,d,e))}finally{X=f,0===X&&(wj(),ig())}};Ib=function(){0===(X&49)&&(Vj(),Oj())};Jb=function(a,b){var c=X;X|=2;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}};function uk(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!rk(b))throw Error(y(200));return kk(a,b,null,c)}var vk={Events:[Cb,ue,Db,Eb,Fb,Oj,{current:!1}]},wk={findFiberByHostInstance:wc,bundleType:0,version:\"17.0.2\",rendererPackageName:\"react-dom\"};\nvar xk={bundleType:wk.bundleType,version:wk.version,rendererPackageName:wk.rendererPackageName,rendererConfig:wk.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ra.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=cc(a);return null===a?null:a.stateNode},findFiberByHostInstance:wk.findFiberByHostInstance||\npk,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var yk=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!yk.isDisabled&&yk.supportsFiber)try{Lf=yk.inject(xk),Mf=yk}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=vk;exports.createPortal=uk;\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(y(188));throw Error(y(268,Object.keys(a)));}a=cc(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a,b){var c=X;if(0!==(c&48))return a(b);X|=1;try{if(a)return gg(99,a.bind(null,b))}finally{X=c,ig()}};exports.hydrate=function(a,b,c){if(!rk(b))throw Error(y(200));return tk(null,a,b,!0,c)};\nexports.render=function(a,b,c){if(!rk(b))throw Error(y(200));return tk(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!rk(a))throw Error(y(40));return a._reactRootContainer?(Xj(function(){tk(null,null,a,!1,function(){a._reactRootContainer=null;a[ff]=null})}),!0):!1};exports.unstable_batchedUpdates=Wj;exports.unstable_createPortal=function(a,b){return uk(a,b,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)};\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!rk(c))throw Error(y(200));if(null==a||void 0===a._reactInternals)throw Error(y(38));return tk(a,b,c,!1,d)};exports.version=\"17.0.2\";\n","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\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","'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","/** @license React v17.0.2\n * react-jsx-runtime.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';require(\"object-assign\");var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","/** @license React v17.0.2\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar A={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},B={};function C(a,b,c){this.props=a;this.context=b;this.refs=B;this.updater=c||A}C.prototype.isReactComponent={};C.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(z(85));this.updater.enqueueSetState(this,a,b,\"setState\")};C.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};\nfunction D(){}D.prototype=C.prototype;function E(a,b,c){this.props=a;this.context=b;this.refs=B;this.updater=c||A}var F=E.prototype=new D;F.constructor=E;l(F,C.prototype);F.isPureReactComponent=!0;var G={current:null},H=Object.prototype.hasOwnProperty,I={key:!0,ref:!0,__self:!0,__source:!0};\nfunction J(a,b,c){var e,d={},k=null,h=null;if(null!=b)for(e in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)H.call(b,e)&&!I.hasOwnProperty(e)&&(d[e]=b[e]);var g=arguments.length-2;if(1===g)d.children=c;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];d.children=f}if(a&&a.defaultProps)for(e in g=a.defaultProps,g)void 0===d[e]&&(d[e]=g[e]);return{$$typeof:n,type:a,key:k,ref:h,props:d,_owner:G.current}}\nfunction K(a,b){return{$$typeof:n,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function L(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===n}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var M=/\\/+/g;function N(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction O(a,b,c,e,d){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case n:case p:h=!0}}if(h)return h=a,d=d(h),a=\"\"===e?\".\"+N(h,0):e,Array.isArray(d)?(c=\"\",null!=a&&(c=a.replace(M,\"$&/\")+\"/\"),O(d,b,c,\"\",function(a){return a})):null!=d&&(L(d)&&(d=K(d,c+(!d.key||h&&h.key===d.key?\"\":(\"\"+d.key).replace(M,\"$&/\")+\"/\")+a)),b.push(d)),1;h=0;e=\"\"===e?\".\":e+\":\";if(Array.isArray(a))for(var g=\n0;g<a.length;g++){k=a[g];var f=e+N(k,g);h+=O(k,b,c,f,d)}else if(f=y(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=e+N(k,g++),h+=O(k,b,c,f,d);else if(\"object\"===k)throw b=\"\"+a,Error(z(31,\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b));return h}function P(a,b,c){if(null==a)return a;var e=[],d=0;O(a,e,\"\",\"\",function(a){return b.call(c,a,d++)});return e}\nfunction Q(a){if(-1===a._status){var b=a._result;b=b();a._status=0;a._result=b;b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)})}if(1===a._status)return a._result;throw a._result;}var R={current:null};function S(){var a=R.current;if(null===a)throw Error(z(321));return a}var T={ReactCurrentDispatcher:R,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:G,IsSomeRendererActing:{current:!1},assign:l};\nexports.Children={map:P,forEach:function(a,b,c){P(a,function(){b.apply(this,arguments)},c)},count:function(a){var b=0;P(a,function(){b++});return b},toArray:function(a){return P(a,function(a){return a})||[]},only:function(a){if(!L(a))throw Error(z(143));return a}};exports.Component=C;exports.PureComponent=E;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=T;\nexports.cloneElement=function(a,b,c){if(null===a||void 0===a)throw Error(z(267,a));var e=l({},a.props),d=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=G.current);void 0!==b.key&&(d=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)H.call(b,f)&&!I.hasOwnProperty(f)&&(e[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)e.children=c;else if(1<f){g=Array(f);for(var m=0;m<f;m++)g[m]=arguments[m+2];e.children=g}return{$$typeof:n,type:a.type,\nkey:d,ref:k,props:e,_owner:h}};exports.createContext=function(a,b){void 0===b&&(b=null);a={$$typeof:r,_calculateChangedBits:b,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:q,_context:a};return a.Consumer=a};exports.createElement=J;exports.createFactory=function(a){var b=J.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};exports.forwardRef=function(a){return{$$typeof:t,render:a}};exports.isValidElement=L;\nexports.lazy=function(a){return{$$typeof:v,_payload:{_status:-1,_result:a},_init:Q}};exports.memo=function(a,b){return{$$typeof:u,type:a,compare:void 0===b?null:b}};exports.useCallback=function(a,b){return S().useCallback(a,b)};exports.useContext=function(a,b){return S().useContext(a,b)};exports.useDebugValue=function(){};exports.useEffect=function(a,b){return S().useEffect(a,b)};exports.useImperativeHandle=function(a,b,c){return S().useImperativeHandle(a,b,c)};\nexports.useLayoutEffect=function(a,b){return S().useLayoutEffect(a,b)};exports.useMemo=function(a,b){return S().useMemo(a,b)};exports.useReducer=function(a,b,c){return S().useReducer(a,b,c)};exports.useRef=function(a){return S().useRef(a)};exports.useState=function(a){return S().useState(a)};exports.version=\"17.0.2\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.min.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/** @license React v0.20.2\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f,g,h,k;if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var t=null,u=null,w=function(){if(null!==t)try{var a=exports.unstable_now();t(!0,a);t=null}catch(b){throw setTimeout(w,0),b;}};f=function(a){null!==t?setTimeout(f,0,a):(t=a,setTimeout(w,0))};g=function(a,b){u=setTimeout(a,b)};h=function(){clearTimeout(u)};exports.unstable_shouldYield=function(){return!1};k=exports.unstable_forceFrameRate=function(){}}else{var x=window.setTimeout,y=window.clearTimeout;if(\"undefined\"!==typeof console){var z=\nwindow.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\");\"function\"!==typeof z&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\")}var A=!1,B=null,C=-1,D=5,E=0;exports.unstable_shouldYield=function(){return exports.unstable_now()>=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):D=0<a?Math.floor(1E3/a):5};var F=new MessageChannel,G=F.port2;F.port1.onmessage=function(){if(null!==B){var a=exports.unstable_now();E=a+D;try{B(!0,a)?G.postMessage(null):(A=!1,B=null)}catch(b){throw G.postMessage(null),b;}}else A=!1};f=function(a){B=a;A||(A=!0,G.postMessage(null))};g=function(a,b){C=\nx(function(){a(exports.unstable_now())},b)};h=function(){y(C);C=-1}}function H(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<I(e,b))a[d]=b,a[c]=e,c=d;else break a}}function J(a){a=a[0];return void 0===a?null:a}\nfunction K(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var m=2*(d+1)-1,n=a[m],v=m+1,r=a[v];if(void 0!==n&&0>I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:N++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n  var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n  if (ret !== void 0) {\n    return !!ret;\n  }\n\n  if (objA === objB) {\n    return true;\n  }\n\n  if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n\n  if (keysA.length !== keysB.length) {\n    return false;\n  }\n\n  var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n  // Test for A's keys different from B.\n  for (var idx = 0; idx < keysA.length; idx++) {\n    var key = keysA[idx];\n\n    if (!bHasOwnProperty(key)) {\n      return false;\n    }\n\n    var valueA = objA[key];\n    var valueB = objB[key];\n\n    ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n    if (ret === false || (ret === void 0 && valueA !== valueB)) {\n      return false;\n    }\n  }\n\n  return true;\n};\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;\nmodule.exports.default = StyleToObject; // ESM support\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"162a1886\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"hubble:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhubble\"] = self[\"webpackChunkhubble\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n  /**\n   * A POP indicates a change to an arbitrary index in the history stack, such\n   * as a back or forward navigation. It does not describe the direction of the\n   * navigation, only that the current index changed.\n   *\n   * Note: This is the default action for newly created history objects.\n   */\n  Pop = \"POP\",\n\n  /**\n   * A PUSH indicates a new entry being added to the history stack, such as when\n   * a link is clicked and a new page loads. When this happens, all subsequent\n   * entries in the stack are lost.\n   */\n  Push = \"PUSH\",\n\n  /**\n   * A REPLACE indicates the entry at the current index in the history stack\n   * being replaced by a new one.\n   */\n  Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n  /**\n   * A URL pathname, beginning with a /.\n   */\n  pathname: string;\n\n  /**\n   * A URL search string, beginning with a ?.\n   */\n  search: string;\n\n  /**\n   * A URL fragment identifier, beginning with a #.\n   */\n  hash: string;\n}\n\n// TODO: (v7) Change the Location generic default from `any` to `unknown` and\n// remove Remix `useLocation` wrapper.\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location<State = any> extends Path {\n  /**\n   * A value of arbitrary data associated with this location.\n   */\n  state: State;\n\n  /**\n   * A unique string associated with this location. May be used to safely store\n   * and retrieve data in some other storage API, like `localStorage`.\n   *\n   * Note: This value is always \"default\" on the initial location.\n   */\n  key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n  /**\n   * The action that triggered the change.\n   */\n  action: Action;\n\n  /**\n   * The new location.\n   */\n  location: Location;\n\n  /**\n   * The delta between this location and the former location in the history stack\n   */\n  delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n  (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. This may be either a URL or the pieces\n * of a URL path.\n */\nexport type To = string | Partial<Path>;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n  /**\n   * The last action that modified the current location. This will always be\n   * Action.Pop when a history instance is first created. This value is mutable.\n   */\n  readonly action: Action;\n\n  /**\n   * The current location. This value is mutable.\n   */\n  readonly location: Location;\n\n  /**\n   * Returns a valid href for the given `to` value that may be used as\n   * the value of an <a href> attribute.\n   *\n   * @param to - The destination URL\n   */\n  createHref(to: To): string;\n\n  /**\n   * Returns a URL for the given `to` value\n   *\n   * @param to - The destination URL\n   */\n  createURL(to: To): URL;\n\n  /**\n   * Encode a location the same way window.history would do (no-op for memory\n   * history) so we ensure our PUSH/REPLACE navigations for data routers\n   * behave the same as POP\n   *\n   * @param to Unencoded path\n   */\n  encodeLocation(to: To): Path;\n\n  /**\n   * Pushes a new location onto the history stack, increasing its length by one.\n   * If there were any entries in the stack after the current one, they are\n   * lost.\n   *\n   * @param to - The new URL\n   * @param state - Data to associate with the new location\n   */\n  push(to: To, state?: any): void;\n\n  /**\n   * Replaces the current location in the history stack with a new one.  The\n   * location that was replaced will no longer be available.\n   *\n   * @param to - The new URL\n   * @param state - Data to associate with the new location\n   */\n  replace(to: To, state?: any): void;\n\n  /**\n   * Navigates `n` entries backward/forward in the history stack relative to the\n   * current index. For example, a \"back\" navigation would use go(-1).\n   *\n   * @param delta - The delta in the stack index\n   */\n  go(delta: number): void;\n\n  /**\n   * Sets up a listener that will be called whenever the current location\n   * changes.\n   *\n   * @param listener - A function that will be called when the location changes\n   * @returns unlisten - A function that may be used to stop listening\n   */\n  listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n  usr: any;\n  key?: string;\n  idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial<Location>;\n\nexport type MemoryHistoryOptions = {\n  initialEntries?: InitialEntry[];\n  initialIndex?: number;\n  v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n  /**\n   * The current index in the history stack.\n   */\n  readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n  options: MemoryHistoryOptions = {}\n): MemoryHistory {\n  let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n  let entries: Location[]; // Declare so we can access from createMemoryLocation\n  entries = initialEntries.map((entry, index) =>\n    createMemoryLocation(\n      entry,\n      typeof entry === \"string\" ? null : entry.state,\n      index === 0 ? \"default\" : undefined\n    )\n  );\n  let index = clampIndex(\n    initialIndex == null ? entries.length - 1 : initialIndex\n  );\n  let action = Action.Pop;\n  let listener: Listener | null = null;\n\n  function clampIndex(n: number): number {\n    return Math.min(Math.max(n, 0), entries.length - 1);\n  }\n  function getCurrentLocation(): Location {\n    return entries[index];\n  }\n  function createMemoryLocation(\n    to: To,\n    state: any = null,\n    key?: string\n  ): Location {\n    let location = createLocation(\n      entries ? getCurrentLocation().pathname : \"/\",\n      to,\n      state,\n      key\n    );\n    warning(\n      location.pathname.charAt(0) === \"/\",\n      `relative pathnames are not supported in memory history: ${JSON.stringify(\n        to\n      )}`\n    );\n    return location;\n  }\n\n  function createHref(to: To) {\n    return typeof to === \"string\" ? to : createPath(to);\n  }\n\n  let history: MemoryHistory = {\n    get index() {\n      return index;\n    },\n    get action() {\n      return action;\n    },\n    get location() {\n      return getCurrentLocation();\n    },\n    createHref,\n    createURL(to) {\n      return new URL(createHref(to), \"http://localhost\");\n    },\n    encodeLocation(to: To) {\n      let path = typeof to === \"string\" ? parsePath(to) : to;\n      return {\n        pathname: path.pathname || \"\",\n        search: path.search || \"\",\n        hash: path.hash || \"\",\n      };\n    },\n    push(to, state) {\n      action = Action.Push;\n      let nextLocation = createMemoryLocation(to, state);\n      index += 1;\n      entries.splice(index, entries.length, nextLocation);\n      if (v5Compat && listener) {\n        listener({ action, location: nextLocation, delta: 1 });\n      }\n    },\n    replace(to, state) {\n      action = Action.Replace;\n      let nextLocation = createMemoryLocation(to, state);\n      entries[index] = nextLocation;\n      if (v5Compat && listener) {\n        listener({ action, location: nextLocation, delta: 0 });\n      }\n    },\n    go(delta) {\n      action = Action.Pop;\n      let nextIndex = clampIndex(index + delta);\n      let nextLocation = entries[nextIndex];\n      index = nextIndex;\n      if (listener) {\n        listener({ action, location: nextLocation, delta });\n      }\n    },\n    listen(fn: Listener) {\n      listener = fn;\n      return () => {\n        listener = null;\n      };\n    },\n  };\n\n  return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n  options: BrowserHistoryOptions = {}\n): BrowserHistory {\n  function createBrowserLocation(\n    window: Window,\n    globalHistory: Window[\"history\"]\n  ) {\n    let { pathname, search, hash } = window.location;\n    return createLocation(\n      \"\",\n      { pathname, search, hash },\n      // state defaults to `null` because `window.history.state` does\n      (globalHistory.state && globalHistory.state.usr) || null,\n      (globalHistory.state && globalHistory.state.key) || \"default\"\n    );\n  }\n\n  function createBrowserHref(window: Window, to: To) {\n    return typeof to === \"string\" ? to : createPath(to);\n  }\n\n  return getUrlBasedHistory(\n    createBrowserLocation,\n    createBrowserHref,\n    null,\n    options\n  );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n  options: HashHistoryOptions = {}\n): HashHistory {\n  function createHashLocation(\n    window: Window,\n    globalHistory: Window[\"history\"]\n  ) {\n    let {\n      pathname = \"/\",\n      search = \"\",\n      hash = \"\",\n    } = parsePath(window.location.hash.substr(1));\n\n    // Hash URL should always have a leading / just like window.location.pathname\n    // does, so if an app ends up at a route like /#something then we add a\n    // leading slash so all of our path-matching behaves the same as if it would\n    // in a browser router.  This is particularly important when there exists a\n    // root splat route (<Route path=\"*\">) since that matches internally against\n    // \"/*\" and we'd expect /#something to 404 in a hash router app.\n    if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n      pathname = \"/\" + pathname;\n    }\n\n    return createLocation(\n      \"\",\n      { pathname, search, hash },\n      // state defaults to `null` because `window.history.state` does\n      (globalHistory.state && globalHistory.state.usr) || null,\n      (globalHistory.state && globalHistory.state.key) || \"default\"\n    );\n  }\n\n  function createHashHref(window: Window, to: To) {\n    let base = window.document.querySelector(\"base\");\n    let href = \"\";\n\n    if (base && base.getAttribute(\"href\")) {\n      let url = window.location.href;\n      let hashIndex = url.indexOf(\"#\");\n      href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n    }\n\n    return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n  }\n\n  function validateHashLocation(location: Location, to: To) {\n    warning(\n      location.pathname.charAt(0) === \"/\",\n      `relative pathnames are not supported in hash history.push(${JSON.stringify(\n        to\n      )})`\n    );\n  }\n\n  return getUrlBasedHistory(\n    createHashLocation,\n    createHashHref,\n    validateHashLocation,\n    options\n  );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant<T>(\n  value: T | null | undefined,\n  message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n  if (value === false || value === null || typeof value === \"undefined\") {\n    throw new Error(message);\n  }\n}\n\nexport function warning(cond: any, message: string) {\n  if (!cond) {\n    // eslint-disable-next-line no-console\n    if (typeof console !== \"undefined\") console.warn(message);\n\n    try {\n      // Welcome to debugging history!\n      //\n      // This error is thrown as a convenience, so you can more easily\n      // find the source for a warning that appears in the console by\n      // enabling \"pause on exceptions\" in your JavaScript debugger.\n      throw new Error(message);\n      // eslint-disable-next-line no-empty\n    } catch (e) {}\n  }\n}\n\nfunction createKey() {\n  return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n  return {\n    usr: location.state,\n    key: location.key,\n    idx: index,\n  };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n  current: string | Location,\n  to: To,\n  state: any = null,\n  key?: string\n): Readonly<Location> {\n  let location: Readonly<Location> = {\n    pathname: typeof current === \"string\" ? current : current.pathname,\n    search: \"\",\n    hash: \"\",\n    ...(typeof to === \"string\" ? parsePath(to) : to),\n    state,\n    // TODO: This could be cleaned up.  push/replace should probably just take\n    // full Locations now and avoid the need to run through this flow at all\n    // But that's a pretty big refactor to the current test suite so going to\n    // keep as is for the time being and just let any incoming keys take precedence\n    key: (to && (to as Location).key) || key || createKey(),\n  };\n  return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n  pathname = \"/\",\n  search = \"\",\n  hash = \"\",\n}: Partial<Path>) {\n  if (search && search !== \"?\")\n    pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n  if (hash && hash !== \"#\")\n    pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n  return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial<Path> {\n  let parsedPath: Partial<Path> = {};\n\n  if (path) {\n    let hashIndex = path.indexOf(\"#\");\n    if (hashIndex >= 0) {\n      parsedPath.hash = path.substr(hashIndex);\n      path = path.substr(0, hashIndex);\n    }\n\n    let searchIndex = path.indexOf(\"?\");\n    if (searchIndex >= 0) {\n      parsedPath.search = path.substr(searchIndex);\n      path = path.substr(0, searchIndex);\n    }\n\n    if (path) {\n      parsedPath.pathname = path;\n    }\n  }\n\n  return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n  window?: Window;\n  v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n  getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n  createHref: (window: Window, to: To) => string,\n  validateLocation: ((location: Location, to: To) => void) | null,\n  options: UrlHistoryOptions = {}\n): UrlHistory {\n  let { window = document.defaultView!, v5Compat = false } = options;\n  let globalHistory = window.history;\n  let action = Action.Pop;\n  let listener: Listener | null = null;\n\n  let index = getIndex()!;\n  // Index should only be null when we initialize. If not, it's because the\n  // user called history.pushState or history.replaceState directly, in which\n  // case we should log a warning as it will result in bugs.\n  if (index == null) {\n    index = 0;\n    globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n  }\n\n  function getIndex(): number {\n    let state = globalHistory.state || { idx: null };\n    return state.idx;\n  }\n\n  function handlePop() {\n    action = Action.Pop;\n    let nextIndex = getIndex();\n    let delta = nextIndex == null ? null : nextIndex - index;\n    index = nextIndex;\n    if (listener) {\n      listener({ action, location: history.location, delta });\n    }\n  }\n\n  function push(to: To, state?: any) {\n    action = Action.Push;\n    let location = createLocation(history.location, to, state);\n    if (validateLocation) validateLocation(location, to);\n\n    index = getIndex() + 1;\n    let historyState = getHistoryState(location, index);\n    let url = history.createHref(location);\n\n    // try...catch because iOS limits us to 100 pushState calls :/\n    try {\n      globalHistory.pushState(historyState, \"\", url);\n    } catch (error) {\n      // If the exception is because `state` can't be serialized, let that throw\n      // outwards just like a replace call would so the dev knows the cause\n      // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n      // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n      if (error instanceof DOMException && error.name === \"DataCloneError\") {\n        throw error;\n      }\n      // They are going to lose state here, but there is no real\n      // way to warn them about it since the page will refresh...\n      window.location.assign(url);\n    }\n\n    if (v5Compat && listener) {\n      listener({ action, location: history.location, delta: 1 });\n    }\n  }\n\n  function replace(to: To, state?: any) {\n    action = Action.Replace;\n    let location = createLocation(history.location, to, state);\n    if (validateLocation) validateLocation(location, to);\n\n    index = getIndex();\n    let historyState = getHistoryState(location, index);\n    let url = history.createHref(location);\n    globalHistory.replaceState(historyState, \"\", url);\n\n    if (v5Compat && listener) {\n      listener({ action, location: history.location, delta: 0 });\n    }\n  }\n\n  function createURL(to: To): URL {\n    // window.location.origin is \"null\" (the literal string value) in Firefox\n    // under certain conditions, notably when serving from a local HTML file\n    // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n    let base =\n      window.location.origin !== \"null\"\n        ? window.location.origin\n        : window.location.href;\n\n    let href = typeof to === \"string\" ? to : createPath(to);\n    // Treating this as a full URL will strip any trailing spaces so we need to\n    // pre-encode them since they might be part of a matching splat param from\n    // an ancestor route\n    href = href.replace(/ $/, \"%20\");\n    invariant(\n      base,\n      `No window.location.(origin|href) available to create URL for href: ${href}`\n    );\n    return new URL(href, base);\n  }\n\n  let history: History = {\n    get action() {\n      return action;\n    },\n    get location() {\n      return getLocation(window, globalHistory);\n    },\n    listen(fn: Listener) {\n      if (listener) {\n        throw new Error(\"A history only accepts one active listener\");\n      }\n      window.addEventListener(PopStateEventType, handlePop);\n      listener = fn;\n\n      return () => {\n        window.removeEventListener(PopStateEventType, handlePop);\n        listener = null;\n      };\n    },\n    createHref(to) {\n      return createHref(window, to);\n    },\n    createURL,\n    encodeLocation(to) {\n      // Encode a Location the same way window.location would\n      let url = createURL(to);\n      return {\n        pathname: url.pathname,\n        search: url.search,\n        hash: url.hash,\n      };\n    },\n    push,\n    replace,\n    go(n) {\n      return globalHistory.go(n);\n    },\n  };\n\n  return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { invariant, parsePath, warning } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n  [routeId: string]: any;\n}\n\nexport enum ResultType {\n  data = \"data\",\n  deferred = \"deferred\",\n  redirect = \"redirect\",\n  error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n  type: ResultType.data;\n  data: any;\n  statusCode?: number;\n  headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n  type: ResultType.deferred;\n  deferredData: DeferredData;\n  statusCode?: number;\n  headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n  type: ResultType.redirect;\n  status: number;\n  location: string;\n  revalidate: boolean;\n  reloadDocument?: boolean;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n  type: ResultType.error;\n  error: any;\n  headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n  | SuccessResult\n  | DeferredResult\n  | RedirectResult\n  | ErrorResult;\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase<LowerCaseFormMethod>;\n\n/**\n * Users can specify either lowercase or uppercase form methods on `<Form>`,\n * useSubmit(), `<fetcher.Form>`, etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude<FormMethod, \"get\">;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState.  This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude<V7_FormMethod, \"GET\">;\n\nexport type FormEncType =\n  | \"application/x-www-form-urlencoded\"\n  | \"multipart/form-data\"\n  | \"application/json\"\n  | \"text/plain\";\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n  [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport type Submission =\n  | {\n      formMethod: FormMethod | V7_FormMethod;\n      formAction: string;\n      formEncType: FormEncType;\n      formData: FormData;\n      json: undefined;\n      text: undefined;\n    }\n  | {\n      formMethod: FormMethod | V7_FormMethod;\n      formAction: string;\n      formEncType: FormEncType;\n      formData: undefined;\n      json: JsonValue;\n      text: undefined;\n    }\n  | {\n      formMethod: FormMethod | V7_FormMethod;\n      formAction: string;\n      formEncType: FormEncType;\n      formData: undefined;\n      json: undefined;\n      text: string;\n    };\n\n/**\n * @private\n * Arguments passed to route loader/action functions.  Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs<Context> {\n  request: Request;\n  params: Params;\n  context?: Context;\n}\n\n// TODO: (v7) Change the defaults from any to unknown in and remove Remix wrappers:\n//   ActionFunction, ActionFunctionArgs, LoaderFunction, LoaderFunctionArgs\n//   Also, make them a type alias instead of an interface\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs<Context = any>\n  extends DataFunctionArgs<Context> {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs<Context = any>\n  extends DataFunctionArgs<Context> {}\n\n/**\n * Loaders and actions can return anything except `undefined` (`null` is a\n * valid return value if there is no data to return).  Responses are preferred\n * and will ease any future migration to Remix\n */\ntype DataFunctionValue = Response | NonNullable<unknown> | null;\n\n/**\n * Route loader function signature\n */\nexport type LoaderFunction<Context = any> = {\n  (args: LoaderFunctionArgs<Context>):\n    | Promise<DataFunctionValue>\n    | DataFunctionValue;\n} & { hydrate?: boolean };\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction<Context = any> {\n  (args: ActionFunctionArgs<Context>):\n    | Promise<DataFunctionValue>\n    | DataFunctionValue;\n}\n\n/**\n * Arguments passed to shouldRevalidate function\n */\nexport interface ShouldRevalidateFunctionArgs {\n  currentUrl: URL;\n  currentParams: AgnosticDataRouteMatch[\"params\"];\n  nextUrl: URL;\n  nextParams: AgnosticDataRouteMatch[\"params\"];\n  formMethod?: Submission[\"formMethod\"];\n  formAction?: Submission[\"formAction\"];\n  formEncType?: Submission[\"formEncType\"];\n  text?: Submission[\"text\"];\n  formData?: Submission[\"formData\"];\n  json?: Submission[\"json\"];\n  actionResult?: any;\n  defaultShouldRevalidate: boolean;\n}\n\n/**\n * Route shouldRevalidate function signature.  This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments.  It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n  (args: ShouldRevalidateFunctionArgs): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n *\n * @deprecated Use `mapRouteProperties` instead\n */\nexport interface DetectErrorBoundaryFunction {\n  (route: AgnosticRouteObject): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set any framework-specific\n * properties from framework-agnostic properties\n */\nexport interface MapRoutePropertiesFunction {\n  (route: AgnosticRouteObject): {\n    hasErrorBoundary: boolean;\n  } & Record<string, any>;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n  | \"lazy\"\n  | \"caseSensitive\"\n  | \"path\"\n  | \"id\"\n  | \"index\"\n  | \"children\";\n\nexport const immutableRouteKeys = new Set<ImmutableRouteKey>([\n  \"lazy\",\n  \"caseSensitive\",\n  \"path\",\n  \"id\",\n  \"index\",\n  \"children\",\n]);\n\ntype RequireOne<T, Key = keyof T> = Exclude<\n  {\n    [K in keyof T]: K extends Key ? Omit<T, K> & Required<Pick<T, K>> : never;\n  }[keyof T],\n  undefined\n>;\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction<R extends AgnosticRouteObject> {\n  (): Promise<RequireOne<Omit<R, ImmutableRouteKey>>>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n  caseSensitive?: boolean;\n  path?: string;\n  id?: string;\n  loader?: LoaderFunction;\n  action?: ActionFunction;\n  hasErrorBoundary?: boolean;\n  shouldRevalidate?: ShouldRevalidateFunction;\n  handle?: any;\n  lazy?: LazyRouteFunction<AgnosticBaseRouteObject>;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n  children?: undefined;\n  index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n  children?: AgnosticRouteObject[];\n  index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n  | AgnosticIndexRouteObject\n  | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n  id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n  children?: AgnosticDataRouteObject[];\n  id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n  | AgnosticDataIndexRouteObject\n  | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record<string, AgnosticDataRouteObject | undefined>;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam<Path extends string> =\n  // split path into individual path segments\n  Path extends `${infer L}/${infer R}`\n    ? _PathParam<L> | _PathParam<R>\n    : // find params after `:`\n    Path extends `:${infer Param}`\n    ? Param extends `${infer Optional}?`\n      ? Optional\n      : Param\n    : // otherwise, there aren't any params present\n      never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\nexport type PathParam<Path extends string> =\n  // check if path is just a wildcard\n  Path extends \"*\" | \"/*\"\n    ? \"*\"\n    : // look for wildcard at the end of the path\n    Path extends `${infer Rest}/*`\n    ? \"*\" | _PathParam<Rest>\n    : // look for params in the absence of wildcards\n      _PathParam<Path>;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise, return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey<Segment extends string> =\n  // if you could not find path params, fallback to `string`\n  [PathParam<Segment>] extends [never] ? string : PathParam<Segment>;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params<Key extends string = string> = {\n  readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n  ParamKey extends string = string,\n  RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n  /**\n   * The names and values of dynamic parameters in the URL.\n   */\n  params: Params<ParamKey>;\n  /**\n   * The portion of the URL pathname that was matched.\n   */\n  pathname: string;\n  /**\n   * The portion of the URL pathname that was matched before child routes.\n   */\n  pathnameBase: string;\n  /**\n   * The route object that was used to match.\n   */\n  route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n  extends AgnosticRouteMatch<string, AgnosticDataRouteObject> {}\n\nfunction isIndexRoute(\n  route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n  return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n  routes: AgnosticRouteObject[],\n  mapRouteProperties: MapRoutePropertiesFunction,\n  parentPath: number[] = [],\n  manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n  return routes.map((route, index) => {\n    let treePath = [...parentPath, index];\n    let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n    invariant(\n      route.index !== true || !route.children,\n      `Cannot specify children on an index route`\n    );\n    invariant(\n      !manifest[id],\n      `Found a route id collision on id \"${id}\".  Route ` +\n        \"id's must be globally unique within Data Router usages\"\n    );\n\n    if (isIndexRoute(route)) {\n      let indexRoute: AgnosticDataIndexRouteObject = {\n        ...route,\n        ...mapRouteProperties(route),\n        id,\n      };\n      manifest[id] = indexRoute;\n      return indexRoute;\n    } else {\n      let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n        ...route,\n        ...mapRouteProperties(route),\n        id,\n        children: undefined,\n      };\n      manifest[id] = pathOrLayoutRoute;\n\n      if (route.children) {\n        pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n          route.children,\n          mapRouteProperties,\n          treePath,\n          manifest\n        );\n      }\n\n      return pathOrLayoutRoute;\n    }\n  });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nexport function matchRoutes<\n  RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n  routes: RouteObjectType[],\n  locationArg: Partial<Location> | string,\n  basename = \"/\"\n): AgnosticRouteMatch<string, RouteObjectType>[] | null {\n  let location =\n    typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n  let pathname = stripBasename(location.pathname || \"/\", basename);\n\n  if (pathname == null) {\n    return null;\n  }\n\n  let branches = flattenRoutes(routes);\n  rankRouteBranches(branches);\n\n  let matches = null;\n  for (let i = 0; matches == null && i < branches.length; ++i) {\n    // Incoming pathnames are generally encoded from either window.location\n    // or from router.navigate, but we want to match against the unencoded\n    // paths in the route definitions.  Memory router locations won't be\n    // encoded here but there also shouldn't be anything to decode so this\n    // should be a safe operation.  This avoids needing matchRoutes to be\n    // history-aware.\n    let decoded = decodePath(pathname);\n    matches = matchRouteBranch<string, RouteObjectType>(branches[i], decoded);\n  }\n\n  return matches;\n}\n\nexport interface UIMatch<Data = unknown, Handle = unknown> {\n  id: string;\n  pathname: string;\n  params: AgnosticRouteMatch[\"params\"];\n  data: Data;\n  handle: Handle;\n}\n\nexport function convertRouteMatchToUiMatch(\n  match: AgnosticDataRouteMatch,\n  loaderData: RouteData\n): UIMatch {\n  let { route, pathname, params } = match;\n  return {\n    id: route.id,\n    pathname,\n    params,\n    data: loaderData[route.id],\n    handle: route.handle,\n  };\n}\n\ninterface RouteMeta<\n  RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n  relativePath: string;\n  caseSensitive: boolean;\n  childrenIndex: number;\n  route: RouteObjectType;\n}\n\ninterface RouteBranch<\n  RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n  path: string;\n  score: number;\n  routesMeta: RouteMeta<RouteObjectType>[];\n}\n\nfunction flattenRoutes<\n  RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n  routes: RouteObjectType[],\n  branches: RouteBranch<RouteObjectType>[] = [],\n  parentsMeta: RouteMeta<RouteObjectType>[] = [],\n  parentPath = \"\"\n): RouteBranch<RouteObjectType>[] {\n  let flattenRoute = (\n    route: RouteObjectType,\n    index: number,\n    relativePath?: string\n  ) => {\n    let meta: RouteMeta<RouteObjectType> = {\n      relativePath:\n        relativePath === undefined ? route.path || \"\" : relativePath,\n      caseSensitive: route.caseSensitive === true,\n      childrenIndex: index,\n      route,\n    };\n\n    if (meta.relativePath.startsWith(\"/\")) {\n      invariant(\n        meta.relativePath.startsWith(parentPath),\n        `Absolute route path \"${meta.relativePath}\" nested under path ` +\n          `\"${parentPath}\" is not valid. An absolute child route path ` +\n          `must start with the combined path of all its parent routes.`\n      );\n\n      meta.relativePath = meta.relativePath.slice(parentPath.length);\n    }\n\n    let path = joinPaths([parentPath, meta.relativePath]);\n    let routesMeta = parentsMeta.concat(meta);\n\n    // Add the children before adding this route to the array, so we traverse the\n    // route tree depth-first and child routes appear before their parents in\n    // the \"flattened\" version.\n    if (route.children && route.children.length > 0) {\n      invariant(\n        // Our types know better, but runtime JS may not!\n        // @ts-expect-error\n        route.index !== true,\n        `Index routes must not have child routes. Please remove ` +\n          `all child routes from route path \"${path}\".`\n      );\n\n      flattenRoutes(route.children, branches, routesMeta, path);\n    }\n\n    // Routes without a path shouldn't ever match by themselves unless they are\n    // index routes, so don't add them to the list of possible branches.\n    if (route.path == null && !route.index) {\n      return;\n    }\n\n    branches.push({\n      path,\n      score: computeScore(path, route.index),\n      routesMeta,\n    });\n  };\n  routes.forEach((route, index) => {\n    // coarse-grain check for optional params\n    if (route.path === \"\" || !route.path?.includes(\"?\")) {\n      flattenRoute(route, index);\n    } else {\n      for (let exploded of explodeOptionalSegments(route.path)) {\n        flattenRoute(route, index, exploded);\n      }\n    }\n  });\n\n  return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n  let segments = path.split(\"/\");\n  if (segments.length === 0) return [];\n\n  let [first, ...rest] = segments;\n\n  // Optional path segments are denoted by a trailing `?`\n  let isOptional = first.endsWith(\"?\");\n  // Compute the corresponding required segment: `foo?` -> `foo`\n  let required = first.replace(/\\?$/, \"\");\n\n  if (rest.length === 0) {\n    // Intepret empty string as omitting an optional segment\n    // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n    return isOptional ? [required, \"\"] : [required];\n  }\n\n  let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n  let result: string[] = [];\n\n  // All child paths with the prefix.  Do this for all children before the\n  // optional version for all children, so we get consistent ordering where the\n  // parent optional aspect is preferred as required.  Otherwise, we can get\n  // child sections interspersed where deeper optional segments are higher than\n  // parent optional segments, where for example, /:two would explode _earlier_\n  // then /:one.  By always including the parent as required _for all children_\n  // first, we avoid this issue\n  result.push(\n    ...restExploded.map((subpath) =>\n      subpath === \"\" ? required : [required, subpath].join(\"/\")\n    )\n  );\n\n  // Then, if this is an optional value, add all child versions without\n  if (isOptional) {\n    result.push(...restExploded);\n  }\n\n  // for absolute paths, ensure `/` instead of empty segment\n  return result.map((exploded) =>\n    path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n  );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n  branches.sort((a, b) =>\n    a.score !== b.score\n      ? b.score - a.score // Higher score first\n      : compareIndexes(\n          a.routesMeta.map((meta) => meta.childrenIndex),\n          b.routesMeta.map((meta) => meta.childrenIndex)\n        )\n  );\n}\n\nconst paramRe = /^:[\\w-]+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n  let segments = path.split(\"/\");\n  let initialScore = segments.length;\n  if (segments.some(isSplat)) {\n    initialScore += splatPenalty;\n  }\n\n  if (index) {\n    initialScore += indexRouteValue;\n  }\n\n  return segments\n    .filter((s) => !isSplat(s))\n    .reduce(\n      (score, segment) =>\n        score +\n        (paramRe.test(segment)\n          ? dynamicSegmentValue\n          : segment === \"\"\n          ? emptySegmentValue\n          : staticSegmentValue),\n      initialScore\n    );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n  let siblings =\n    a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n  return siblings\n    ? // If two routes are siblings, we should try to match the earlier sibling\n      // first. This allows people to have fine-grained control over the matching\n      // behavior by simply putting routes with identical paths in the order they\n      // want them tried.\n      a[a.length - 1] - b[b.length - 1]\n    : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n      // so they sort equally.\n      0;\n}\n\nfunction matchRouteBranch<\n  ParamKey extends string = string,\n  RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n  branch: RouteBranch<RouteObjectType>,\n  pathname: string\n): AgnosticRouteMatch<ParamKey, RouteObjectType>[] | null {\n  let { routesMeta } = branch;\n\n  let matchedParams = {};\n  let matchedPathname = \"/\";\n  let matches: AgnosticRouteMatch<ParamKey, RouteObjectType>[] = [];\n  for (let i = 0; i < routesMeta.length; ++i) {\n    let meta = routesMeta[i];\n    let end = i === routesMeta.length - 1;\n    let remainingPathname =\n      matchedPathname === \"/\"\n        ? pathname\n        : pathname.slice(matchedPathname.length) || \"/\";\n    let match = matchPath(\n      { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n      remainingPathname\n    );\n\n    if (!match) return null;\n\n    Object.assign(matchedParams, match.params);\n\n    let route = meta.route;\n\n    matches.push({\n      // TODO: Can this as be avoided?\n      params: matchedParams as Params<ParamKey>,\n      pathname: joinPaths([matchedPathname, match.pathname]),\n      pathnameBase: normalizePathname(\n        joinPaths([matchedPathname, match.pathnameBase])\n      ),\n      route,\n    });\n\n    if (match.pathnameBase !== \"/\") {\n      matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n    }\n  }\n\n  return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nexport function generatePath<Path extends string>(\n  originalPath: Path,\n  params: {\n    [key in PathParam<Path>]: string | null;\n  } = {} as any\n): string {\n  let path: string = originalPath;\n  if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n    warning(\n      false,\n      `Route path \"${path}\" will be treated as if it were ` +\n        `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n        `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n        `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n    );\n    path = path.replace(/\\*$/, \"/*\") as Path;\n  }\n\n  // ensure `/` is added at the beginning if the path is absolute\n  const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n  const stringify = (p: any) =>\n    p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n\n  const segments = path\n    .split(/\\/+/)\n    .map((segment, index, array) => {\n      const isLastSegment = index === array.length - 1;\n\n      // only apply the splat if it's the last segment\n      if (isLastSegment && segment === \"*\") {\n        const star = \"*\" as PathParam<Path>;\n        // Apply the splat\n        return stringify(params[star]);\n      }\n\n      const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n      if (keyMatch) {\n        const [, key, optional] = keyMatch;\n        let param = params[key as PathParam<Path>];\n        invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n        return stringify(param);\n      }\n\n      // Remove any optional markers from optional static segments\n      return segment.replace(/\\?$/g, \"\");\n    })\n    // Remove empty segments\n    .filter((segment) => !!segment);\n\n  return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern<Path extends string = string> {\n  /**\n   * A string to match against a URL pathname. May contain `:id`-style segments\n   * to indicate placeholders for dynamic parameters. May also end with `/*` to\n   * indicate matching the rest of the URL pathname.\n   */\n  path: Path;\n  /**\n   * Should be `true` if the static portions of the `path` should be matched in\n   * the same case.\n   */\n  caseSensitive?: boolean;\n  /**\n   * Should be `true` if this pattern should match the entire URL pathname.\n   */\n  end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch<ParamKey extends string = string> {\n  /**\n   * The names and values of dynamic parameters in the URL.\n   */\n  params: Params<ParamKey>;\n  /**\n   * The portion of the URL pathname that was matched.\n   */\n  pathname: string;\n  /**\n   * The portion of the URL pathname that was matched before child routes.\n   */\n  pathnameBase: string;\n  /**\n   * The pattern that was used to match.\n   */\n  pattern: PathPattern;\n}\n\ntype Mutable<T> = {\n  -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nexport function matchPath<\n  ParamKey extends ParamParseKey<Path>,\n  Path extends string\n>(\n  pattern: PathPattern<Path> | Path,\n  pathname: string\n): PathMatch<ParamKey> | null {\n  if (typeof pattern === \"string\") {\n    pattern = { path: pattern, caseSensitive: false, end: true };\n  }\n\n  let [matcher, compiledParams] = compilePath(\n    pattern.path,\n    pattern.caseSensitive,\n    pattern.end\n  );\n\n  let match = pathname.match(matcher);\n  if (!match) return null;\n\n  let matchedPathname = match[0];\n  let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n  let captureGroups = match.slice(1);\n  let params: Params = compiledParams.reduce<Mutable<Params>>(\n    (memo, { paramName, isOptional }, index) => {\n      // We need to compute the pathnameBase here using the raw splat value\n      // instead of using params[\"*\"] later because it will be decoded then\n      if (paramName === \"*\") {\n        let splatValue = captureGroups[index] || \"\";\n        pathnameBase = matchedPathname\n          .slice(0, matchedPathname.length - splatValue.length)\n          .replace(/(.)\\/+$/, \"$1\");\n      }\n\n      const value = captureGroups[index];\n      if (isOptional && !value) {\n        memo[paramName] = undefined;\n      } else {\n        memo[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n      }\n      return memo;\n    },\n    {}\n  );\n\n  return {\n    params,\n    pathname: matchedPathname,\n    pathnameBase,\n    pattern,\n  };\n}\n\ntype CompiledPathParam = { paramName: string; isOptional?: boolean };\n\nfunction compilePath(\n  path: string,\n  caseSensitive = false,\n  end = true\n): [RegExp, CompiledPathParam[]] {\n  warning(\n    path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n    `Route path \"${path}\" will be treated as if it were ` +\n      `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n      `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n      `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n  );\n\n  let params: CompiledPathParam[] = [];\n  let regexpSource =\n    \"^\" +\n    path\n      .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n      .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n      .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n      .replace(\n        /\\/:([\\w-]+)(\\?)?/g,\n        (_: string, paramName: string, isOptional) => {\n          params.push({ paramName, isOptional: isOptional != null });\n          return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n        }\n      );\n\n  if (path.endsWith(\"*\")) {\n    params.push({ paramName: \"*\" });\n    regexpSource +=\n      path === \"*\" || path === \"/*\"\n        ? \"(.*)$\" // Already matched the initial /, just match the rest\n        : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n  } else if (end) {\n    // When matching to the end, ignore trailing slashes\n    regexpSource += \"\\\\/*$\";\n  } else if (path !== \"\" && path !== \"/\") {\n    // If our path is non-empty and contains anything beyond an initial slash,\n    // then we have _some_ form of path in our regex, so we should expect to\n    // match only if we find the end of this path segment.  Look for an optional\n    // non-captured trailing slash (to match a portion of the URL) or the end\n    // of the path (if we've matched to the end).  We used to do this with a\n    // word boundary but that gives false positives on routes like\n    // /user-preferences since `-` counts as a word boundary.\n    regexpSource += \"(?:(?=\\\\/|$))\";\n  } else {\n    // Nothing to match for \"\" or \"/\"\n  }\n\n  let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n  return [matcher, params];\n}\n\nfunction decodePath(value: string) {\n  try {\n    return value\n      .split(\"/\")\n      .map((v) => decodeURIComponent(v).replace(/\\//g, \"%2F\"))\n      .join(\"/\");\n  } catch (error) {\n    warning(\n      false,\n      `The URL path \"${value}\" could not be decoded because it is is a ` +\n        `malformed URL segment. This is probably due to a bad percent ` +\n        `encoding (${error}).`\n    );\n\n    return value;\n  }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n  pathname: string,\n  basename: string\n): string | null {\n  if (basename === \"/\") return pathname;\n\n  if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n    return null;\n  }\n\n  // We want to leave trailing slash behavior in the user's control, so if they\n  // specify a basename with a trailing slash, we should support it\n  let startIndex = basename.endsWith(\"/\")\n    ? basename.length - 1\n    : basename.length;\n  let nextChar = pathname.charAt(startIndex);\n  if (nextChar && nextChar !== \"/\") {\n    // pathname does not start with basename/\n    return null;\n  }\n\n  return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n  let {\n    pathname: toPathname,\n    search = \"\",\n    hash = \"\",\n  } = typeof to === \"string\" ? parsePath(to) : to;\n\n  let pathname = toPathname\n    ? toPathname.startsWith(\"/\")\n      ? toPathname\n      : resolvePathname(toPathname, fromPathname)\n    : fromPathname;\n\n  return {\n    pathname,\n    search: normalizeSearch(search),\n    hash: normalizeHash(hash),\n  };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n  let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n  let relativeSegments = relativePath.split(\"/\");\n\n  relativeSegments.forEach((segment) => {\n    if (segment === \"..\") {\n      // Keep the root \"\" segment so the pathname starts at /\n      if (segments.length > 1) segments.pop();\n    } else if (segment !== \".\") {\n      segments.push(segment);\n    }\n  });\n\n  return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n  char: string,\n  field: string,\n  dest: string,\n  path: Partial<Path>\n) {\n  return (\n    `Cannot include a '${char}' character in a manually specified ` +\n    `\\`to.${field}\\` field [${JSON.stringify(\n      path\n    )}].  Please separate it out to the ` +\n    `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n    `a string in <Link to=\"...\"> and the router will parse it for you.`\n  );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same.  Both of the following examples should link back to the root:\n *\n *   <Route path=\"/\">\n *     <Route path=\"accounts\" element={<Link to=\"..\"}>\n *   </Route>\n *\n *   <Route path=\"/\">\n *     <Route path=\"accounts\">\n *       <Route element={<AccountsLayout />}>       // <-- Does not contribute\n *         <Route index element={<Link to=\"..\"} />  // <-- Does not contribute\n *       </Route\n *     </Route>\n *   </Route>\n */\nexport function getPathContributingMatches<\n  T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n  return matches.filter(\n    (match, index) =>\n      index === 0 || (match.route.path && match.route.path.length > 0)\n  );\n}\n\n// Return the array of pathnames for the current route matches - used to\n// generate the routePathnames input for resolveTo()\nexport function getResolveToMatches<\n  T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[], v7_relativeSplatPath: boolean) {\n  let pathMatches = getPathContributingMatches(matches);\n\n  // When v7_relativeSplatPath is enabled, use the full pathname for the leaf\n  // match so we include splat values for \".\" links.  See:\n  // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329\n  if (v7_relativeSplatPath) {\n    return pathMatches.map((match, idx) =>\n      idx === matches.length - 1 ? match.pathname : match.pathnameBase\n    );\n  }\n\n  return pathMatches.map((match) => match.pathnameBase);\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n  toArg: To,\n  routePathnames: string[],\n  locationPathname: string,\n  isPathRelative = false\n): Path {\n  let to: Partial<Path>;\n  if (typeof toArg === \"string\") {\n    to = parsePath(toArg);\n  } else {\n    to = { ...toArg };\n\n    invariant(\n      !to.pathname || !to.pathname.includes(\"?\"),\n      getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n    );\n    invariant(\n      !to.pathname || !to.pathname.includes(\"#\"),\n      getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n    );\n    invariant(\n      !to.search || !to.search.includes(\"#\"),\n      getInvalidPathError(\"#\", \"search\", \"hash\", to)\n    );\n  }\n\n  let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n  let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n  let from: string;\n\n  // Routing is relative to the current pathname if explicitly requested.\n  //\n  // If a pathname is explicitly provided in `to`, it should be relative to the\n  // route context. This is explained in `Note on `<Link to>` values` in our\n  // migration guide from v5 as a means of disambiguation between `to` values\n  // that begin with `/` and those that do not. However, this is problematic for\n  // `to` values that do not provide a pathname. `to` can simply be a search or\n  // hash string, in which case we should assume that the navigation is relative\n  // to the current location's pathname and *not* the route pathname.\n  if (toPathname == null) {\n    from = locationPathname;\n  } else {\n    let routePathnameIndex = routePathnames.length - 1;\n\n    // With relative=\"route\" (the default), each leading .. segment means\n    // \"go up one route\" instead of \"go up one URL segment\".  This is a key\n    // difference from how <a href> works and a major reason we call this a\n    // \"to\" value instead of a \"href\".\n    if (!isPathRelative && toPathname.startsWith(\"..\")) {\n      let toSegments = toPathname.split(\"/\");\n\n      while (toSegments[0] === \"..\") {\n        toSegments.shift();\n        routePathnameIndex -= 1;\n      }\n\n      to.pathname = toSegments.join(\"/\");\n    }\n\n    from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n  }\n\n  let path = resolvePath(to, from);\n\n  // Ensure the pathname has a trailing slash if the original \"to\" had one\n  let hasExplicitTrailingSlash =\n    toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n  // Or if this was a link to the current path which has a trailing slash\n  let hasCurrentTrailingSlash =\n    (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n  if (\n    !path.pathname.endsWith(\"/\") &&\n    (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n  ) {\n    path.pathname += \"/\";\n  }\n\n  return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n  // Empty strings should be treated the same as / paths\n  return to === \"\" || (to as Path).pathname === \"\"\n    ? \"/\"\n    : typeof to === \"string\"\n    ? parsePath(to).pathname\n    : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n  paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n  pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n  !search || search === \"?\"\n    ? \"\"\n    : search.startsWith(\"?\")\n    ? search\n    : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n  !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = <Data>(\n  data: Data,\n  init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n  let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n  let headers = new Headers(responseInit.headers);\n  if (!headers.has(\"Content-Type\")) {\n    headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n  }\n\n  return new Response(JSON.stringify(data), {\n    ...responseInit,\n    headers,\n  });\n};\n\nexport interface TrackedPromise extends Promise<any> {\n  _tracked?: boolean;\n  _data?: any;\n  _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n  private pendingKeysSet: Set<string> = new Set<string>();\n  private controller: AbortController;\n  private abortPromise: Promise<void>;\n  private unlistenAbortSignal: () => void;\n  private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n    new Set();\n  data: Record<string, unknown>;\n  init?: ResponseInit;\n  deferredKeys: string[] = [];\n\n  constructor(data: Record<string, unknown>, responseInit?: ResponseInit) {\n    invariant(\n      data && typeof data === \"object\" && !Array.isArray(data),\n      \"defer() only accepts plain objects\"\n    );\n\n    // Set up an AbortController + Promise we can race against to exit early\n    // cancellation\n    let reject: (e: AbortedDeferredError) => void;\n    this.abortPromise = new Promise((_, r) => (reject = r));\n    this.controller = new AbortController();\n    let onAbort = () =>\n      reject(new AbortedDeferredError(\"Deferred data aborted\"));\n    this.unlistenAbortSignal = () =>\n      this.controller.signal.removeEventListener(\"abort\", onAbort);\n    this.controller.signal.addEventListener(\"abort\", onAbort);\n\n    this.data = Object.entries(data).reduce(\n      (acc, [key, value]) =>\n        Object.assign(acc, {\n          [key]: this.trackPromise(key, value),\n        }),\n      {}\n    );\n\n    if (this.done) {\n      // All incoming values were resolved\n      this.unlistenAbortSignal();\n    }\n\n    this.init = responseInit;\n  }\n\n  private trackPromise(\n    key: string,\n    value: Promise<unknown> | unknown\n  ): TrackedPromise | unknown {\n    if (!(value instanceof Promise)) {\n      return value;\n    }\n\n    this.deferredKeys.push(key);\n    this.pendingKeysSet.add(key);\n\n    // We store a little wrapper promise that will be extended with\n    // _data/_error props upon resolve/reject\n    let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n      (data) => this.onSettle(promise, key, undefined, data as unknown),\n      (error) => this.onSettle(promise, key, error as unknown)\n    );\n\n    // Register rejection listeners to avoid uncaught promise rejections on\n    // errors or aborted deferred values\n    promise.catch(() => {});\n\n    Object.defineProperty(promise, \"_tracked\", { get: () => true });\n    return promise;\n  }\n\n  private onSettle(\n    promise: TrackedPromise,\n    key: string,\n    error: unknown,\n    data?: unknown\n  ): unknown {\n    if (\n      this.controller.signal.aborted &&\n      error instanceof AbortedDeferredError\n    ) {\n      this.unlistenAbortSignal();\n      Object.defineProperty(promise, \"_error\", { get: () => error });\n      return Promise.reject(error);\n    }\n\n    this.pendingKeysSet.delete(key);\n\n    if (this.done) {\n      // Nothing left to abort!\n      this.unlistenAbortSignal();\n    }\n\n    // If the promise was resolved/rejected with undefined, we'll throw an error as you\n    // should always resolve with a value or null\n    if (error === undefined && data === undefined) {\n      let undefinedError = new Error(\n        `Deferred data for key \"${key}\" resolved/rejected with \\`undefined\\`, ` +\n          `you must resolve/reject with a value or \\`null\\`.`\n      );\n      Object.defineProperty(promise, \"_error\", { get: () => undefinedError });\n      this.emit(false, key);\n      return Promise.reject(undefinedError);\n    }\n\n    if (data === undefined) {\n      Object.defineProperty(promise, \"_error\", { get: () => error });\n      this.emit(false, key);\n      return Promise.reject(error);\n    }\n\n    Object.defineProperty(promise, \"_data\", { get: () => data });\n    this.emit(false, key);\n    return data;\n  }\n\n  private emit(aborted: boolean, settledKey?: string) {\n    this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n  }\n\n  subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n    this.subscribers.add(fn);\n    return () => this.subscribers.delete(fn);\n  }\n\n  cancel() {\n    this.controller.abort();\n    this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n    this.emit(true);\n  }\n\n  async resolveData(signal: AbortSignal) {\n    let aborted = false;\n    if (!this.done) {\n      let onAbort = () => this.cancel();\n      signal.addEventListener(\"abort\", onAbort);\n      aborted = await new Promise((resolve) => {\n        this.subscribe((aborted) => {\n          signal.removeEventListener(\"abort\", onAbort);\n          if (aborted || this.done) {\n            resolve(aborted);\n          }\n        });\n      });\n    }\n    return aborted;\n  }\n\n  get done() {\n    return this.pendingKeysSet.size === 0;\n  }\n\n  get unwrappedData() {\n    invariant(\n      this.data !== null && this.done,\n      \"Can only unwrap data on initialized and settled deferreds\"\n    );\n\n    return Object.entries(this.data).reduce(\n      (acc, [key, value]) =>\n        Object.assign(acc, {\n          [key]: unwrapTrackedPromise(value),\n        }),\n      {}\n    );\n  }\n\n  get pendingKeys() {\n    return Array.from(this.pendingKeysSet);\n  }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n  return (\n    value instanceof Promise && (value as TrackedPromise)._tracked === true\n  );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n  if (!isTrackedPromise(value)) {\n    return value;\n  }\n\n  if (value._error) {\n    throw value._error;\n  }\n  return value._data;\n}\n\nexport type DeferFunction = (\n  data: Record<string, unknown>,\n  init?: number | ResponseInit\n) => DeferredData;\n\nexport const defer: DeferFunction = (data, init = {}) => {\n  let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n  return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n  url: string,\n  init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n  let responseInit = init;\n  if (typeof responseInit === \"number\") {\n    responseInit = { status: responseInit };\n  } else if (typeof responseInit.status === \"undefined\") {\n    responseInit.status = 302;\n  }\n\n  let headers = new Headers(responseInit.headers);\n  headers.set(\"Location\", url);\n\n  return new Response(null, {\n    ...responseInit,\n    headers,\n  });\n};\n\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirectDocument: RedirectFunction = (url, init) => {\n  let response = redirect(url, init);\n  response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n  return response;\n};\n\nexport type ErrorResponse = {\n  status: number;\n  statusText: string;\n  data: any;\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nexport class ErrorResponseImpl implements ErrorResponse {\n  status: number;\n  statusText: string;\n  data: any;\n  private error?: Error;\n  private internal: boolean;\n\n  constructor(\n    status: number,\n    statusText: string | undefined,\n    data: any,\n    internal = false\n  ) {\n    this.status = status;\n    this.statusText = statusText || \"\";\n    this.internal = internal;\n    if (data instanceof Error) {\n      this.data = data.toString();\n      this.error = data;\n    } else {\n      this.data = data;\n    }\n  }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n  return (\n    error != null &&\n    typeof error.status === \"number\" &&\n    typeof error.statusText === \"string\" &&\n    typeof error.internal === \"boolean\" &&\n    \"data\" in error\n  );\n}\n","import type { History, Location, Path, To } from \"./history\";\nimport {\n  Action as HistoryAction,\n  createLocation,\n  createPath,\n  invariant,\n  parsePath,\n  warning,\n} from \"./history\";\nimport type {\n  ActionFunction,\n  AgnosticDataRouteMatch,\n  AgnosticDataRouteObject,\n  AgnosticRouteObject,\n  DataResult,\n  DeferredData,\n  DeferredResult,\n  DetectErrorBoundaryFunction,\n  ErrorResult,\n  FormEncType,\n  FormMethod,\n  HTMLFormMethod,\n  ImmutableRouteKey,\n  LoaderFunction,\n  MapRoutePropertiesFunction,\n  MutationFormMethod,\n  RedirectResult,\n  RouteData,\n  RouteManifest,\n  ShouldRevalidateFunctionArgs,\n  Submission,\n  SuccessResult,\n  UIMatch,\n  V7_FormMethod,\n  V7_MutationFormMethod,\n} from \"./utils\";\nimport {\n  ErrorResponseImpl,\n  ResultType,\n  convertRouteMatchToUiMatch,\n  convertRoutesToDataRoutes,\n  getPathContributingMatches,\n  getResolveToMatches,\n  immutableRouteKeys,\n  isRouteErrorResponse,\n  joinPaths,\n  matchRoutes,\n  resolveTo,\n  stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Return the basename for the router\n   */\n  get basename(): RouterInit[\"basename\"];\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Return the future config for the router\n   */\n  get future(): FutureConfig;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Return the current state of the router\n   */\n  get state(): RouterState;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Return the routes for this router instance\n   */\n  get routes(): AgnosticDataRouteObject[];\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Return the window associated with the router\n   */\n  get window(): RouterInit[\"window\"];\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Initialize the router, including adding history listeners and kicking off\n   * initial data fetches.  Returns a function to cleanup listeners and abort\n   * any in-progress loads\n   */\n  initialize(): Router;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Subscribe to router.state updates\n   *\n   * @param fn function to call with the new state\n   */\n  subscribe(fn: RouterSubscriber): () => void;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Enable scroll restoration behavior in the router\n   *\n   * @param savedScrollPositions Object that will manage positions, in case\n   *                             it's being restored from sessionStorage\n   * @param getScrollPosition    Function to get the active Y scroll position\n   * @param getKey               Function to get the key to use for restoration\n   */\n  enableScrollRestoration(\n    savedScrollPositions: Record<string, number>,\n    getScrollPosition: GetScrollPositionFunction,\n    getKey?: GetScrollRestorationKeyFunction\n  ): () => void;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Navigate forward/backward in the history stack\n   * @param to Delta to move in the history stack\n   */\n  navigate(to: number): Promise<void>;\n\n  /**\n   * Navigate to the given path\n   * @param to Path to navigate to\n   * @param opts Navigation options (method, submission, etc.)\n   */\n  navigate(to: To | null, opts?: RouterNavigateOptions): Promise<void>;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Trigger a fetcher load/submission\n   *\n   * @param key     Fetcher key\n   * @param routeId Route that owns the fetcher\n   * @param href    href to fetch\n   * @param opts    Fetcher options, (method, submission, etc.)\n   */\n  fetch(\n    key: string,\n    routeId: string,\n    href: string | null,\n    opts?: RouterFetchOptions\n  ): void;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Trigger a revalidation of all current route loaders and fetcher loads\n   */\n  revalidate(): void;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Utility function to create an href for the given location\n   * @param location\n   */\n  createHref(location: Location | URL): string;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Utility function to URL encode a destination path according to the internal\n   * history implementation\n   * @param to\n   */\n  encodeLocation(to: To): Path;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Get/create a fetcher for the given key\n   * @param key\n   */\n  getFetcher<TData = any>(key: string): Fetcher<TData>;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Delete the fetcher for a given key\n   * @param key\n   */\n  deleteFetcher(key: string): void;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Cleanup listeners and abort any in-progress loads\n   */\n  dispose(): void;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Get a navigation blocker\n   * @param key The identifier for the blocker\n   * @param fn The blocker function implementation\n   */\n  getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Delete a navigation blocker\n   * @param key The identifier for the blocker\n   */\n  deleteBlocker(key: string): void;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * HMR needs to pass in-flight route updates to React Router\n   * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n   */\n  _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Internal fetch AbortControllers accessed by unit tests\n   */\n  _internalFetchControllers: Map<string, AbortController>;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Internal pending DeferredData instances accessed by unit tests\n   */\n  _internalActiveDeferreds: Map<string, DeferredData>;\n}\n\n/**\n * State maintained internally by the router.  During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n  /**\n   * The action of the most recent navigation\n   */\n  historyAction: HistoryAction;\n\n  /**\n   * The current location reflected by the router\n   */\n  location: Location;\n\n  /**\n   * The current set of route matches\n   */\n  matches: AgnosticDataRouteMatch[];\n\n  /**\n   * Tracks whether we've completed our initial data load\n   */\n  initialized: boolean;\n\n  /**\n   * Current scroll position we should start at for a new view\n   *  - number -> scroll position to restore to\n   *  - false -> do not restore scroll at all (used during submissions)\n   *  - null -> don't have a saved position, scroll to hash or top of page\n   */\n  restoreScrollPosition: number | false | null;\n\n  /**\n   * Indicate whether this navigation should skip resetting the scroll position\n   * if we are unable to restore the scroll position\n   */\n  preventScrollReset: boolean;\n\n  /**\n   * Tracks the state of the current navigation\n   */\n  navigation: Navigation;\n\n  /**\n   * Tracks any in-progress revalidations\n   */\n  revalidation: RevalidationState;\n\n  /**\n   * Data from the loaders for the current matches\n   */\n  loaderData: RouteData;\n\n  /**\n   * Data from the action for the current matches\n   */\n  actionData: RouteData | null;\n\n  /**\n   * Errors caught from loaders for the current matches\n   */\n  errors: RouteData | null;\n\n  /**\n   * Map of current fetchers\n   */\n  fetchers: Map<string, Fetcher>;\n\n  /**\n   * Map of current blockers\n   */\n  blockers: Map<string, Blocker>;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n  Pick<RouterState, \"loaderData\" | \"actionData\" | \"errors\">\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n  v7_fetcherPersist: boolean;\n  v7_normalizeFormMethod: boolean;\n  v7_partialHydration: boolean;\n  v7_prependBasename: boolean;\n  v7_relativeSplatPath: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n  routes: AgnosticRouteObject[];\n  history: History;\n  basename?: string;\n  /**\n   * @deprecated Use `mapRouteProperties` instead\n   */\n  detectErrorBoundary?: DetectErrorBoundaryFunction;\n  mapRouteProperties?: MapRoutePropertiesFunction;\n  future?: Partial<FutureConfig>;\n  hydrationData?: HydrationState;\n  window?: Window;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n  basename: Router[\"basename\"];\n  location: RouterState[\"location\"];\n  matches: RouterState[\"matches\"];\n  loaderData: RouterState[\"loaderData\"];\n  actionData: RouterState[\"actionData\"];\n  errors: RouterState[\"errors\"];\n  statusCode: number;\n  loaderHeaders: Record<string, Headers>;\n  actionHeaders: Record<string, Headers>;\n  activeDeferreds: Record<string, DeferredData> | null;\n  _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n  dataRoutes: AgnosticDataRouteObject[];\n  query(\n    request: Request,\n    opts?: { requestContext?: unknown }\n  ): Promise<StaticHandlerContext | Response>;\n  queryRoute(\n    request: Request,\n    opts?: { routeId?: string; requestContext?: unknown }\n  ): Promise<any>;\n}\n\ntype ViewTransitionOpts = {\n  currentLocation: Location;\n  nextLocation: Location;\n};\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n  (\n    state: RouterState,\n    opts: {\n      deletedFetchers: string[];\n      unstable_viewTransitionOpts?: ViewTransitionOpts;\n      unstable_flushSync: boolean;\n    }\n  ): void;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n  (location: Location, matches: UIMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n  (): number;\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\n// Allowed for any navigation or fetch\ntype BaseNavigateOrFetchOptions = {\n  preventScrollReset?: boolean;\n  relative?: RelativeRoutingType;\n  unstable_flushSync?: boolean;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n  replace?: boolean;\n  state?: any;\n  fromRouteId?: string;\n  unstable_viewTransition?: boolean;\n};\n\n// Only allowed for submission navigations\ntype BaseSubmissionOptions = {\n  formMethod?: HTMLFormMethod;\n  formEncType?: FormEncType;\n} & (\n  | { formData: FormData; body?: undefined }\n  | { formData?: undefined; body: any }\n);\n\n/**\n * Options for a navigate() call for a normal (non-submission) navigation\n */\ntype LinkNavigateOptions = BaseNavigateOptions;\n\n/**\n * Options for a navigate() call for a submission navigation\n */\ntype SubmissionNavigateOptions = BaseNavigateOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to navigate() for a navigation\n */\nexport type RouterNavigateOptions =\n  | LinkNavigateOptions\n  | SubmissionNavigateOptions;\n\n/**\n * Options for a fetch() load\n */\ntype LoadFetchOptions = BaseNavigateOrFetchOptions;\n\n/**\n * Options for a fetch() submission\n */\ntype SubmitFetchOptions = BaseNavigateOrFetchOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions = LoadFetchOptions | SubmitFetchOptions;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n  Idle: {\n    state: \"idle\";\n    location: undefined;\n    formMethod: undefined;\n    formAction: undefined;\n    formEncType: undefined;\n    formData: undefined;\n    json: undefined;\n    text: undefined;\n  };\n  Loading: {\n    state: \"loading\";\n    location: Location;\n    formMethod: Submission[\"formMethod\"] | undefined;\n    formAction: Submission[\"formAction\"] | undefined;\n    formEncType: Submission[\"formEncType\"] | undefined;\n    formData: Submission[\"formData\"] | undefined;\n    json: Submission[\"json\"] | undefined;\n    text: Submission[\"text\"] | undefined;\n  };\n  Submitting: {\n    state: \"submitting\";\n    location: Location;\n    formMethod: Submission[\"formMethod\"];\n    formAction: Submission[\"formAction\"];\n    formEncType: Submission[\"formEncType\"];\n    formData: Submission[\"formData\"];\n    json: Submission[\"json\"];\n    text: Submission[\"text\"];\n  };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates<TData = any> = {\n  Idle: {\n    state: \"idle\";\n    formMethod: undefined;\n    formAction: undefined;\n    formEncType: undefined;\n    text: undefined;\n    formData: undefined;\n    json: undefined;\n    data: TData | undefined;\n  };\n  Loading: {\n    state: \"loading\";\n    formMethod: Submission[\"formMethod\"] | undefined;\n    formAction: Submission[\"formAction\"] | undefined;\n    formEncType: Submission[\"formEncType\"] | undefined;\n    text: Submission[\"text\"] | undefined;\n    formData: Submission[\"formData\"] | undefined;\n    json: Submission[\"json\"] | undefined;\n    data: TData | undefined;\n  };\n  Submitting: {\n    state: \"submitting\";\n    formMethod: Submission[\"formMethod\"];\n    formAction: Submission[\"formAction\"];\n    formEncType: Submission[\"formEncType\"];\n    text: Submission[\"text\"];\n    formData: Submission[\"formData\"];\n    json: Submission[\"json\"];\n    data: TData | undefined;\n  };\n};\n\nexport type Fetcher<TData = any> =\n  FetcherStates<TData>[keyof FetcherStates<TData>];\n\ninterface BlockerBlocked {\n  state: \"blocked\";\n  reset(): void;\n  proceed(): void;\n  location: Location;\n}\n\ninterface BlockerUnblocked {\n  state: \"unblocked\";\n  reset: undefined;\n  proceed: undefined;\n  location: undefined;\n}\n\ninterface BlockerProceeding {\n  state: \"proceeding\";\n  reset: undefined;\n  proceed: undefined;\n  location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n  currentLocation: Location;\n  nextLocation: Location;\n  historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n  /**\n   * startNavigation does not need to complete the navigation because we\n   * redirected or got interrupted\n   */\n  shortCircuited?: boolean;\n}\n\ninterface HandleActionResult extends ShortCircuitable {\n  /**\n   * Error thrown from the current action, keyed by the route containing the\n   * error boundary to render the error.  To be committed to the state after\n   * loaders have completed\n   */\n  pendingActionError?: RouteData;\n  /**\n   * Data returned from the current action, keyed by the route owning the action.\n   * To be committed to the state after loaders have completed\n   */\n  pendingActionData?: RouteData;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n  /**\n   * loaderData returned from the current set of loaders\n   */\n  loaderData?: RouterState[\"loaderData\"];\n  /**\n   * errors thrown from the current set of loaders\n   */\n  errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n  routeId: string;\n  path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n  key: string;\n  match: AgnosticDataRouteMatch | null;\n  matches: AgnosticDataRouteMatch[] | null;\n  controller: AbortController | null;\n}\n\n/**\n * Wrapper object to allow us to throw any response out from callLoaderOrAction\n * for queryRouter while preserving whether or not it was thrown or returned\n * from the loader/action\n */\ninterface QueryRouteResponse {\n  type: ResultType.data | ResultType.error;\n  response: Response;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n  \"post\",\n  \"put\",\n  \"patch\",\n  \"delete\",\n];\nconst validMutationMethods = new Set<MutationFormMethod>(\n  validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n  \"get\",\n  ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set<FormMethod>(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n  state: \"idle\",\n  location: undefined,\n  formMethod: undefined,\n  formAction: undefined,\n  formEncType: undefined,\n  formData: undefined,\n  json: undefined,\n  text: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n  state: \"idle\",\n  data: undefined,\n  formMethod: undefined,\n  formAction: undefined,\n  formEncType: undefined,\n  formData: undefined,\n  json: undefined,\n  text: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n  state: \"unblocked\",\n  proceed: undefined,\n  reset: undefined,\n  location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst defaultMapRouteProperties: MapRoutePropertiesFunction = (route) => ({\n  hasErrorBoundary: Boolean(route.hasErrorBoundary),\n});\n\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n  const routerWindow = init.window\n    ? init.window\n    : typeof window !== \"undefined\"\n    ? window\n    : undefined;\n  const isBrowser =\n    typeof routerWindow !== \"undefined\" &&\n    typeof routerWindow.document !== \"undefined\" &&\n    typeof routerWindow.document.createElement !== \"undefined\";\n  const isServer = !isBrowser;\n\n  invariant(\n    init.routes.length > 0,\n    \"You must provide a non-empty routes array to createRouter\"\n  );\n\n  let mapRouteProperties: MapRoutePropertiesFunction;\n  if (init.mapRouteProperties) {\n    mapRouteProperties = init.mapRouteProperties;\n  } else if (init.detectErrorBoundary) {\n    // If they are still using the deprecated version, wrap it with the new API\n    let detectErrorBoundary = init.detectErrorBoundary;\n    mapRouteProperties = (route) => ({\n      hasErrorBoundary: detectErrorBoundary(route),\n    });\n  } else {\n    mapRouteProperties = defaultMapRouteProperties;\n  }\n\n  // Routes keyed by ID\n  let manifest: RouteManifest = {};\n  // Routes in tree format for matching\n  let dataRoutes = convertRoutesToDataRoutes(\n    init.routes,\n    mapRouteProperties,\n    undefined,\n    manifest\n  );\n  let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n  let basename = init.basename || \"/\";\n  // Config driven behavior flags\n  let future: FutureConfig = {\n    v7_fetcherPersist: false,\n    v7_normalizeFormMethod: false,\n    v7_partialHydration: false,\n    v7_prependBasename: false,\n    v7_relativeSplatPath: false,\n    ...init.future,\n  };\n  // Cleanup function for history\n  let unlistenHistory: (() => void) | null = null;\n  // Externally-provided functions to call on all state changes\n  let subscribers = new Set<RouterSubscriber>();\n  // Externally-provided object to hold scroll restoration locations during routing\n  let savedScrollPositions: Record<string, number> | null = null;\n  // Externally-provided function to get scroll restoration keys\n  let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n  // Externally-provided function to get current scroll position\n  let getScrollPosition: GetScrollPositionFunction | null = null;\n  // One-time flag to control the initial hydration scroll restoration.  Because\n  // we don't get the saved positions from <ScrollRestoration /> until _after_\n  // the initial render, we need to manually trigger a separate updateState to\n  // send along the restoreScrollPosition\n  // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n  // SSR did the initial scroll restoration.\n  let initialScrollRestored = init.hydrationData != null;\n\n  let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n  let initialErrors: RouteData | null = null;\n\n  if (initialMatches == null) {\n    // If we do not match a user-provided-route, fall back to the root\n    // to allow the error boundary to take over\n    let error = getInternalRouterError(404, {\n      pathname: init.history.location.pathname,\n    });\n    let { matches, route } = getShortCircuitMatches(dataRoutes);\n    initialMatches = matches;\n    initialErrors = { [route.id]: error };\n  }\n\n  let initialized: boolean;\n  let hasLazyRoutes = initialMatches.some((m) => m.route.lazy);\n  let hasLoaders = initialMatches.some((m) => m.route.loader);\n  if (hasLazyRoutes) {\n    // All initialMatches need to be loaded before we're ready.  If we have lazy\n    // functions around still then we'll need to run them in initialize()\n    initialized = false;\n  } else if (!hasLoaders) {\n    // If we've got no loaders to run, then we're good to go\n    initialized = true;\n  } else if (future.v7_partialHydration) {\n    // If partial hydration is enabled, we're initialized so long as we were\n    // provided with hydrationData for every route with a loader, and no loaders\n    // were marked for explicit hydration\n    let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n    let errors = init.hydrationData ? init.hydrationData.errors : null;\n    initialized = initialMatches.every(\n      (m) =>\n        m.route.loader &&\n        m.route.loader.hydrate !== true &&\n        ((loaderData && loaderData[m.route.id] !== undefined) ||\n          (errors && errors[m.route.id] !== undefined))\n    );\n  } else {\n    // Without partial hydration - we're initialized if we were provided any\n    // hydrationData - which is expected to be complete\n    initialized = init.hydrationData != null;\n  }\n\n  let router: Router;\n  let state: RouterState = {\n    historyAction: init.history.action,\n    location: init.history.location,\n    matches: initialMatches,\n    initialized,\n    navigation: IDLE_NAVIGATION,\n    // Don't restore on initial updateState() if we were SSR'd\n    restoreScrollPosition: init.hydrationData != null ? false : null,\n    preventScrollReset: false,\n    revalidation: \"idle\",\n    loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n    actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n    errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n    fetchers: new Map(),\n    blockers: new Map(),\n  };\n\n  // -- Stateful internal variables to manage navigations --\n  // Current navigation in progress (to be committed in completeNavigation)\n  let pendingAction: HistoryAction = HistoryAction.Pop;\n\n  // Should the current navigation prevent the scroll reset if scroll cannot\n  // be restored?\n  let pendingPreventScrollReset = false;\n\n  // AbortController for the active navigation\n  let pendingNavigationController: AbortController | null;\n\n  // Should the current navigation enable document.startViewTransition?\n  let pendingViewTransitionEnabled = false;\n\n  // Store applied view transitions so we can apply them on POP\n  let appliedViewTransitions: Map<string, Set<string>> = new Map<\n    string,\n    Set<string>\n  >();\n\n  // Cleanup function for persisting applied transitions to sessionStorage\n  let removePageHideEventListener: (() => void) | null = null;\n\n  // We use this to avoid touching history in completeNavigation if a\n  // revalidation is entirely uninterrupted\n  let isUninterruptedRevalidation = false;\n\n  // Use this internal flag to force revalidation of all loaders:\n  //  - submissions (completed or interrupted)\n  //  - useRevalidator()\n  //  - X-Remix-Revalidate (from redirect)\n  let isRevalidationRequired = false;\n\n  // Use this internal array to capture routes that require revalidation due\n  // to a cancelled deferred on action submission\n  let cancelledDeferredRoutes: string[] = [];\n\n  // Use this internal array to capture fetcher loads that were cancelled by an\n  // action navigation and require revalidation\n  let cancelledFetcherLoads: string[] = [];\n\n  // AbortControllers for any in-flight fetchers\n  let fetchControllers = new Map<string, AbortController>();\n\n  // Track loads based on the order in which they started\n  let incrementingLoadId = 0;\n\n  // Track the outstanding pending navigation data load to be compared against\n  // the globally incrementing load when a fetcher load lands after a completed\n  // navigation\n  let pendingNavigationLoadId = -1;\n\n  // Fetchers that triggered data reloads as a result of their actions\n  let fetchReloadIds = new Map<string, number>();\n\n  // Fetchers that triggered redirect navigations\n  let fetchRedirectIds = new Set<string>();\n\n  // Most recent href/match for fetcher.load calls for fetchers\n  let fetchLoadMatches = new Map<string, FetchLoadMatch>();\n\n  // Ref-count mounted fetchers so we know when it's ok to clean them up\n  let activeFetchers = new Map<string, number>();\n\n  // Fetchers that have requested a delete when using v7_fetcherPersist,\n  // they'll be officially removed after they return to idle\n  let deletedFetchers = new Set<string>();\n\n  // Store DeferredData instances for active route matches.  When a\n  // route loader returns defer() we stick one in here.  Then, when a nested\n  // promise resolves we update loaderData.  If a new navigation starts we\n  // cancel active deferreds for eliminated routes.\n  let activeDeferreds = new Map<string, DeferredData>();\n\n  // Store blocker functions in a separate Map outside of router state since\n  // we don't need to update UI state if they change\n  let blockerFunctions = new Map<string, BlockerFunction>();\n\n  // Flag to ignore the next history update, so we can revert the URL change on\n  // a POP navigation that was blocked by the user without touching router state\n  let ignoreNextHistoryUpdate = false;\n\n  // Initialize the router, all side effects should be kicked off from here.\n  // Implemented as a Fluent API for ease of:\n  //   let router = createRouter(init).initialize();\n  function initialize() {\n    // If history informs us of a POP navigation, start the navigation but do not update\n    // state.  We'll update our own state once the navigation completes\n    unlistenHistory = init.history.listen(\n      ({ action: historyAction, location, delta }) => {\n        // Ignore this event if it was just us resetting the URL from a\n        // blocked POP navigation\n        if (ignoreNextHistoryUpdate) {\n          ignoreNextHistoryUpdate = false;\n          return;\n        }\n\n        warning(\n          blockerFunctions.size === 0 || delta != null,\n          \"You are trying to use a blocker on a POP navigation to a location \" +\n            \"that was not created by @remix-run/router. This will fail silently in \" +\n            \"production. This can happen if you are navigating outside the router \" +\n            \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n            \"router navigation APIs.  This can also happen if you are using \" +\n            \"createHashRouter and the user manually changes the URL.\"\n        );\n\n        let blockerKey = shouldBlockNavigation({\n          currentLocation: state.location,\n          nextLocation: location,\n          historyAction,\n        });\n\n        if (blockerKey && delta != null) {\n          // Restore the URL to match the current UI, but don't update router state\n          ignoreNextHistoryUpdate = true;\n          init.history.go(delta * -1);\n\n          // Put the blocker into a blocked state\n          updateBlocker(blockerKey, {\n            state: \"blocked\",\n            location,\n            proceed() {\n              updateBlocker(blockerKey!, {\n                state: \"proceeding\",\n                proceed: undefined,\n                reset: undefined,\n                location,\n              });\n              // Re-do the same POP navigation we just blocked\n              init.history.go(delta);\n            },\n            reset() {\n              let blockers = new Map(state.blockers);\n              blockers.set(blockerKey!, IDLE_BLOCKER);\n              updateState({ blockers });\n            },\n          });\n          return;\n        }\n\n        return startNavigation(historyAction, location);\n      }\n    );\n\n    if (isBrowser) {\n      // FIXME: This feels gross.  How can we cleanup the lines between\n      // scrollRestoration/appliedTransitions persistance?\n      restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n      let _saveAppliedTransitions = () =>\n        persistAppliedTransitions(routerWindow, appliedViewTransitions);\n      routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n      removePageHideEventListener = () =>\n        routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n    }\n\n    // Kick off initial data load if needed.  Use Pop to avoid modifying history\n    // Note we don't do any handling of lazy here.  For SPA's it'll get handled\n    // in the normal navigation flow.  For SSR it's expected that lazy modules are\n    // resolved prior to router creation since we can't go into a fallbackElement\n    // UI for SSR'd apps\n    if (!state.initialized) {\n      startNavigation(HistoryAction.Pop, state.location, {\n        initialHydration: true,\n      });\n    }\n\n    return router;\n  }\n\n  // Clean up a router and it's side effects\n  function dispose() {\n    if (unlistenHistory) {\n      unlistenHistory();\n    }\n    if (removePageHideEventListener) {\n      removePageHideEventListener();\n    }\n    subscribers.clear();\n    pendingNavigationController && pendingNavigationController.abort();\n    state.fetchers.forEach((_, key) => deleteFetcher(key));\n    state.blockers.forEach((_, key) => deleteBlocker(key));\n  }\n\n  // Subscribe to state updates for the router\n  function subscribe(fn: RouterSubscriber) {\n    subscribers.add(fn);\n    return () => subscribers.delete(fn);\n  }\n\n  // Update our state and notify the calling context of the change\n  function updateState(\n    newState: Partial<RouterState>,\n    opts: {\n      flushSync?: boolean;\n      viewTransitionOpts?: ViewTransitionOpts;\n    } = {}\n  ): void {\n    state = {\n      ...state,\n      ...newState,\n    };\n\n    // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n    // can be removed\n    let completedFetchers: string[] = [];\n    let deletedFetchersKeys: string[] = [];\n\n    if (future.v7_fetcherPersist) {\n      state.fetchers.forEach((fetcher, key) => {\n        if (fetcher.state === \"idle\") {\n          if (deletedFetchers.has(key)) {\n            // Unmounted from the UI and can be totally removed\n            deletedFetchersKeys.push(key);\n          } else {\n            // Returned to idle but still mounted in the UI, so semi-remains for\n            // revalidations and such\n            completedFetchers.push(key);\n          }\n        }\n      });\n    }\n\n    // Iterate over a local copy so that if flushSync is used and we end up\n    // removing and adding a new subscriber due to the useCallback dependencies,\n    // we don't get ourselves into a loop calling the new subscriber immediately\n    [...subscribers].forEach((subscriber) =>\n      subscriber(state, {\n        deletedFetchers: deletedFetchersKeys,\n        unstable_viewTransitionOpts: opts.viewTransitionOpts,\n        unstable_flushSync: opts.flushSync === true,\n      })\n    );\n\n    // Remove idle fetchers from state since we only care about in-flight fetchers.\n    if (future.v7_fetcherPersist) {\n      completedFetchers.forEach((key) => state.fetchers.delete(key));\n      deletedFetchersKeys.forEach((key) => deleteFetcher(key));\n    }\n  }\n\n  // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n  // and setting state.[historyAction/location/matches] to the new route.\n  // - Location is a required param\n  // - Navigation will always be set to IDLE_NAVIGATION\n  // - Can pass any other state in newState\n  function completeNavigation(\n    location: Location,\n    newState: Partial<Omit<RouterState, \"action\" | \"location\" | \"navigation\">>,\n    { flushSync }: { flushSync?: boolean } = {}\n  ): void {\n    // Deduce if we're in a loading/actionReload state:\n    // - We have committed actionData in the store\n    // - The current navigation was a mutation submission\n    // - We're past the submitting state and into the loading state\n    // - The location being loaded is not the result of a redirect\n    let isActionReload =\n      state.actionData != null &&\n      state.navigation.formMethod != null &&\n      isMutationMethod(state.navigation.formMethod) &&\n      state.navigation.state === \"loading\" &&\n      location.state?._isRedirect !== true;\n\n    let actionData: RouteData | null;\n    if (newState.actionData) {\n      if (Object.keys(newState.actionData).length > 0) {\n        actionData = newState.actionData;\n      } else {\n        // Empty actionData -> clear prior actionData due to an action error\n        actionData = null;\n      }\n    } else if (isActionReload) {\n      // Keep the current data if we're wrapping up the action reload\n      actionData = state.actionData;\n    } else {\n      // Clear actionData on any other completed navigations\n      actionData = null;\n    }\n\n    // Always preserve any existing loaderData from re-used routes\n    let loaderData = newState.loaderData\n      ? mergeLoaderData(\n          state.loaderData,\n          newState.loaderData,\n          newState.matches || [],\n          newState.errors\n        )\n      : state.loaderData;\n\n    // On a successful navigation we can assume we got through all blockers\n    // so we can start fresh\n    let blockers = state.blockers;\n    if (blockers.size > 0) {\n      blockers = new Map(blockers);\n      blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n    }\n\n    // Always respect the user flag.  Otherwise don't reset on mutation\n    // submission navigations unless they redirect\n    let preventScrollReset =\n      pendingPreventScrollReset === true ||\n      (state.navigation.formMethod != null &&\n        isMutationMethod(state.navigation.formMethod) &&\n        location.state?._isRedirect !== true);\n\n    if (inFlightDataRoutes) {\n      dataRoutes = inFlightDataRoutes;\n      inFlightDataRoutes = undefined;\n    }\n\n    if (isUninterruptedRevalidation) {\n      // If this was an uninterrupted revalidation then do not touch history\n    } else if (pendingAction === HistoryAction.Pop) {\n      // Do nothing for POP - URL has already been updated\n    } else if (pendingAction === HistoryAction.Push) {\n      init.history.push(location, location.state);\n    } else if (pendingAction === HistoryAction.Replace) {\n      init.history.replace(location, location.state);\n    }\n\n    let viewTransitionOpts: ViewTransitionOpts | undefined;\n\n    // On POP, enable transitions if they were enabled on the original navigation\n    if (pendingAction === HistoryAction.Pop) {\n      // Forward takes precedence so they behave like the original navigation\n      let priorPaths = appliedViewTransitions.get(state.location.pathname);\n      if (priorPaths && priorPaths.has(location.pathname)) {\n        viewTransitionOpts = {\n          currentLocation: state.location,\n          nextLocation: location,\n        };\n      } else if (appliedViewTransitions.has(location.pathname)) {\n        // If we don't have a previous forward nav, assume we're popping back to\n        // the new location and enable if that location previously enabled\n        viewTransitionOpts = {\n          currentLocation: location,\n          nextLocation: state.location,\n        };\n      }\n    } else if (pendingViewTransitionEnabled) {\n      // Store the applied transition on PUSH/REPLACE\n      let toPaths = appliedViewTransitions.get(state.location.pathname);\n      if (toPaths) {\n        toPaths.add(location.pathname);\n      } else {\n        toPaths = new Set<string>([location.pathname]);\n        appliedViewTransitions.set(state.location.pathname, toPaths);\n      }\n      viewTransitionOpts = {\n        currentLocation: state.location,\n        nextLocation: location,\n      };\n    }\n\n    updateState(\n      {\n        ...newState, // matches, errors, fetchers go through as-is\n        actionData,\n        loaderData,\n        historyAction: pendingAction,\n        location,\n        initialized: true,\n        navigation: IDLE_NAVIGATION,\n        revalidation: \"idle\",\n        restoreScrollPosition: getSavedScrollPosition(\n          location,\n          newState.matches || state.matches\n        ),\n        preventScrollReset,\n        blockers,\n      },\n      {\n        viewTransitionOpts,\n        flushSync: flushSync === true,\n      }\n    );\n\n    // Reset stateful navigation vars\n    pendingAction = HistoryAction.Pop;\n    pendingPreventScrollReset = false;\n    pendingViewTransitionEnabled = false;\n    isUninterruptedRevalidation = false;\n    isRevalidationRequired = false;\n    cancelledDeferredRoutes = [];\n    cancelledFetcherLoads = [];\n  }\n\n  // Trigger a navigation event, which can either be a numerical POP or a PUSH\n  // replace with an optional submission\n  async function navigate(\n    to: number | To | null,\n    opts?: RouterNavigateOptions\n  ): Promise<void> {\n    if (typeof to === \"number\") {\n      init.history.go(to);\n      return;\n    }\n\n    let normalizedPath = normalizeTo(\n      state.location,\n      state.matches,\n      basename,\n      future.v7_prependBasename,\n      to,\n      future.v7_relativeSplatPath,\n      opts?.fromRouteId,\n      opts?.relative\n    );\n    let { path, submission, error } = normalizeNavigateOptions(\n      future.v7_normalizeFormMethod,\n      false,\n      normalizedPath,\n      opts\n    );\n\n    let currentLocation = state.location;\n    let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n    // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n    // URL from window.location, so we need to encode it here so the behavior\n    // remains the same as POP and non-data-router usages.  new URL() does all\n    // the same encoding we'd get from a history.pushState/window.location read\n    // without having to touch history\n    nextLocation = {\n      ...nextLocation,\n      ...init.history.encodeLocation(nextLocation),\n    };\n\n    let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n    let historyAction = HistoryAction.Push;\n\n    if (userReplace === true) {\n      historyAction = HistoryAction.Replace;\n    } else if (userReplace === false) {\n      // no-op\n    } else if (\n      submission != null &&\n      isMutationMethod(submission.formMethod) &&\n      submission.formAction === state.location.pathname + state.location.search\n    ) {\n      // By default on submissions to the current location we REPLACE so that\n      // users don't have to double-click the back button to get to the prior\n      // location.  If the user redirects to a different location from the\n      // action/loader this will be ignored and the redirect will be a PUSH\n      historyAction = HistoryAction.Replace;\n    }\n\n    let preventScrollReset =\n      opts && \"preventScrollReset\" in opts\n        ? opts.preventScrollReset === true\n        : undefined;\n\n    let flushSync = (opts && opts.unstable_flushSync) === true;\n\n    let blockerKey = shouldBlockNavigation({\n      currentLocation,\n      nextLocation,\n      historyAction,\n    });\n\n    if (blockerKey) {\n      // Put the blocker into a blocked state\n      updateBlocker(blockerKey, {\n        state: \"blocked\",\n        location: nextLocation,\n        proceed() {\n          updateBlocker(blockerKey!, {\n            state: \"proceeding\",\n            proceed: undefined,\n            reset: undefined,\n            location: nextLocation,\n          });\n          // Send the same navigation through\n          navigate(to, opts);\n        },\n        reset() {\n          let blockers = new Map(state.blockers);\n          blockers.set(blockerKey!, IDLE_BLOCKER);\n          updateState({ blockers });\n        },\n      });\n      return;\n    }\n\n    return await startNavigation(historyAction, nextLocation, {\n      submission,\n      // Send through the formData serialization error if we have one so we can\n      // render at the right error boundary after we match routes\n      pendingError: error,\n      preventScrollReset,\n      replace: opts && opts.replace,\n      enableViewTransition: opts && opts.unstable_viewTransition,\n      flushSync,\n    });\n  }\n\n  // Revalidate all current loaders.  If a navigation is in progress or if this\n  // is interrupted by a navigation, allow this to \"succeed\" by calling all\n  // loaders during the next loader round\n  function revalidate() {\n    interruptActiveLoads();\n    updateState({ revalidation: \"loading\" });\n\n    // If we're currently submitting an action, we don't need to start a new\n    // navigation, we'll just let the follow up loader execution call all loaders\n    if (state.navigation.state === \"submitting\") {\n      return;\n    }\n\n    // If we're currently in an idle state, start a new navigation for the current\n    // action/location and mark it as uninterrupted, which will skip the history\n    // update in completeNavigation\n    if (state.navigation.state === \"idle\") {\n      startNavigation(state.historyAction, state.location, {\n        startUninterruptedRevalidation: true,\n      });\n      return;\n    }\n\n    // Otherwise, if we're currently in a loading state, just start a new\n    // navigation to the navigation.location but do not trigger an uninterrupted\n    // revalidation so that history correctly updates once the navigation completes\n    startNavigation(\n      pendingAction || state.historyAction,\n      state.navigation.location,\n      { overrideNavigation: state.navigation }\n    );\n  }\n\n  // Start a navigation to the given action/location.  Can optionally provide a\n  // overrideNavigation which will override the normalLoad in the case of a redirect\n  // navigation\n  async function startNavigation(\n    historyAction: HistoryAction,\n    location: Location,\n    opts?: {\n      initialHydration?: boolean;\n      submission?: Submission;\n      fetcherSubmission?: Submission;\n      overrideNavigation?: Navigation;\n      pendingError?: ErrorResponseImpl;\n      startUninterruptedRevalidation?: boolean;\n      preventScrollReset?: boolean;\n      replace?: boolean;\n      enableViewTransition?: boolean;\n      flushSync?: boolean;\n    }\n  ): Promise<void> {\n    // Abort any in-progress navigations and start a new one. Unset any ongoing\n    // uninterrupted revalidations unless told otherwise, since we want this\n    // new navigation to update history normally\n    pendingNavigationController && pendingNavigationController.abort();\n    pendingNavigationController = null;\n    pendingAction = historyAction;\n    isUninterruptedRevalidation =\n      (opts && opts.startUninterruptedRevalidation) === true;\n\n    // Save the current scroll position every time we start a new navigation,\n    // and track whether we should reset scroll on completion\n    saveScrollPosition(state.location, state.matches);\n    pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n    pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n\n    let routesToUse = inFlightDataRoutes || dataRoutes;\n    let loadingNavigation = opts && opts.overrideNavigation;\n    let matches = matchRoutes(routesToUse, location, basename);\n    let flushSync = (opts && opts.flushSync) === true;\n\n    // Short circuit with a 404 on the root error boundary if we match nothing\n    if (!matches) {\n      let error = getInternalRouterError(404, { pathname: location.pathname });\n      let { matches: notFoundMatches, route } =\n        getShortCircuitMatches(routesToUse);\n      // Cancel all pending deferred on 404s since we don't keep any routes\n      cancelActiveDeferreds();\n      completeNavigation(\n        location,\n        {\n          matches: notFoundMatches,\n          loaderData: {},\n          errors: {\n            [route.id]: error,\n          },\n        },\n        { flushSync }\n      );\n      return;\n    }\n\n    // Short circuit if it's only a hash change and not a revalidation or\n    // mutation submission.\n    //\n    // Ignore on initial page loads because since the initial load will always\n    // be \"same hash\".  For example, on /page#hash and submit a <Form method=\"post\">\n    // which will default to a navigation to /page\n    if (\n      state.initialized &&\n      !isRevalidationRequired &&\n      isHashChangeOnly(state.location, location) &&\n      !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n    ) {\n      completeNavigation(location, { matches }, { flushSync });\n      return;\n    }\n\n    // Create a controller/Request for this navigation\n    pendingNavigationController = new AbortController();\n    let request = createClientSideRequest(\n      init.history,\n      location,\n      pendingNavigationController.signal,\n      opts && opts.submission\n    );\n    let pendingActionData: RouteData | undefined;\n    let pendingError: RouteData | undefined;\n\n    if (opts && opts.pendingError) {\n      // If we have a pendingError, it means the user attempted a GET submission\n      // with binary FormData so assign here and skip to handleLoaders.  That\n      // way we handle calling loaders above the boundary etc.  It's not really\n      // different from an actionError in that sense.\n      pendingError = {\n        [findNearestBoundary(matches).route.id]: opts.pendingError,\n      };\n    } else if (\n      opts &&\n      opts.submission &&\n      isMutationMethod(opts.submission.formMethod)\n    ) {\n      // Call action if we received an action submission\n      let actionOutput = await handleAction(\n        request,\n        location,\n        opts.submission,\n        matches,\n        { replace: opts.replace, flushSync }\n      );\n\n      if (actionOutput.shortCircuited) {\n        return;\n      }\n\n      pendingActionData = actionOutput.pendingActionData;\n      pendingError = actionOutput.pendingActionError;\n      loadingNavigation = getLoadingNavigation(location, opts.submission);\n      flushSync = false;\n\n      // Create a GET request for the loaders\n      request = new Request(request.url, { signal: request.signal });\n    }\n\n    // Call loaders\n    let { shortCircuited, loaderData, errors } = await handleLoaders(\n      request,\n      location,\n      matches,\n      loadingNavigation,\n      opts && opts.submission,\n      opts && opts.fetcherSubmission,\n      opts && opts.replace,\n      opts && opts.initialHydration === true,\n      flushSync,\n      pendingActionData,\n      pendingError\n    );\n\n    if (shortCircuited) {\n      return;\n    }\n\n    // Clean up now that the action/loaders have completed.  Don't clean up if\n    // we short circuited because pendingNavigationController will have already\n    // been assigned to a new controller for the next navigation\n    pendingNavigationController = null;\n\n    completeNavigation(location, {\n      matches,\n      ...(pendingActionData ? { actionData: pendingActionData } : {}),\n      loaderData,\n      errors,\n    });\n  }\n\n  // Call the action matched by the leaf route for this navigation and handle\n  // redirects/errors\n  async function handleAction(\n    request: Request,\n    location: Location,\n    submission: Submission,\n    matches: AgnosticDataRouteMatch[],\n    opts: { replace?: boolean; flushSync?: boolean } = {}\n  ): Promise<HandleActionResult> {\n    interruptActiveLoads();\n\n    // Put us in a submitting state\n    let navigation = getSubmittingNavigation(location, submission);\n    updateState({ navigation }, { flushSync: opts.flushSync === true });\n\n    // Call our action and get the result\n    let result: DataResult;\n    let actionMatch = getTargetMatch(matches, location);\n\n    if (!actionMatch.route.action && !actionMatch.route.lazy) {\n      result = {\n        type: ResultType.error,\n        error: getInternalRouterError(405, {\n          method: request.method,\n          pathname: location.pathname,\n          routeId: actionMatch.route.id,\n        }),\n      };\n    } else {\n      result = await callLoaderOrAction(\n        \"action\",\n        request,\n        actionMatch,\n        matches,\n        manifest,\n        mapRouteProperties,\n        basename,\n        future.v7_relativeSplatPath\n      );\n\n      if (request.signal.aborted) {\n        return { shortCircuited: true };\n      }\n    }\n\n    if (isRedirectResult(result)) {\n      let replace: boolean;\n      if (opts && opts.replace != null) {\n        replace = opts.replace;\n      } else {\n        // If the user didn't explicity indicate replace behavior, replace if\n        // we redirected to the exact same location we're currently at to avoid\n        // double back-buttons\n        replace =\n          result.location === state.location.pathname + state.location.search;\n      }\n      await startRedirectNavigation(state, result, { submission, replace });\n      return { shortCircuited: true };\n    }\n\n    if (isErrorResult(result)) {\n      // Store off the pending error - we use it to determine which loaders\n      // to call and will commit it when we complete the navigation\n      let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n      // By default, all submissions are REPLACE navigations, but if the\n      // action threw an error that'll be rendered in an errorElement, we fall\n      // back to PUSH so that the user can use the back button to get back to\n      // the pre-submission form location to try again\n      if ((opts && opts.replace) !== true) {\n        pendingAction = HistoryAction.Push;\n      }\n\n      return {\n        // Send back an empty object we can use to clear out any prior actionData\n        pendingActionData: {},\n        pendingActionError: { [boundaryMatch.route.id]: result.error },\n      };\n    }\n\n    if (isDeferredResult(result)) {\n      throw getInternalRouterError(400, { type: \"defer-action\" });\n    }\n\n    return {\n      pendingActionData: { [actionMatch.route.id]: result.data },\n    };\n  }\n\n  // Call all applicable loaders for the given matches, handling redirects,\n  // errors, etc.\n  async function handleLoaders(\n    request: Request,\n    location: Location,\n    matches: AgnosticDataRouteMatch[],\n    overrideNavigation?: Navigation,\n    submission?: Submission,\n    fetcherSubmission?: Submission,\n    replace?: boolean,\n    initialHydration?: boolean,\n    flushSync?: boolean,\n    pendingActionData?: RouteData,\n    pendingError?: RouteData\n  ): Promise<HandleLoadersResult> {\n    // Figure out the right navigation we want to use for data loading\n    let loadingNavigation =\n      overrideNavigation || getLoadingNavigation(location, submission);\n\n    // If this was a redirect from an action we don't have a \"submission\" but\n    // we have it on the loading navigation so use that if available\n    let activeSubmission =\n      submission ||\n      fetcherSubmission ||\n      getSubmissionFromNavigation(loadingNavigation);\n\n    let routesToUse = inFlightDataRoutes || dataRoutes;\n    let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n      init.history,\n      state,\n      matches,\n      activeSubmission,\n      location,\n      future.v7_partialHydration && initialHydration === true,\n      isRevalidationRequired,\n      cancelledDeferredRoutes,\n      cancelledFetcherLoads,\n      deletedFetchers,\n      fetchLoadMatches,\n      fetchRedirectIds,\n      routesToUse,\n      basename,\n      pendingActionData,\n      pendingError\n    );\n\n    // Cancel pending deferreds for no-longer-matched routes or routes we're\n    // about to reload.  Note that if this is an action reload we would have\n    // already cancelled all pending deferreds so this would be a no-op\n    cancelActiveDeferreds(\n      (routeId) =>\n        !(matches && matches.some((m) => m.route.id === routeId)) ||\n        (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n    );\n\n    pendingNavigationLoadId = ++incrementingLoadId;\n\n    // Short circuit if we have no loaders to run\n    if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n      let updatedFetchers = markFetchRedirectsDone();\n      completeNavigation(\n        location,\n        {\n          matches,\n          loaderData: {},\n          // Commit pending error if we're short circuiting\n          errors: pendingError || null,\n          ...(pendingActionData ? { actionData: pendingActionData } : {}),\n          ...(updatedFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n        },\n        { flushSync }\n      );\n      return { shortCircuited: true };\n    }\n\n    // If this is an uninterrupted revalidation, we remain in our current idle\n    // state.  If not, we need to switch to our loading state and load data,\n    // preserving any new action data or existing action data (in the case of\n    // a revalidation interrupting an actionReload)\n    // If we have partialHydration enabled, then don't update the state for the\n    // initial data load since iot's not a \"navigation\"\n    if (\n      !isUninterruptedRevalidation &&\n      (!future.v7_partialHydration || !initialHydration)\n    ) {\n      revalidatingFetchers.forEach((rf) => {\n        let fetcher = state.fetchers.get(rf.key);\n        let revalidatingFetcher = getLoadingFetcher(\n          undefined,\n          fetcher ? fetcher.data : undefined\n        );\n        state.fetchers.set(rf.key, revalidatingFetcher);\n      });\n      let actionData = pendingActionData || state.actionData;\n      updateState(\n        {\n          navigation: loadingNavigation,\n          ...(actionData\n            ? Object.keys(actionData).length === 0\n              ? { actionData: null }\n              : { actionData }\n            : {}),\n          ...(revalidatingFetchers.length > 0\n            ? { fetchers: new Map(state.fetchers) }\n            : {}),\n        },\n        {\n          flushSync,\n        }\n      );\n    }\n\n    revalidatingFetchers.forEach((rf) => {\n      if (fetchControllers.has(rf.key)) {\n        abortFetcher(rf.key);\n      }\n      if (rf.controller) {\n        // Fetchers use an independent AbortController so that aborting a fetcher\n        // (via deleteFetcher) does not abort the triggering navigation that\n        // triggered the revalidation\n        fetchControllers.set(rf.key, rf.controller);\n      }\n    });\n\n    // Proxy navigation abort through to revalidation fetchers\n    let abortPendingFetchRevalidations = () =>\n      revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n    if (pendingNavigationController) {\n      pendingNavigationController.signal.addEventListener(\n        \"abort\",\n        abortPendingFetchRevalidations\n      );\n    }\n\n    let { results, loaderResults, fetcherResults } =\n      await callLoadersAndMaybeResolveData(\n        state.matches,\n        matches,\n        matchesToLoad,\n        revalidatingFetchers,\n        request\n      );\n\n    if (request.signal.aborted) {\n      return { shortCircuited: true };\n    }\n\n    // Clean up _after_ loaders have completed.  Don't clean up if we short\n    // circuited because fetchControllers would have been aborted and\n    // reassigned to new controllers for the next navigation\n    if (pendingNavigationController) {\n      pendingNavigationController.signal.removeEventListener(\n        \"abort\",\n        abortPendingFetchRevalidations\n      );\n    }\n    revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n    // If any loaders returned a redirect Response, start a new REPLACE navigation\n    let redirect = findRedirect(results);\n    if (redirect) {\n      if (redirect.idx >= matchesToLoad.length) {\n        // If this redirect came from a fetcher make sure we mark it in\n        // fetchRedirectIds so it doesn't get revalidated on the next set of\n        // loader executions\n        let fetcherKey =\n          revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n        fetchRedirectIds.add(fetcherKey);\n      }\n      await startRedirectNavigation(state, redirect.result, { replace });\n      return { shortCircuited: true };\n    }\n\n    // Process and commit output from loaders\n    let { loaderData, errors } = processLoaderData(\n      state,\n      matches,\n      matchesToLoad,\n      loaderResults,\n      pendingError,\n      revalidatingFetchers,\n      fetcherResults,\n      activeDeferreds\n    );\n\n    // Wire up subscribers to update loaderData as promises settle\n    activeDeferreds.forEach((deferredData, routeId) => {\n      deferredData.subscribe((aborted) => {\n        // Note: No need to updateState here since the TrackedPromise on\n        // loaderData is stable across resolve/reject\n        // Remove this instance if we were aborted or if promises have settled\n        if (aborted || deferredData.done) {\n          activeDeferreds.delete(routeId);\n        }\n      });\n    });\n\n    let updatedFetchers = markFetchRedirectsDone();\n    let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n    let shouldUpdateFetchers =\n      updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n\n    return {\n      loaderData,\n      errors,\n      ...(shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n    };\n  }\n\n  // Trigger a fetcher load/submit for the given fetcher key\n  function fetch(\n    key: string,\n    routeId: string,\n    href: string | null,\n    opts?: RouterFetchOptions\n  ) {\n    if (isServer) {\n      throw new Error(\n        \"router.fetch() was called during the server render, but it shouldn't be. \" +\n          \"You are likely calling a useFetcher() method in the body of your component. \" +\n          \"Try moving it to a useEffect or a callback.\"\n      );\n    }\n\n    if (fetchControllers.has(key)) abortFetcher(key);\n    let flushSync = (opts && opts.unstable_flushSync) === true;\n\n    let routesToUse = inFlightDataRoutes || dataRoutes;\n    let normalizedPath = normalizeTo(\n      state.location,\n      state.matches,\n      basename,\n      future.v7_prependBasename,\n      href,\n      future.v7_relativeSplatPath,\n      routeId,\n      opts?.relative\n    );\n    let matches = matchRoutes(routesToUse, normalizedPath, basename);\n\n    if (!matches) {\n      setFetcherError(\n        key,\n        routeId,\n        getInternalRouterError(404, { pathname: normalizedPath }),\n        { flushSync }\n      );\n      return;\n    }\n\n    let { path, submission, error } = normalizeNavigateOptions(\n      future.v7_normalizeFormMethod,\n      true,\n      normalizedPath,\n      opts\n    );\n\n    if (error) {\n      setFetcherError(key, routeId, error, { flushSync });\n      return;\n    }\n\n    let match = getTargetMatch(matches, path);\n\n    pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n    if (submission && isMutationMethod(submission.formMethod)) {\n      handleFetcherAction(\n        key,\n        routeId,\n        path,\n        match,\n        matches,\n        flushSync,\n        submission\n      );\n      return;\n    }\n\n    // Store off the match so we can call it's shouldRevalidate on subsequent\n    // revalidations\n    fetchLoadMatches.set(key, { routeId, path });\n    handleFetcherLoader(\n      key,\n      routeId,\n      path,\n      match,\n      matches,\n      flushSync,\n      submission\n    );\n  }\n\n  // Call the action for the matched fetcher.submit(), and then handle redirects,\n  // errors, and revalidation\n  async function handleFetcherAction(\n    key: string,\n    routeId: string,\n    path: string,\n    match: AgnosticDataRouteMatch,\n    requestMatches: AgnosticDataRouteMatch[],\n    flushSync: boolean,\n    submission: Submission\n  ) {\n    interruptActiveLoads();\n    fetchLoadMatches.delete(key);\n\n    if (!match.route.action && !match.route.lazy) {\n      let error = getInternalRouterError(405, {\n        method: submission.formMethod,\n        pathname: path,\n        routeId: routeId,\n      });\n      setFetcherError(key, routeId, error, { flushSync });\n      return;\n    }\n\n    // Put this fetcher into it's submitting state\n    let existingFetcher = state.fetchers.get(key);\n    updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n      flushSync,\n    });\n\n    // Call the action for the fetcher\n    let abortController = new AbortController();\n    let fetchRequest = createClientSideRequest(\n      init.history,\n      path,\n      abortController.signal,\n      submission\n    );\n    fetchControllers.set(key, abortController);\n\n    let originatingLoadId = incrementingLoadId;\n    let actionResult = await callLoaderOrAction(\n      \"action\",\n      fetchRequest,\n      match,\n      requestMatches,\n      manifest,\n      mapRouteProperties,\n      basename,\n      future.v7_relativeSplatPath\n    );\n\n    if (fetchRequest.signal.aborted) {\n      // We can delete this so long as we weren't aborted by our own fetcher\n      // re-submit which would have put _new_ controller is in fetchControllers\n      if (fetchControllers.get(key) === abortController) {\n        fetchControllers.delete(key);\n      }\n      return;\n    }\n\n    // When using v7_fetcherPersist, we don't want errors bubbling up to the UI\n    // or redirects processed for unmounted fetchers so we just revert them to\n    // idle\n    if (future.v7_fetcherPersist && deletedFetchers.has(key)) {\n      if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n        updateFetcherState(key, getDoneFetcher(undefined));\n        return;\n      }\n      // Let SuccessResult's fall through for revalidation\n    } else {\n      if (isRedirectResult(actionResult)) {\n        fetchControllers.delete(key);\n        if (pendingNavigationLoadId > originatingLoadId) {\n          // A new navigation was kicked off after our action started, so that\n          // should take precedence over this redirect navigation.  We already\n          // set isRevalidationRequired so all loaders for the new route should\n          // fire unless opted out via shouldRevalidate\n          updateFetcherState(key, getDoneFetcher(undefined));\n          return;\n        } else {\n          fetchRedirectIds.add(key);\n          updateFetcherState(key, getLoadingFetcher(submission));\n          return startRedirectNavigation(state, actionResult, {\n            fetcherSubmission: submission,\n          });\n        }\n      }\n\n      // Process any non-redirect errors thrown\n      if (isErrorResult(actionResult)) {\n        setFetcherError(key, routeId, actionResult.error);\n        return;\n      }\n    }\n\n    if (isDeferredResult(actionResult)) {\n      throw getInternalRouterError(400, { type: \"defer-action\" });\n    }\n\n    // Start the data load for current matches, or the next location if we're\n    // in the middle of a navigation\n    let nextLocation = state.navigation.location || state.location;\n    let revalidationRequest = createClientSideRequest(\n      init.history,\n      nextLocation,\n      abortController.signal\n    );\n    let routesToUse = inFlightDataRoutes || dataRoutes;\n    let matches =\n      state.navigation.state !== \"idle\"\n        ? matchRoutes(routesToUse, state.navigation.location, basename)\n        : state.matches;\n\n    invariant(matches, \"Didn't find any matches after fetcher action\");\n\n    let loadId = ++incrementingLoadId;\n    fetchReloadIds.set(key, loadId);\n\n    let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n    state.fetchers.set(key, loadFetcher);\n\n    let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n      init.history,\n      state,\n      matches,\n      submission,\n      nextLocation,\n      false,\n      isRevalidationRequired,\n      cancelledDeferredRoutes,\n      cancelledFetcherLoads,\n      deletedFetchers,\n      fetchLoadMatches,\n      fetchRedirectIds,\n      routesToUse,\n      basename,\n      { [match.route.id]: actionResult.data },\n      undefined // No need to send through errors since we short circuit above\n    );\n\n    // Put all revalidating fetchers into the loading state, except for the\n    // current fetcher which we want to keep in it's current loading state which\n    // contains it's action submission info + action data\n    revalidatingFetchers\n      .filter((rf) => rf.key !== key)\n      .forEach((rf) => {\n        let staleKey = rf.key;\n        let existingFetcher = state.fetchers.get(staleKey);\n        let revalidatingFetcher = getLoadingFetcher(\n          undefined,\n          existingFetcher ? existingFetcher.data : undefined\n        );\n        state.fetchers.set(staleKey, revalidatingFetcher);\n        if (fetchControllers.has(staleKey)) {\n          abortFetcher(staleKey);\n        }\n        if (rf.controller) {\n          fetchControllers.set(staleKey, rf.controller);\n        }\n      });\n\n    updateState({ fetchers: new Map(state.fetchers) });\n\n    let abortPendingFetchRevalidations = () =>\n      revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n\n    abortController.signal.addEventListener(\n      \"abort\",\n      abortPendingFetchRevalidations\n    );\n\n    let { results, loaderResults, fetcherResults } =\n      await callLoadersAndMaybeResolveData(\n        state.matches,\n        matches,\n        matchesToLoad,\n        revalidatingFetchers,\n        revalidationRequest\n      );\n\n    if (abortController.signal.aborted) {\n      return;\n    }\n\n    abortController.signal.removeEventListener(\n      \"abort\",\n      abortPendingFetchRevalidations\n    );\n\n    fetchReloadIds.delete(key);\n    fetchControllers.delete(key);\n    revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n    let redirect = findRedirect(results);\n    if (redirect) {\n      if (redirect.idx >= matchesToLoad.length) {\n        // If this redirect came from a fetcher make sure we mark it in\n        // fetchRedirectIds so it doesn't get revalidated on the next set of\n        // loader executions\n        let fetcherKey =\n          revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n        fetchRedirectIds.add(fetcherKey);\n      }\n      return startRedirectNavigation(state, redirect.result);\n    }\n\n    // Process and commit output from loaders\n    let { loaderData, errors } = processLoaderData(\n      state,\n      state.matches,\n      matchesToLoad,\n      loaderResults,\n      undefined,\n      revalidatingFetchers,\n      fetcherResults,\n      activeDeferreds\n    );\n\n    // Since we let revalidations complete even if the submitting fetcher was\n    // deleted, only put it back to idle if it hasn't been deleted\n    if (state.fetchers.has(key)) {\n      let doneFetcher = getDoneFetcher(actionResult.data);\n      state.fetchers.set(key, doneFetcher);\n    }\n\n    abortStaleFetchLoads(loadId);\n\n    // If we are currently in a navigation loading state and this fetcher is\n    // more recent than the navigation, we want the newer data so abort the\n    // navigation and complete it with the fetcher data\n    if (\n      state.navigation.state === \"loading\" &&\n      loadId > pendingNavigationLoadId\n    ) {\n      invariant(pendingAction, \"Expected pending action\");\n      pendingNavigationController && pendingNavigationController.abort();\n\n      completeNavigation(state.navigation.location, {\n        matches,\n        loaderData,\n        errors,\n        fetchers: new Map(state.fetchers),\n      });\n    } else {\n      // otherwise just update with the fetcher data, preserving any existing\n      // loaderData for loaders that did not need to reload.  We have to\n      // manually merge here since we aren't going through completeNavigation\n      updateState({\n        errors,\n        loaderData: mergeLoaderData(\n          state.loaderData,\n          loaderData,\n          matches,\n          errors\n        ),\n        fetchers: new Map(state.fetchers),\n      });\n      isRevalidationRequired = false;\n    }\n  }\n\n  // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n  async function handleFetcherLoader(\n    key: string,\n    routeId: string,\n    path: string,\n    match: AgnosticDataRouteMatch,\n    matches: AgnosticDataRouteMatch[],\n    flushSync: boolean,\n    submission?: Submission\n  ) {\n    let existingFetcher = state.fetchers.get(key);\n    updateFetcherState(\n      key,\n      getLoadingFetcher(\n        submission,\n        existingFetcher ? existingFetcher.data : undefined\n      ),\n      { flushSync }\n    );\n\n    // Call the loader for this fetcher route match\n    let abortController = new AbortController();\n    let fetchRequest = createClientSideRequest(\n      init.history,\n      path,\n      abortController.signal\n    );\n    fetchControllers.set(key, abortController);\n\n    let originatingLoadId = incrementingLoadId;\n    let result: DataResult = await callLoaderOrAction(\n      \"loader\",\n      fetchRequest,\n      match,\n      matches,\n      manifest,\n      mapRouteProperties,\n      basename,\n      future.v7_relativeSplatPath\n    );\n\n    // Deferred isn't supported for fetcher loads, await everything and treat it\n    // as a normal load.  resolveDeferredData will return undefined if this\n    // fetcher gets aborted, so we just leave result untouched and short circuit\n    // below if that happens\n    if (isDeferredResult(result)) {\n      result =\n        (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n        result;\n    }\n\n    // We can delete this so long as we weren't aborted by our our own fetcher\n    // re-load which would have put _new_ controller is in fetchControllers\n    if (fetchControllers.get(key) === abortController) {\n      fetchControllers.delete(key);\n    }\n\n    if (fetchRequest.signal.aborted) {\n      return;\n    }\n\n    // We don't want errors bubbling up or redirects followed for unmounted\n    // fetchers, so short circuit here if it was removed from the UI\n    if (deletedFetchers.has(key)) {\n      updateFetcherState(key, getDoneFetcher(undefined));\n      return;\n    }\n\n    // If the loader threw a redirect Response, start a new REPLACE navigation\n    if (isRedirectResult(result)) {\n      if (pendingNavigationLoadId > originatingLoadId) {\n        // A new navigation was kicked off after our loader started, so that\n        // should take precedence over this redirect navigation\n        updateFetcherState(key, getDoneFetcher(undefined));\n        return;\n      } else {\n        fetchRedirectIds.add(key);\n        await startRedirectNavigation(state, result);\n        return;\n      }\n    }\n\n    // Process any non-redirect errors thrown\n    if (isErrorResult(result)) {\n      setFetcherError(key, routeId, result.error);\n      return;\n    }\n\n    invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n    // Put the fetcher back into an idle state\n    updateFetcherState(key, getDoneFetcher(result.data));\n  }\n\n  /**\n   * Utility function to handle redirects returned from an action or loader.\n   * Normally, a redirect \"replaces\" the navigation that triggered it.  So, for\n   * example:\n   *\n   *  - user is on /a\n   *  - user clicks a link to /b\n   *  - loader for /b redirects to /c\n   *\n   * In a non-JS app the browser would track the in-flight navigation to /b and\n   * then replace it with /c when it encountered the redirect response.  In\n   * the end it would only ever update the URL bar with /c.\n   *\n   * In client-side routing using pushState/replaceState, we aim to emulate\n   * this behavior and we also do not update history until the end of the\n   * navigation (including processed redirects).  This means that we never\n   * actually touch history until we've processed redirects, so we just use\n   * the history action from the original navigation (PUSH or REPLACE).\n   */\n  async function startRedirectNavigation(\n    state: RouterState,\n    redirect: RedirectResult,\n    {\n      submission,\n      fetcherSubmission,\n      replace,\n    }: {\n      submission?: Submission;\n      fetcherSubmission?: Submission;\n      replace?: boolean;\n    } = {}\n  ) {\n    if (redirect.revalidate) {\n      isRevalidationRequired = true;\n    }\n\n    let redirectLocation = createLocation(state.location, redirect.location, {\n      _isRedirect: true,\n    });\n    invariant(\n      redirectLocation,\n      \"Expected a location on the redirect navigation\"\n    );\n\n    if (isBrowser) {\n      let isDocumentReload = false;\n\n      if (redirect.reloadDocument) {\n        // Hard reload if the response contained X-Remix-Reload-Document\n        isDocumentReload = true;\n      } else if (ABSOLUTE_URL_REGEX.test(redirect.location)) {\n        const url = init.history.createURL(redirect.location);\n        isDocumentReload =\n          // Hard reload if it's an absolute URL to a new origin\n          url.origin !== routerWindow.location.origin ||\n          // Hard reload if it's an absolute URL that does not match our basename\n          stripBasename(url.pathname, basename) == null;\n      }\n\n      if (isDocumentReload) {\n        if (replace) {\n          routerWindow.location.replace(redirect.location);\n        } else {\n          routerWindow.location.assign(redirect.location);\n        }\n        return;\n      }\n    }\n\n    // There's no need to abort on redirects, since we don't detect the\n    // redirect until the action/loaders have settled\n    pendingNavigationController = null;\n\n    let redirectHistoryAction =\n      replace === true ? HistoryAction.Replace : HistoryAction.Push;\n\n    // Use the incoming submission if provided, fallback on the active one in\n    // state.navigation\n    let { formMethod, formAction, formEncType } = state.navigation;\n    if (\n      !submission &&\n      !fetcherSubmission &&\n      formMethod &&\n      formAction &&\n      formEncType\n    ) {\n      submission = getSubmissionFromNavigation(state.navigation);\n    }\n\n    // If this was a 307/308 submission we want to preserve the HTTP method and\n    // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n    // redirected location\n    let activeSubmission = submission || fetcherSubmission;\n    if (\n      redirectPreserveMethodStatusCodes.has(redirect.status) &&\n      activeSubmission &&\n      isMutationMethod(activeSubmission.formMethod)\n    ) {\n      await startNavigation(redirectHistoryAction, redirectLocation, {\n        submission: {\n          ...activeSubmission,\n          formAction: redirect.location,\n        },\n        // Preserve this flag across redirects\n        preventScrollReset: pendingPreventScrollReset,\n      });\n    } else {\n      // If we have a navigation submission, we will preserve it through the\n      // redirect navigation\n      let overrideNavigation = getLoadingNavigation(\n        redirectLocation,\n        submission\n      );\n      await startNavigation(redirectHistoryAction, redirectLocation, {\n        overrideNavigation,\n        // Send fetcher submissions through for shouldRevalidate\n        fetcherSubmission,\n        // Preserve this flag across redirects\n        preventScrollReset: pendingPreventScrollReset,\n      });\n    }\n  }\n\n  async function callLoadersAndMaybeResolveData(\n    currentMatches: AgnosticDataRouteMatch[],\n    matches: AgnosticDataRouteMatch[],\n    matchesToLoad: AgnosticDataRouteMatch[],\n    fetchersToLoad: RevalidatingFetcher[],\n    request: Request\n  ) {\n    // Call all navigation loaders and revalidating fetcher loaders in parallel,\n    // then slice off the results into separate arrays so we can handle them\n    // accordingly\n    let results = await Promise.all([\n      ...matchesToLoad.map((match) =>\n        callLoaderOrAction(\n          \"loader\",\n          request,\n          match,\n          matches,\n          manifest,\n          mapRouteProperties,\n          basename,\n          future.v7_relativeSplatPath\n        )\n      ),\n      ...fetchersToLoad.map((f) => {\n        if (f.matches && f.match && f.controller) {\n          return callLoaderOrAction(\n            \"loader\",\n            createClientSideRequest(init.history, f.path, f.controller.signal),\n            f.match,\n            f.matches,\n            manifest,\n            mapRouteProperties,\n            basename,\n            future.v7_relativeSplatPath\n          );\n        } else {\n          let error: ErrorResult = {\n            type: ResultType.error,\n            error: getInternalRouterError(404, { pathname: f.path }),\n          };\n          return error;\n        }\n      }),\n    ]);\n    let loaderResults = results.slice(0, matchesToLoad.length);\n    let fetcherResults = results.slice(matchesToLoad.length);\n\n    await Promise.all([\n      resolveDeferredResults(\n        currentMatches,\n        matchesToLoad,\n        loaderResults,\n        loaderResults.map(() => request.signal),\n        false,\n        state.loaderData\n      ),\n      resolveDeferredResults(\n        currentMatches,\n        fetchersToLoad.map((f) => f.match),\n        fetcherResults,\n        fetchersToLoad.map((f) => (f.controller ? f.controller.signal : null)),\n        true\n      ),\n    ]);\n\n    return { results, loaderResults, fetcherResults };\n  }\n\n  function interruptActiveLoads() {\n    // Every interruption triggers a revalidation\n    isRevalidationRequired = true;\n\n    // Cancel pending route-level deferreds and mark cancelled routes for\n    // revalidation\n    cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n    // Abort in-flight fetcher loads\n    fetchLoadMatches.forEach((_, key) => {\n      if (fetchControllers.has(key)) {\n        cancelledFetcherLoads.push(key);\n        abortFetcher(key);\n      }\n    });\n  }\n\n  function updateFetcherState(\n    key: string,\n    fetcher: Fetcher,\n    opts: { flushSync?: boolean } = {}\n  ) {\n    state.fetchers.set(key, fetcher);\n    updateState(\n      { fetchers: new Map(state.fetchers) },\n      { flushSync: (opts && opts.flushSync) === true }\n    );\n  }\n\n  function setFetcherError(\n    key: string,\n    routeId: string,\n    error: any,\n    opts: { flushSync?: boolean } = {}\n  ) {\n    let boundaryMatch = findNearestBoundary(state.matches, routeId);\n    deleteFetcher(key);\n    updateState(\n      {\n        errors: {\n          [boundaryMatch.route.id]: error,\n        },\n        fetchers: new Map(state.fetchers),\n      },\n      { flushSync: (opts && opts.flushSync) === true }\n    );\n  }\n\n  function getFetcher<TData = any>(key: string): Fetcher<TData> {\n    if (future.v7_fetcherPersist) {\n      activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n      // If this fetcher was previously marked for deletion, unmark it since we\n      // have a new instance\n      if (deletedFetchers.has(key)) {\n        deletedFetchers.delete(key);\n      }\n    }\n    return state.fetchers.get(key) || IDLE_FETCHER;\n  }\n\n  function deleteFetcher(key: string): void {\n    let fetcher = state.fetchers.get(key);\n    // Don't abort the controller if this is a deletion of a fetcher.submit()\n    // in it's loading phase since - we don't want to abort the corresponding\n    // revalidation and want them to complete and land\n    if (\n      fetchControllers.has(key) &&\n      !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))\n    ) {\n      abortFetcher(key);\n    }\n    fetchLoadMatches.delete(key);\n    fetchReloadIds.delete(key);\n    fetchRedirectIds.delete(key);\n    deletedFetchers.delete(key);\n    state.fetchers.delete(key);\n  }\n\n  function deleteFetcherAndUpdateState(key: string): void {\n    if (future.v7_fetcherPersist) {\n      let count = (activeFetchers.get(key) || 0) - 1;\n      if (count <= 0) {\n        activeFetchers.delete(key);\n        deletedFetchers.add(key);\n      } else {\n        activeFetchers.set(key, count);\n      }\n    } else {\n      deleteFetcher(key);\n    }\n    updateState({ fetchers: new Map(state.fetchers) });\n  }\n\n  function abortFetcher(key: string) {\n    let controller = fetchControllers.get(key);\n    invariant(controller, `Expected fetch controller: ${key}`);\n    controller.abort();\n    fetchControllers.delete(key);\n  }\n\n  function markFetchersDone(keys: string[]) {\n    for (let key of keys) {\n      let fetcher = getFetcher(key);\n      let doneFetcher = getDoneFetcher(fetcher.data);\n      state.fetchers.set(key, doneFetcher);\n    }\n  }\n\n  function markFetchRedirectsDone(): boolean {\n    let doneKeys = [];\n    let updatedFetchers = false;\n    for (let key of fetchRedirectIds) {\n      let fetcher = state.fetchers.get(key);\n      invariant(fetcher, `Expected fetcher: ${key}`);\n      if (fetcher.state === \"loading\") {\n        fetchRedirectIds.delete(key);\n        doneKeys.push(key);\n        updatedFetchers = true;\n      }\n    }\n    markFetchersDone(doneKeys);\n    return updatedFetchers;\n  }\n\n  function abortStaleFetchLoads(landedId: number): boolean {\n    let yeetedKeys = [];\n    for (let [key, id] of fetchReloadIds) {\n      if (id < landedId) {\n        let fetcher = state.fetchers.get(key);\n        invariant(fetcher, `Expected fetcher: ${key}`);\n        if (fetcher.state === \"loading\") {\n          abortFetcher(key);\n          fetchReloadIds.delete(key);\n          yeetedKeys.push(key);\n        }\n      }\n    }\n    markFetchersDone(yeetedKeys);\n    return yeetedKeys.length > 0;\n  }\n\n  function getBlocker(key: string, fn: BlockerFunction) {\n    let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n    if (blockerFunctions.get(key) !== fn) {\n      blockerFunctions.set(key, fn);\n    }\n\n    return blocker;\n  }\n\n  function deleteBlocker(key: string) {\n    state.blockers.delete(key);\n    blockerFunctions.delete(key);\n  }\n\n  // Utility function to update blockers, ensuring valid state transitions\n  function updateBlocker(key: string, newBlocker: Blocker) {\n    let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n    // Poor mans state machine :)\n    // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n    invariant(\n      (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n        (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n        (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n        (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n        (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n      `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n    );\n\n    let blockers = new Map(state.blockers);\n    blockers.set(key, newBlocker);\n    updateState({ blockers });\n  }\n\n  function shouldBlockNavigation({\n    currentLocation,\n    nextLocation,\n    historyAction,\n  }: {\n    currentLocation: Location;\n    nextLocation: Location;\n    historyAction: HistoryAction;\n  }): string | undefined {\n    if (blockerFunctions.size === 0) {\n      return;\n    }\n\n    // We ony support a single active blocker at the moment since we don't have\n    // any compelling use cases for multi-blocker yet\n    if (blockerFunctions.size > 1) {\n      warning(false, \"A router only supports one blocker at a time\");\n    }\n\n    let entries = Array.from(blockerFunctions.entries());\n    let [blockerKey, blockerFunction] = entries[entries.length - 1];\n    let blocker = state.blockers.get(blockerKey);\n\n    if (blocker && blocker.state === \"proceeding\") {\n      // If the blocker is currently proceeding, we don't need to re-check\n      // it and can let this navigation continue\n      return;\n    }\n\n    // At this point, we know we're unblocked/blocked so we need to check the\n    // user-provided blocker function\n    if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n      return blockerKey;\n    }\n  }\n\n  function cancelActiveDeferreds(\n    predicate?: (routeId: string) => boolean\n  ): string[] {\n    let cancelledRouteIds: string[] = [];\n    activeDeferreds.forEach((dfd, routeId) => {\n      if (!predicate || predicate(routeId)) {\n        // Cancel the deferred - but do not remove from activeDeferreds here -\n        // we rely on the subscribers to do that so our tests can assert proper\n        // cleanup via _internalActiveDeferreds\n        dfd.cancel();\n        cancelledRouteIds.push(routeId);\n        activeDeferreds.delete(routeId);\n      }\n    });\n    return cancelledRouteIds;\n  }\n\n  // Opt in to capturing and reporting scroll positions during navigations,\n  // used by the <ScrollRestoration> component\n  function enableScrollRestoration(\n    positions: Record<string, number>,\n    getPosition: GetScrollPositionFunction,\n    getKey?: GetScrollRestorationKeyFunction\n  ) {\n    savedScrollPositions = positions;\n    getScrollPosition = getPosition;\n    getScrollRestorationKey = getKey || null;\n\n    // Perform initial hydration scroll restoration, since we miss the boat on\n    // the initial updateState() because we've not yet rendered <ScrollRestoration/>\n    // and therefore have no savedScrollPositions available\n    if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n      initialScrollRestored = true;\n      let y = getSavedScrollPosition(state.location, state.matches);\n      if (y != null) {\n        updateState({ restoreScrollPosition: y });\n      }\n    }\n\n    return () => {\n      savedScrollPositions = null;\n      getScrollPosition = null;\n      getScrollRestorationKey = null;\n    };\n  }\n\n  function getScrollKey(location: Location, matches: AgnosticDataRouteMatch[]) {\n    if (getScrollRestorationKey) {\n      let key = getScrollRestorationKey(\n        location,\n        matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n      );\n      return key || location.key;\n    }\n    return location.key;\n  }\n\n  function saveScrollPosition(\n    location: Location,\n    matches: AgnosticDataRouteMatch[]\n  ): void {\n    if (savedScrollPositions && getScrollPosition) {\n      let key = getScrollKey(location, matches);\n      savedScrollPositions[key] = getScrollPosition();\n    }\n  }\n\n  function getSavedScrollPosition(\n    location: Location,\n    matches: AgnosticDataRouteMatch[]\n  ): number | null {\n    if (savedScrollPositions) {\n      let key = getScrollKey(location, matches);\n      let y = savedScrollPositions[key];\n      if (typeof y === \"number\") {\n        return y;\n      }\n    }\n    return null;\n  }\n\n  function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n    manifest = {};\n    inFlightDataRoutes = convertRoutesToDataRoutes(\n      newRoutes,\n      mapRouteProperties,\n      undefined,\n      manifest\n    );\n  }\n\n  router = {\n    get basename() {\n      return basename;\n    },\n    get future() {\n      return future;\n    },\n    get state() {\n      return state;\n    },\n    get routes() {\n      return dataRoutes;\n    },\n    get window() {\n      return routerWindow;\n    },\n    initialize,\n    subscribe,\n    enableScrollRestoration,\n    navigate,\n    fetch,\n    revalidate,\n    // Passthrough to history-aware createHref used by useHref so we get proper\n    // hash-aware URLs in DOM paths\n    createHref: (to: To) => init.history.createHref(to),\n    encodeLocation: (to: To) => init.history.encodeLocation(to),\n    getFetcher,\n    deleteFetcher: deleteFetcherAndUpdateState,\n    dispose,\n    getBlocker,\n    deleteBlocker,\n    _internalFetchControllers: fetchControllers,\n    _internalActiveDeferreds: activeDeferreds,\n    // TODO: Remove setRoutes, it's temporary to avoid dealing with\n    // updating the tree while validating the update algorithm.\n    _internalSetRoutes,\n  };\n\n  return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface StaticHandlerFutureConfig {\n  v7_relativeSplatPath: boolean;\n  v7_throwAbortReason: boolean;\n}\n\nexport interface CreateStaticHandlerOptions {\n  basename?: string;\n  /**\n   * @deprecated Use `mapRouteProperties` instead\n   */\n  detectErrorBoundary?: DetectErrorBoundaryFunction;\n  mapRouteProperties?: MapRoutePropertiesFunction;\n  future?: Partial<StaticHandlerFutureConfig>;\n}\n\nexport function createStaticHandler(\n  routes: AgnosticRouteObject[],\n  opts?: CreateStaticHandlerOptions\n): StaticHandler {\n  invariant(\n    routes.length > 0,\n    \"You must provide a non-empty routes array to createStaticHandler\"\n  );\n\n  let manifest: RouteManifest = {};\n  let basename = (opts ? opts.basename : null) || \"/\";\n  let mapRouteProperties: MapRoutePropertiesFunction;\n  if (opts?.mapRouteProperties) {\n    mapRouteProperties = opts.mapRouteProperties;\n  } else if (opts?.detectErrorBoundary) {\n    // If they are still using the deprecated version, wrap it with the new API\n    let detectErrorBoundary = opts.detectErrorBoundary;\n    mapRouteProperties = (route) => ({\n      hasErrorBoundary: detectErrorBoundary(route),\n    });\n  } else {\n    mapRouteProperties = defaultMapRouteProperties;\n  }\n  // Config driven behavior flags\n  let future: StaticHandlerFutureConfig = {\n    v7_relativeSplatPath: false,\n    v7_throwAbortReason: false,\n    ...(opts ? opts.future : null),\n  };\n\n  let dataRoutes = convertRoutesToDataRoutes(\n    routes,\n    mapRouteProperties,\n    undefined,\n    manifest\n  );\n\n  /**\n   * The query() method is intended for document requests, in which we want to\n   * call an optional action and potentially multiple loaders for all nested\n   * routes.  It returns a StaticHandlerContext object, which is very similar\n   * to the router state (location, loaderData, actionData, errors, etc.) and\n   * also adds SSR-specific information such as the statusCode and headers\n   * from action/loaders Responses.\n   *\n   * It _should_ never throw and should report all errors through the\n   * returned context.errors object, properly associating errors to their error\n   * boundary.  Additionally, it tracks _deepestRenderedBoundaryId which can be\n   * used to emulate React error boundaries during SSr by performing a second\n   * pass only down to the boundaryId.\n   *\n   * The one exception where we do not return a StaticHandlerContext is when a\n   * redirect response is returned or thrown from any action/loader.  We\n   * propagate that out and return the raw Response so the HTTP server can\n   * return it directly.\n   */\n  async function query(\n    request: Request,\n    { requestContext }: { requestContext?: unknown } = {}\n  ): Promise<StaticHandlerContext | Response> {\n    let url = new URL(request.url);\n    let method = request.method;\n    let location = createLocation(\"\", createPath(url), null, \"default\");\n    let matches = matchRoutes(dataRoutes, location, basename);\n\n    // SSR supports HEAD requests while SPA doesn't\n    if (!isValidMethod(method) && method !== \"HEAD\") {\n      let error = getInternalRouterError(405, { method });\n      let { matches: methodNotAllowedMatches, route } =\n        getShortCircuitMatches(dataRoutes);\n      return {\n        basename,\n        location,\n        matches: methodNotAllowedMatches,\n        loaderData: {},\n        actionData: null,\n        errors: {\n          [route.id]: error,\n        },\n        statusCode: error.status,\n        loaderHeaders: {},\n        actionHeaders: {},\n        activeDeferreds: null,\n      };\n    } else if (!matches) {\n      let error = getInternalRouterError(404, { pathname: location.pathname });\n      let { matches: notFoundMatches, route } =\n        getShortCircuitMatches(dataRoutes);\n      return {\n        basename,\n        location,\n        matches: notFoundMatches,\n        loaderData: {},\n        actionData: null,\n        errors: {\n          [route.id]: error,\n        },\n        statusCode: error.status,\n        loaderHeaders: {},\n        actionHeaders: {},\n        activeDeferreds: null,\n      };\n    }\n\n    let result = await queryImpl(request, location, matches, requestContext);\n    if (isResponse(result)) {\n      return result;\n    }\n\n    // When returning StaticHandlerContext, we patch back in the location here\n    // since we need it for React Context.  But this helps keep our submit and\n    // loadRouteData operating on a Request instead of a Location\n    return { location, basename, ...result };\n  }\n\n  /**\n   * The queryRoute() method is intended for targeted route requests, either\n   * for fetch ?_data requests or resource route requests.  In this case, we\n   * are only ever calling a single action or loader, and we are returning the\n   * returned value directly.  In most cases, this will be a Response returned\n   * from the action/loader, but it may be a primitive or other value as well -\n   * and in such cases the calling context should handle that accordingly.\n   *\n   * We do respect the throw/return differentiation, so if an action/loader\n   * throws, then this method will throw the value.  This is important so we\n   * can do proper boundary identification in Remix where a thrown Response\n   * must go to the Catch Boundary but a returned Response is happy-path.\n   *\n   * One thing to note is that any Router-initiated Errors that make sense\n   * to associate with a status code will be thrown as an ErrorResponse\n   * instance which include the raw Error, such that the calling context can\n   * serialize the error as they see fit while including the proper response\n   * code.  Examples here are 404 and 405 errors that occur prior to reaching\n   * any user-defined loaders.\n   */\n  async function queryRoute(\n    request: Request,\n    {\n      routeId,\n      requestContext,\n    }: { requestContext?: unknown; routeId?: string } = {}\n  ): Promise<any> {\n    let url = new URL(request.url);\n    let method = request.method;\n    let location = createLocation(\"\", createPath(url), null, \"default\");\n    let matches = matchRoutes(dataRoutes, location, basename);\n\n    // SSR supports HEAD requests while SPA doesn't\n    if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n      throw getInternalRouterError(405, { method });\n    } else if (!matches) {\n      throw getInternalRouterError(404, { pathname: location.pathname });\n    }\n\n    let match = routeId\n      ? matches.find((m) => m.route.id === routeId)\n      : getTargetMatch(matches, location);\n\n    if (routeId && !match) {\n      throw getInternalRouterError(403, {\n        pathname: location.pathname,\n        routeId,\n      });\n    } else if (!match) {\n      // This should never hit I don't think?\n      throw getInternalRouterError(404, { pathname: location.pathname });\n    }\n\n    let result = await queryImpl(\n      request,\n      location,\n      matches,\n      requestContext,\n      match\n    );\n    if (isResponse(result)) {\n      return result;\n    }\n\n    let error = result.errors ? Object.values(result.errors)[0] : undefined;\n    if (error !== undefined) {\n      // If we got back result.errors, that means the loader/action threw\n      // _something_ that wasn't a Response, but it's not guaranteed/required\n      // to be an `instanceof Error` either, so we have to use throw here to\n      // preserve the \"error\" state outside of queryImpl.\n      throw error;\n    }\n\n    // Pick off the right state value to return\n    if (result.actionData) {\n      return Object.values(result.actionData)[0];\n    }\n\n    if (result.loaderData) {\n      let data = Object.values(result.loaderData)[0];\n      if (result.activeDeferreds?.[match.route.id]) {\n        data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n      }\n      return data;\n    }\n\n    return undefined;\n  }\n\n  async function queryImpl(\n    request: Request,\n    location: Location,\n    matches: AgnosticDataRouteMatch[],\n    requestContext: unknown,\n    routeMatch?: AgnosticDataRouteMatch\n  ): Promise<Omit<StaticHandlerContext, \"location\" | \"basename\"> | Response> {\n    invariant(\n      request.signal,\n      \"query()/queryRoute() requests must contain an AbortController signal\"\n    );\n\n    try {\n      if (isMutationMethod(request.method.toLowerCase())) {\n        let result = await submit(\n          request,\n          matches,\n          routeMatch || getTargetMatch(matches, location),\n          requestContext,\n          routeMatch != null\n        );\n        return result;\n      }\n\n      let result = await loadRouteData(\n        request,\n        matches,\n        requestContext,\n        routeMatch\n      );\n      return isResponse(result)\n        ? result\n        : {\n            ...result,\n            actionData: null,\n            actionHeaders: {},\n          };\n    } catch (e) {\n      // If the user threw/returned a Response in callLoaderOrAction, we throw\n      // it to bail out and then return or throw here based on whether the user\n      // returned or threw\n      if (isQueryRouteResponse(e)) {\n        if (e.type === ResultType.error) {\n          throw e.response;\n        }\n        return e.response;\n      }\n      // Redirects are always returned since they don't propagate to catch\n      // boundaries\n      if (isRedirectResponse(e)) {\n        return e;\n      }\n      throw e;\n    }\n  }\n\n  async function submit(\n    request: Request,\n    matches: AgnosticDataRouteMatch[],\n    actionMatch: AgnosticDataRouteMatch,\n    requestContext: unknown,\n    isRouteRequest: boolean\n  ): Promise<Omit<StaticHandlerContext, \"location\" | \"basename\"> | Response> {\n    let result: DataResult;\n\n    if (!actionMatch.route.action && !actionMatch.route.lazy) {\n      let error = getInternalRouterError(405, {\n        method: request.method,\n        pathname: new URL(request.url).pathname,\n        routeId: actionMatch.route.id,\n      });\n      if (isRouteRequest) {\n        throw error;\n      }\n      result = {\n        type: ResultType.error,\n        error,\n      };\n    } else {\n      result = await callLoaderOrAction(\n        \"action\",\n        request,\n        actionMatch,\n        matches,\n        manifest,\n        mapRouteProperties,\n        basename,\n        future.v7_relativeSplatPath,\n        { isStaticRequest: true, isRouteRequest, requestContext }\n      );\n\n      if (request.signal.aborted) {\n        throwStaticHandlerAbortedError(request, isRouteRequest, future);\n      }\n    }\n\n    if (isRedirectResult(result)) {\n      // Uhhhh - this should never happen, we should always throw these from\n      // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n      // can get back on the \"throw all redirect responses\" train here should\n      // this ever happen :/\n      throw new Response(null, {\n        status: result.status,\n        headers: {\n          Location: result.location,\n        },\n      });\n    }\n\n    if (isDeferredResult(result)) {\n      let error = getInternalRouterError(400, { type: \"defer-action\" });\n      if (isRouteRequest) {\n        throw error;\n      }\n      result = {\n        type: ResultType.error,\n        error,\n      };\n    }\n\n    if (isRouteRequest) {\n      // Note: This should only be non-Response values if we get here, since\n      // isRouteRequest should throw any Response received in callLoaderOrAction\n      if (isErrorResult(result)) {\n        throw result.error;\n      }\n\n      return {\n        matches: [actionMatch],\n        loaderData: {},\n        actionData: { [actionMatch.route.id]: result.data },\n        errors: null,\n        // Note: statusCode + headers are unused here since queryRoute will\n        // return the raw Response or value\n        statusCode: 200,\n        loaderHeaders: {},\n        actionHeaders: {},\n        activeDeferreds: null,\n      };\n    }\n\n    if (isErrorResult(result)) {\n      // Store off the pending error - we use it to determine which loaders\n      // to call and will commit it when we complete the navigation\n      let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n      let context = await loadRouteData(\n        request,\n        matches,\n        requestContext,\n        undefined,\n        {\n          [boundaryMatch.route.id]: result.error,\n        }\n      );\n\n      // action status codes take precedence over loader status codes\n      return {\n        ...context,\n        statusCode: isRouteErrorResponse(result.error)\n          ? result.error.status\n          : 500,\n        actionData: null,\n        actionHeaders: {\n          ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n        },\n      };\n    }\n\n    // Create a GET request for the loaders\n    let loaderRequest = new Request(request.url, {\n      headers: request.headers,\n      redirect: request.redirect,\n      signal: request.signal,\n    });\n    let context = await loadRouteData(loaderRequest, matches, requestContext);\n\n    return {\n      ...context,\n      // action status codes take precedence over loader status codes\n      ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n      actionData: {\n        [actionMatch.route.id]: result.data,\n      },\n      actionHeaders: {\n        ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n      },\n    };\n  }\n\n  async function loadRouteData(\n    request: Request,\n    matches: AgnosticDataRouteMatch[],\n    requestContext: unknown,\n    routeMatch?: AgnosticDataRouteMatch,\n    pendingActionError?: RouteData\n  ): Promise<\n    | Omit<\n        StaticHandlerContext,\n        \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n      >\n    | Response\n  > {\n    let isRouteRequest = routeMatch != null;\n\n    // Short circuit if we have no loaders to run (queryRoute())\n    if (\n      isRouteRequest &&\n      !routeMatch?.route.loader &&\n      !routeMatch?.route.lazy\n    ) {\n      throw getInternalRouterError(400, {\n        method: request.method,\n        pathname: new URL(request.url).pathname,\n        routeId: routeMatch?.route.id,\n      });\n    }\n\n    let requestMatches = routeMatch\n      ? [routeMatch]\n      : getLoaderMatchesUntilBoundary(\n          matches,\n          Object.keys(pendingActionError || {})[0]\n        );\n    let matchesToLoad = requestMatches.filter(\n      (m) => m.route.loader || m.route.lazy\n    );\n\n    // Short circuit if we have no loaders to run (query())\n    if (matchesToLoad.length === 0) {\n      return {\n        matches,\n        // Add a null for all matched routes for proper revalidation on the client\n        loaderData: matches.reduce(\n          (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n          {}\n        ),\n        errors: pendingActionError || null,\n        statusCode: 200,\n        loaderHeaders: {},\n        activeDeferreds: null,\n      };\n    }\n\n    let results = await Promise.all([\n      ...matchesToLoad.map((match) =>\n        callLoaderOrAction(\n          \"loader\",\n          request,\n          match,\n          matches,\n          manifest,\n          mapRouteProperties,\n          basename,\n          future.v7_relativeSplatPath,\n          { isStaticRequest: true, isRouteRequest, requestContext }\n        )\n      ),\n    ]);\n\n    if (request.signal.aborted) {\n      throwStaticHandlerAbortedError(request, isRouteRequest, future);\n    }\n\n    // Process and commit output from loaders\n    let activeDeferreds = new Map<string, DeferredData>();\n    let context = processRouteLoaderData(\n      matches,\n      matchesToLoad,\n      results,\n      pendingActionError,\n      activeDeferreds\n    );\n\n    // Add a null for any non-loader matches for proper revalidation on the client\n    let executedLoaders = new Set<string>(\n      matchesToLoad.map((match) => match.route.id)\n    );\n    matches.forEach((match) => {\n      if (!executedLoaders.has(match.route.id)) {\n        context.loaderData[match.route.id] = null;\n      }\n    });\n\n    return {\n      ...context,\n      matches,\n      activeDeferreds:\n        activeDeferreds.size > 0\n          ? Object.fromEntries(activeDeferreds.entries())\n          : null,\n    };\n  }\n\n  return {\n    dataRoutes,\n    query,\n    queryRoute,\n  };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n  routes: AgnosticDataRouteObject[],\n  context: StaticHandlerContext,\n  error: any\n) {\n  let newContext: StaticHandlerContext = {\n    ...context,\n    statusCode: isRouteErrorResponse(error) ? error.status : 500,\n    errors: {\n      [context._deepestRenderedBoundaryId || routes[0].id]: error,\n    },\n  };\n  return newContext;\n}\n\nfunction throwStaticHandlerAbortedError(\n  request: Request,\n  isRouteRequest: boolean,\n  future: StaticHandlerFutureConfig\n) {\n  if (future.v7_throwAbortReason && request.signal.reason !== undefined) {\n    throw request.signal.reason;\n  }\n\n  let method = isRouteRequest ? \"queryRoute\" : \"query\";\n  throw new Error(`${method}() call aborted: ${request.method} ${request.url}`);\n}\n\nfunction isSubmissionNavigation(\n  opts: BaseNavigateOrFetchOptions\n): opts is SubmissionNavigateOptions {\n  return (\n    opts != null &&\n    ((\"formData\" in opts && opts.formData != null) ||\n      (\"body\" in opts && opts.body !== undefined))\n  );\n}\n\nfunction normalizeTo(\n  location: Path,\n  matches: AgnosticDataRouteMatch[],\n  basename: string,\n  prependBasename: boolean,\n  to: To | null,\n  v7_relativeSplatPath: boolean,\n  fromRouteId?: string,\n  relative?: RelativeRoutingType\n) {\n  let contextualMatches: AgnosticDataRouteMatch[];\n  let activeRouteMatch: AgnosticDataRouteMatch | undefined;\n  if (fromRouteId) {\n    // Grab matches up to the calling route so our route-relative logic is\n    // relative to the correct source route\n    contextualMatches = [];\n    for (let match of matches) {\n      contextualMatches.push(match);\n      if (match.route.id === fromRouteId) {\n        activeRouteMatch = match;\n        break;\n      }\n    }\n  } else {\n    contextualMatches = matches;\n    activeRouteMatch = matches[matches.length - 1];\n  }\n\n  // Resolve the relative path\n  let path = resolveTo(\n    to ? to : \".\",\n    getResolveToMatches(contextualMatches, v7_relativeSplatPath),\n    stripBasename(location.pathname, basename) || location.pathname,\n    relative === \"path\"\n  );\n\n  // When `to` is not specified we inherit search/hash from the current\n  // location, unlike when to=\".\" and we just inherit the path.\n  // See https://github.com/remix-run/remix/issues/927\n  if (to == null) {\n    path.search = location.search;\n    path.hash = location.hash;\n  }\n\n  // Add an ?index param for matched index routes if we don't already have one\n  if (\n    (to == null || to === \"\" || to === \".\") &&\n    activeRouteMatch &&\n    activeRouteMatch.route.index &&\n    !hasNakedIndexQuery(path.search)\n  ) {\n    path.search = path.search\n      ? path.search.replace(/^\\?/, \"?index&\")\n      : \"?index\";\n  }\n\n  // If we're operating within a basename, prepend it to the pathname.  If\n  // this is a root navigation, then just use the raw basename which allows\n  // the basename to have full control over the presence of a trailing slash\n  // on root actions\n  if (prependBasename && basename !== \"/\") {\n    path.pathname =\n      path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n  }\n\n  return createPath(path);\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n  normalizeFormMethod: boolean,\n  isFetcher: boolean,\n  path: string,\n  opts?: BaseNavigateOrFetchOptions\n): {\n  path: string;\n  submission?: Submission;\n  error?: ErrorResponseImpl;\n} {\n  // Return location verbatim on non-submission navigations\n  if (!opts || !isSubmissionNavigation(opts)) {\n    return { path };\n  }\n\n  if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n    return {\n      path,\n      error: getInternalRouterError(405, { method: opts.formMethod }),\n    };\n  }\n\n  let getInvalidBodyError = () => ({\n    path,\n    error: getInternalRouterError(400, { type: \"invalid-body\" }),\n  });\n\n  // Create a Submission on non-GET navigations\n  let rawFormMethod = opts.formMethod || \"get\";\n  let formMethod = normalizeFormMethod\n    ? (rawFormMethod.toUpperCase() as V7_FormMethod)\n    : (rawFormMethod.toLowerCase() as FormMethod);\n  let formAction = stripHashFromPath(path);\n\n  if (opts.body !== undefined) {\n    if (opts.formEncType === \"text/plain\") {\n      // text only support POST/PUT/PATCH/DELETE submissions\n      if (!isMutationMethod(formMethod)) {\n        return getInvalidBodyError();\n      }\n\n      let text =\n        typeof opts.body === \"string\"\n          ? opts.body\n          : opts.body instanceof FormData ||\n            opts.body instanceof URLSearchParams\n          ? // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n            Array.from(opts.body.entries()).reduce(\n              (acc, [name, value]) => `${acc}${name}=${value}\\n`,\n              \"\"\n            )\n          : String(opts.body);\n\n      return {\n        path,\n        submission: {\n          formMethod,\n          formAction,\n          formEncType: opts.formEncType,\n          formData: undefined,\n          json: undefined,\n          text,\n        },\n      };\n    } else if (opts.formEncType === \"application/json\") {\n      // json only supports POST/PUT/PATCH/DELETE submissions\n      if (!isMutationMethod(formMethod)) {\n        return getInvalidBodyError();\n      }\n\n      try {\n        let json =\n          typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n\n        return {\n          path,\n          submission: {\n            formMethod,\n            formAction,\n            formEncType: opts.formEncType,\n            formData: undefined,\n            json,\n            text: undefined,\n          },\n        };\n      } catch (e) {\n        return getInvalidBodyError();\n      }\n    }\n  }\n\n  invariant(\n    typeof FormData === \"function\",\n    \"FormData is not available in this environment\"\n  );\n\n  let searchParams: URLSearchParams;\n  let formData: FormData;\n\n  if (opts.formData) {\n    searchParams = convertFormDataToSearchParams(opts.formData);\n    formData = opts.formData;\n  } else if (opts.body instanceof FormData) {\n    searchParams = convertFormDataToSearchParams(opts.body);\n    formData = opts.body;\n  } else if (opts.body instanceof URLSearchParams) {\n    searchParams = opts.body;\n    formData = convertSearchParamsToFormData(searchParams);\n  } else if (opts.body == null) {\n    searchParams = new URLSearchParams();\n    formData = new FormData();\n  } else {\n    try {\n      searchParams = new URLSearchParams(opts.body);\n      formData = convertSearchParamsToFormData(searchParams);\n    } catch (e) {\n      return getInvalidBodyError();\n    }\n  }\n\n  let submission: Submission = {\n    formMethod,\n    formAction,\n    formEncType:\n      (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n    formData,\n    json: undefined,\n    text: undefined,\n  };\n\n  if (isMutationMethod(submission.formMethod)) {\n    return { path, submission };\n  }\n\n  // Flatten submission onto URLSearchParams for GET submissions\n  let parsedPath = parsePath(path);\n  // On GET navigation submissions we can drop the ?index param from the\n  // resulting location since all loaders will run.  But fetcher GET submissions\n  // only run a single loader so we need to preserve any incoming ?index params\n  if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n    searchParams.append(\"index\", \"\");\n  }\n  parsedPath.search = `?${searchParams}`;\n\n  return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n  matches: AgnosticDataRouteMatch[],\n  boundaryId?: string\n) {\n  let boundaryMatches = matches;\n  if (boundaryId) {\n    let index = matches.findIndex((m) => m.route.id === boundaryId);\n    if (index >= 0) {\n      boundaryMatches = matches.slice(0, index);\n    }\n  }\n  return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n  history: History,\n  state: RouterState,\n  matches: AgnosticDataRouteMatch[],\n  submission: Submission | undefined,\n  location: Location,\n  isInitialLoad: boolean,\n  isRevalidationRequired: boolean,\n  cancelledDeferredRoutes: string[],\n  cancelledFetcherLoads: string[],\n  deletedFetchers: Set<string>,\n  fetchLoadMatches: Map<string, FetchLoadMatch>,\n  fetchRedirectIds: Set<string>,\n  routesToUse: AgnosticDataRouteObject[],\n  basename: string | undefined,\n  pendingActionData?: RouteData,\n  pendingError?: RouteData\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n  let actionResult = pendingError\n    ? Object.values(pendingError)[0]\n    : pendingActionData\n    ? Object.values(pendingActionData)[0]\n    : undefined;\n\n  let currentUrl = history.createURL(state.location);\n  let nextUrl = history.createURL(location);\n\n  // Pick navigation matches that are net-new or qualify for revalidation\n  let boundaryId = pendingError ? Object.keys(pendingError)[0] : undefined;\n  let boundaryMatches = getLoaderMatchesUntilBoundary(matches, boundaryId);\n\n  let navigationMatches = boundaryMatches.filter((match, index) => {\n    let { route } = match;\n    if (route.lazy) {\n      // We haven't loaded this route yet so we don't know if it's got a loader!\n      return true;\n    }\n\n    if (route.loader == null) {\n      return false;\n    }\n\n    if (isInitialLoad) {\n      if (route.loader.hydrate) {\n        return true;\n      }\n      return (\n        state.loaderData[route.id] === undefined &&\n        // Don't re-run if the loader ran and threw an error\n        (!state.errors || state.errors[route.id] === undefined)\n      );\n    }\n\n    // Always call the loader on new route instances and pending defer cancellations\n    if (\n      isNewLoader(state.loaderData, state.matches[index], match) ||\n      cancelledDeferredRoutes.some((id) => id === match.route.id)\n    ) {\n      return true;\n    }\n\n    // This is the default implementation for when we revalidate.  If the route\n    // provides it's own implementation, then we give them full control but\n    // provide this value so they can leverage it if needed after they check\n    // their own specific use cases\n    let currentRouteMatch = state.matches[index];\n    let nextRouteMatch = match;\n\n    return shouldRevalidateLoader(match, {\n      currentUrl,\n      currentParams: currentRouteMatch.params,\n      nextUrl,\n      nextParams: nextRouteMatch.params,\n      ...submission,\n      actionResult,\n      defaultShouldRevalidate:\n        // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n        isRevalidationRequired ||\n        // Clicked the same link, resubmitted a GET form\n        currentUrl.pathname + currentUrl.search ===\n          nextUrl.pathname + nextUrl.search ||\n        // Search params affect all loaders\n        currentUrl.search !== nextUrl.search ||\n        isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n    });\n  });\n\n  // Pick fetcher.loads that need to be revalidated\n  let revalidatingFetchers: RevalidatingFetcher[] = [];\n  fetchLoadMatches.forEach((f, key) => {\n    // Don't revalidate:\n    //  - on initial load (shouldn't be any fetchers then anyway)\n    //  - if fetcher won't be present in the subsequent render\n    //    - no longer matches the URL (v7_fetcherPersist=false)\n    //    - was unmounted but persisted due to v7_fetcherPersist=true\n    if (\n      isInitialLoad ||\n      !matches.some((m) => m.route.id === f.routeId) ||\n      deletedFetchers.has(key)\n    ) {\n      return;\n    }\n\n    let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n    // If the fetcher path no longer matches, push it in with null matches so\n    // we can trigger a 404 in callLoadersAndMaybeResolveData.  Note this is\n    // currently only a use-case for Remix HMR where the route tree can change\n    // at runtime and remove a route previously loaded via a fetcher\n    if (!fetcherMatches) {\n      revalidatingFetchers.push({\n        key,\n        routeId: f.routeId,\n        path: f.path,\n        matches: null,\n        match: null,\n        controller: null,\n      });\n      return;\n    }\n\n    // Revalidating fetchers are decoupled from the route matches since they\n    // load from a static href.  They revalidate based on explicit revalidation\n    // (submission, useRevalidator, or X-Remix-Revalidate)\n    let fetcher = state.fetchers.get(key);\n    let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n    let shouldRevalidate = false;\n    if (fetchRedirectIds.has(key)) {\n      // Never trigger a revalidation of an actively redirecting fetcher\n      shouldRevalidate = false;\n    } else if (cancelledFetcherLoads.includes(key)) {\n      // Always revalidate if the fetcher was cancelled\n      shouldRevalidate = true;\n    } else if (\n      fetcher &&\n      fetcher.state !== \"idle\" &&\n      fetcher.data === undefined\n    ) {\n      // If the fetcher hasn't ever completed loading yet, then this isn't a\n      // revalidation, it would just be a brand new load if an explicit\n      // revalidation is required\n      shouldRevalidate = isRevalidationRequired;\n    } else {\n      // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n      // to explicit revalidations only\n      shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n        currentUrl,\n        currentParams: state.matches[state.matches.length - 1].params,\n        nextUrl,\n        nextParams: matches[matches.length - 1].params,\n        ...submission,\n        actionResult,\n        defaultShouldRevalidate: isRevalidationRequired,\n      });\n    }\n\n    if (shouldRevalidate) {\n      revalidatingFetchers.push({\n        key,\n        routeId: f.routeId,\n        path: f.path,\n        matches: fetcherMatches,\n        match: fetcherMatch,\n        controller: new AbortController(),\n      });\n    }\n  });\n\n  return [navigationMatches, revalidatingFetchers];\n}\n\nfunction isNewLoader(\n  currentLoaderData: RouteData,\n  currentMatch: AgnosticDataRouteMatch,\n  match: AgnosticDataRouteMatch\n) {\n  let isNew =\n    // [a] -> [a, b]\n    !currentMatch ||\n    // [a, b] -> [a, c]\n    match.route.id !== currentMatch.route.id;\n\n  // Handle the case that we don't have data for a re-used route, potentially\n  // from a prior error or from a cancelled pending deferred\n  let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n  // Always load if this is a net-new route or we don't yet have data\n  return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n  currentMatch: AgnosticDataRouteMatch,\n  match: AgnosticDataRouteMatch\n) {\n  let currentPath = currentMatch.route.path;\n  return (\n    // param change for this match, /users/123 -> /users/456\n    currentMatch.pathname !== match.pathname ||\n    // splat param changed, which is not present in match.path\n    // e.g. /files/images/avatar.jpg -> files/finances.xls\n    (currentPath != null &&\n      currentPath.endsWith(\"*\") &&\n      currentMatch.params[\"*\"] !== match.params[\"*\"])\n  );\n}\n\nfunction shouldRevalidateLoader(\n  loaderMatch: AgnosticDataRouteMatch,\n  arg: ShouldRevalidateFunctionArgs\n) {\n  if (loaderMatch.route.shouldRevalidate) {\n    let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n    if (typeof routeChoice === \"boolean\") {\n      return routeChoice;\n    }\n  }\n\n  return arg.defaultShouldRevalidate;\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n  route: AgnosticDataRouteObject,\n  mapRouteProperties: MapRoutePropertiesFunction,\n  manifest: RouteManifest\n) {\n  if (!route.lazy) {\n    return;\n  }\n\n  let lazyRoute = await route.lazy();\n\n  // If the lazy route function was executed and removed by another parallel\n  // call then we can return - first lazy() to finish wins because the return\n  // value of lazy is expected to be static\n  if (!route.lazy) {\n    return;\n  }\n\n  let routeToUpdate = manifest[route.id];\n  invariant(routeToUpdate, \"No route found in manifest\");\n\n  // Update the route in place.  This should be safe because there's no way\n  // we could yet be sitting on this route as we can't get there without\n  // resolving lazy() first.\n  //\n  // This is different than the HMR \"update\" use-case where we may actively be\n  // on the route being updated.  The main concern boils down to \"does this\n  // mutation affect any ongoing navigations or any current state.matches\n  // values?\".  If not, it should be safe to update in place.\n  let routeUpdates: Record<string, any> = {};\n  for (let lazyRouteProperty in lazyRoute) {\n    let staticRouteValue =\n      routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n    let isPropertyStaticallyDefined =\n      staticRouteValue !== undefined &&\n      // This property isn't static since it should always be updated based\n      // on the route updates\n      lazyRouteProperty !== \"hasErrorBoundary\";\n\n    warning(\n      !isPropertyStaticallyDefined,\n      `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n        `defined but its lazy function is also returning a value for this property. ` +\n        `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n    );\n\n    if (\n      !isPropertyStaticallyDefined &&\n      !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n    ) {\n      routeUpdates[lazyRouteProperty] =\n        lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n    }\n  }\n\n  // Mutate the route with the provided updates.  Do this first so we pass\n  // the updated version to mapRouteProperties\n  Object.assign(routeToUpdate, routeUpdates);\n\n  // Mutate the `hasErrorBoundary` property on the route based on the route\n  // updates and remove the `lazy` function so we don't resolve the lazy\n  // route again.\n  Object.assign(routeToUpdate, {\n    // To keep things framework agnostic, we use the provided\n    // `mapRouteProperties` (or wrapped `detectErrorBoundary`) function to\n    // set the framework-aware properties (`element`/`hasErrorBoundary`) since\n    // the logic will differ between frameworks.\n    ...mapRouteProperties(routeToUpdate),\n    lazy: undefined,\n  });\n}\n\nasync function callLoaderOrAction(\n  type: \"loader\" | \"action\",\n  request: Request,\n  match: AgnosticDataRouteMatch,\n  matches: AgnosticDataRouteMatch[],\n  manifest: RouteManifest,\n  mapRouteProperties: MapRoutePropertiesFunction,\n  basename: string,\n  v7_relativeSplatPath: boolean,\n  opts: {\n    isStaticRequest?: boolean;\n    isRouteRequest?: boolean;\n    requestContext?: unknown;\n  } = {}\n): Promise<DataResult> {\n  let resultType;\n  let result;\n  let onReject: (() => void) | undefined;\n\n  let runHandler = (handler: ActionFunction | LoaderFunction) => {\n    // Setup a promise we can race against so that abort signals short circuit\n    let reject: () => void;\n    let abortPromise = new Promise((_, r) => (reject = r));\n    onReject = () => reject();\n    request.signal.addEventListener(\"abort\", onReject);\n    return Promise.race([\n      handler({\n        request,\n        params: match.params,\n        context: opts.requestContext,\n      }),\n      abortPromise,\n    ]);\n  };\n\n  try {\n    let handler = match.route[type];\n\n    if (match.route.lazy) {\n      if (handler) {\n        // Run statically defined handler in parallel with lazy()\n        let handlerError;\n        let values = await Promise.all([\n          // If the handler throws, don't let it immediately bubble out,\n          // since we need to let the lazy() execution finish so we know if this\n          // route has a boundary that can handle the error\n          runHandler(handler).catch((e) => {\n            handlerError = e;\n          }),\n          loadLazyRouteModule(match.route, mapRouteProperties, manifest),\n        ]);\n        if (handlerError) {\n          throw handlerError;\n        }\n        result = values[0];\n      } else {\n        // Load lazy route module, then run any returned handler\n        await loadLazyRouteModule(match.route, mapRouteProperties, manifest);\n\n        handler = match.route[type];\n        if (handler) {\n          // Handler still run even if we got interrupted to maintain consistency\n          // with un-abortable behavior of handler execution on non-lazy or\n          // previously-lazy-loaded routes\n          result = await runHandler(handler);\n        } else if (type === \"action\") {\n          let url = new URL(request.url);\n          let pathname = url.pathname + url.search;\n          throw getInternalRouterError(405, {\n            method: request.method,\n            pathname,\n            routeId: match.route.id,\n          });\n        } else {\n          // lazy() route has no loader to run.  Short circuit here so we don't\n          // hit the invariant below that errors on returning undefined.\n          return { type: ResultType.data, data: undefined };\n        }\n      }\n    } else if (!handler) {\n      let url = new URL(request.url);\n      let pathname = url.pathname + url.search;\n      throw getInternalRouterError(404, {\n        pathname,\n      });\n    } else {\n      result = await runHandler(handler);\n    }\n\n    invariant(\n      result !== undefined,\n      `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n        `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n        `function. Please return a value or \\`null\\`.`\n    );\n  } catch (e) {\n    resultType = ResultType.error;\n    result = e;\n  } finally {\n    if (onReject) {\n      request.signal.removeEventListener(\"abort\", onReject);\n    }\n  }\n\n  if (isResponse(result)) {\n    let status = result.status;\n\n    // Process redirects\n    if (redirectStatusCodes.has(status)) {\n      let location = result.headers.get(\"Location\");\n      invariant(\n        location,\n        \"Redirects returned/thrown from loaders/actions must have a Location header\"\n      );\n\n      // Support relative routing in internal redirects\n      if (!ABSOLUTE_URL_REGEX.test(location)) {\n        location = normalizeTo(\n          new URL(request.url),\n          matches.slice(0, matches.indexOf(match) + 1),\n          basename,\n          true,\n          location,\n          v7_relativeSplatPath\n        );\n      } else if (!opts.isStaticRequest) {\n        // Strip off the protocol+origin for same-origin + same-basename absolute\n        // redirects. If this is a static request, we can let it go back to the\n        // browser as-is\n        let currentUrl = new URL(request.url);\n        let url = location.startsWith(\"//\")\n          ? new URL(currentUrl.protocol + location)\n          : new URL(location);\n        let isSameBasename = stripBasename(url.pathname, basename) != null;\n        if (url.origin === currentUrl.origin && isSameBasename) {\n          location = url.pathname + url.search + url.hash;\n        }\n      }\n\n      // Don't process redirects in the router during static requests requests.\n      // Instead, throw the Response and let the server handle it with an HTTP\n      // redirect.  We also update the Location header in place in this flow so\n      // basename and relative routing is taken into account\n      if (opts.isStaticRequest) {\n        result.headers.set(\"Location\", location);\n        throw result;\n      }\n\n      return {\n        type: ResultType.redirect,\n        status,\n        location,\n        revalidate: result.headers.get(\"X-Remix-Revalidate\") !== null,\n        reloadDocument: result.headers.get(\"X-Remix-Reload-Document\") !== null,\n      };\n    }\n\n    // For SSR single-route requests, we want to hand Responses back directly\n    // without unwrapping.  We do this with the QueryRouteResponse wrapper\n    // interface so we can know whether it was returned or thrown\n    if (opts.isRouteRequest) {\n      let queryRouteResponse: QueryRouteResponse = {\n        type:\n          resultType === ResultType.error ? ResultType.error : ResultType.data,\n        response: result,\n      };\n      throw queryRouteResponse;\n    }\n\n    let data: any;\n\n    try {\n      let contentType = result.headers.get(\"Content-Type\");\n      // Check between word boundaries instead of startsWith() due to the last\n      // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n      if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n        if (result.body == null) {\n          data = null;\n        } else {\n          data = await result.json();\n        }\n      } else {\n        data = await result.text();\n      }\n    } catch (e) {\n      return { type: ResultType.error, error: e };\n    }\n\n    if (resultType === ResultType.error) {\n      return {\n        type: resultType,\n        error: new ErrorResponseImpl(status, result.statusText, data),\n        headers: result.headers,\n      };\n    }\n\n    return {\n      type: ResultType.data,\n      data,\n      statusCode: result.status,\n      headers: result.headers,\n    };\n  }\n\n  if (resultType === ResultType.error) {\n    return { type: resultType, error: result };\n  }\n\n  if (isDeferredData(result)) {\n    return {\n      type: ResultType.deferred,\n      deferredData: result,\n      statusCode: result.init?.status,\n      headers: result.init?.headers && new Headers(result.init.headers),\n    };\n  }\n\n  return { type: ResultType.data, data: result };\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches.  During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n  history: History,\n  location: string | Location,\n  signal: AbortSignal,\n  submission?: Submission\n): Request {\n  let url = history.createURL(stripHashFromPath(location)).toString();\n  let init: RequestInit = { signal };\n\n  if (submission && isMutationMethod(submission.formMethod)) {\n    let { formMethod, formEncType } = submission;\n    // Didn't think we needed this but it turns out unlike other methods, patch\n    // won't be properly normalized to uppercase and results in a 405 error.\n    // See: https://fetch.spec.whatwg.org/#concept-method\n    init.method = formMethod.toUpperCase();\n\n    if (formEncType === \"application/json\") {\n      init.headers = new Headers({ \"Content-Type\": formEncType });\n      init.body = JSON.stringify(submission.json);\n    } else if (formEncType === \"text/plain\") {\n      // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n      init.body = submission.text;\n    } else if (\n      formEncType === \"application/x-www-form-urlencoded\" &&\n      submission.formData\n    ) {\n      // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n      init.body = convertFormDataToSearchParams(submission.formData);\n    } else {\n      // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n      init.body = submission.formData;\n    }\n  }\n\n  return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n  let searchParams = new URLSearchParams();\n\n  for (let [key, value] of formData.entries()) {\n    // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n    searchParams.append(key, typeof value === \"string\" ? value : value.name);\n  }\n\n  return searchParams;\n}\n\nfunction convertSearchParamsToFormData(\n  searchParams: URLSearchParams\n): FormData {\n  let formData = new FormData();\n  for (let [key, value] of searchParams.entries()) {\n    formData.append(key, value);\n  }\n  return formData;\n}\n\nfunction processRouteLoaderData(\n  matches: AgnosticDataRouteMatch[],\n  matchesToLoad: AgnosticDataRouteMatch[],\n  results: DataResult[],\n  pendingError: RouteData | undefined,\n  activeDeferreds: Map<string, DeferredData>\n): {\n  loaderData: RouterState[\"loaderData\"];\n  errors: RouterState[\"errors\"] | null;\n  statusCode: number;\n  loaderHeaders: Record<string, Headers>;\n} {\n  // Fill in loaderData/errors from our loaders\n  let loaderData: RouterState[\"loaderData\"] = {};\n  let errors: RouterState[\"errors\"] | null = null;\n  let statusCode: number | undefined;\n  let foundError = false;\n  let loaderHeaders: Record<string, Headers> = {};\n\n  // Process loader results into state.loaderData/state.errors\n  results.forEach((result, index) => {\n    let id = matchesToLoad[index].route.id;\n    invariant(\n      !isRedirectResult(result),\n      \"Cannot handle redirect results in processLoaderData\"\n    );\n    if (isErrorResult(result)) {\n      // Look upwards from the matched route for the closest ancestor\n      // error boundary, defaulting to the root match\n      let boundaryMatch = findNearestBoundary(matches, id);\n      let error = result.error;\n      // If we have a pending action error, we report it at the highest-route\n      // that throws a loader error, and then clear it out to indicate that\n      // it was consumed\n      if (pendingError) {\n        error = Object.values(pendingError)[0];\n        pendingError = undefined;\n      }\n\n      errors = errors || {};\n\n      // Prefer higher error values if lower errors bubble to the same boundary\n      if (errors[boundaryMatch.route.id] == null) {\n        errors[boundaryMatch.route.id] = error;\n      }\n\n      // Clear our any prior loaderData for the throwing route\n      loaderData[id] = undefined;\n\n      // Once we find our first (highest) error, we set the status code and\n      // prevent deeper status codes from overriding\n      if (!foundError) {\n        foundError = true;\n        statusCode = isRouteErrorResponse(result.error)\n          ? result.error.status\n          : 500;\n      }\n      if (result.headers) {\n        loaderHeaders[id] = result.headers;\n      }\n    } else {\n      if (isDeferredResult(result)) {\n        activeDeferreds.set(id, result.deferredData);\n        loaderData[id] = result.deferredData.data;\n      } else {\n        loaderData[id] = result.data;\n      }\n\n      // Error status codes always override success status codes, but if all\n      // loaders are successful we take the deepest status code.\n      if (\n        result.statusCode != null &&\n        result.statusCode !== 200 &&\n        !foundError\n      ) {\n        statusCode = result.statusCode;\n      }\n      if (result.headers) {\n        loaderHeaders[id] = result.headers;\n      }\n    }\n  });\n\n  // If we didn't consume the pending action error (i.e., all loaders\n  // resolved), then consume it here.  Also clear out any loaderData for the\n  // throwing route\n  if (pendingError) {\n    errors = pendingError;\n    loaderData[Object.keys(pendingError)[0]] = undefined;\n  }\n\n  return {\n    loaderData,\n    errors,\n    statusCode: statusCode || 200,\n    loaderHeaders,\n  };\n}\n\nfunction processLoaderData(\n  state: RouterState,\n  matches: AgnosticDataRouteMatch[],\n  matchesToLoad: AgnosticDataRouteMatch[],\n  results: DataResult[],\n  pendingError: RouteData | undefined,\n  revalidatingFetchers: RevalidatingFetcher[],\n  fetcherResults: DataResult[],\n  activeDeferreds: Map<string, DeferredData>\n): {\n  loaderData: RouterState[\"loaderData\"];\n  errors?: RouterState[\"errors\"];\n} {\n  let { loaderData, errors } = processRouteLoaderData(\n    matches,\n    matchesToLoad,\n    results,\n    pendingError,\n    activeDeferreds\n  );\n\n  // Process results from our revalidating fetchers\n  for (let index = 0; index < revalidatingFetchers.length; index++) {\n    let { key, match, controller } = revalidatingFetchers[index];\n    invariant(\n      fetcherResults !== undefined && fetcherResults[index] !== undefined,\n      \"Did not find corresponding fetcher result\"\n    );\n    let result = fetcherResults[index];\n\n    // Process fetcher non-redirect errors\n    if (controller && controller.signal.aborted) {\n      // Nothing to do for aborted fetchers\n      continue;\n    } else if (isErrorResult(result)) {\n      let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n      if (!(errors && errors[boundaryMatch.route.id])) {\n        errors = {\n          ...errors,\n          [boundaryMatch.route.id]: result.error,\n        };\n      }\n      state.fetchers.delete(key);\n    } else if (isRedirectResult(result)) {\n      // Should never get here, redirects should get processed above, but we\n      // keep this to type narrow to a success result in the else\n      invariant(false, \"Unhandled fetcher revalidation redirect\");\n    } else if (isDeferredResult(result)) {\n      // Should never get here, deferred data should be awaited for fetchers\n      // in resolveDeferredResults\n      invariant(false, \"Unhandled fetcher deferred data\");\n    } else {\n      let doneFetcher = getDoneFetcher(result.data);\n      state.fetchers.set(key, doneFetcher);\n    }\n  }\n\n  return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n  loaderData: RouteData,\n  newLoaderData: RouteData,\n  matches: AgnosticDataRouteMatch[],\n  errors: RouteData | null | undefined\n): RouteData {\n  let mergedLoaderData = { ...newLoaderData };\n  for (let match of matches) {\n    let id = match.route.id;\n    if (newLoaderData.hasOwnProperty(id)) {\n      if (newLoaderData[id] !== undefined) {\n        mergedLoaderData[id] = newLoaderData[id];\n      } else {\n        // No-op - this is so we ignore existing data if we have a key in the\n        // incoming object with an undefined value, which is how we unset a prior\n        // loaderData if we encounter a loader error\n      }\n    } else if (loaderData[id] !== undefined && match.route.loader) {\n      // Preserve existing keys not included in newLoaderData and where a loader\n      // wasn't removed by HMR\n      mergedLoaderData[id] = loaderData[id];\n    }\n\n    if (errors && errors.hasOwnProperty(id)) {\n      // Don't keep any loader data below the boundary\n      break;\n    }\n  }\n  return mergedLoaderData;\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n  matches: AgnosticDataRouteMatch[],\n  routeId?: string\n): AgnosticDataRouteMatch {\n  let eligibleMatches = routeId\n    ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n    : [...matches];\n  return (\n    eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n    matches[0]\n  );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n  matches: AgnosticDataRouteMatch[];\n  route: AgnosticDataRouteObject;\n} {\n  // Prefer a root layout route if present, otherwise shim in a route object\n  let route =\n    routes.length === 1\n      ? routes[0]\n      : routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n          id: `__shim-error-route__`,\n        };\n\n  return {\n    matches: [\n      {\n        params: {},\n        pathname: \"\",\n        pathnameBase: \"\",\n        route,\n      },\n    ],\n    route,\n  };\n}\n\nfunction getInternalRouterError(\n  status: number,\n  {\n    pathname,\n    routeId,\n    method,\n    type,\n  }: {\n    pathname?: string;\n    routeId?: string;\n    method?: string;\n    type?: \"defer-action\" | \"invalid-body\";\n  } = {}\n) {\n  let statusText = \"Unknown Server Error\";\n  let errorMessage = \"Unknown @remix-run/router error\";\n\n  if (status === 400) {\n    statusText = \"Bad Request\";\n    if (method && pathname && routeId) {\n      errorMessage =\n        `You made a ${method} request to \"${pathname}\" but ` +\n        `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n        `so there is no way to handle the request.`;\n    } else if (type === \"defer-action\") {\n      errorMessage = \"defer() is not supported in actions\";\n    } else if (type === \"invalid-body\") {\n      errorMessage = \"Unable to encode submission body\";\n    }\n  } else if (status === 403) {\n    statusText = \"Forbidden\";\n    errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n  } else if (status === 404) {\n    statusText = \"Not Found\";\n    errorMessage = `No route matches URL \"${pathname}\"`;\n  } else if (status === 405) {\n    statusText = \"Method Not Allowed\";\n    if (method && pathname && routeId) {\n      errorMessage =\n        `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n        `did not provide an \\`action\\` for route \"${routeId}\", ` +\n        `so there is no way to handle the request.`;\n    } else if (method) {\n      errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n    }\n  }\n\n  return new ErrorResponseImpl(\n    status || 500,\n    statusText,\n    new Error(errorMessage),\n    true\n  );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(\n  results: DataResult[]\n): { result: RedirectResult; idx: number } | undefined {\n  for (let i = results.length - 1; i >= 0; i--) {\n    let result = results[i];\n    if (isRedirectResult(result)) {\n      return { result, idx: i };\n    }\n  }\n}\n\nfunction stripHashFromPath(path: To) {\n  let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n  return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n  if (a.pathname !== b.pathname || a.search !== b.search) {\n    return false;\n  }\n\n  if (a.hash === \"\") {\n    // /page -> /page#hash\n    return b.hash !== \"\";\n  } else if (a.hash === b.hash) {\n    // /page#hash -> /page#hash\n    return true;\n  } else if (b.hash !== \"\") {\n    // /page#hash -> /page#other\n    return true;\n  }\n\n  // If the hash is removed the browser will re-perform a request to the server\n  // /page#hash -> /page\n  return false;\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n  return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n  return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n  return (result && result.type) === ResultType.redirect;\n}\n\nexport function isDeferredData(value: any): value is DeferredData {\n  let deferred: DeferredData = value;\n  return (\n    deferred &&\n    typeof deferred === \"object\" &&\n    typeof deferred.data === \"object\" &&\n    typeof deferred.subscribe === \"function\" &&\n    typeof deferred.cancel === \"function\" &&\n    typeof deferred.resolveData === \"function\"\n  );\n}\n\nfunction isResponse(value: any): value is Response {\n  return (\n    value != null &&\n    typeof value.status === \"number\" &&\n    typeof value.statusText === \"string\" &&\n    typeof value.headers === \"object\" &&\n    typeof value.body !== \"undefined\"\n  );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n  if (!isResponse(result)) {\n    return false;\n  }\n\n  let status = result.status;\n  let location = result.headers.get(\"Location\");\n  return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isQueryRouteResponse(obj: any): obj is QueryRouteResponse {\n  return (\n    obj &&\n    isResponse(obj.response) &&\n    (obj.type === ResultType.data || obj.type === ResultType.error)\n  );\n}\n\nfunction isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n  return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n  method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n  return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveDeferredResults(\n  currentMatches: AgnosticDataRouteMatch[],\n  matchesToLoad: (AgnosticDataRouteMatch | null)[],\n  results: DataResult[],\n  signals: (AbortSignal | null)[],\n  isFetcher: boolean,\n  currentLoaderData?: RouteData\n) {\n  for (let index = 0; index < results.length; index++) {\n    let result = results[index];\n    let match = matchesToLoad[index];\n    // If we don't have a match, then we can have a deferred result to do\n    // anything with.  This is for revalidating fetchers where the route was\n    // removed during HMR\n    if (!match) {\n      continue;\n    }\n\n    let currentMatch = currentMatches.find(\n      (m) => m.route.id === match!.route.id\n    );\n    let isRevalidatingLoader =\n      currentMatch != null &&\n      !isNewRouteInstance(currentMatch, match) &&\n      (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n    if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n      // Note: we do not have to touch activeDeferreds here since we race them\n      // against the signal in resolveDeferredData and they'll get aborted\n      // there if needed\n      let signal = signals[index];\n      invariant(\n        signal,\n        \"Expected an AbortSignal for revalidating fetcher deferred result\"\n      );\n      await resolveDeferredData(result, signal, isFetcher).then((result) => {\n        if (result) {\n          results[index] = result || results[index];\n        }\n      });\n    }\n  }\n}\n\nasync function resolveDeferredData(\n  result: DeferredResult,\n  signal: AbortSignal,\n  unwrap = false\n): Promise<SuccessResult | ErrorResult | undefined> {\n  let aborted = await result.deferredData.resolveData(signal);\n  if (aborted) {\n    return;\n  }\n\n  if (unwrap) {\n    try {\n      return {\n        type: ResultType.data,\n        data: result.deferredData.unwrappedData,\n      };\n    } catch (e) {\n      // Handle any TrackedPromise._error values encountered while unwrapping\n      return {\n        type: ResultType.error,\n        error: e,\n      };\n    }\n  }\n\n  return {\n    type: ResultType.data,\n    data: result.deferredData.data,\n  };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n  return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\nfunction getTargetMatch(\n  matches: AgnosticDataRouteMatch[],\n  location: Location | string\n) {\n  let search =\n    typeof location === \"string\" ? parsePath(location).search : location.search;\n  if (\n    matches[matches.length - 1].route.index &&\n    hasNakedIndexQuery(search || \"\")\n  ) {\n    // Return the leaf index route when index is present\n    return matches[matches.length - 1];\n  }\n  // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n  // pathless layout routes)\n  let pathMatches = getPathContributingMatches(matches);\n  return pathMatches[pathMatches.length - 1];\n}\n\nfunction getSubmissionFromNavigation(\n  navigation: Navigation\n): Submission | undefined {\n  let { formMethod, formAction, formEncType, text, formData, json } =\n    navigation;\n  if (!formMethod || !formAction || !formEncType) {\n    return;\n  }\n\n  if (text != null) {\n    return {\n      formMethod,\n      formAction,\n      formEncType,\n      formData: undefined,\n      json: undefined,\n      text,\n    };\n  } else if (formData != null) {\n    return {\n      formMethod,\n      formAction,\n      formEncType,\n      formData,\n      json: undefined,\n      text: undefined,\n    };\n  } else if (json !== undefined) {\n    return {\n      formMethod,\n      formAction,\n      formEncType,\n      formData: undefined,\n      json,\n      text: undefined,\n    };\n  }\n}\n\nfunction getLoadingNavigation(\n  location: Location,\n  submission?: Submission\n): NavigationStates[\"Loading\"] {\n  if (submission) {\n    let navigation: NavigationStates[\"Loading\"] = {\n      state: \"loading\",\n      location,\n      formMethod: submission.formMethod,\n      formAction: submission.formAction,\n      formEncType: submission.formEncType,\n      formData: submission.formData,\n      json: submission.json,\n      text: submission.text,\n    };\n    return navigation;\n  } else {\n    let navigation: NavigationStates[\"Loading\"] = {\n      state: \"loading\",\n      location,\n      formMethod: undefined,\n      formAction: undefined,\n      formEncType: undefined,\n      formData: undefined,\n      json: undefined,\n      text: undefined,\n    };\n    return navigation;\n  }\n}\n\nfunction getSubmittingNavigation(\n  location: Location,\n  submission: Submission\n): NavigationStates[\"Submitting\"] {\n  let navigation: NavigationStates[\"Submitting\"] = {\n    state: \"submitting\",\n    location,\n    formMethod: submission.formMethod,\n    formAction: submission.formAction,\n    formEncType: submission.formEncType,\n    formData: submission.formData,\n    json: submission.json,\n    text: submission.text,\n  };\n  return navigation;\n}\n\nfunction getLoadingFetcher(\n  submission?: Submission,\n  data?: Fetcher[\"data\"]\n): FetcherStates[\"Loading\"] {\n  if (submission) {\n    let fetcher: FetcherStates[\"Loading\"] = {\n      state: \"loading\",\n      formMethod: submission.formMethod,\n      formAction: submission.formAction,\n      formEncType: submission.formEncType,\n      formData: submission.formData,\n      json: submission.json,\n      text: submission.text,\n      data,\n    };\n    return fetcher;\n  } else {\n    let fetcher: FetcherStates[\"Loading\"] = {\n      state: \"loading\",\n      formMethod: undefined,\n      formAction: undefined,\n      formEncType: undefined,\n      formData: undefined,\n      json: undefined,\n      text: undefined,\n      data,\n    };\n    return fetcher;\n  }\n}\n\nfunction getSubmittingFetcher(\n  submission: Submission,\n  existingFetcher?: Fetcher\n): FetcherStates[\"Submitting\"] {\n  let fetcher: FetcherStates[\"Submitting\"] = {\n    state: \"submitting\",\n    formMethod: submission.formMethod,\n    formAction: submission.formAction,\n    formEncType: submission.formEncType,\n    formData: submission.formData,\n    json: submission.json,\n    text: submission.text,\n    data: existingFetcher ? existingFetcher.data : undefined,\n  };\n  return fetcher;\n}\n\nfunction getDoneFetcher(data: Fetcher[\"data\"]): FetcherStates[\"Idle\"] {\n  let fetcher: FetcherStates[\"Idle\"] = {\n    state: \"idle\",\n    formMethod: undefined,\n    formAction: undefined,\n    formEncType: undefined,\n    formData: undefined,\n    json: undefined,\n    text: undefined,\n    data,\n  };\n  return fetcher;\n}\n\nfunction restoreAppliedTransitions(\n  _window: Window,\n  transitions: Map<string, Set<string>>\n) {\n  try {\n    let sessionPositions = _window.sessionStorage.getItem(\n      TRANSITIONS_STORAGE_KEY\n    );\n    if (sessionPositions) {\n      let json = JSON.parse(sessionPositions);\n      for (let [k, v] of Object.entries(json || {})) {\n        if (v && Array.isArray(v)) {\n          transitions.set(k, new Set(v || []));\n        }\n      }\n    }\n  } catch (e) {\n    // no-op, use default empty object\n  }\n}\n\nfunction persistAppliedTransitions(\n  _window: Window,\n  transitions: Map<string, Set<string>>\n) {\n  if (transitions.size > 0) {\n    let json: Record<string, string[]> = {};\n    for (let [k, v] of transitions) {\n      json[k] = [...v];\n    }\n    try {\n      _window.sessionStorage.setItem(\n        TRANSITIONS_STORAGE_KEY,\n        JSON.stringify(json)\n      );\n    } catch (error) {\n      warning(\n        false,\n        `Failed to save applied view transitions in sessionStorage (${error}).`\n      );\n    }\n  }\n}\n\n//#endregion\n","import * as React from \"react\";\nimport type {\n  AgnosticIndexRouteObject,\n  AgnosticNonIndexRouteObject,\n  AgnosticRouteMatch,\n  History,\n  LazyRouteFunction,\n  Location,\n  Action as NavigationType,\n  RelativeRoutingType,\n  Router,\n  StaticHandlerContext,\n  To,\n  TrackedPromise,\n} from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n  caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n  path?: AgnosticIndexRouteObject[\"path\"];\n  id?: AgnosticIndexRouteObject[\"id\"];\n  loader?: AgnosticIndexRouteObject[\"loader\"];\n  action?: AgnosticIndexRouteObject[\"action\"];\n  hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n  handle?: AgnosticIndexRouteObject[\"handle\"];\n  index: true;\n  children?: undefined;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n  lazy?: LazyRouteFunction<RouteObject>;\n}\n\nexport interface NonIndexRouteObject {\n  caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n  path?: AgnosticNonIndexRouteObject[\"path\"];\n  id?: AgnosticNonIndexRouteObject[\"id\"];\n  loader?: AgnosticNonIndexRouteObject[\"loader\"];\n  action?: AgnosticNonIndexRouteObject[\"action\"];\n  hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n  handle?: AgnosticNonIndexRouteObject[\"handle\"];\n  index?: false;\n  children?: RouteObject[];\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n  lazy?: LazyRouteFunction<RouteObject>;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n  children?: DataRouteObject[];\n  id: string;\n};\n\nexport interface RouteMatch<\n  ParamKey extends string = string,\n  RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch<ParamKey, RouteObjectType> {}\n\nexport interface DataRouteMatch extends RouteMatch<string, DataRouteObject> {}\n\nexport interface DataRouterContextObject\n  // Omit `future` since those can be pulled from the `router`\n  // `NavigationContext` needs future since it doesn't have a `router` in all cases\n  extends Omit<NavigationContextObject, \"future\"> {\n  router: Router;\n  staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n  React.createContext<DataRouterContextObject | null>(null);\nif (__DEV__) {\n  DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n  Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n  DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext<TrackedPromise | null>(null);\nif (__DEV__) {\n  AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n  replace?: boolean;\n  state?: any;\n  preventScrollReset?: boolean;\n  relative?: RelativeRoutingType;\n  unstable_flushSync?: boolean;\n  unstable_viewTransition?: boolean;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `<Router>` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n  createHref: History[\"createHref\"];\n  // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n  encodeLocation?: History[\"encodeLocation\"];\n  go: History[\"go\"];\n  push(to: To, state?: any, opts?: NavigateOptions): void;\n  replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n  basename: string;\n  navigator: Navigator;\n  static: boolean;\n  future: {\n    v7_relativeSplatPath: boolean;\n  };\n}\n\nexport const NavigationContext = React.createContext<NavigationContextObject>(\n  null!\n);\n\nif (__DEV__) {\n  NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n  location: Location;\n  navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext<LocationContextObject>(\n  null!\n);\n\nif (__DEV__) {\n  LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n  outlet: React.ReactElement | null;\n  matches: RouteMatch[];\n  isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext<RouteContextObject>({\n  outlet: null,\n  matches: [],\n  isDataRoute: false,\n});\n\nif (__DEV__) {\n  RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext<any>(null);\n\nif (__DEV__) {\n  RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n  Blocker,\n  BlockerFunction,\n  Location,\n  ParamParseKey,\n  Params,\n  Path,\n  PathMatch,\n  PathPattern,\n  RelativeRoutingType,\n  Router as RemixRouter,\n  RevalidationState,\n  To,\n  UIMatch,\n} from \"@remix-run/router\";\nimport {\n  IDLE_BLOCKER,\n  Action as NavigationType,\n  UNSAFE_convertRouteMatchToUiMatch as convertRouteMatchToUiMatch,\n  UNSAFE_getResolveToMatches as getResolveToMatches,\n  UNSAFE_invariant as invariant,\n  isRouteErrorResponse,\n  joinPaths,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  resolveTo,\n  stripBasename,\n  UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n  DataRouteMatch,\n  NavigateOptions,\n  RouteContextObject,\n  RouteMatch,\n  RouteObject,\n} from \"./context\";\nimport {\n  AwaitContext,\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n  RouteErrorContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nexport function useHref(\n  to: To,\n  { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useHref() may be used only in the context of a <Router> component.`\n  );\n\n  let { basename, navigator } = React.useContext(NavigationContext);\n  let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n  let joinedPathname = pathname;\n\n  // If we're operating within a basename, prepend it to the pathname prior\n  // to creating the href.  If this is a root navigation, then just use the raw\n  // basename which allows the basename to have full control over the presence\n  // of a trailing slash on root links\n  if (basename !== \"/\") {\n    joinedPathname =\n      pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n  }\n\n  return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a `<Router>`.\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n  return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nexport function useLocation(): Location {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useLocation() may be used only in the context of a <Router> component.`\n  );\n\n  return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n  return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * `<NavLink>`.\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nexport function useMatch<\n  ParamKey extends ParamParseKey<Path>,\n  Path extends string\n>(pattern: PathPattern<Path> | Path): PathMatch<ParamKey> | null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useMatch() may be used only in the context of a <Router> component.`\n  );\n\n  let { pathname } = useLocation();\n  return React.useMemo(\n    () => matchPath<ParamKey, Path>(pattern, pathname),\n    [pathname, pattern]\n  );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n  (to: To, options?: NavigateOptions): void;\n  (delta: number): void;\n}\n\nconst navigateEffectWarning =\n  `You should call navigate() in a React.useEffect(), not when ` +\n  `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n  cb: Parameters<typeof React.useLayoutEffect>[0]\n) {\n  let isStatic = React.useContext(NavigationContext).static;\n  if (!isStatic) {\n    // We should be able to get rid of this once react 18.3 is released\n    // See: https://github.com/facebook/react/pull/26395\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useLayoutEffect(cb);\n  }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by `<Link>`s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n  let { isDataRoute } = React.useContext(RouteContext);\n  // Conditional usage is OK here because the usage of a data router is static\n  // eslint-disable-next-line react-hooks/rules-of-hooks\n  return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useNavigate() may be used only in the context of a <Router> component.`\n  );\n\n  let dataRouterContext = React.useContext(DataRouterContext);\n  let { basename, future, navigator } = React.useContext(NavigationContext);\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n\n  let routePathnamesJson = JSON.stringify(\n    getResolveToMatches(matches, future.v7_relativeSplatPath)\n  );\n\n  let activeRef = React.useRef(false);\n  useIsomorphicLayoutEffect(() => {\n    activeRef.current = true;\n  });\n\n  let navigate: NavigateFunction = React.useCallback(\n    (to: To | number, options: NavigateOptions = {}) => {\n      warning(activeRef.current, navigateEffectWarning);\n\n      // Short circuit here since if this happens on first render the navigate\n      // is useless because we haven't wired up our history listener yet\n      if (!activeRef.current) return;\n\n      if (typeof to === \"number\") {\n        navigator.go(to);\n        return;\n      }\n\n      let path = resolveTo(\n        to,\n        JSON.parse(routePathnamesJson),\n        locationPathname,\n        options.relative === \"path\"\n      );\n\n      // If we're operating within a basename, prepend it to the pathname prior\n      // to handing off to history (but only if we're not in a data router,\n      // otherwise it'll prepend the basename inside of the router).\n      // If this is a root navigation, then we navigate to the raw basename\n      // which allows the basename to have full control over the presence of a\n      // trailing slash on root links\n      if (dataRouterContext == null && basename !== \"/\") {\n        path.pathname =\n          path.pathname === \"/\"\n            ? basename\n            : joinPaths([basename, path.pathname]);\n      }\n\n      (!!options.replace ? navigator.replace : navigator.push)(\n        path,\n        options.state,\n        options\n      );\n    },\n    [\n      basename,\n      navigator,\n      routePathnamesJson,\n      locationPathname,\n      dataRouterContext,\n    ]\n  );\n\n  return navigate;\n}\n\nconst OutletContext = React.createContext<unknown>(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nexport function useOutletContext<Context = unknown>(): Context {\n  return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `<Outlet>` to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n  let outlet = React.useContext(RouteContext).outlet;\n  if (outlet) {\n    return (\n      <OutletContext.Provider value={context}>{outlet}</OutletContext.Provider>\n    );\n  }\n  return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nexport function useParams<\n  ParamsOrKey extends string | Record<string, string | undefined> = string\n>(): Readonly<\n  [ParamsOrKey] extends [string] ? Params<ParamsOrKey> : Partial<ParamsOrKey>\n> {\n  let { matches } = React.useContext(RouteContext);\n  let routeMatch = matches[matches.length - 1];\n  return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n  to: To,\n  { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n  let { future } = React.useContext(NavigationContext);\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n  let routePathnamesJson = JSON.stringify(\n    getResolveToMatches(matches, future.v7_relativeSplatPath)\n  );\n\n  return React.useMemo(\n    () =>\n      resolveTo(\n        to,\n        JSON.parse(routePathnamesJson),\n        locationPathname,\n        relative === \"path\"\n      ),\n    [to, routePathnamesJson, locationPathname, relative]\n  );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `<Outlet>` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nexport function useRoutes(\n  routes: RouteObject[],\n  locationArg?: Partial<Location> | string\n): React.ReactElement | null {\n  return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n  routes: RouteObject[],\n  locationArg?: Partial<Location> | string,\n  dataRouterState?: RemixRouter[\"state\"],\n  future?: RemixRouter[\"future\"]\n): React.ReactElement | null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useRoutes() may be used only in the context of a <Router> component.`\n  );\n\n  let { navigator } = React.useContext(NavigationContext);\n  let { matches: parentMatches } = React.useContext(RouteContext);\n  let routeMatch = parentMatches[parentMatches.length - 1];\n  let parentParams = routeMatch ? routeMatch.params : {};\n  let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n  let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n  let parentRoute = routeMatch && routeMatch.route;\n\n  if (__DEV__) {\n    // You won't get a warning about 2 different <Routes> under a <Route>\n    // without a trailing *, but this is a best-effort warning anyway since we\n    // cannot even give the warning unless they land at the parent route.\n    //\n    // Example:\n    //\n    // <Routes>\n    //   {/* This route path MUST end with /* because otherwise\n    //       it will never match /blog/post/123 */}\n    //   <Route path=\"blog\" element={<Blog />} />\n    //   <Route path=\"blog/feed\" element={<BlogFeed />} />\n    // </Routes>\n    //\n    // function Blog() {\n    //   return (\n    //     <Routes>\n    //       <Route path=\"post/:id\" element={<Post />} />\n    //     </Routes>\n    //   );\n    // }\n    let parentPath = (parentRoute && parentRoute.path) || \"\";\n    warningOnce(\n      parentPathname,\n      !parentRoute || parentPath.endsWith(\"*\"),\n      `You rendered descendant <Routes> (or called \\`useRoutes()\\`) at ` +\n        `\"${parentPathname}\" (under <Route path=\"${parentPath}\">) but the ` +\n        `parent route path has no trailing \"*\". This means if you navigate ` +\n        `deeper, the parent won't match anymore and therefore the child ` +\n        `routes will never render.\\n\\n` +\n        `Please change the parent <Route path=\"${parentPath}\"> to <Route ` +\n        `path=\"${parentPath === \"/\" ? \"*\" : `${parentPath}/*`}\">.`\n    );\n  }\n\n  let locationFromContext = useLocation();\n\n  let location;\n  if (locationArg) {\n    let parsedLocationArg =\n      typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n    invariant(\n      parentPathnameBase === \"/\" ||\n        parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n      `When overriding the location using \\`<Routes location>\\` or \\`useRoutes(routes, location)\\`, ` +\n        `the location pathname must begin with the portion of the URL pathname that was ` +\n        `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n        `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n    );\n\n    location = parsedLocationArg;\n  } else {\n    location = locationFromContext;\n  }\n\n  let pathname = location.pathname || \"/\";\n\n  let remainingPathname = pathname;\n  if (parentPathnameBase !== \"/\") {\n    // Determine the remaining pathname by removing the # of URL segments the\n    // parentPathnameBase has, instead of removing based on character count.\n    // This is because we can't guarantee that incoming/outgoing encodings/\n    // decodings will match exactly.\n    // We decode paths before matching on a per-segment basis with\n    // decodeURIComponent(), but we re-encode pathnames via `new URL()` so they\n    // match what `window.location.pathname` would reflect.  Those don't 100%\n    // align when it comes to encoded URI characters such as % and &.\n    //\n    // So we may end up with:\n    //   pathname:           \"/descendant/a%25b/match\"\n    //   parentPathnameBase: \"/descendant/a%b\"\n    //\n    // And the direct substring removal approach won't work :/\n    let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n    let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n    remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n  }\n\n  let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n  if (__DEV__) {\n    warning(\n      parentRoute || matches != null,\n      `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n    );\n\n    warning(\n      matches == null ||\n        matches[matches.length - 1].route.element !== undefined ||\n        matches[matches.length - 1].route.Component !== undefined ||\n        matches[matches.length - 1].route.lazy !== undefined,\n      `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n        `does not have an element or Component. This means it will render an <Outlet /> with a ` +\n        `null value by default resulting in an \"empty\" page.`\n    );\n  }\n\n  let renderedMatches = _renderMatches(\n    matches &&\n      matches.map((match) =>\n        Object.assign({}, match, {\n          params: Object.assign({}, parentParams, match.params),\n          pathname: joinPaths([\n            parentPathnameBase,\n            // Re-encode pathnames that were decoded inside matchRoutes\n            navigator.encodeLocation\n              ? navigator.encodeLocation(match.pathname).pathname\n              : match.pathname,\n          ]),\n          pathnameBase:\n            match.pathnameBase === \"/\"\n              ? parentPathnameBase\n              : joinPaths([\n                  parentPathnameBase,\n                  // Re-encode pathnames that were decoded inside matchRoutes\n                  navigator.encodeLocation\n                    ? navigator.encodeLocation(match.pathnameBase).pathname\n                    : match.pathnameBase,\n                ]),\n        })\n      ),\n    parentMatches,\n    dataRouterState,\n    future\n  );\n\n  // When a user passes in a `locationArg`, the associated routes need to\n  // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n  // to use the scoped location instead of the global location.\n  if (locationArg && renderedMatches) {\n    return (\n      <LocationContext.Provider\n        value={{\n          location: {\n            pathname: \"/\",\n            search: \"\",\n            hash: \"\",\n            state: null,\n            key: \"default\",\n            ...location,\n          },\n          navigationType: NavigationType.Pop,\n        }}\n      >\n        {renderedMatches}\n      </LocationContext.Provider>\n    );\n  }\n\n  return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n  let error = useRouteError();\n  let message = isRouteErrorResponse(error)\n    ? `${error.status} ${error.statusText}`\n    : error instanceof Error\n    ? error.message\n    : JSON.stringify(error);\n  let stack = error instanceof Error ? error.stack : null;\n  let lightgrey = \"rgba(200,200,200, 0.5)\";\n  let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n  let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n  let devInfo = null;\n  if (__DEV__) {\n    console.error(\n      \"Error handled by React Router default ErrorBoundary:\",\n      error\n    );\n\n    devInfo = (\n      <>\n        <p>💿 Hey developer 👋</p>\n        <p>\n          You can provide a way better UX than this when your app throws errors\n          by providing your own <code style={codeStyles}>ErrorBoundary</code> or{\" \"}\n          <code style={codeStyles}>errorElement</code> prop on your route.\n        </p>\n      </>\n    );\n  }\n\n  return (\n    <>\n      <h2>Unexpected Application Error!</h2>\n      <h3 style={{ fontStyle: \"italic\" }}>{message}</h3>\n      {stack ? <pre style={preStyles}>{stack}</pre> : null}\n      {devInfo}\n    </>\n  );\n}\n\nconst defaultErrorElement = <DefaultErrorComponent />;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n  location: Location;\n  revalidation: RevalidationState;\n  error: any;\n  component: React.ReactNode;\n  routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n  location: Location;\n  revalidation: RevalidationState;\n  error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n  RenderErrorBoundaryProps,\n  RenderErrorBoundaryState\n> {\n  constructor(props: RenderErrorBoundaryProps) {\n    super(props);\n    this.state = {\n      location: props.location,\n      revalidation: props.revalidation,\n      error: props.error,\n    };\n  }\n\n  static getDerivedStateFromError(error: any) {\n    return { error: error };\n  }\n\n  static getDerivedStateFromProps(\n    props: RenderErrorBoundaryProps,\n    state: RenderErrorBoundaryState\n  ) {\n    // When we get into an error state, the user will likely click \"back\" to the\n    // previous page that didn't have an error. Because this wraps the entire\n    // application, that will have no effect--the error page continues to display.\n    // This gives us a mechanism to recover from the error when the location changes.\n    //\n    // Whether we're in an error state or not, we update the location in state\n    // so that when we are in an error state, it gets reset when a new location\n    // comes in and the user recovers from the error.\n    if (\n      state.location !== props.location ||\n      (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n    ) {\n      return {\n        error: props.error,\n        location: props.location,\n        revalidation: props.revalidation,\n      };\n    }\n\n    // If we're not changing locations, preserve the location but still surface\n    // any new errors that may come through. We retain the existing error, we do\n    // this because the error provided from the app state may be cleared without\n    // the location changing.\n    return {\n      error: props.error !== undefined ? props.error : state.error,\n      location: state.location,\n      revalidation: props.revalidation || state.revalidation,\n    };\n  }\n\n  componentDidCatch(error: any, errorInfo: any) {\n    console.error(\n      \"React Router caught the following error during render\",\n      error,\n      errorInfo\n    );\n  }\n\n  render() {\n    return this.state.error !== undefined ? (\n      <RouteContext.Provider value={this.props.routeContext}>\n        <RouteErrorContext.Provider\n          value={this.state.error}\n          children={this.props.component}\n        />\n      </RouteContext.Provider>\n    ) : (\n      this.props.children\n    );\n  }\n}\n\ninterface RenderedRouteProps {\n  routeContext: RouteContextObject;\n  match: RouteMatch<string, RouteObject>;\n  children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n  let dataRouterContext = React.useContext(DataRouterContext);\n\n  // Track how deep we got in our render pass to emulate SSR componentDidCatch\n  // in a DataStaticRouter\n  if (\n    dataRouterContext &&\n    dataRouterContext.static &&\n    dataRouterContext.staticContext &&\n    (match.route.errorElement || match.route.ErrorBoundary)\n  ) {\n    dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n  }\n\n  return (\n    <RouteContext.Provider value={routeContext}>\n      {children}\n    </RouteContext.Provider>\n  );\n}\n\nexport function _renderMatches(\n  matches: RouteMatch[] | null,\n  parentMatches: RouteMatch[] = [],\n  dataRouterState: RemixRouter[\"state\"] | null = null,\n  future: RemixRouter[\"future\"] | null = null\n): React.ReactElement | null {\n  if (matches == null) {\n    if (dataRouterState?.errors) {\n      // Don't bail if we have data router errors so we can render them in the\n      // boundary.  Use the pre-matched (or shimmed) matches\n      matches = dataRouterState.matches as DataRouteMatch[];\n    } else {\n      return null;\n    }\n  }\n\n  let renderedMatches = matches;\n\n  // If we have data errors, trim matches to the highest error boundary\n  let errors = dataRouterState?.errors;\n  if (errors != null) {\n    let errorIndex = renderedMatches.findIndex(\n      (m) => m.route.id && errors?.[m.route.id]\n    );\n    invariant(\n      errorIndex >= 0,\n      `Could not find a matching route for errors on route IDs: ${Object.keys(\n        errors\n      ).join(\",\")}`\n    );\n    renderedMatches = renderedMatches.slice(\n      0,\n      Math.min(renderedMatches.length, errorIndex + 1)\n    );\n  }\n\n  // If we're in a partial hydration mode, detect if we need to render down to\n  // a given HydrateFallback while we load the rest of the hydration data\n  let renderFallback = false;\n  let fallbackIndex = -1;\n  if (dataRouterState && future && future.v7_partialHydration) {\n    for (let i = 0; i < renderedMatches.length; i++) {\n      let match = renderedMatches[i];\n      // Track the deepest fallback up until the first route without data\n      if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n        fallbackIndex = i;\n      }\n\n      if (match.route.id) {\n        let { loaderData, errors } = dataRouterState;\n        let needsToRunLoader =\n          match.route.loader &&\n          loaderData[match.route.id] === undefined &&\n          (!errors || errors[match.route.id] === undefined);\n        if (match.route.lazy || needsToRunLoader) {\n          // We found the first route that's not ready to render (waiting on\n          // lazy, or has a loader that hasn't run yet).  Flag that we need to\n          // render a fallback and render up until the appropriate fallback\n          renderFallback = true;\n          if (fallbackIndex >= 0) {\n            renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n          } else {\n            renderedMatches = [renderedMatches[0]];\n          }\n          break;\n        }\n      }\n    }\n  }\n\n  return renderedMatches.reduceRight((outlet, match, index) => {\n    // Only data routers handle errors/fallbacks\n    let error: any;\n    let shouldRenderHydrateFallback = false;\n    let errorElement: React.ReactNode | null = null;\n    let hydrateFallbackElement: React.ReactNode | null = null;\n    if (dataRouterState) {\n      error = errors && match.route.id ? errors[match.route.id] : undefined;\n      errorElement = match.route.errorElement || defaultErrorElement;\n\n      if (renderFallback) {\n        if (fallbackIndex < 0 && index === 0) {\n          warningOnce(\n            \"route-fallback\",\n            false,\n            \"No `HydrateFallback` element provided to render during initial hydration\"\n          );\n          shouldRenderHydrateFallback = true;\n          hydrateFallbackElement = null;\n        } else if (fallbackIndex === index) {\n          shouldRenderHydrateFallback = true;\n          hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n        }\n      }\n    }\n\n    let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n    let getChildren = () => {\n      let children: React.ReactNode;\n      if (error) {\n        children = errorElement;\n      } else if (shouldRenderHydrateFallback) {\n        children = hydrateFallbackElement;\n      } else if (match.route.Component) {\n        // Note: This is a de-optimized path since React won't re-use the\n        // ReactElement since it's identity changes with each new\n        // React.createElement call.  We keep this so folks can use\n        // `<Route Component={...}>` in `<Routes>` but generally `Component`\n        // usage is only advised in `RouterProvider` when we can convert it to\n        // `element` ahead of time.\n        children = <match.route.Component />;\n      } else if (match.route.element) {\n        children = match.route.element;\n      } else {\n        children = outlet;\n      }\n      return (\n        <RenderedRoute\n          match={match}\n          routeContext={{\n            outlet,\n            matches,\n            isDataRoute: dataRouterState != null,\n          }}\n          children={children}\n        />\n      );\n    };\n    // Only wrap in an error boundary within data router usages when we have an\n    // ErrorBoundary/errorElement on this route.  Otherwise let it bubble up to\n    // an ancestor ErrorBoundary/errorElement\n    return dataRouterState &&\n      (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n      <RenderErrorBoundary\n        location={dataRouterState.location}\n        revalidation={dataRouterState.revalidation}\n        component={errorElement}\n        error={error}\n        children={getChildren()}\n        routeContext={{ outlet: null, matches, isDataRoute: true }}\n      />\n    ) : (\n      getChildren()\n    );\n  }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n  UseBlocker = \"useBlocker\",\n  UseRevalidator = \"useRevalidator\",\n  UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n  UseBlocker = \"useBlocker\",\n  UseLoaderData = \"useLoaderData\",\n  UseActionData = \"useActionData\",\n  UseRouteError = \"useRouteError\",\n  UseNavigation = \"useNavigation\",\n  UseRouteLoaderData = \"useRouteLoaderData\",\n  UseMatches = \"useMatches\",\n  UseRevalidator = \"useRevalidator\",\n  UseNavigateStable = \"useNavigate\",\n  UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n  hookName: DataRouterHook | DataRouterStateHook\n) {\n  return `${hookName} must be used within a data router.  See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n  let ctx = React.useContext(DataRouterContext);\n  invariant(ctx, getDataRouterConsoleError(hookName));\n  return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n  let state = React.useContext(DataRouterStateContext);\n  invariant(state, getDataRouterConsoleError(hookName));\n  return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n  let route = React.useContext(RouteContext);\n  invariant(route, getDataRouterConsoleError(hookName));\n  return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n  let route = useRouteContext(hookName);\n  let thisRoute = route.matches[route.matches.length - 1];\n  invariant(\n    thisRoute.route.id,\n    `${hookName} can only be used on routes that contain a unique \"id\"`\n  );\n  return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n  return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n  let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n  return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n  let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n  let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n  return React.useMemo(\n    () => ({\n      revalidate: dataRouterContext.router.revalidate,\n      state: state.revalidation,\n    }),\n    [dataRouterContext.router.revalidate, state.revalidation]\n  );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches(): UIMatch[] {\n  let { matches, loaderData } = useDataRouterState(\n    DataRouterStateHook.UseMatches\n  );\n  return React.useMemo(\n    () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n    [matches, loaderData]\n  );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n  if (state.errors && state.errors[routeId] != null) {\n    console.error(\n      `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n    );\n    return undefined;\n  }\n  return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n  return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseActionData);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n  return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error.  This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n  let error = React.useContext(RouteErrorContext);\n  let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n  // If this was a render error, we put it in a RouteError context inside\n  // of RenderErrorBoundary\n  if (error !== undefined) {\n    return error;\n  }\n\n  // Otherwise look for errors from our data router state\n  return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `<Await />` value\n */\nexport function useAsyncValue(): unknown {\n  let value = React.useContext(AwaitContext);\n  return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `<Await />` value\n */\nexport function useAsyncError(): unknown {\n  let value = React.useContext(AwaitContext);\n  return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation.  Mostly used to avoid\n * using half-filled form data.  This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n  let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n  let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n  let [blockerKey, setBlockerKey] = React.useState(\"\");\n  let blockerFunction = React.useCallback<BlockerFunction>(\n    (arg) => {\n      if (typeof shouldBlock !== \"function\") {\n        return !!shouldBlock;\n      }\n      if (basename === \"/\") {\n        return shouldBlock(arg);\n      }\n\n      // If they provided us a function and we've got an active basename, strip\n      // it from the locations we expose to the user to match the behavior of\n      // useLocation\n      let { currentLocation, nextLocation, historyAction } = arg;\n      return shouldBlock({\n        currentLocation: {\n          ...currentLocation,\n          pathname:\n            stripBasename(currentLocation.pathname, basename) ||\n            currentLocation.pathname,\n        },\n        nextLocation: {\n          ...nextLocation,\n          pathname:\n            stripBasename(nextLocation.pathname, basename) ||\n            nextLocation.pathname,\n        },\n        historyAction,\n      });\n    },\n    [basename, shouldBlock]\n  );\n\n  // This effect is in charge of blocker key assignment and deletion (which is\n  // tightly coupled to the key)\n  React.useEffect(() => {\n    let key = String(++blockerId);\n    setBlockerKey(key);\n    return () => router.deleteBlocker(key);\n  }, [router]);\n\n  // This effect handles assigning the blockerFunction.  This is to handle\n  // unstable blocker function identities, and happens only after the prior\n  // effect so we don't get an orphaned blockerFunction in the router with a\n  // key of \"\".  Until then we just have the IDLE_BLOCKER.\n  React.useEffect(() => {\n    if (blockerKey !== \"\") {\n      router.getBlocker(blockerKey, blockerFunction);\n    }\n  }, [router, blockerKey, blockerFunction]);\n\n  // Prefer the blocker from `state` not `router.state` since DataRouterContext\n  // is memoized so this ensures we update on blocker state updates\n  return blockerKey && state.blockers.has(blockerKey)\n    ? state.blockers.get(blockerKey)!\n    : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n  let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n  let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n  let activeRef = React.useRef(false);\n  useIsomorphicLayoutEffect(() => {\n    activeRef.current = true;\n  });\n\n  let navigate: NavigateFunction = React.useCallback(\n    (to: To | number, options: NavigateOptions = {}) => {\n      warning(activeRef.current, navigateEffectWarning);\n\n      // Short circuit here since if this happens on first render the navigate\n      // is useless because we haven't wired up our router subscriber yet\n      if (!activeRef.current) return;\n\n      if (typeof to === \"number\") {\n        router.navigate(to);\n      } else {\n        router.navigate(to, { fromRouteId: id, ...options });\n      }\n    },\n    [router, id]\n  );\n\n  return navigate;\n}\n\nconst alreadyWarned: Record<string, boolean> = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n  if (!cond && !alreadyWarned[key]) {\n    alreadyWarned[key] = true;\n    warning(false, message);\n  }\n}\n","import type {\n  InitialEntry,\n  LazyRouteFunction,\n  Location,\n  MemoryHistory,\n  RelativeRoutingType,\n  Router as RemixRouter,\n  RouterState,\n  RouterSubscriber,\n  To,\n  TrackedPromise,\n} from \"@remix-run/router\";\nimport {\n  AbortedDeferredError,\n  Action as NavigationType,\n  createMemoryHistory,\n  UNSAFE_getResolveToMatches as getResolveToMatches,\n  UNSAFE_invariant as invariant,\n  parsePath,\n  resolveTo,\n  stripBasename,\n  UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport * as React from \"react\";\n\nimport type {\n  DataRouteObject,\n  IndexRouteObject,\n  Navigator,\n  NonIndexRouteObject,\n  RouteMatch,\n  RouteObject,\n} from \"./context\";\nimport {\n  AwaitContext,\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n} from \"./context\";\nimport {\n  _renderMatches,\n  useAsyncValue,\n  useInRouterContext,\n  useLocation,\n  useNavigate,\n  useOutlet,\n  useRoutes,\n  useRoutesImpl,\n} from \"./hooks\";\n\nexport interface FutureConfig {\n  v7_relativeSplatPath: boolean;\n  v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n  fallbackElement?: React.ReactNode;\n  router: RemixRouter;\n  // Only accept future flags relevant to rendering behavior\n  // routing flags should be accessed via router.future\n  future?: Partial<Pick<FutureConfig, \"v7_startTransition\">>;\n}\n\n/**\n  Webpack + React 17 fails to compile on any of the following because webpack\n  complains that `startTransition` doesn't exist in `React`:\n  * import { startTransition } from \"react\"\n  * import * as React from from \"react\";\n    \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n  * import * as React from from \"react\";\n    \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n  Moving it to a constant such as the following solves the Webpack/React 17 issue:\n  * import * as React from from \"react\";\n    const START_TRANSITION = \"startTransition\";\n    START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n  However, that introduces webpack/terser minification issues in production builds\n  in React 18 where minification/obfuscation ends up removing the call of\n  React.startTransition entirely from the first half of the ternary.  Grabbing\n  this exported reference once up front resolves that issue.\n\n  See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n  fallbackElement,\n  router,\n  future,\n}: RouterProviderProps): React.ReactElement {\n  let [state, setStateImpl] = React.useState(router.state);\n  let { v7_startTransition } = future || {};\n\n  let setState = React.useCallback<RouterSubscriber>(\n    (newState: RouterState) => {\n      if (v7_startTransition && startTransitionImpl) {\n        startTransitionImpl(() => setStateImpl(newState));\n      } else {\n        setStateImpl(newState);\n      }\n    },\n    [setStateImpl, v7_startTransition]\n  );\n\n  // Need to use a layout effect here so we are subscribed early enough to\n  // pick up on any render-driven redirects/navigations (useEffect/<Navigate>)\n  React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n  React.useEffect(() => {\n    warning(\n      fallbackElement == null || !router.future.v7_partialHydration,\n      \"`<RouterProvider fallbackElement>` is deprecated when using \" +\n        \"`v7_partialHydration`, use a `HydrateFallback` component instead\"\n    );\n    // Only log this once on initial mount\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  let navigator = React.useMemo((): Navigator => {\n    return {\n      createHref: router.createHref,\n      encodeLocation: router.encodeLocation,\n      go: (n) => router.navigate(n),\n      push: (to, state, opts) =>\n        router.navigate(to, {\n          state,\n          preventScrollReset: opts?.preventScrollReset,\n        }),\n      replace: (to, state, opts) =>\n        router.navigate(to, {\n          replace: true,\n          state,\n          preventScrollReset: opts?.preventScrollReset,\n        }),\n    };\n  }, [router]);\n\n  let basename = router.basename || \"/\";\n\n  let dataRouterContext = React.useMemo(\n    () => ({\n      router,\n      navigator,\n      static: false,\n      basename,\n    }),\n    [router, navigator, basename]\n  );\n\n  // The fragment and {null} here are important!  We need them to keep React 18's\n  // useId happy when we are server-rendering since we may have a <script> here\n  // containing the hydrated server-side staticContext (from StaticRouterProvider).\n  // useId relies on the component tree structure to generate deterministic id's\n  // so we need to ensure it remains the same on the client even though\n  // we don't need the <script> tag\n  return (\n    <>\n      <DataRouterContext.Provider value={dataRouterContext}>\n        <DataRouterStateContext.Provider value={state}>\n          <Router\n            basename={basename}\n            location={state.location}\n            navigationType={state.historyAction}\n            navigator={navigator}\n            future={{\n              v7_relativeSplatPath: router.future.v7_relativeSplatPath,\n            }}\n          >\n            {state.initialized || router.future.v7_partialHydration ? (\n              <DataRoutes\n                routes={router.routes}\n                future={router.future}\n                state={state}\n              />\n            ) : (\n              fallbackElement\n            )}\n          </Router>\n        </DataRouterStateContext.Provider>\n      </DataRouterContext.Provider>\n      {null}\n    </>\n  );\n}\n\nfunction DataRoutes({\n  routes,\n  future,\n  state,\n}: {\n  routes: DataRouteObject[];\n  future: RemixRouter[\"future\"];\n  state: RouterState;\n}): React.ReactElement | null {\n  return useRoutesImpl(routes, undefined, state, future);\n}\n\nexport interface MemoryRouterProps {\n  basename?: string;\n  children?: React.ReactNode;\n  initialEntries?: InitialEntry[];\n  initialIndex?: number;\n  future?: Partial<FutureConfig>;\n}\n\n/**\n * A `<Router>` that stores all entries in memory.\n *\n * @see https://reactrouter.com/router-components/memory-router\n */\nexport function MemoryRouter({\n  basename,\n  children,\n  initialEntries,\n  initialIndex,\n  future,\n}: MemoryRouterProps): React.ReactElement {\n  let historyRef = React.useRef<MemoryHistory>();\n  if (historyRef.current == null) {\n    historyRef.current = createMemoryHistory({\n      initialEntries,\n      initialIndex,\n      v5Compat: true,\n    });\n  }\n\n  let history = historyRef.current;\n  let [state, setStateImpl] = React.useState({\n    action: history.action,\n    location: history.location,\n  });\n  let { v7_startTransition } = future || {};\n  let setState = React.useCallback(\n    (newState: { action: NavigationType; location: Location }) => {\n      v7_startTransition && startTransitionImpl\n        ? startTransitionImpl(() => setStateImpl(newState))\n        : setStateImpl(newState);\n    },\n    [setStateImpl, v7_startTransition]\n  );\n\n  React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n\n  return (\n    <Router\n      basename={basename}\n      children={children}\n      location={state.location}\n      navigationType={state.action}\n      navigator={history}\n      future={future}\n    />\n  );\n}\n\nexport interface NavigateProps {\n  to: To;\n  replace?: boolean;\n  state?: any;\n  relative?: RelativeRoutingType;\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/components/navigate\n */\nexport function Navigate({\n  to,\n  replace,\n  state,\n  relative,\n}: NavigateProps): null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of\n    // the router loaded. We can help them understand how to avoid that.\n    `<Navigate> may be used only in the context of a <Router> component.`\n  );\n\n  let { future, static: isStatic } = React.useContext(NavigationContext);\n\n  warning(\n    !isStatic,\n    `<Navigate> must not be used on the initial render in a <StaticRouter>. ` +\n      `This is a no-op, but you should modify your code so the <Navigate> is ` +\n      `only ever rendered in response to some user interaction or state change.`\n  );\n\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n  let navigate = useNavigate();\n\n  // Resolve the path outside of the effect so that when effects run twice in\n  // StrictMode they navigate to the same place\n  let path = resolveTo(\n    to,\n    getResolveToMatches(matches, future.v7_relativeSplatPath),\n    locationPathname,\n    relative === \"path\"\n  );\n  let jsonPath = JSON.stringify(path);\n\n  React.useEffect(\n    () => navigate(JSON.parse(jsonPath), { replace, state, relative }),\n    [navigate, jsonPath, relative, replace, state]\n  );\n\n  return null;\n}\n\nexport interface OutletProps {\n  context?: unknown;\n}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/components/outlet\n */\nexport function Outlet(props: OutletProps): React.ReactElement | null {\n  return useOutlet(props.context);\n}\n\nexport interface PathRouteProps {\n  caseSensitive?: NonIndexRouteObject[\"caseSensitive\"];\n  path?: NonIndexRouteObject[\"path\"];\n  id?: NonIndexRouteObject[\"id\"];\n  lazy?: LazyRouteFunction<NonIndexRouteObject>;\n  loader?: NonIndexRouteObject[\"loader\"];\n  action?: NonIndexRouteObject[\"action\"];\n  hasErrorBoundary?: NonIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: NonIndexRouteObject[\"shouldRevalidate\"];\n  handle?: NonIndexRouteObject[\"handle\"];\n  index?: false;\n  children?: React.ReactNode;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n}\n\nexport interface LayoutRouteProps extends PathRouteProps {}\n\nexport interface IndexRouteProps {\n  caseSensitive?: IndexRouteObject[\"caseSensitive\"];\n  path?: IndexRouteObject[\"path\"];\n  id?: IndexRouteObject[\"id\"];\n  lazy?: LazyRouteFunction<IndexRouteObject>;\n  loader?: IndexRouteObject[\"loader\"];\n  action?: IndexRouteObject[\"action\"];\n  hasErrorBoundary?: IndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: IndexRouteObject[\"shouldRevalidate\"];\n  handle?: IndexRouteObject[\"handle\"];\n  index: true;\n  children?: undefined;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n}\n\nexport type RouteProps = PathRouteProps | LayoutRouteProps | IndexRouteProps;\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/components/route\n */\nexport function Route(_props: RouteProps): React.ReactElement | null {\n  invariant(\n    false,\n    `A <Route> is only ever to be used as the child of <Routes> element, ` +\n      `never rendered directly. Please wrap your <Route> in a <Routes>.`\n  );\n}\n\nexport interface RouterProps {\n  basename?: string;\n  children?: React.ReactNode;\n  location: Partial<Location> | string;\n  navigationType?: NavigationType;\n  navigator: Navigator;\n  static?: boolean;\n  future?: Partial<Pick<FutureConfig, \"v7_relativeSplatPath\">>;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a `<Router>` directly. Instead, you'll render a\n * router that is more specific to your environment such as a `<BrowserRouter>`\n * in web browsers or a `<StaticRouter>` for server rendering.\n *\n * @see https://reactrouter.com/router-components/router\n */\nexport function Router({\n  basename: basenameProp = \"/\",\n  children = null,\n  location: locationProp,\n  navigationType = NavigationType.Pop,\n  navigator,\n  static: staticProp = false,\n  future,\n}: RouterProps): React.ReactElement | null {\n  invariant(\n    !useInRouterContext(),\n    `You cannot render a <Router> inside another <Router>.` +\n      ` You should never have more than one in your app.`\n  );\n\n  // Preserve trailing slashes on basename, so we can let the user control\n  // the enforcement of trailing slashes throughout the app\n  let basename = basenameProp.replace(/^\\/*/, \"/\");\n  let navigationContext = React.useMemo(\n    () => ({\n      basename,\n      navigator,\n      static: staticProp,\n      future: {\n        v7_relativeSplatPath: false,\n        ...future,\n      },\n    }),\n    [basename, future, navigator, staticProp]\n  );\n\n  if (typeof locationProp === \"string\") {\n    locationProp = parsePath(locationProp);\n  }\n\n  let {\n    pathname = \"/\",\n    search = \"\",\n    hash = \"\",\n    state = null,\n    key = \"default\",\n  } = locationProp;\n\n  let locationContext = React.useMemo(() => {\n    let trailingPathname = stripBasename(pathname, basename);\n\n    if (trailingPathname == null) {\n      return null;\n    }\n\n    return {\n      location: {\n        pathname: trailingPathname,\n        search,\n        hash,\n        state,\n        key,\n      },\n      navigationType,\n    };\n  }, [basename, pathname, search, hash, state, key, navigationType]);\n\n  warning(\n    locationContext != null,\n    `<Router basename=\"${basename}\"> is not able to match the URL ` +\n      `\"${pathname}${search}${hash}\" because it does not start with the ` +\n      `basename, so the <Router> won't render anything.`\n  );\n\n  if (locationContext == null) {\n    return null;\n  }\n\n  return (\n    <NavigationContext.Provider value={navigationContext}>\n      <LocationContext.Provider children={children} value={locationContext} />\n    </NavigationContext.Provider>\n  );\n}\n\nexport interface RoutesProps {\n  children?: React.ReactNode;\n  location?: Partial<Location> | string;\n}\n\n/**\n * A container for a nested tree of `<Route>` elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/components/routes\n */\nexport function Routes({\n  children,\n  location,\n}: RoutesProps): React.ReactElement | null {\n  return useRoutes(createRoutesFromChildren(children), location);\n}\n\nexport interface AwaitResolveRenderFunction {\n  (data: Awaited<any>): React.ReactNode;\n}\n\nexport interface AwaitProps {\n  children: React.ReactNode | AwaitResolveRenderFunction;\n  errorElement?: React.ReactNode;\n  resolve: TrackedPromise | any;\n}\n\n/**\n * Component to use for rendering lazily loaded data from returning defer()\n * in a loader function\n */\nexport function Await({ children, errorElement, resolve }: AwaitProps) {\n  return (\n    <AwaitErrorBoundary resolve={resolve} errorElement={errorElement}>\n      <ResolveAwait>{children}</ResolveAwait>\n    </AwaitErrorBoundary>\n  );\n}\n\ntype AwaitErrorBoundaryProps = React.PropsWithChildren<{\n  errorElement?: React.ReactNode;\n  resolve: TrackedPromise | any;\n}>;\n\ntype AwaitErrorBoundaryState = {\n  error: any;\n};\n\nenum AwaitRenderStatus {\n  pending,\n  success,\n  error,\n}\n\nconst neverSettledPromise = new Promise(() => {});\n\nclass AwaitErrorBoundary extends React.Component<\n  AwaitErrorBoundaryProps,\n  AwaitErrorBoundaryState\n> {\n  constructor(props: AwaitErrorBoundaryProps) {\n    super(props);\n    this.state = { error: null };\n  }\n\n  static getDerivedStateFromError(error: any) {\n    return { error };\n  }\n\n  componentDidCatch(error: any, errorInfo: any) {\n    console.error(\n      \"<Await> caught the following error during render\",\n      error,\n      errorInfo\n    );\n  }\n\n  render() {\n    let { children, errorElement, resolve } = this.props;\n\n    let promise: TrackedPromise | null = null;\n    let status: AwaitRenderStatus = AwaitRenderStatus.pending;\n\n    if (!(resolve instanceof Promise)) {\n      // Didn't get a promise - provide as a resolved promise\n      status = AwaitRenderStatus.success;\n      promise = Promise.resolve();\n      Object.defineProperty(promise, \"_tracked\", { get: () => true });\n      Object.defineProperty(promise, \"_data\", { get: () => resolve });\n    } else if (this.state.error) {\n      // Caught a render error, provide it as a rejected promise\n      status = AwaitRenderStatus.error;\n      let renderError = this.state.error;\n      promise = Promise.reject().catch(() => {}); // Avoid unhandled rejection warnings\n      Object.defineProperty(promise, \"_tracked\", { get: () => true });\n      Object.defineProperty(promise, \"_error\", { get: () => renderError });\n    } else if ((resolve as TrackedPromise)._tracked) {\n      // Already tracked promise - check contents\n      promise = resolve;\n      status =\n        promise._error !== undefined\n          ? AwaitRenderStatus.error\n          : promise._data !== undefined\n          ? AwaitRenderStatus.success\n          : AwaitRenderStatus.pending;\n    } else {\n      // Raw (untracked) promise - track it\n      status = AwaitRenderStatus.pending;\n      Object.defineProperty(resolve, \"_tracked\", { get: () => true });\n      promise = resolve.then(\n        (data: any) =>\n          Object.defineProperty(resolve, \"_data\", { get: () => data }),\n        (error: any) =>\n          Object.defineProperty(resolve, \"_error\", { get: () => error })\n      );\n    }\n\n    if (\n      status === AwaitRenderStatus.error &&\n      promise._error instanceof AbortedDeferredError\n    ) {\n      // Freeze the UI by throwing a never resolved promise\n      throw neverSettledPromise;\n    }\n\n    if (status === AwaitRenderStatus.error && !errorElement) {\n      // No errorElement, throw to the nearest route-level error boundary\n      throw promise._error;\n    }\n\n    if (status === AwaitRenderStatus.error) {\n      // Render via our errorElement\n      return <AwaitContext.Provider value={promise} children={errorElement} />;\n    }\n\n    if (status === AwaitRenderStatus.success) {\n      // Render children with resolved value\n      return <AwaitContext.Provider value={promise} children={children} />;\n    }\n\n    // Throw to the suspense boundary\n    throw promise;\n  }\n}\n\n/**\n * @private\n * Indirection to leverage useAsyncValue for a render-prop API on `<Await>`\n */\nfunction ResolveAwait({\n  children,\n}: {\n  children: React.ReactNode | AwaitResolveRenderFunction;\n}) {\n  let data = useAsyncValue();\n  let toRender = typeof children === \"function\" ? children(data) : children;\n  return <>{toRender}</>;\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `<Route>` element or an array of them. Used internally by\n * `<Routes>` to create a route config from its children.\n *\n * @see https://reactrouter.com/utils/create-routes-from-children\n */\nexport function createRoutesFromChildren(\n  children: React.ReactNode,\n  parentPath: number[] = []\n): RouteObject[] {\n  let routes: RouteObject[] = [];\n\n  React.Children.forEach(children, (element, index) => {\n    if (!React.isValidElement(element)) {\n      // Ignore non-elements. This allows people to more easily inline\n      // conditionals in their route config.\n      return;\n    }\n\n    let treePath = [...parentPath, index];\n\n    if (element.type === React.Fragment) {\n      // Transparently support React.Fragment and its children.\n      routes.push.apply(\n        routes,\n        createRoutesFromChildren(element.props.children, treePath)\n      );\n      return;\n    }\n\n    invariant(\n      element.type === Route,\n      `[${\n        typeof element.type === \"string\" ? element.type : element.type.name\n      }] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`\n    );\n\n    invariant(\n      !element.props.index || !element.props.children,\n      \"An index route cannot have child routes.\"\n    );\n\n    let route: RouteObject = {\n      id: element.props.id || treePath.join(\"-\"),\n      caseSensitive: element.props.caseSensitive,\n      element: element.props.element,\n      Component: element.props.Component,\n      index: element.props.index,\n      path: element.props.path,\n      loader: element.props.loader,\n      action: element.props.action,\n      errorElement: element.props.errorElement,\n      ErrorBoundary: element.props.ErrorBoundary,\n      hasErrorBoundary:\n        element.props.ErrorBoundary != null ||\n        element.props.errorElement != null,\n      shouldRevalidate: element.props.shouldRevalidate,\n      handle: element.props.handle,\n      lazy: element.props.lazy,\n    };\n\n    if (element.props.children) {\n      route.children = createRoutesFromChildren(\n        element.props.children,\n        treePath\n      );\n    }\n\n    routes.push(route);\n  });\n\n  return routes;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nexport function renderMatches(\n  matches: RouteMatch[] | null\n): React.ReactElement | null {\n  return _renderMatches(matches);\n}\n","import type {\n  FormEncType,\n  HTMLFormMethod,\n  RelativeRoutingType,\n} from \"@remix-run/router\";\nimport { stripBasename, UNSAFE_warning as warning } from \"@remix-run/router\";\n\nexport const defaultMethod: HTMLFormMethod = \"get\";\nconst defaultEncType: FormEncType = \"application/x-www-form-urlencoded\";\n\nexport function isHtmlElement(object: any): object is HTMLElement {\n  return object != null && typeof object.tagName === \"string\";\n}\n\nexport function isButtonElement(object: any): object is HTMLButtonElement {\n  return isHtmlElement(object) && object.tagName.toLowerCase() === \"button\";\n}\n\nexport function isFormElement(object: any): object is HTMLFormElement {\n  return isHtmlElement(object) && object.tagName.toLowerCase() === \"form\";\n}\n\nexport function isInputElement(object: any): object is HTMLInputElement {\n  return isHtmlElement(object) && object.tagName.toLowerCase() === \"input\";\n}\n\ntype LimitedMouseEvent = Pick<\n  MouseEvent,\n  \"button\" | \"metaKey\" | \"altKey\" | \"ctrlKey\" | \"shiftKey\"\n>;\n\nfunction isModifiedEvent(event: LimitedMouseEvent) {\n  return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport function shouldProcessLinkClick(\n  event: LimitedMouseEvent,\n  target?: string\n) {\n  return (\n    event.button === 0 && // Ignore everything but left clicks\n    (!target || target === \"_self\") && // Let browser handle \"target=_blank\" etc.\n    !isModifiedEvent(event) // Ignore clicks with modifier keys\n  );\n}\n\nexport type ParamKeyValuePair = [string, string];\n\nexport type URLSearchParamsInit =\n  | string\n  | ParamKeyValuePair[]\n  | Record<string, string | string[]>\n  | URLSearchParams;\n\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n *   let searchParams = new URLSearchParams([\n *     ['sort', 'name'],\n *     ['sort', 'price']\n *   ]);\n *\n * you can do:\n *\n *   let searchParams = createSearchParams({\n *     sort: ['name', 'price']\n *   });\n */\nexport function createSearchParams(\n  init: URLSearchParamsInit = \"\"\n): URLSearchParams {\n  return new URLSearchParams(\n    typeof init === \"string\" ||\n    Array.isArray(init) ||\n    init instanceof URLSearchParams\n      ? init\n      : Object.keys(init).reduce((memo, key) => {\n          let value = init[key];\n          return memo.concat(\n            Array.isArray(value) ? value.map((v) => [key, v]) : [[key, value]]\n          );\n        }, [] as ParamKeyValuePair[])\n  );\n}\n\nexport function getSearchParamsForLocation(\n  locationSearch: string,\n  defaultSearchParams: URLSearchParams | null\n) {\n  let searchParams = createSearchParams(locationSearch);\n\n  if (defaultSearchParams) {\n    // Use `defaultSearchParams.forEach(...)` here instead of iterating of\n    // `defaultSearchParams.keys()` to work-around a bug in Firefox related to\n    // web extensions. Relevant Bugzilla tickets:\n    // https://bugzilla.mozilla.org/show_bug.cgi?id=1414602\n    // https://bugzilla.mozilla.org/show_bug.cgi?id=1023984\n    defaultSearchParams.forEach((_, key) => {\n      if (!searchParams.has(key)) {\n        defaultSearchParams.getAll(key).forEach((value) => {\n          searchParams.append(key, value);\n        });\n      }\n    });\n  }\n\n  return searchParams;\n}\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n  [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\nexport type SubmitTarget =\n  | HTMLFormElement\n  | HTMLButtonElement\n  | HTMLInputElement\n  | FormData\n  | URLSearchParams\n  | JsonValue\n  | null;\n\n// One-time check for submitter support\nlet _formDataSupportsSubmitter: boolean | null = null;\n\nfunction isFormDataSubmitterSupported() {\n  if (_formDataSupportsSubmitter === null) {\n    try {\n      new FormData(\n        document.createElement(\"form\"),\n        // @ts-expect-error if FormData supports the submitter parameter, this will throw\n        0\n      );\n      _formDataSupportsSubmitter = false;\n    } catch (e) {\n      _formDataSupportsSubmitter = true;\n    }\n  }\n  return _formDataSupportsSubmitter;\n}\n\nexport interface SubmitOptions {\n  /**\n   * The HTTP method used to submit the form. Overrides `<form method>`.\n   * Defaults to \"GET\".\n   */\n  method?: HTMLFormMethod;\n\n  /**\n   * The action URL path used to submit the form. Overrides `<form action>`.\n   * Defaults to the path of the current route.\n   */\n  action?: string;\n\n  /**\n   * The encoding used to submit the form. Overrides `<form encType>`.\n   * Defaults to \"application/x-www-form-urlencoded\".\n   */\n  encType?: FormEncType;\n\n  /**\n   * Indicate a specific fetcherKey to use when using navigate=false\n   */\n  fetcherKey?: string;\n\n  /**\n   * navigate=false will use a fetcher instead of a navigation\n   */\n  navigate?: boolean;\n\n  /**\n   * Set `true` to replace the current entry in the browser's history stack\n   * instead of creating a new one (i.e. stay on \"the same page\"). Defaults\n   * to `false`.\n   */\n  replace?: boolean;\n\n  /**\n   * State object to add to the history stack entry for this navigation\n   */\n  state?: any;\n\n  /**\n   * Determines whether the form action is relative to the route hierarchy or\n   * the pathname.  Use this if you want to opt out of navigating the route\n   * hierarchy and want to instead route based on /-delimited URL segments\n   */\n  relative?: RelativeRoutingType;\n\n  /**\n   * In browser-based environments, prevent resetting scroll after this\n   * navigation when using the <ScrollRestoration> component\n   */\n  preventScrollReset?: boolean;\n\n  /**\n   * Enable flushSync for this navigation's state updates\n   */\n  unstable_flushSync?: boolean;\n\n  /**\n   * Enable view transitions on this submission navigation\n   */\n  unstable_viewTransition?: boolean;\n}\n\nconst supportedFormEncTypes: Set<FormEncType> = new Set([\n  \"application/x-www-form-urlencoded\",\n  \"multipart/form-data\",\n  \"text/plain\",\n]);\n\nfunction getFormEncType(encType: string | null) {\n  if (encType != null && !supportedFormEncTypes.has(encType as FormEncType)) {\n    warning(\n      false,\n      `\"${encType}\" is not a valid \\`encType\\` for \\`<Form>\\`/\\`<fetcher.Form>\\` ` +\n        `and will default to \"${defaultEncType}\"`\n    );\n\n    return null;\n  }\n  return encType;\n}\n\nexport function getFormSubmissionInfo(\n  target: SubmitTarget,\n  basename: string\n): {\n  action: string | null;\n  method: string;\n  encType: string;\n  formData: FormData | undefined;\n  body: any;\n} {\n  let method: string;\n  let action: string | null;\n  let encType: string;\n  let formData: FormData | undefined;\n  let body: any;\n\n  if (isFormElement(target)) {\n    // When grabbing the action from the element, it will have had the basename\n    // prefixed to ensure non-JS scenarios work, so strip it since we'll\n    // re-prefix in the router\n    let attr = target.getAttribute(\"action\");\n    action = attr ? stripBasename(attr, basename) : null;\n    method = target.getAttribute(\"method\") || defaultMethod;\n    encType = getFormEncType(target.getAttribute(\"enctype\")) || defaultEncType;\n\n    formData = new FormData(target);\n  } else if (\n    isButtonElement(target) ||\n    (isInputElement(target) &&\n      (target.type === \"submit\" || target.type === \"image\"))\n  ) {\n    let form = target.form;\n\n    if (form == null) {\n      throw new Error(\n        `Cannot submit a <button> or <input type=\"submit\"> without a <form>`\n      );\n    }\n\n    // <button>/<input type=\"submit\"> may override attributes of <form>\n\n    // When grabbing the action from the element, it will have had the basename\n    // prefixed to ensure non-JS scenarios work, so strip it since we'll\n    // re-prefix in the router\n    let attr = target.getAttribute(\"formaction\") || form.getAttribute(\"action\");\n    action = attr ? stripBasename(attr, basename) : null;\n\n    method =\n      target.getAttribute(\"formmethod\") ||\n      form.getAttribute(\"method\") ||\n      defaultMethod;\n    encType =\n      getFormEncType(target.getAttribute(\"formenctype\")) ||\n      getFormEncType(form.getAttribute(\"enctype\")) ||\n      defaultEncType;\n\n    // Build a FormData object populated from a form and submitter\n    formData = new FormData(form, target);\n\n    // If this browser doesn't support the `FormData(el, submitter)` format,\n    // then tack on the submitter value at the end.  This is a lightweight\n    // solution that is not 100% spec compliant.  For complete support in older\n    // browsers, consider using the `formdata-submitter-polyfill` package\n    if (!isFormDataSubmitterSupported()) {\n      let { name, type, value } = target;\n      if (type === \"image\") {\n        let prefix = name ? `${name}.` : \"\";\n        formData.append(`${prefix}x`, \"0\");\n        formData.append(`${prefix}y`, \"0\");\n      } else if (name) {\n        formData.append(name, value);\n      }\n    }\n  } else if (isHtmlElement(target)) {\n    throw new Error(\n      `Cannot submit element that is not <form>, <button>, or ` +\n        `<input type=\"submit|image\">`\n    );\n  } else {\n    method = defaultMethod;\n    action = null;\n    encType = defaultEncType;\n    body = target;\n  }\n\n  // Send body for <Form encType=\"text/plain\" so we encode it into text\n  if (formData && encType === \"text/plain\") {\n    body = formData;\n    formData = undefined;\n  }\n\n  return { action, method: method.toLowerCase(), encType, formData, body };\n}\n","/**\n * NOTE: If you refactor this to split up the modules into separate files,\n * you'll need to update the rollup config for react-router-dom-v5-compat.\n */\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport type {\n  DataRouteObject,\n  FutureConfig,\n  Location,\n  NavigateOptions,\n  NavigationType,\n  Navigator,\n  RelativeRoutingType,\n  RouteObject,\n  RouterProviderProps,\n  To,\n} from \"react-router\";\nimport {\n  Router,\n  createPath,\n  useHref,\n  useLocation,\n  useMatches,\n  useNavigate,\n  useNavigation,\n  useResolvedPath,\n  useBlocker,\n  UNSAFE_DataRouterContext as DataRouterContext,\n  UNSAFE_DataRouterStateContext as DataRouterStateContext,\n  UNSAFE_NavigationContext as NavigationContext,\n  UNSAFE_RouteContext as RouteContext,\n  UNSAFE_mapRouteProperties as mapRouteProperties,\n  UNSAFE_useRouteId as useRouteId,\n  UNSAFE_useRoutesImpl as useRoutesImpl,\n} from \"react-router\";\nimport type {\n  BrowserHistory,\n  Fetcher,\n  FormEncType,\n  FormMethod,\n  FutureConfig as RouterFutureConfig,\n  GetScrollRestorationKeyFunction,\n  HashHistory,\n  History,\n  HTMLFormMethod,\n  HydrationState,\n  Router as RemixRouter,\n  V7_FormMethod,\n  RouterState,\n  RouterSubscriber,\n  BlockerFunction,\n} from \"@remix-run/router\";\nimport {\n  createRouter,\n  createBrowserHistory,\n  createHashHistory,\n  joinPaths,\n  stripBasename,\n  UNSAFE_ErrorResponseImpl as ErrorResponseImpl,\n  UNSAFE_invariant as invariant,\n  UNSAFE_warning as warning,\n  matchPath,\n  IDLE_FETCHER,\n} from \"@remix-run/router\";\n\nimport type {\n  SubmitOptions,\n  ParamKeyValuePair,\n  URLSearchParamsInit,\n  SubmitTarget,\n} from \"./dom\";\nimport {\n  createSearchParams,\n  defaultMethod,\n  getFormSubmissionInfo,\n  getSearchParamsForLocation,\n  shouldProcessLinkClick,\n} from \"./dom\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Re-exports\n////////////////////////////////////////////////////////////////////////////////\n\nexport type {\n  FormEncType,\n  FormMethod,\n  GetScrollRestorationKeyFunction,\n  ParamKeyValuePair,\n  SubmitOptions,\n  URLSearchParamsInit,\n  V7_FormMethod,\n};\nexport { createSearchParams };\n\n// Note: Keep in sync with react-router exports!\nexport type {\n  ActionFunction,\n  ActionFunctionArgs,\n  AwaitProps,\n  Blocker,\n  BlockerFunction,\n  DataRouteMatch,\n  DataRouteObject,\n  ErrorResponse,\n  Fetcher,\n  FutureConfig,\n  Hash,\n  IndexRouteObject,\n  IndexRouteProps,\n  JsonFunction,\n  LazyRouteFunction,\n  LayoutRouteProps,\n  LoaderFunction,\n  LoaderFunctionArgs,\n  Location,\n  MemoryRouterProps,\n  NavigateFunction,\n  NavigateOptions,\n  NavigateProps,\n  Navigation,\n  Navigator,\n  NonIndexRouteObject,\n  OutletProps,\n  Params,\n  ParamParseKey,\n  Path,\n  PathMatch,\n  Pathname,\n  PathParam,\n  PathPattern,\n  PathRouteProps,\n  RedirectFunction,\n  RelativeRoutingType,\n  RouteMatch,\n  RouteObject,\n  RouteProps,\n  RouterProps,\n  RouterProviderProps,\n  RoutesProps,\n  Search,\n  ShouldRevalidateFunction,\n  ShouldRevalidateFunctionArgs,\n  To,\n  UIMatch,\n} from \"react-router\";\nexport {\n  AbortedDeferredError,\n  Await,\n  MemoryRouter,\n  Navigate,\n  NavigationType,\n  Outlet,\n  Route,\n  Router,\n  Routes,\n  createMemoryRouter,\n  createPath,\n  createRoutesFromChildren,\n  createRoutesFromElements,\n  defer,\n  isRouteErrorResponse,\n  generatePath,\n  json,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  redirect,\n  redirectDocument,\n  renderMatches,\n  resolvePath,\n  useActionData,\n  useAsyncError,\n  useAsyncValue,\n  useBlocker,\n  useHref,\n  useInRouterContext,\n  useLoaderData,\n  useLocation,\n  useMatch,\n  useMatches,\n  useNavigate,\n  useNavigation,\n  useNavigationType,\n  useOutlet,\n  useOutletContext,\n  useParams,\n  useResolvedPath,\n  useRevalidator,\n  useRouteError,\n  useRouteLoaderData,\n  useRoutes,\n} from \"react-router\";\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n  UNSAFE_DataRouterContext,\n  UNSAFE_DataRouterStateContext,\n  UNSAFE_NavigationContext,\n  UNSAFE_LocationContext,\n  UNSAFE_RouteContext,\n  UNSAFE_useRouteId,\n} from \"react-router\";\n//#endregion\n\ndeclare global {\n  var __staticRouterHydrationData: HydrationState | undefined;\n  var __reactRouterVersion: string;\n  interface Document {\n    startViewTransition(cb: () => Promise<void> | void): ViewTransition;\n  }\n}\n\n// HEY YOU! DON'T TOUCH THIS VARIABLE!\n//\n// It is replaced with the proper version at build time via a babel plugin in\n// the rollup config.\n//\n// Export a global property onto the window for React Router detection by the\n// Core Web Vitals Technology Report.  This way they can configure the `wappalyzer`\n// to detect and properly classify live websites as being built with React Router:\n// https://github.com/HTTPArchive/wappalyzer/blob/main/src/technologies/r.json\nconst REACT_ROUTER_VERSION = \"0\";\ntry {\n  window.__reactRouterVersion = REACT_ROUTER_VERSION;\n} catch (e) {\n  // no-op\n}\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Routers\n////////////////////////////////////////////////////////////////////////////////\n\ninterface DOMRouterOpts {\n  basename?: string;\n  future?: Partial<Omit<RouterFutureConfig, \"v7_prependBasename\">>;\n  hydrationData?: HydrationState;\n  window?: Window;\n}\n\nexport function createBrowserRouter(\n  routes: RouteObject[],\n  opts?: DOMRouterOpts\n): RemixRouter {\n  return createRouter({\n    basename: opts?.basename,\n    future: {\n      ...opts?.future,\n      v7_prependBasename: true,\n    },\n    history: createBrowserHistory({ window: opts?.window }),\n    hydrationData: opts?.hydrationData || parseHydrationData(),\n    routes,\n    mapRouteProperties,\n    window: opts?.window,\n  }).initialize();\n}\n\nexport function createHashRouter(\n  routes: RouteObject[],\n  opts?: DOMRouterOpts\n): RemixRouter {\n  return createRouter({\n    basename: opts?.basename,\n    future: {\n      ...opts?.future,\n      v7_prependBasename: true,\n    },\n    history: createHashHistory({ window: opts?.window }),\n    hydrationData: opts?.hydrationData || parseHydrationData(),\n    routes,\n    mapRouteProperties,\n    window: opts?.window,\n  }).initialize();\n}\n\nfunction parseHydrationData(): HydrationState | undefined {\n  let state = window?.__staticRouterHydrationData;\n  if (state && state.errors) {\n    state = {\n      ...state,\n      errors: deserializeErrors(state.errors),\n    };\n  }\n  return state;\n}\n\nfunction deserializeErrors(\n  errors: RemixRouter[\"state\"][\"errors\"]\n): RemixRouter[\"state\"][\"errors\"] {\n  if (!errors) return null;\n  let entries = Object.entries(errors);\n  let serialized: RemixRouter[\"state\"][\"errors\"] = {};\n  for (let [key, val] of entries) {\n    // Hey you!  If you change this, please change the corresponding logic in\n    // serializeErrors in react-router-dom/server.tsx :)\n    if (val && val.__type === \"RouteErrorResponse\") {\n      serialized[key] = new ErrorResponseImpl(\n        val.status,\n        val.statusText,\n        val.data,\n        val.internal === true\n      );\n    } else if (val && val.__type === \"Error\") {\n      // Attempt to reconstruct the right type of Error (i.e., ReferenceError)\n      if (val.__subType) {\n        let ErrorConstructor = window[val.__subType];\n        if (typeof ErrorConstructor === \"function\") {\n          try {\n            // @ts-expect-error\n            let error = new ErrorConstructor(val.message);\n            // Wipe away the client-side stack trace.  Nothing to fill it in with\n            // because we don't serialize SSR stack traces for security reasons\n            error.stack = \"\";\n            serialized[key] = error;\n          } catch (e) {\n            // no-op - fall through and create a normal Error\n          }\n        }\n      }\n\n      if (serialized[key] == null) {\n        let error = new Error(val.message);\n        // Wipe away the client-side stack trace.  Nothing to fill it in with\n        // because we don't serialize SSR stack traces for security reasons\n        error.stack = \"\";\n        serialized[key] = error;\n      }\n    } else {\n      serialized[key] = val;\n    }\n  }\n  return serialized;\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Contexts\n////////////////////////////////////////////////////////////////////////////////\n\ntype ViewTransitionContextObject =\n  | {\n      isTransitioning: false;\n    }\n  | {\n      isTransitioning: true;\n      flushSync: boolean;\n      currentLocation: Location;\n      nextLocation: Location;\n    };\n\nconst ViewTransitionContext = React.createContext<ViewTransitionContextObject>({\n  isTransitioning: false,\n});\nif (__DEV__) {\n  ViewTransitionContext.displayName = \"ViewTransition\";\n}\n\nexport { ViewTransitionContext as UNSAFE_ViewTransitionContext };\n\n// TODO: (v7) Change the useFetcher data from `any` to `unknown`\ntype FetchersContextObject = Map<string, any>;\n\nconst FetchersContext = React.createContext<FetchersContextObject>(new Map());\nif (__DEV__) {\n  FetchersContext.displayName = \"Fetchers\";\n}\n\nexport { FetchersContext as UNSAFE_FetchersContext };\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Components\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n  Webpack + React 17 fails to compile on any of the following because webpack\n  complains that `startTransition` doesn't exist in `React`:\n  * import { startTransition } from \"react\"\n  * import * as React from from \"react\";\n    \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n  * import * as React from from \"react\";\n    \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n  Moving it to a constant such as the following solves the Webpack/React 17 issue:\n  * import * as React from from \"react\";\n    const START_TRANSITION = \"startTransition\";\n    START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n  However, that introduces webpack/terser minification issues in production builds\n  in React 18 where minification/obfuscation ends up removing the call of\n  React.startTransition entirely from the first half of the ternary.  Grabbing\n  this exported reference once up front resolves that issue.\n\n  See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\nconst FLUSH_SYNC = \"flushSync\";\nconst flushSyncImpl = ReactDOM[FLUSH_SYNC];\nconst USE_ID = \"useId\";\nconst useIdImpl = React[USE_ID];\n\nfunction startTransitionSafe(cb: () => void) {\n  if (startTransitionImpl) {\n    startTransitionImpl(cb);\n  } else {\n    cb();\n  }\n}\n\nfunction flushSyncSafe(cb: () => void) {\n  if (flushSyncImpl) {\n    flushSyncImpl(cb);\n  } else {\n    cb();\n  }\n}\n\ninterface ViewTransition {\n  finished: Promise<void>;\n  ready: Promise<void>;\n  updateCallbackDone: Promise<void>;\n  skipTransition(): void;\n}\n\nclass Deferred<T> {\n  status: \"pending\" | \"resolved\" | \"rejected\" = \"pending\";\n  promise: Promise<T>;\n  // @ts-expect-error - no initializer\n  resolve: (value: T) => void;\n  // @ts-expect-error - no initializer\n  reject: (reason?: unknown) => void;\n  constructor() {\n    this.promise = new Promise((resolve, reject) => {\n      this.resolve = (value) => {\n        if (this.status === \"pending\") {\n          this.status = \"resolved\";\n          resolve(value);\n        }\n      };\n      this.reject = (reason) => {\n        if (this.status === \"pending\") {\n          this.status = \"rejected\";\n          reject(reason);\n        }\n      };\n    });\n  }\n}\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n  fallbackElement,\n  router,\n  future,\n}: RouterProviderProps): React.ReactElement {\n  let [state, setStateImpl] = React.useState(router.state);\n  let [pendingState, setPendingState] = React.useState<RouterState>();\n  let [vtContext, setVtContext] = React.useState<ViewTransitionContextObject>({\n    isTransitioning: false,\n  });\n  let [renderDfd, setRenderDfd] = React.useState<Deferred<void>>();\n  let [transition, setTransition] = React.useState<ViewTransition>();\n  let [interruption, setInterruption] = React.useState<{\n    state: RouterState;\n    currentLocation: Location;\n    nextLocation: Location;\n  }>();\n  let fetcherData = React.useRef<Map<string, any>>(new Map());\n  let { v7_startTransition } = future || {};\n\n  let optInStartTransition = React.useCallback(\n    (cb: () => void) => {\n      if (v7_startTransition) {\n        startTransitionSafe(cb);\n      } else {\n        cb();\n      }\n    },\n    [v7_startTransition]\n  );\n\n  let setState = React.useCallback<RouterSubscriber>(\n    (\n      newState: RouterState,\n      {\n        deletedFetchers,\n        unstable_flushSync: flushSync,\n        unstable_viewTransitionOpts: viewTransitionOpts,\n      }\n    ) => {\n      deletedFetchers.forEach((key) => fetcherData.current.delete(key));\n      newState.fetchers.forEach((fetcher, key) => {\n        if (fetcher.data !== undefined) {\n          fetcherData.current.set(key, fetcher.data);\n        }\n      });\n\n      let isViewTransitionUnavailable =\n        router.window == null ||\n        typeof router.window.document.startViewTransition !== \"function\";\n\n      // If this isn't a view transition or it's not available in this browser,\n      // just update and be done with it\n      if (!viewTransitionOpts || isViewTransitionUnavailable) {\n        if (flushSync) {\n          flushSyncSafe(() => setStateImpl(newState));\n        } else {\n          optInStartTransition(() => setStateImpl(newState));\n        }\n        return;\n      }\n\n      // flushSync + startViewTransition\n      if (flushSync) {\n        // Flush through the context to mark DOM elements as transition=ing\n        flushSyncSafe(() => {\n          // Cancel any pending transitions\n          if (transition) {\n            renderDfd && renderDfd.resolve();\n            transition.skipTransition();\n          }\n          setVtContext({\n            isTransitioning: true,\n            flushSync: true,\n            currentLocation: viewTransitionOpts.currentLocation,\n            nextLocation: viewTransitionOpts.nextLocation,\n          });\n        });\n\n        // Update the DOM\n        let t = router.window!.document.startViewTransition(() => {\n          flushSyncSafe(() => setStateImpl(newState));\n        });\n\n        // Clean up after the animation completes\n        t.finished.finally(() => {\n          flushSyncSafe(() => {\n            setRenderDfd(undefined);\n            setTransition(undefined);\n            setPendingState(undefined);\n            setVtContext({ isTransitioning: false });\n          });\n        });\n\n        flushSyncSafe(() => setTransition(t));\n        return;\n      }\n\n      // startTransition + startViewTransition\n      if (transition) {\n        // Interrupting an in-progress transition, cancel and let everything flush\n        // out, and then kick off a new transition from the interruption state\n        renderDfd && renderDfd.resolve();\n        transition.skipTransition();\n        setInterruption({\n          state: newState,\n          currentLocation: viewTransitionOpts.currentLocation,\n          nextLocation: viewTransitionOpts.nextLocation,\n        });\n      } else {\n        // Completed navigation update with opted-in view transitions, let 'er rip\n        setPendingState(newState);\n        setVtContext({\n          isTransitioning: true,\n          flushSync: false,\n          currentLocation: viewTransitionOpts.currentLocation,\n          nextLocation: viewTransitionOpts.nextLocation,\n        });\n      }\n    },\n    [router.window, transition, renderDfd, fetcherData, optInStartTransition]\n  );\n\n  // Need to use a layout effect here so we are subscribed early enough to\n  // pick up on any render-driven redirects/navigations (useEffect/<Navigate>)\n  React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n  // When we start a view transition, create a Deferred we can use for the\n  // eventual \"completed\" render\n  React.useEffect(() => {\n    if (vtContext.isTransitioning && !vtContext.flushSync) {\n      setRenderDfd(new Deferred<void>());\n    }\n  }, [vtContext]);\n\n  // Once the deferred is created, kick off startViewTransition() to update the\n  // DOM and then wait on the Deferred to resolve (indicating the DOM update has\n  // happened)\n  React.useEffect(() => {\n    if (renderDfd && pendingState && router.window) {\n      let newState = pendingState;\n      let renderPromise = renderDfd.promise;\n      let transition = router.window.document.startViewTransition(async () => {\n        optInStartTransition(() => setStateImpl(newState));\n        await renderPromise;\n      });\n      transition.finished.finally(() => {\n        setRenderDfd(undefined);\n        setTransition(undefined);\n        setPendingState(undefined);\n        setVtContext({ isTransitioning: false });\n      });\n      setTransition(transition);\n    }\n  }, [optInStartTransition, pendingState, renderDfd, router.window]);\n\n  // When the new location finally renders and is committed to the DOM, this\n  // effect will run to resolve the transition\n  React.useEffect(() => {\n    if (\n      renderDfd &&\n      pendingState &&\n      state.location.key === pendingState.location.key\n    ) {\n      renderDfd.resolve();\n    }\n  }, [renderDfd, transition, state.location, pendingState]);\n\n  // If we get interrupted with a new navigation during a transition, we skip\n  // the active transition, let it cleanup, then kick it off again here\n  React.useEffect(() => {\n    if (!vtContext.isTransitioning && interruption) {\n      setPendingState(interruption.state);\n      setVtContext({\n        isTransitioning: true,\n        flushSync: false,\n        currentLocation: interruption.currentLocation,\n        nextLocation: interruption.nextLocation,\n      });\n      setInterruption(undefined);\n    }\n  }, [vtContext.isTransitioning, interruption]);\n\n  React.useEffect(() => {\n    warning(\n      fallbackElement == null || !router.future.v7_partialHydration,\n      \"`<RouterProvider fallbackElement>` is deprecated when using \" +\n        \"`v7_partialHydration`, use a `HydrateFallback` component instead\"\n    );\n    // Only log this once on initial mount\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  let navigator = React.useMemo((): Navigator => {\n    return {\n      createHref: router.createHref,\n      encodeLocation: router.encodeLocation,\n      go: (n) => router.navigate(n),\n      push: (to, state, opts) =>\n        router.navigate(to, {\n          state,\n          preventScrollReset: opts?.preventScrollReset,\n        }),\n      replace: (to, state, opts) =>\n        router.navigate(to, {\n          replace: true,\n          state,\n          preventScrollReset: opts?.preventScrollReset,\n        }),\n    };\n  }, [router]);\n\n  let basename = router.basename || \"/\";\n\n  let dataRouterContext = React.useMemo(\n    () => ({\n      router,\n      navigator,\n      static: false,\n      basename,\n    }),\n    [router, navigator, basename]\n  );\n\n  // The fragment and {null} here are important!  We need them to keep React 18's\n  // useId happy when we are server-rendering since we may have a <script> here\n  // containing the hydrated server-side staticContext (from StaticRouterProvider).\n  // useId relies on the component tree structure to generate deterministic id's\n  // so we need to ensure it remains the same on the client even though\n  // we don't need the <script> tag\n  return (\n    <>\n      <DataRouterContext.Provider value={dataRouterContext}>\n        <DataRouterStateContext.Provider value={state}>\n          <FetchersContext.Provider value={fetcherData.current}>\n            <ViewTransitionContext.Provider value={vtContext}>\n              <Router\n                basename={basename}\n                location={state.location}\n                navigationType={state.historyAction}\n                navigator={navigator}\n                future={{\n                  v7_relativeSplatPath: router.future.v7_relativeSplatPath,\n                }}\n              >\n                {state.initialized || router.future.v7_partialHydration ? (\n                  <DataRoutes\n                    routes={router.routes}\n                    future={router.future}\n                    state={state}\n                  />\n                ) : (\n                  fallbackElement\n                )}\n              </Router>\n            </ViewTransitionContext.Provider>\n          </FetchersContext.Provider>\n        </DataRouterStateContext.Provider>\n      </DataRouterContext.Provider>\n      {null}\n    </>\n  );\n}\n\nfunction DataRoutes({\n  routes,\n  future,\n  state,\n}: {\n  routes: DataRouteObject[];\n  future: RemixRouter[\"future\"];\n  state: RouterState;\n}): React.ReactElement | null {\n  return useRoutesImpl(routes, undefined, state, future);\n}\n\nexport interface BrowserRouterProps {\n  basename?: string;\n  children?: React.ReactNode;\n  future?: Partial<FutureConfig>;\n  window?: Window;\n}\n\n/**\n * A `<Router>` for use in web browsers. Provides the cleanest URLs.\n */\nexport function BrowserRouter({\n  basename,\n  children,\n  future,\n  window,\n}: BrowserRouterProps) {\n  let historyRef = React.useRef<BrowserHistory>();\n  if (historyRef.current == null) {\n    historyRef.current = createBrowserHistory({ window, v5Compat: true });\n  }\n\n  let history = historyRef.current;\n  let [state, setStateImpl] = React.useState({\n    action: history.action,\n    location: history.location,\n  });\n  let { v7_startTransition } = future || {};\n  let setState = React.useCallback(\n    (newState: { action: NavigationType; location: Location }) => {\n      v7_startTransition && startTransitionImpl\n        ? startTransitionImpl(() => setStateImpl(newState))\n        : setStateImpl(newState);\n    },\n    [setStateImpl, v7_startTransition]\n  );\n\n  React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n\n  return (\n    <Router\n      basename={basename}\n      children={children}\n      location={state.location}\n      navigationType={state.action}\n      navigator={history}\n      future={future}\n    />\n  );\n}\n\nexport interface HashRouterProps {\n  basename?: string;\n  children?: React.ReactNode;\n  future?: Partial<FutureConfig>;\n  window?: Window;\n}\n\n/**\n * A `<Router>` for use in web browsers. Stores the location in the hash\n * portion of the URL so it is not sent to the server.\n */\nexport function HashRouter({\n  basename,\n  children,\n  future,\n  window,\n}: HashRouterProps) {\n  let historyRef = React.useRef<HashHistory>();\n  if (historyRef.current == null) {\n    historyRef.current = createHashHistory({ window, v5Compat: true });\n  }\n\n  let history = historyRef.current;\n  let [state, setStateImpl] = React.useState({\n    action: history.action,\n    location: history.location,\n  });\n  let { v7_startTransition } = future || {};\n  let setState = React.useCallback(\n    (newState: { action: NavigationType; location: Location }) => {\n      v7_startTransition && startTransitionImpl\n        ? startTransitionImpl(() => setStateImpl(newState))\n        : setStateImpl(newState);\n    },\n    [setStateImpl, v7_startTransition]\n  );\n\n  React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n\n  return (\n    <Router\n      basename={basename}\n      children={children}\n      location={state.location}\n      navigationType={state.action}\n      navigator={history}\n      future={future}\n    />\n  );\n}\n\nexport interface HistoryRouterProps {\n  basename?: string;\n  children?: React.ReactNode;\n  future?: FutureConfig;\n  history: History;\n}\n\n/**\n * A `<Router>` that accepts a pre-instantiated history object. It's important\n * to note that using your own history object is highly discouraged and may add\n * two versions of the history library to your bundles unless you use the same\n * version of the history library that React Router uses internally.\n */\nfunction HistoryRouter({\n  basename,\n  children,\n  future,\n  history,\n}: HistoryRouterProps) {\n  let [state, setStateImpl] = React.useState({\n    action: history.action,\n    location: history.location,\n  });\n  let { v7_startTransition } = future || {};\n  let setState = React.useCallback(\n    (newState: { action: NavigationType; location: Location }) => {\n      v7_startTransition && startTransitionImpl\n        ? startTransitionImpl(() => setStateImpl(newState))\n        : setStateImpl(newState);\n    },\n    [setStateImpl, v7_startTransition]\n  );\n\n  React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n\n  return (\n    <Router\n      basename={basename}\n      children={children}\n      location={state.location}\n      navigationType={state.action}\n      navigator={history}\n      future={future}\n    />\n  );\n}\n\nif (__DEV__) {\n  HistoryRouter.displayName = \"unstable_HistoryRouter\";\n}\n\nexport { HistoryRouter as unstable_HistoryRouter };\n\nexport interface LinkProps\n  extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, \"href\"> {\n  reloadDocument?: boolean;\n  replace?: boolean;\n  state?: any;\n  preventScrollReset?: boolean;\n  relative?: RelativeRoutingType;\n  to: To;\n  unstable_viewTransition?: boolean;\n}\n\nconst isBrowser =\n  typeof window !== \"undefined\" &&\n  typeof window.document !== \"undefined\" &&\n  typeof window.document.createElement !== \"undefined\";\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\n/**\n * The public API for rendering a history-aware `<a>`.\n */\nexport const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(\n  function LinkWithRef(\n    {\n      onClick,\n      relative,\n      reloadDocument,\n      replace,\n      state,\n      target,\n      to,\n      preventScrollReset,\n      unstable_viewTransition,\n      ...rest\n    },\n    ref\n  ) {\n    let { basename } = React.useContext(NavigationContext);\n\n    // Rendered into <a href> for absolute URLs\n    let absoluteHref;\n    let isExternal = false;\n\n    if (typeof to === \"string\" && ABSOLUTE_URL_REGEX.test(to)) {\n      // Render the absolute href server- and client-side\n      absoluteHref = to;\n\n      // Only check for external origins client-side\n      if (isBrowser) {\n        try {\n          let currentUrl = new URL(window.location.href);\n          let targetUrl = to.startsWith(\"//\")\n            ? new URL(currentUrl.protocol + to)\n            : new URL(to);\n          let path = stripBasename(targetUrl.pathname, basename);\n\n          if (targetUrl.origin === currentUrl.origin && path != null) {\n            // Strip the protocol/origin/basename for same-origin absolute URLs\n            to = path + targetUrl.search + targetUrl.hash;\n          } else {\n            isExternal = true;\n          }\n        } catch (e) {\n          // We can't do external URL detection without a valid URL\n          warning(\n            false,\n            `<Link to=\"${to}\"> contains an invalid URL which will probably break ` +\n              `when clicked - please update to a valid URL path.`\n          );\n        }\n      }\n    }\n\n    // Rendered into <a href> for relative URLs\n    let href = useHref(to, { relative });\n\n    let internalOnClick = useLinkClickHandler(to, {\n      replace,\n      state,\n      target,\n      preventScrollReset,\n      relative,\n      unstable_viewTransition,\n    });\n    function handleClick(\n      event: React.MouseEvent<HTMLAnchorElement, MouseEvent>\n    ) {\n      if (onClick) onClick(event);\n      if (!event.defaultPrevented) {\n        internalOnClick(event);\n      }\n    }\n\n    return (\n      // eslint-disable-next-line jsx-a11y/anchor-has-content\n      <a\n        {...rest}\n        href={absoluteHref || href}\n        onClick={isExternal || reloadDocument ? onClick : handleClick}\n        ref={ref}\n        target={target}\n      />\n    );\n  }\n);\n\nif (__DEV__) {\n  Link.displayName = \"Link\";\n}\n\ntype NavLinkRenderProps = {\n  isActive: boolean;\n  isPending: boolean;\n  isTransitioning: boolean;\n};\n\nexport interface NavLinkProps\n  extends Omit<LinkProps, \"className\" | \"style\" | \"children\"> {\n  children?: React.ReactNode | ((props: NavLinkRenderProps) => React.ReactNode);\n  caseSensitive?: boolean;\n  className?: string | ((props: NavLinkRenderProps) => string | undefined);\n  end?: boolean;\n  style?:\n    | React.CSSProperties\n    | ((props: NavLinkRenderProps) => React.CSSProperties | undefined);\n}\n\n/**\n * A `<Link>` wrapper that knows if it's \"active\" or not.\n */\nexport const NavLink = React.forwardRef<HTMLAnchorElement, NavLinkProps>(\n  function NavLinkWithRef(\n    {\n      \"aria-current\": ariaCurrentProp = \"page\",\n      caseSensitive = false,\n      className: classNameProp = \"\",\n      end = false,\n      style: styleProp,\n      to,\n      unstable_viewTransition,\n      children,\n      ...rest\n    },\n    ref\n  ) {\n    let path = useResolvedPath(to, { relative: rest.relative });\n    let location = useLocation();\n    let routerState = React.useContext(DataRouterStateContext);\n    let { navigator, basename } = React.useContext(NavigationContext);\n    let isTransitioning =\n      routerState != null &&\n      // Conditional usage is OK here because the usage of a data router is static\n      // eslint-disable-next-line react-hooks/rules-of-hooks\n      useViewTransitionState(path) &&\n      unstable_viewTransition === true;\n\n    let toPathname = navigator.encodeLocation\n      ? navigator.encodeLocation(path).pathname\n      : path.pathname;\n    let locationPathname = location.pathname;\n    let nextLocationPathname =\n      routerState && routerState.navigation && routerState.navigation.location\n        ? routerState.navigation.location.pathname\n        : null;\n\n    if (!caseSensitive) {\n      locationPathname = locationPathname.toLowerCase();\n      nextLocationPathname = nextLocationPathname\n        ? nextLocationPathname.toLowerCase()\n        : null;\n      toPathname = toPathname.toLowerCase();\n    }\n\n    if (nextLocationPathname && basename) {\n      nextLocationPathname =\n        stripBasename(nextLocationPathname, basename) || nextLocationPathname;\n    }\n\n    // If the `to` has a trailing slash, look at that exact spot.  Otherwise,\n    // we're looking for a slash _after_ what's in `to`.  For example:\n    //\n    // <NavLink to=\"/users\"> and <NavLink to=\"/users/\">\n    // both want to look for a / at index 6 to match URL `/users/matt`\n    const endSlashPosition =\n      toPathname !== \"/\" && toPathname.endsWith(\"/\")\n        ? toPathname.length - 1\n        : toPathname.length;\n    let isActive =\n      locationPathname === toPathname ||\n      (!end &&\n        locationPathname.startsWith(toPathname) &&\n        locationPathname.charAt(endSlashPosition) === \"/\");\n\n    let isPending =\n      nextLocationPathname != null &&\n      (nextLocationPathname === toPathname ||\n        (!end &&\n          nextLocationPathname.startsWith(toPathname) &&\n          nextLocationPathname.charAt(toPathname.length) === \"/\"));\n\n    let renderProps = {\n      isActive,\n      isPending,\n      isTransitioning,\n    };\n\n    let ariaCurrent = isActive ? ariaCurrentProp : undefined;\n\n    let className: string | undefined;\n    if (typeof classNameProp === \"function\") {\n      className = classNameProp(renderProps);\n    } else {\n      // If the className prop is not a function, we use a default `active`\n      // class for <NavLink />s that are active. In v5 `active` was the default\n      // value for `activeClassName`, but we are removing that API and can still\n      // use the old default behavior for a cleaner upgrade path and keep the\n      // simple styling rules working as they currently do.\n      className = [\n        classNameProp,\n        isActive ? \"active\" : null,\n        isPending ? \"pending\" : null,\n        isTransitioning ? \"transitioning\" : null,\n      ]\n        .filter(Boolean)\n        .join(\" \");\n    }\n\n    let style =\n      typeof styleProp === \"function\" ? styleProp(renderProps) : styleProp;\n\n    return (\n      <Link\n        {...rest}\n        aria-current={ariaCurrent}\n        className={className}\n        ref={ref}\n        style={style}\n        to={to}\n        unstable_viewTransition={unstable_viewTransition}\n      >\n        {typeof children === \"function\" ? children(renderProps) : children}\n      </Link>\n    );\n  }\n);\n\nif (__DEV__) {\n  NavLink.displayName = \"NavLink\";\n}\n\nexport interface FetcherFormProps\n  extends React.FormHTMLAttributes<HTMLFormElement> {\n  /**\n   * The HTTP verb to use when the form is submit. Supports \"get\", \"post\",\n   * \"put\", \"delete\", \"patch\".\n   */\n  method?: HTMLFormMethod;\n\n  /**\n   * `<form encType>` - enhancing beyond the normal string type and limiting\n   * to the built-in browser supported values\n   */\n  encType?:\n    | \"application/x-www-form-urlencoded\"\n    | \"multipart/form-data\"\n    | \"text/plain\";\n\n  /**\n   * Normal `<form action>` but supports React Router's relative paths.\n   */\n  action?: string;\n\n  /**\n   * Determines whether the form action is relative to the route hierarchy or\n   * the pathname.  Use this if you want to opt out of navigating the route\n   * hierarchy and want to instead route based on /-delimited URL segments\n   */\n  relative?: RelativeRoutingType;\n\n  /**\n   * Prevent the scroll position from resetting to the top of the viewport on\n   * completion of the navigation when using the <ScrollRestoration> component\n   */\n  preventScrollReset?: boolean;\n\n  /**\n   * A function to call when the form is submitted. If you call\n   * `event.preventDefault()` then this form will not do anything.\n   */\n  onSubmit?: React.FormEventHandler<HTMLFormElement>;\n}\n\nexport interface FormProps extends FetcherFormProps {\n  /**\n   * Indicate a specific fetcherKey to use when using navigate=false\n   */\n  fetcherKey?: string;\n\n  /**\n   * navigate=false will use a fetcher instead of a navigation\n   */\n  navigate?: boolean;\n\n  /**\n   * Forces a full document navigation instead of a fetch.\n   */\n  reloadDocument?: boolean;\n\n  /**\n   * Replaces the current entry in the browser history stack when the form\n   * navigates. Use this if you don't want the user to be able to click \"back\"\n   * to the page with the form on it.\n   */\n  replace?: boolean;\n\n  /**\n   * State object to add to the history stack entry for this navigation\n   */\n  state?: any;\n\n  /**\n   * Enable view transitions on this Form navigation\n   */\n  unstable_viewTransition?: boolean;\n}\n\ntype HTMLSubmitEvent = React.BaseSyntheticEvent<\n  SubmitEvent,\n  Event,\n  HTMLFormElement\n>;\n\ntype HTMLFormSubmitter = HTMLButtonElement | HTMLInputElement;\n\n/**\n * A `@remix-run/router`-aware `<form>`. It behaves like a normal form except\n * that the interaction with the server is with `fetch` instead of new document\n * requests, allowing components to add nicer UX to the page as the form is\n * submitted and returns with data.\n */\nexport const Form = React.forwardRef<HTMLFormElement, FormProps>(\n  (\n    {\n      fetcherKey,\n      navigate,\n      reloadDocument,\n      replace,\n      state,\n      method = defaultMethod,\n      action,\n      onSubmit,\n      relative,\n      preventScrollReset,\n      unstable_viewTransition,\n      ...props\n    },\n    forwardedRef\n  ) => {\n    let submit = useSubmit();\n    let formAction = useFormAction(action, { relative });\n    let formMethod: HTMLFormMethod =\n      method.toLowerCase() === \"get\" ? \"get\" : \"post\";\n\n    let submitHandler: React.FormEventHandler<HTMLFormElement> = (event) => {\n      onSubmit && onSubmit(event);\n      if (event.defaultPrevented) return;\n      event.preventDefault();\n\n      let submitter = (event as unknown as HTMLSubmitEvent).nativeEvent\n        .submitter as HTMLFormSubmitter | null;\n\n      let submitMethod =\n        (submitter?.getAttribute(\"formmethod\") as HTMLFormMethod | undefined) ||\n        method;\n\n      submit(submitter || event.currentTarget, {\n        fetcherKey,\n        method: submitMethod,\n        navigate,\n        replace,\n        state,\n        relative,\n        preventScrollReset,\n        unstable_viewTransition,\n      });\n    };\n\n    return (\n      <form\n        ref={forwardedRef}\n        method={formMethod}\n        action={formAction}\n        onSubmit={reloadDocument ? onSubmit : submitHandler}\n        {...props}\n      />\n    );\n  }\n);\n\nif (__DEV__) {\n  Form.displayName = \"Form\";\n}\n\nexport interface ScrollRestorationProps {\n  getKey?: GetScrollRestorationKeyFunction;\n  storageKey?: string;\n}\n\n/**\n * This component will emulate the browser's scroll restoration on location\n * changes.\n */\nexport function ScrollRestoration({\n  getKey,\n  storageKey,\n}: ScrollRestorationProps) {\n  useScrollRestoration({ getKey, storageKey });\n  return null;\n}\n\nif (__DEV__) {\n  ScrollRestoration.displayName = \"ScrollRestoration\";\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hooks\n////////////////////////////////////////////////////////////////////////////////\n\nenum DataRouterHook {\n  UseScrollRestoration = \"useScrollRestoration\",\n  UseSubmit = \"useSubmit\",\n  UseSubmitFetcher = \"useSubmitFetcher\",\n  UseFetcher = \"useFetcher\",\n  useViewTransitionState = \"useViewTransitionState\",\n}\n\nenum DataRouterStateHook {\n  UseFetcher = \"useFetcher\",\n  UseFetchers = \"useFetchers\",\n  UseScrollRestoration = \"useScrollRestoration\",\n}\n\n// Internal hooks\n\nfunction getDataRouterConsoleError(\n  hookName: DataRouterHook | DataRouterStateHook\n) {\n  return `${hookName} must be used within a data router.  See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n  let ctx = React.useContext(DataRouterContext);\n  invariant(ctx, getDataRouterConsoleError(hookName));\n  return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n  let state = React.useContext(DataRouterStateContext);\n  invariant(state, getDataRouterConsoleError(hookName));\n  return state;\n}\n\n// External hooks\n\n/**\n * Handles the click behavior for router `<Link>` components. This is useful if\n * you need to create custom `<Link>` components with the same click behavior we\n * use in our exported `<Link>`.\n */\nexport function useLinkClickHandler<E extends Element = HTMLAnchorElement>(\n  to: To,\n  {\n    target,\n    replace: replaceProp,\n    state,\n    preventScrollReset,\n    relative,\n    unstable_viewTransition,\n  }: {\n    target?: React.HTMLAttributeAnchorTarget;\n    replace?: boolean;\n    state?: any;\n    preventScrollReset?: boolean;\n    relative?: RelativeRoutingType;\n    unstable_viewTransition?: boolean;\n  } = {}\n): (event: React.MouseEvent<E, MouseEvent>) => void {\n  let navigate = useNavigate();\n  let location = useLocation();\n  let path = useResolvedPath(to, { relative });\n\n  return React.useCallback(\n    (event: React.MouseEvent<E, MouseEvent>) => {\n      if (shouldProcessLinkClick(event, target)) {\n        event.preventDefault();\n\n        // If the URL hasn't changed, a regular <a> will do a replace instead of\n        // a push, so do the same here unless the replace prop is explicitly set\n        let replace =\n          replaceProp !== undefined\n            ? replaceProp\n            : createPath(location) === createPath(path);\n\n        navigate(to, {\n          replace,\n          state,\n          preventScrollReset,\n          relative,\n          unstable_viewTransition,\n        });\n      }\n    },\n    [\n      location,\n      navigate,\n      path,\n      replaceProp,\n      state,\n      target,\n      to,\n      preventScrollReset,\n      relative,\n      unstable_viewTransition,\n    ]\n  );\n}\n\n/**\n * A convenient wrapper for reading and writing search parameters via the\n * URLSearchParams interface.\n */\nexport function useSearchParams(\n  defaultInit?: URLSearchParamsInit\n): [URLSearchParams, SetURLSearchParams] {\n  warning(\n    typeof URLSearchParams !== \"undefined\",\n    `You cannot use the \\`useSearchParams\\` hook in a browser that does not ` +\n      `support the URLSearchParams API. If you need to support Internet ` +\n      `Explorer 11, we recommend you load a polyfill such as ` +\n      `https://github.com/ungap/url-search-params\\n\\n` +\n      `If you're unsure how to load polyfills, we recommend you check out ` +\n      `https://polyfill.io/v3/ which provides some recommendations about how ` +\n      `to load polyfills only for users that need them, instead of for every ` +\n      `user.`\n  );\n\n  let defaultSearchParamsRef = React.useRef(createSearchParams(defaultInit));\n  let hasSetSearchParamsRef = React.useRef(false);\n\n  let location = useLocation();\n  let searchParams = React.useMemo(\n    () =>\n      // Only merge in the defaults if we haven't yet called setSearchParams.\n      // Once we call that we want those to take precedence, otherwise you can't\n      // remove a param with setSearchParams({}) if it has an initial value\n      getSearchParamsForLocation(\n        location.search,\n        hasSetSearchParamsRef.current ? null : defaultSearchParamsRef.current\n      ),\n    [location.search]\n  );\n\n  let navigate = useNavigate();\n  let setSearchParams = React.useCallback<SetURLSearchParams>(\n    (nextInit, navigateOptions) => {\n      const newSearchParams = createSearchParams(\n        typeof nextInit === \"function\" ? nextInit(searchParams) : nextInit\n      );\n      hasSetSearchParamsRef.current = true;\n      navigate(\"?\" + newSearchParams, navigateOptions);\n    },\n    [navigate, searchParams]\n  );\n\n  return [searchParams, setSearchParams];\n}\n\nexport type SetURLSearchParams = (\n  nextInit?:\n    | URLSearchParamsInit\n    | ((prev: URLSearchParams) => URLSearchParamsInit),\n  navigateOpts?: NavigateOptions\n) => void;\n\n/**\n * Submits a HTML `<form>` to the server without reloading the page.\n */\nexport interface SubmitFunction {\n  (\n    /**\n     * Specifies the `<form>` to be submitted to the server, a specific\n     * `<button>` or `<input type=\"submit\">` to use to submit the form, or some\n     * arbitrary data to submit.\n     *\n     * Note: When using a `<button>` its `name` and `value` will also be\n     * included in the form data that is submitted.\n     */\n    target: SubmitTarget,\n\n    /**\n     * Options that override the `<form>`'s own attributes. Required when\n     * submitting arbitrary data without a backing `<form>`.\n     */\n    options?: SubmitOptions\n  ): void;\n}\n\n/**\n * Submits a fetcher `<form>` to the server without reloading the page.\n */\nexport interface FetcherSubmitFunction {\n  (\n    target: SubmitTarget,\n    // Fetchers cannot replace or set state because they are not navigation events\n    options?: Omit<SubmitOptions, \"replace\" | \"state\">\n  ): void;\n}\n\nfunction validateClientSideSubmission() {\n  if (typeof document === \"undefined\") {\n    throw new Error(\n      \"You are calling submit during the server render. \" +\n        \"Try calling submit within a `useEffect` or callback instead.\"\n    );\n  }\n}\n\nlet fetcherId = 0;\nlet getUniqueFetcherId = () => `__${String(++fetcherId)}__`;\n\n/**\n * Returns a function that may be used to programmatically submit a form (or\n * some arbitrary data) to the server.\n */\nexport function useSubmit(): SubmitFunction {\n  let { router } = useDataRouterContext(DataRouterHook.UseSubmit);\n  let { basename } = React.useContext(NavigationContext);\n  let currentRouteId = useRouteId();\n\n  return React.useCallback<SubmitFunction>(\n    (target, options = {}) => {\n      validateClientSideSubmission();\n\n      let { action, method, encType, formData, body } = getFormSubmissionInfo(\n        target,\n        basename\n      );\n\n      if (options.navigate === false) {\n        let key = options.fetcherKey || getUniqueFetcherId();\n        router.fetch(key, currentRouteId, options.action || action, {\n          preventScrollReset: options.preventScrollReset,\n          formData,\n          body,\n          formMethod: options.method || (method as HTMLFormMethod),\n          formEncType: options.encType || (encType as FormEncType),\n          unstable_flushSync: options.unstable_flushSync,\n        });\n      } else {\n        router.navigate(options.action || action, {\n          preventScrollReset: options.preventScrollReset,\n          formData,\n          body,\n          formMethod: options.method || (method as HTMLFormMethod),\n          formEncType: options.encType || (encType as FormEncType),\n          replace: options.replace,\n          state: options.state,\n          fromRouteId: currentRouteId,\n          unstable_flushSync: options.unstable_flushSync,\n          unstable_viewTransition: options.unstable_viewTransition,\n        });\n      }\n    },\n    [router, basename, currentRouteId]\n  );\n}\n\n// v7: Eventually we should deprecate this entirely in favor of using the\n// router method directly?\nexport function useFormAction(\n  action?: string,\n  { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n  let { basename } = React.useContext(NavigationContext);\n  let routeContext = React.useContext(RouteContext);\n  invariant(routeContext, \"useFormAction must be used inside a RouteContext\");\n\n  let [match] = routeContext.matches.slice(-1);\n  // Shallow clone path so we can modify it below, otherwise we modify the\n  // object referenced by useMemo inside useResolvedPath\n  let path = { ...useResolvedPath(action ? action : \".\", { relative }) };\n\n  // If no action was specified, browsers will persist current search params\n  // when determining the path, so match that behavior\n  // https://github.com/remix-run/remix/issues/927\n  let location = useLocation();\n  if (action == null) {\n    // Safe to write to this directly here since if action was undefined, we\n    // would have called useResolvedPath(\".\") which will never include a search\n    path.search = location.search;\n\n    // When grabbing search params from the URL, remove any included ?index param\n    // since it might not apply to our contextual route.  We add it back based\n    // on match.route.index below\n    let params = new URLSearchParams(path.search);\n    if (params.has(\"index\") && params.get(\"index\") === \"\") {\n      params.delete(\"index\");\n      path.search = params.toString() ? `?${params.toString()}` : \"\";\n    }\n  }\n\n  if ((!action || action === \".\") && match.route.index) {\n    path.search = path.search\n      ? path.search.replace(/^\\?/, \"?index&\")\n      : \"?index\";\n  }\n\n  // If we're operating within a basename, prepend it to the pathname prior\n  // to creating the form action.  If this is a root navigation, then just use\n  // the raw basename which allows the basename to have full control over the\n  // presence of a trailing slash on root actions\n  if (basename !== \"/\") {\n    path.pathname =\n      path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n  }\n\n  return createPath(path);\n}\n\nexport type FetcherWithComponents<TData> = Fetcher<TData> & {\n  Form: React.ForwardRefExoticComponent<\n    FetcherFormProps & React.RefAttributes<HTMLFormElement>\n  >;\n  submit: FetcherSubmitFunction;\n  load: (href: string, opts?: { unstable_flushSync?: boolean }) => void;\n};\n\n// TODO: (v7) Change the useFetcher generic default from `any` to `unknown`\n\n/**\n * Interacts with route loaders and actions without causing a navigation. Great\n * for any interaction that stays on the same page.\n */\nexport function useFetcher<TData = any>({\n  key,\n}: { key?: string } = {}): FetcherWithComponents<TData> {\n  let { router } = useDataRouterContext(DataRouterHook.UseFetcher);\n  let state = useDataRouterState(DataRouterStateHook.UseFetcher);\n  let fetcherData = React.useContext(FetchersContext);\n  let route = React.useContext(RouteContext);\n  let routeId = route.matches[route.matches.length - 1]?.route.id;\n\n  invariant(fetcherData, `useFetcher must be used inside a FetchersContext`);\n  invariant(route, `useFetcher must be used inside a RouteContext`);\n  invariant(\n    routeId != null,\n    `useFetcher can only be used on routes that contain a unique \"id\"`\n  );\n\n  // Fetcher key handling\n  // OK to call conditionally to feature detect `useId`\n  // eslint-disable-next-line react-hooks/rules-of-hooks\n  let defaultKey = useIdImpl ? useIdImpl() : \"\";\n  let [fetcherKey, setFetcherKey] = React.useState<string>(key || defaultKey);\n  if (key && key !== fetcherKey) {\n    setFetcherKey(key);\n  } else if (!fetcherKey) {\n    // We will only fall through here when `useId` is not available\n    setFetcherKey(getUniqueFetcherId());\n  }\n\n  // Registration/cleanup\n  React.useEffect(() => {\n    router.getFetcher(fetcherKey);\n    return () => {\n      // Tell the router we've unmounted - if v7_fetcherPersist is enabled this\n      // will not delete immediately but instead queue up a delete after the\n      // fetcher returns to an `idle` state\n      router.deleteFetcher(fetcherKey);\n    };\n  }, [router, fetcherKey]);\n\n  // Fetcher additions\n  let load = React.useCallback(\n    (href: string, opts?: { unstable_flushSync?: boolean }) => {\n      invariant(routeId, \"No routeId available for fetcher.load()\");\n      router.fetch(fetcherKey, routeId, href, opts);\n    },\n    [fetcherKey, routeId, router]\n  );\n\n  let submitImpl = useSubmit();\n  let submit = React.useCallback<FetcherSubmitFunction>(\n    (target, opts) => {\n      submitImpl(target, {\n        ...opts,\n        navigate: false,\n        fetcherKey,\n      });\n    },\n    [fetcherKey, submitImpl]\n  );\n\n  let FetcherForm = React.useMemo(() => {\n    let FetcherForm = React.forwardRef<HTMLFormElement, FetcherFormProps>(\n      (props, ref) => {\n        return (\n          <Form {...props} navigate={false} fetcherKey={fetcherKey} ref={ref} />\n        );\n      }\n    );\n    if (__DEV__) {\n      FetcherForm.displayName = \"fetcher.Form\";\n    }\n    return FetcherForm;\n  }, [fetcherKey]);\n\n  // Exposed FetcherWithComponents\n  let fetcher = state.fetchers.get(fetcherKey) || IDLE_FETCHER;\n  let data = fetcherData.get(fetcherKey);\n  let fetcherWithComponents = React.useMemo(\n    () => ({\n      Form: FetcherForm,\n      submit,\n      load,\n      ...fetcher,\n      data,\n    }),\n    [FetcherForm, submit, load, fetcher, data]\n  );\n\n  return fetcherWithComponents;\n}\n\n/**\n * Provides all fetchers currently on the page. Useful for layouts and parent\n * routes that need to provide pending/optimistic UI regarding the fetch.\n */\nexport function useFetchers(): (Fetcher & { key: string })[] {\n  let state = useDataRouterState(DataRouterStateHook.UseFetchers);\n  return Array.from(state.fetchers.entries()).map(([key, fetcher]) => ({\n    ...fetcher,\n    key,\n  }));\n}\n\nconst SCROLL_RESTORATION_STORAGE_KEY = \"react-router-scroll-positions\";\nlet savedScrollPositions: Record<string, number> = {};\n\n/**\n * When rendered inside a RouterProvider, will restore scroll positions on navigations\n */\nfunction useScrollRestoration({\n  getKey,\n  storageKey,\n}: {\n  getKey?: GetScrollRestorationKeyFunction;\n  storageKey?: string;\n} = {}) {\n  let { router } = useDataRouterContext(DataRouterHook.UseScrollRestoration);\n  let { restoreScrollPosition, preventScrollReset } = useDataRouterState(\n    DataRouterStateHook.UseScrollRestoration\n  );\n  let { basename } = React.useContext(NavigationContext);\n  let location = useLocation();\n  let matches = useMatches();\n  let navigation = useNavigation();\n\n  // Trigger manual scroll restoration while we're active\n  React.useEffect(() => {\n    window.history.scrollRestoration = \"manual\";\n    return () => {\n      window.history.scrollRestoration = \"auto\";\n    };\n  }, []);\n\n  // Save positions on pagehide\n  usePageHide(\n    React.useCallback(() => {\n      if (navigation.state === \"idle\") {\n        let key = (getKey ? getKey(location, matches) : null) || location.key;\n        savedScrollPositions[key] = window.scrollY;\n      }\n      try {\n        sessionStorage.setItem(\n          storageKey || SCROLL_RESTORATION_STORAGE_KEY,\n          JSON.stringify(savedScrollPositions)\n        );\n      } catch (error) {\n        warning(\n          false,\n          `Failed to save scroll positions in sessionStorage, <ScrollRestoration /> will not work properly (${error}).`\n        );\n      }\n      window.history.scrollRestoration = \"auto\";\n    }, [storageKey, getKey, navigation.state, location, matches])\n  );\n\n  // Read in any saved scroll locations\n  if (typeof document !== \"undefined\") {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useLayoutEffect(() => {\n      try {\n        let sessionPositions = sessionStorage.getItem(\n          storageKey || SCROLL_RESTORATION_STORAGE_KEY\n        );\n        if (sessionPositions) {\n          savedScrollPositions = JSON.parse(sessionPositions);\n        }\n      } catch (e) {\n        // no-op, use default empty object\n      }\n    }, [storageKey]);\n\n    // Enable scroll restoration in the router\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useLayoutEffect(() => {\n      let getKeyWithoutBasename: GetScrollRestorationKeyFunction | undefined =\n        getKey && basename !== \"/\"\n          ? (location, matches) =>\n              getKey(\n                // Strip the basename to match useLocation()\n                {\n                  ...location,\n                  pathname:\n                    stripBasename(location.pathname, basename) ||\n                    location.pathname,\n                },\n                matches\n              )\n          : getKey;\n      let disableScrollRestoration = router?.enableScrollRestoration(\n        savedScrollPositions,\n        () => window.scrollY,\n        getKeyWithoutBasename\n      );\n      return () => disableScrollRestoration && disableScrollRestoration();\n    }, [router, basename, getKey]);\n\n    // Restore scrolling when state.restoreScrollPosition changes\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useLayoutEffect(() => {\n      // Explicit false means don't do anything (used for submissions)\n      if (restoreScrollPosition === false) {\n        return;\n      }\n\n      // been here before, scroll to it\n      if (typeof restoreScrollPosition === \"number\") {\n        window.scrollTo(0, restoreScrollPosition);\n        return;\n      }\n\n      // try to scroll to the hash\n      if (location.hash) {\n        let el = document.getElementById(\n          decodeURIComponent(location.hash.slice(1))\n        );\n        if (el) {\n          el.scrollIntoView();\n          return;\n        }\n      }\n\n      // Don't reset if this navigation opted out\n      if (preventScrollReset === true) {\n        return;\n      }\n\n      // otherwise go to the top on new locations\n      window.scrollTo(0, 0);\n    }, [location, restoreScrollPosition, preventScrollReset]);\n  }\n}\n\nexport { useScrollRestoration as UNSAFE_useScrollRestoration };\n\n/**\n * Setup a callback to be fired on the window's `beforeunload` event. This is\n * useful for saving some data to `window.localStorage` just before the page\n * refreshes.\n *\n * Note: The `callback` argument should be a function created with\n * `React.useCallback()`.\n */\nexport function useBeforeUnload(\n  callback: (event: BeforeUnloadEvent) => any,\n  options?: { capture?: boolean }\n): void {\n  let { capture } = options || {};\n  React.useEffect(() => {\n    let opts = capture != null ? { capture } : undefined;\n    window.addEventListener(\"beforeunload\", callback, opts);\n    return () => {\n      window.removeEventListener(\"beforeunload\", callback, opts);\n    };\n  }, [callback, capture]);\n}\n\n/**\n * Setup a callback to be fired on the window's `pagehide` event. This is\n * useful for saving some data to `window.localStorage` just before the page\n * refreshes.  This event is better supported than beforeunload across browsers.\n *\n * Note: The `callback` argument should be a function created with\n * `React.useCallback()`.\n */\nfunction usePageHide(\n  callback: (event: PageTransitionEvent) => any,\n  options?: { capture?: boolean }\n): void {\n  let { capture } = options || {};\n  React.useEffect(() => {\n    let opts = capture != null ? { capture } : undefined;\n    window.addEventListener(\"pagehide\", callback, opts);\n    return () => {\n      window.removeEventListener(\"pagehide\", callback, opts);\n    };\n  }, [callback, capture]);\n}\n\n/**\n * Wrapper around useBlocker to show a window.confirm prompt to users instead\n * of building a custom UI with useBlocker.\n *\n * Warning: This has *a lot of rough edges* and behaves very differently (and\n * very incorrectly in some cases) across browsers if user click addition\n * back/forward navigations while the confirm is open.  Use at your own risk.\n */\nfunction usePrompt({\n  when,\n  message,\n}: {\n  when: boolean | BlockerFunction;\n  message: string;\n}) {\n  let blocker = useBlocker(when);\n\n  React.useEffect(() => {\n    if (blocker.state === \"blocked\") {\n      let proceed = window.confirm(message);\n      if (proceed) {\n        // This timeout is needed to avoid a weird \"race\" on POP navigations\n        // between the `window.history` revert navigation and the result of\n        // `window.confirm`\n        setTimeout(blocker.proceed, 0);\n      } else {\n        blocker.reset();\n      }\n    }\n  }, [blocker, message]);\n\n  React.useEffect(() => {\n    if (blocker.state === \"blocked\" && !when) {\n      blocker.reset();\n    }\n  }, [blocker, when]);\n}\n\nexport { usePrompt as unstable_usePrompt };\n\n/**\n * Return a boolean indicating if there is an active view transition to the\n * given href.  You can use this value to render CSS classes or viewTransitionName\n * styles onto your elements\n *\n * @param href The destination href\n * @param [opts.relative] Relative routing type (\"route\" | \"path\")\n */\nfunction useViewTransitionState(\n  to: To,\n  opts: { relative?: RelativeRoutingType } = {}\n) {\n  let vtContext = React.useContext(ViewTransitionContext);\n\n  invariant(\n    vtContext != null,\n    \"`unstable_useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`.  \" +\n      \"Did you accidentally import `RouterProvider` from `react-router`?\"\n  );\n\n  let { basename } = useDataRouterContext(\n    DataRouterHook.useViewTransitionState\n  );\n  let path = useResolvedPath(to, { relative: opts.relative });\n  if (!vtContext.isTransitioning) {\n    return false;\n  }\n\n  let currentPath =\n    stripBasename(vtContext.currentLocation.pathname, basename) ||\n    vtContext.currentLocation.pathname;\n  let nextPath =\n    stripBasename(vtContext.nextLocation.pathname, basename) ||\n    vtContext.nextLocation.pathname;\n\n  // Transition is active if we're going to or coming from the indicated\n  // destination.  This ensures that other PUSH navigations that reverse\n  // an indicated transition apply.  I.e., on the list view you have:\n  //\n  //   <NavLink to=\"/details/1\" unstable_viewTransition>\n  //\n  // If you click the breadcrumb back to the list view:\n  //\n  //   <NavLink to=\"/list\" unstable_viewTransition>\n  //\n  // We should apply the transition because it's indicated as active going\n  // from /list -> /details/1 and therefore should be active on the reverse\n  // (even though this isn't strictly a POP reverse)\n  return (\n    matchPath(path.pathname, nextPath) != null ||\n    matchPath(path.pathname, currentPath) != null\n  );\n}\n\nexport { useViewTransitionState as unstable_useViewTransitionState };\n\n//#endregion\n","function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/*!\n * GSAP 3.12.5\n * https://gsap.com\n *\n * @license Copyright 2008-2024, GreenSock. All rights reserved.\n * Subject to the terms at https://gsap.com/standard-license or for\n * Club GSAP members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\nvar _config = {\n  autoSleep: 120,\n  force3D: \"auto\",\n  nullTargetWarn: 1,\n  units: {\n    lineHeight: \"\"\n  }\n},\n    _defaults = {\n  duration: .5,\n  overwrite: false,\n  delay: 0\n},\n    _suppressOverwrites,\n    _reverting,\n    _context,\n    _bigNum = 1e8,\n    _tinyNum = 1 / _bigNum,\n    _2PI = Math.PI * 2,\n    _HALF_PI = _2PI / 4,\n    _gsID = 0,\n    _sqrt = Math.sqrt,\n    _cos = Math.cos,\n    _sin = Math.sin,\n    _isString = function _isString(value) {\n  return typeof value === \"string\";\n},\n    _isFunction = function _isFunction(value) {\n  return typeof value === \"function\";\n},\n    _isNumber = function _isNumber(value) {\n  return typeof value === \"number\";\n},\n    _isUndefined = function _isUndefined(value) {\n  return typeof value === \"undefined\";\n},\n    _isObject = function _isObject(value) {\n  return typeof value === \"object\";\n},\n    _isNotFalse = function _isNotFalse(value) {\n  return value !== false;\n},\n    _windowExists = function _windowExists() {\n  return typeof window !== \"undefined\";\n},\n    _isFuncOrString = function _isFuncOrString(value) {\n  return _isFunction(value) || _isString(value);\n},\n    _isTypedArray = typeof ArrayBuffer === \"function\" && ArrayBuffer.isView || function () {},\n    // note: IE10 has ArrayBuffer, but NOT ArrayBuffer.isView().\n_isArray = Array.isArray,\n    _strictNumExp = /(?:-?\\.?\\d|\\.)+/gi,\n    //only numbers (including negatives and decimals) but NOT relative values.\n_numExp = /[-+=.]*\\d+[.e\\-+]*\\d*[e\\-+]*\\d*/g,\n    //finds any numbers, including ones that start with += or -=, negative numbers, and ones in scientific notation like 1e-8.\n_numWithUnitExp = /[-+=.]*\\d+[.e-]*\\d*[a-z%]*/g,\n    _complexStringNumExp = /[-+=.]*\\d+\\.?\\d*(?:e-|e\\+)?\\d*/gi,\n    //duplicate so that while we're looping through matches from exec(), it doesn't contaminate the lastIndex of _numExp which we use to search for colors too.\n_relExp = /[+-]=-?[.\\d]+/,\n    _delimitedValueExp = /[^,'\"\\[\\]\\s]+/gi,\n    // previously /[#\\-+.]*\\b[a-z\\d\\-=+%.]+/gi but didn't catch special characters.\n_unitExp = /^[+\\-=e\\s\\d]*\\d+[.\\d]*([a-z]*|%)\\s*$/i,\n    _globalTimeline,\n    _win,\n    _coreInitted,\n    _doc,\n    _globals = {},\n    _installScope = {},\n    _coreReady,\n    _install = function _install(scope) {\n  return (_installScope = _merge(scope, _globals)) && gsap;\n},\n    _missingPlugin = function _missingPlugin(property, value) {\n  return console.warn(\"Invalid property\", property, \"set to\", value, \"Missing plugin? gsap.registerPlugin()\");\n},\n    _warn = function _warn(message, suppress) {\n  return !suppress && console.warn(message);\n},\n    _addGlobal = function _addGlobal(name, obj) {\n  return name && (_globals[name] = obj) && _installScope && (_installScope[name] = obj) || _globals;\n},\n    _emptyFunc = function _emptyFunc() {\n  return 0;\n},\n    _startAtRevertConfig = {\n  suppressEvents: true,\n  isStart: true,\n  kill: false\n},\n    _revertConfigNoKill = {\n  suppressEvents: true,\n  kill: false\n},\n    _revertConfig = {\n  suppressEvents: true\n},\n    _reservedProps = {},\n    _lazyTweens = [],\n    _lazyLookup = {},\n    _lastRenderedFrame,\n    _plugins = {},\n    _effects = {},\n    _nextGCFrame = 30,\n    _harnessPlugins = [],\n    _callbackNames = \"\",\n    _harness = function _harness(targets) {\n  var target = targets[0],\n      harnessPlugin,\n      i;\n  _isObject(target) || _isFunction(target) || (targets = [targets]);\n\n  if (!(harnessPlugin = (target._gsap || {}).harness)) {\n    // find the first target with a harness. We assume targets passed into an animation will be of similar type, meaning the same kind of harness can be used for them all (performance optimization)\n    i = _harnessPlugins.length;\n\n    while (i-- && !_harnessPlugins[i].targetTest(target)) {}\n\n    harnessPlugin = _harnessPlugins[i];\n  }\n\n  i = targets.length;\n\n  while (i--) {\n    targets[i] && (targets[i]._gsap || (targets[i]._gsap = new GSCache(targets[i], harnessPlugin))) || targets.splice(i, 1);\n  }\n\n  return targets;\n},\n    _getCache = function _getCache(target) {\n  return target._gsap || _harness(toArray(target))[0]._gsap;\n},\n    _getProperty = function _getProperty(target, property, v) {\n  return (v = target[property]) && _isFunction(v) ? target[property]() : _isUndefined(v) && target.getAttribute && target.getAttribute(property) || v;\n},\n    _forEachName = function _forEachName(names, func) {\n  return (names = names.split(\",\")).forEach(func) || names;\n},\n    //split a comma-delimited list of names into an array, then run a forEach() function and return the split array (this is just a way to consolidate/shorten some code).\n_round = function _round(value) {\n  return Math.round(value * 100000) / 100000 || 0;\n},\n    _roundPrecise = function _roundPrecise(value) {\n  return Math.round(value * 10000000) / 10000000 || 0;\n},\n    // increased precision mostly for timing values.\n_parseRelative = function _parseRelative(start, value) {\n  var operator = value.charAt(0),\n      end = parseFloat(value.substr(2));\n  start = parseFloat(start);\n  return operator === \"+\" ? start + end : operator === \"-\" ? start - end : operator === \"*\" ? start * end : start / end;\n},\n    _arrayContainsAny = function _arrayContainsAny(toSearch, toFind) {\n  //searches one array to find matches for any of the items in the toFind array. As soon as one is found, it returns true. It does NOT return all the matches; it's simply a boolean search.\n  var l = toFind.length,\n      i = 0;\n\n  for (; toSearch.indexOf(toFind[i]) < 0 && ++i < l;) {}\n\n  return i < l;\n},\n    _lazyRender = function _lazyRender() {\n  var l = _lazyTweens.length,\n      a = _lazyTweens.slice(0),\n      i,\n      tween;\n\n  _lazyLookup = {};\n  _lazyTweens.length = 0;\n\n  for (i = 0; i < l; i++) {\n    tween = a[i];\n    tween && tween._lazy && (tween.render(tween._lazy[0], tween._lazy[1], true)._lazy = 0);\n  }\n},\n    _lazySafeRender = function _lazySafeRender(animation, time, suppressEvents, force) {\n  _lazyTweens.length && !_reverting && _lazyRender();\n  animation.render(time, suppressEvents, force || _reverting && time < 0 && (animation._initted || animation._startAt));\n  _lazyTweens.length && !_reverting && _lazyRender(); //in case rendering caused any tweens to lazy-init, we should render them because typically when someone calls seek() or time() or progress(), they expect an immediate render.\n},\n    _numericIfPossible = function _numericIfPossible(value) {\n  var n = parseFloat(value);\n  return (n || n === 0) && (value + \"\").match(_delimitedValueExp).length < 2 ? n : _isString(value) ? value.trim() : value;\n},\n    _passThrough = function _passThrough(p) {\n  return p;\n},\n    _setDefaults = function _setDefaults(obj, defaults) {\n  for (var p in defaults) {\n    p in obj || (obj[p] = defaults[p]);\n  }\n\n  return obj;\n},\n    _setKeyframeDefaults = function _setKeyframeDefaults(excludeDuration) {\n  return function (obj, defaults) {\n    for (var p in defaults) {\n      p in obj || p === \"duration\" && excludeDuration || p === \"ease\" || (obj[p] = defaults[p]);\n    }\n  };\n},\n    _merge = function _merge(base, toMerge) {\n  for (var p in toMerge) {\n    base[p] = toMerge[p];\n  }\n\n  return base;\n},\n    _mergeDeep = function _mergeDeep(base, toMerge) {\n  for (var p in toMerge) {\n    p !== \"__proto__\" && p !== \"constructor\" && p !== \"prototype\" && (base[p] = _isObject(toMerge[p]) ? _mergeDeep(base[p] || (base[p] = {}), toMerge[p]) : toMerge[p]);\n  }\n\n  return base;\n},\n    _copyExcluding = function _copyExcluding(obj, excluding) {\n  var copy = {},\n      p;\n\n  for (p in obj) {\n    p in excluding || (copy[p] = obj[p]);\n  }\n\n  return copy;\n},\n    _inheritDefaults = function _inheritDefaults(vars) {\n  var parent = vars.parent || _globalTimeline,\n      func = vars.keyframes ? _setKeyframeDefaults(_isArray(vars.keyframes)) : _setDefaults;\n\n  if (_isNotFalse(vars.inherit)) {\n    while (parent) {\n      func(vars, parent.vars.defaults);\n      parent = parent.parent || parent._dp;\n    }\n  }\n\n  return vars;\n},\n    _arraysMatch = function _arraysMatch(a1, a2) {\n  var i = a1.length,\n      match = i === a2.length;\n\n  while (match && i-- && a1[i] === a2[i]) {}\n\n  return i < 0;\n},\n    _addLinkedListItem = function _addLinkedListItem(parent, child, firstProp, lastProp, sortBy) {\n  if (firstProp === void 0) {\n    firstProp = \"_first\";\n  }\n\n  if (lastProp === void 0) {\n    lastProp = \"_last\";\n  }\n\n  var prev = parent[lastProp],\n      t;\n\n  if (sortBy) {\n    t = child[sortBy];\n\n    while (prev && prev[sortBy] > t) {\n      prev = prev._prev;\n    }\n  }\n\n  if (prev) {\n    child._next = prev._next;\n    prev._next = child;\n  } else {\n    child._next = parent[firstProp];\n    parent[firstProp] = child;\n  }\n\n  if (child._next) {\n    child._next._prev = child;\n  } else {\n    parent[lastProp] = child;\n  }\n\n  child._prev = prev;\n  child.parent = child._dp = parent;\n  return child;\n},\n    _removeLinkedListItem = function _removeLinkedListItem(parent, child, firstProp, lastProp) {\n  if (firstProp === void 0) {\n    firstProp = \"_first\";\n  }\n\n  if (lastProp === void 0) {\n    lastProp = \"_last\";\n  }\n\n  var prev = child._prev,\n      next = child._next;\n\n  if (prev) {\n    prev._next = next;\n  } else if (parent[firstProp] === child) {\n    parent[firstProp] = next;\n  }\n\n  if (next) {\n    next._prev = prev;\n  } else if (parent[lastProp] === child) {\n    parent[lastProp] = prev;\n  }\n\n  child._next = child._prev = child.parent = null; // don't delete the _dp just so we can revert if necessary. But parent should be null to indicate the item isn't in a linked list.\n},\n    _removeFromParent = function _removeFromParent(child, onlyIfParentHasAutoRemove) {\n  child.parent && (!onlyIfParentHasAutoRemove || child.parent.autoRemoveChildren) && child.parent.remove && child.parent.remove(child);\n  child._act = 0;\n},\n    _uncache = function _uncache(animation, child) {\n  if (animation && (!child || child._end > animation._dur || child._start < 0)) {\n    // performance optimization: if a child animation is passed in we should only uncache if that child EXTENDS the animation (its end time is beyond the end)\n    var a = animation;\n\n    while (a) {\n      a._dirty = 1;\n      a = a.parent;\n    }\n  }\n\n  return animation;\n},\n    _recacheAncestors = function _recacheAncestors(animation) {\n  var parent = animation.parent;\n\n  while (parent && parent.parent) {\n    //sometimes we must force a re-sort of all children and update the duration/totalDuration of all ancestor timelines immediately in case, for example, in the middle of a render loop, one tween alters another tween's timeScale which shoves its startTime before 0, forcing the parent timeline to shift around and shiftChildren() which could affect that next tween's render (startTime). Doesn't matter for the root timeline though.\n    parent._dirty = 1;\n    parent.totalDuration();\n    parent = parent.parent;\n  }\n\n  return animation;\n},\n    _rewindStartAt = function _rewindStartAt(tween, totalTime, suppressEvents, force) {\n  return tween._startAt && (_reverting ? tween._startAt.revert(_revertConfigNoKill) : tween.vars.immediateRender && !tween.vars.autoRevert || tween._startAt.render(totalTime, true, force));\n},\n    _hasNoPausedAncestors = function _hasNoPausedAncestors(animation) {\n  return !animation || animation._ts && _hasNoPausedAncestors(animation.parent);\n},\n    _elapsedCycleDuration = function _elapsedCycleDuration(animation) {\n  return animation._repeat ? _animationCycle(animation._tTime, animation = animation.duration() + animation._rDelay) * animation : 0;\n},\n    // feed in the totalTime and cycleDuration and it'll return the cycle (iteration minus 1) and if the playhead is exactly at the very END, it will NOT bump up to the next cycle.\n_animationCycle = function _animationCycle(tTime, cycleDuration) {\n  var whole = Math.floor(tTime /= cycleDuration);\n  return tTime && whole === tTime ? whole - 1 : whole;\n},\n    _parentToChildTotalTime = function _parentToChildTotalTime(parentTime, child) {\n  return (parentTime - child._start) * child._ts + (child._ts >= 0 ? 0 : child._dirty ? child.totalDuration() : child._tDur);\n},\n    _setEnd = function _setEnd(animation) {\n  return animation._end = _roundPrecise(animation._start + (animation._tDur / Math.abs(animation._ts || animation._rts || _tinyNum) || 0));\n},\n    _alignPlayhead = function _alignPlayhead(animation, totalTime) {\n  // adjusts the animation's _start and _end according to the provided totalTime (only if the parent's smoothChildTiming is true and the animation isn't paused). It doesn't do any rendering or forcing things back into parent timelines, etc. - that's what totalTime() is for.\n  var parent = animation._dp;\n\n  if (parent && parent.smoothChildTiming && animation._ts) {\n    animation._start = _roundPrecise(parent._time - (animation._ts > 0 ? totalTime / animation._ts : ((animation._dirty ? animation.totalDuration() : animation._tDur) - totalTime) / -animation._ts));\n\n    _setEnd(animation);\n\n    parent._dirty || _uncache(parent, animation); //for performance improvement. If the parent's cache is already dirty, it already took care of marking the ancestors as dirty too, so skip the function call here.\n  }\n\n  return animation;\n},\n\n/*\n_totalTimeToTime = (clampedTotalTime, duration, repeat, repeatDelay, yoyo) => {\n\tlet cycleDuration = duration + repeatDelay,\n\t\ttime = _round(clampedTotalTime % cycleDuration);\n\tif (time > duration) {\n\t\ttime = duration;\n\t}\n\treturn (yoyo && (~~(clampedTotalTime / cycleDuration) & 1)) ? duration - time : time;\n},\n*/\n_postAddChecks = function _postAddChecks(timeline, child) {\n  var t;\n\n  if (child._time || !child._dur && child._initted || child._start < timeline._time && (child._dur || !child.add)) {\n    // in case, for example, the _start is moved on a tween that has already rendered, or if it's being inserted into a timeline BEFORE where the playhead is currently. Imagine it's at its end state, then the startTime is moved WAY later (after the end of this timeline), it should render at its beginning. Special case: if it's a timeline (has .add() method) and no duration, we can skip rendering because the user may be populating it AFTER adding it to a parent timeline (unconventional, but possible, and we wouldn't want it to get removed if the parent's autoRemoveChildren is true).\n    t = _parentToChildTotalTime(timeline.rawTime(), child);\n\n    if (!child._dur || _clamp(0, child.totalDuration(), t) - child._tTime > _tinyNum) {\n      child.render(t, true);\n    }\n  } //if the timeline has already ended but the inserted tween/timeline extends the duration, we should enable this timeline again so that it renders properly. We should also align the playhead with the parent timeline's when appropriate.\n\n\n  if (_uncache(timeline, child)._dp && timeline._initted && timeline._time >= timeline._dur && timeline._ts) {\n    //in case any of the ancestors had completed but should now be enabled...\n    if (timeline._dur < timeline.duration()) {\n      t = timeline;\n\n      while (t._dp) {\n        t.rawTime() >= 0 && t.totalTime(t._tTime); //moves the timeline (shifts its startTime) if necessary, and also enables it. If it's currently zero, though, it may not be scheduled to render until later so there's no need to force it to align with the current playhead position. Only move to catch up with the playhead.\n\n        t = t._dp;\n      }\n    }\n\n    timeline._zTime = -_tinyNum; // helps ensure that the next render() will be forced (crossingStart = true in render()), even if the duration hasn't changed (we're adding a child which would need to get rendered). Definitely an edge case. Note: we MUST do this AFTER the loop above where the totalTime() might trigger a render() because this _addToTimeline() method gets called from the Animation constructor, BEFORE tweens even record their targets, etc. so we wouldn't want things to get triggered in the wrong order.\n  }\n},\n    _addToTimeline = function _addToTimeline(timeline, child, position, skipChecks) {\n  child.parent && _removeFromParent(child);\n  child._start = _roundPrecise((_isNumber(position) ? position : position || timeline !== _globalTimeline ? _parsePosition(timeline, position, child) : timeline._time) + child._delay);\n  child._end = _roundPrecise(child._start + (child.totalDuration() / Math.abs(child.timeScale()) || 0));\n\n  _addLinkedListItem(timeline, child, \"_first\", \"_last\", timeline._sort ? \"_start\" : 0);\n\n  _isFromOrFromStart(child) || (timeline._recent = child);\n  skipChecks || _postAddChecks(timeline, child);\n  timeline._ts < 0 && _alignPlayhead(timeline, timeline._tTime); // if the timeline is reversed and the new child makes it longer, we may need to adjust the parent's _start (push it back)\n\n  return timeline;\n},\n    _scrollTrigger = function _scrollTrigger(animation, trigger) {\n  return (_globals.ScrollTrigger || _missingPlugin(\"scrollTrigger\", trigger)) && _globals.ScrollTrigger.create(trigger, animation);\n},\n    _attemptInitTween = function _attemptInitTween(tween, time, force, suppressEvents, tTime) {\n  _initTween(tween, time, tTime);\n\n  if (!tween._initted) {\n    return 1;\n  }\n\n  if (!force && tween._pt && !_reverting && (tween._dur && tween.vars.lazy !== false || !tween._dur && tween.vars.lazy) && _lastRenderedFrame !== _ticker.frame) {\n    _lazyTweens.push(tween);\n\n    tween._lazy = [tTime, suppressEvents];\n    return 1;\n  }\n},\n    _parentPlayheadIsBeforeStart = function _parentPlayheadIsBeforeStart(_ref) {\n  var parent = _ref.parent;\n  return parent && parent._ts && parent._initted && !parent._lock && (parent.rawTime() < 0 || _parentPlayheadIsBeforeStart(parent));\n},\n    // check parent's _lock because when a timeline repeats/yoyos and does its artificial wrapping, we shouldn't force the ratio back to 0\n_isFromOrFromStart = function _isFromOrFromStart(_ref2) {\n  var data = _ref2.data;\n  return data === \"isFromStart\" || data === \"isStart\";\n},\n    _renderZeroDurationTween = function _renderZeroDurationTween(tween, totalTime, suppressEvents, force) {\n  var prevRatio = tween.ratio,\n      ratio = totalTime < 0 || !totalTime && (!tween._start && _parentPlayheadIsBeforeStart(tween) && !(!tween._initted && _isFromOrFromStart(tween)) || (tween._ts < 0 || tween._dp._ts < 0) && !_isFromOrFromStart(tween)) ? 0 : 1,\n      // if the tween or its parent is reversed and the totalTime is 0, we should go to a ratio of 0. Edge case: if a from() or fromTo() stagger tween is placed later in a timeline, the \"startAt\" zero-duration tween could initially render at a time when the parent timeline's playhead is technically BEFORE where this tween is, so make sure that any \"from\" and \"fromTo\" startAt tweens are rendered the first time at a ratio of 1.\n  repeatDelay = tween._rDelay,\n      tTime = 0,\n      pt,\n      iteration,\n      prevIteration;\n\n  if (repeatDelay && tween._repeat) {\n    // in case there's a zero-duration tween that has a repeat with a repeatDelay\n    tTime = _clamp(0, tween._tDur, totalTime);\n    iteration = _animationCycle(tTime, repeatDelay);\n    tween._yoyo && iteration & 1 && (ratio = 1 - ratio);\n\n    if (iteration !== _animationCycle(tween._tTime, repeatDelay)) {\n      // if iteration changed\n      prevRatio = 1 - ratio;\n      tween.vars.repeatRefresh && tween._initted && tween.invalidate();\n    }\n  }\n\n  if (ratio !== prevRatio || _reverting || force || tween._zTime === _tinyNum || !totalTime && tween._zTime) {\n    if (!tween._initted && _attemptInitTween(tween, totalTime, force, suppressEvents, tTime)) {\n      // if we render the very beginning (time == 0) of a fromTo(), we must force the render (normal tweens wouldn't need to render at a time of 0 when the prevTime was also 0). This is also mandatory to make sure overwriting kicks in immediately.\n      return;\n    }\n\n    prevIteration = tween._zTime;\n    tween._zTime = totalTime || (suppressEvents ? _tinyNum : 0); // when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect.\n\n    suppressEvents || (suppressEvents = totalTime && !prevIteration); // if it was rendered previously at exactly 0 (_zTime) and now the playhead is moving away, DON'T fire callbacks otherwise they'll seem like duplicates.\n\n    tween.ratio = ratio;\n    tween._from && (ratio = 1 - ratio);\n    tween._time = 0;\n    tween._tTime = tTime;\n    pt = tween._pt;\n\n    while (pt) {\n      pt.r(ratio, pt.d);\n      pt = pt._next;\n    }\n\n    totalTime < 0 && _rewindStartAt(tween, totalTime, suppressEvents, true);\n    tween._onUpdate && !suppressEvents && _callback(tween, \"onUpdate\");\n    tTime && tween._repeat && !suppressEvents && tween.parent && _callback(tween, \"onRepeat\");\n\n    if ((totalTime >= tween._tDur || totalTime < 0) && tween.ratio === ratio) {\n      ratio && _removeFromParent(tween, 1);\n\n      if (!suppressEvents && !_reverting) {\n        _callback(tween, ratio ? \"onComplete\" : \"onReverseComplete\", true);\n\n        tween._prom && tween._prom();\n      }\n    }\n  } else if (!tween._zTime) {\n    tween._zTime = totalTime;\n  }\n},\n    _findNextPauseTween = function _findNextPauseTween(animation, prevTime, time) {\n  var child;\n\n  if (time > prevTime) {\n    child = animation._first;\n\n    while (child && child._start <= time) {\n      if (child.data === \"isPause\" && child._start > prevTime) {\n        return child;\n      }\n\n      child = child._next;\n    }\n  } else {\n    child = animation._last;\n\n    while (child && child._start >= time) {\n      if (child.data === \"isPause\" && child._start < prevTime) {\n        return child;\n      }\n\n      child = child._prev;\n    }\n  }\n},\n    _setDuration = function _setDuration(animation, duration, skipUncache, leavePlayhead) {\n  var repeat = animation._repeat,\n      dur = _roundPrecise(duration) || 0,\n      totalProgress = animation._tTime / animation._tDur;\n  totalProgress && !leavePlayhead && (animation._time *= dur / animation._dur);\n  animation._dur = dur;\n  animation._tDur = !repeat ? dur : repeat < 0 ? 1e10 : _roundPrecise(dur * (repeat + 1) + animation._rDelay * repeat);\n  totalProgress > 0 && !leavePlayhead && _alignPlayhead(animation, animation._tTime = animation._tDur * totalProgress);\n  animation.parent && _setEnd(animation);\n  skipUncache || _uncache(animation.parent, animation);\n  return animation;\n},\n    _onUpdateTotalDuration = function _onUpdateTotalDuration(animation) {\n  return animation instanceof Timeline ? _uncache(animation) : _setDuration(animation, animation._dur);\n},\n    _zeroPosition = {\n  _start: 0,\n  endTime: _emptyFunc,\n  totalDuration: _emptyFunc\n},\n    _parsePosition = function _parsePosition(animation, position, percentAnimation) {\n  var labels = animation.labels,\n      recent = animation._recent || _zeroPosition,\n      clippedDuration = animation.duration() >= _bigNum ? recent.endTime(false) : animation._dur,\n      //in case there's a child that infinitely repeats, users almost never intend for the insertion point of a new child to be based on a SUPER long value like that so we clip it and assume the most recently-added child's endTime should be used instead.\n  i,\n      offset,\n      isPercent;\n\n  if (_isString(position) && (isNaN(position) || position in labels)) {\n    //if the string is a number like \"1\", check to see if there's a label with that name, otherwise interpret it as a number (absolute value).\n    offset = position.charAt(0);\n    isPercent = position.substr(-1) === \"%\";\n    i = position.indexOf(\"=\");\n\n    if (offset === \"<\" || offset === \">\") {\n      i >= 0 && (position = position.replace(/=/, \"\"));\n      return (offset === \"<\" ? recent._start : recent.endTime(recent._repeat >= 0)) + (parseFloat(position.substr(1)) || 0) * (isPercent ? (i < 0 ? recent : percentAnimation).totalDuration() / 100 : 1);\n    }\n\n    if (i < 0) {\n      position in labels || (labels[position] = clippedDuration);\n      return labels[position];\n    }\n\n    offset = parseFloat(position.charAt(i - 1) + position.substr(i + 1));\n\n    if (isPercent && percentAnimation) {\n      offset = offset / 100 * (_isArray(percentAnimation) ? percentAnimation[0] : percentAnimation).totalDuration();\n    }\n\n    return i > 1 ? _parsePosition(animation, position.substr(0, i - 1), percentAnimation) + offset : clippedDuration + offset;\n  }\n\n  return position == null ? clippedDuration : +position;\n},\n    _createTweenType = function _createTweenType(type, params, timeline) {\n  var isLegacy = _isNumber(params[1]),\n      varsIndex = (isLegacy ? 2 : 1) + (type < 2 ? 0 : 1),\n      vars = params[varsIndex],\n      irVars,\n      parent;\n\n  isLegacy && (vars.duration = params[1]);\n  vars.parent = timeline;\n\n  if (type) {\n    irVars = vars;\n    parent = timeline;\n\n    while (parent && !(\"immediateRender\" in irVars)) {\n      // inheritance hasn't happened yet, but someone may have set a default in an ancestor timeline. We could do vars.immediateRender = _isNotFalse(_inheritDefaults(vars).immediateRender) but that'd exact a slight performance penalty because _inheritDefaults() also runs in the Tween constructor. We're paying a small kb price here to gain speed.\n      irVars = parent.vars.defaults || {};\n      parent = _isNotFalse(parent.vars.inherit) && parent.parent;\n    }\n\n    vars.immediateRender = _isNotFalse(irVars.immediateRender);\n    type < 2 ? vars.runBackwards = 1 : vars.startAt = params[varsIndex - 1]; // \"from\" vars\n  }\n\n  return new Tween(params[0], vars, params[varsIndex + 1]);\n},\n    _conditionalReturn = function _conditionalReturn(value, func) {\n  return value || value === 0 ? func(value) : func;\n},\n    _clamp = function _clamp(min, max, value) {\n  return value < min ? min : value > max ? max : value;\n},\n    getUnit = function getUnit(value, v) {\n  return !_isString(value) || !(v = _unitExp.exec(value)) ? \"\" : v[1];\n},\n    // note: protect against padded numbers as strings, like \"100.100\". That shouldn't return \"00\" as the unit. If it's numeric, return no unit.\nclamp = function clamp(min, max, value) {\n  return _conditionalReturn(value, function (v) {\n    return _clamp(min, max, v);\n  });\n},\n    _slice = [].slice,\n    _isArrayLike = function _isArrayLike(value, nonEmpty) {\n  return value && _isObject(value) && \"length\" in value && (!nonEmpty && !value.length || value.length - 1 in value && _isObject(value[0])) && !value.nodeType && value !== _win;\n},\n    _flatten = function _flatten(ar, leaveStrings, accumulator) {\n  if (accumulator === void 0) {\n    accumulator = [];\n  }\n\n  return ar.forEach(function (value) {\n    var _accumulator;\n\n    return _isString(value) && !leaveStrings || _isArrayLike(value, 1) ? (_accumulator = accumulator).push.apply(_accumulator, toArray(value)) : accumulator.push(value);\n  }) || accumulator;\n},\n    //takes any value and returns an array. If it's a string (and leaveStrings isn't true), it'll use document.querySelectorAll() and convert that to an array. It'll also accept iterables like jQuery objects.\ntoArray = function toArray(value, scope, leaveStrings) {\n  return _context && !scope && _context.selector ? _context.selector(value) : _isString(value) && !leaveStrings && (_coreInitted || !_wake()) ? _slice.call((scope || _doc).querySelectorAll(value), 0) : _isArray(value) ? _flatten(value, leaveStrings) : _isArrayLike(value) ? _slice.call(value, 0) : value ? [value] : [];\n},\n    selector = function selector(value) {\n  value = toArray(value)[0] || _warn(\"Invalid scope\") || {};\n  return function (v) {\n    var el = value.current || value.nativeElement || value;\n    return toArray(v, el.querySelectorAll ? el : el === value ? _warn(\"Invalid scope\") || _doc.createElement(\"div\") : value);\n  };\n},\n    shuffle = function shuffle(a) {\n  return a.sort(function () {\n    return .5 - Math.random();\n  });\n},\n    // alternative that's a bit faster and more reliably diverse but bigger:   for (let j, v, i = a.length; i; j = Math.floor(Math.random() * i), v = a[--i], a[i] = a[j], a[j] = v); return a;\n//for distributing values across an array. Can accept a number, a function or (most commonly) a function which can contain the following properties: {base, amount, from, ease, grid, axis, length, each}. Returns a function that expects the following parameters: index, target, array. Recognizes the following\ndistribute = function distribute(v) {\n  if (_isFunction(v)) {\n    return v;\n  }\n\n  var vars = _isObject(v) ? v : {\n    each: v\n  },\n      //n:1 is just to indicate v was a number; we leverage that later to set v according to the length we get. If a number is passed in, we treat it like the old stagger value where 0.1, for example, would mean that things would be distributed with 0.1 between each element in the array rather than a total \"amount\" that's chunked out among them all.\n  ease = _parseEase(vars.ease),\n      from = vars.from || 0,\n      base = parseFloat(vars.base) || 0,\n      cache = {},\n      isDecimal = from > 0 && from < 1,\n      ratios = isNaN(from) || isDecimal,\n      axis = vars.axis,\n      ratioX = from,\n      ratioY = from;\n\n  if (_isString(from)) {\n    ratioX = ratioY = {\n      center: .5,\n      edges: .5,\n      end: 1\n    }[from] || 0;\n  } else if (!isDecimal && ratios) {\n    ratioX = from[0];\n    ratioY = from[1];\n  }\n\n  return function (i, target, a) {\n    var l = (a || vars).length,\n        distances = cache[l],\n        originX,\n        originY,\n        x,\n        y,\n        d,\n        j,\n        max,\n        min,\n        wrapAt;\n\n    if (!distances) {\n      wrapAt = vars.grid === \"auto\" ? 0 : (vars.grid || [1, _bigNum])[1];\n\n      if (!wrapAt) {\n        max = -_bigNum;\n\n        while (max < (max = a[wrapAt++].getBoundingClientRect().left) && wrapAt < l) {}\n\n        wrapAt < l && wrapAt--;\n      }\n\n      distances = cache[l] = [];\n      originX = ratios ? Math.min(wrapAt, l) * ratioX - .5 : from % wrapAt;\n      originY = wrapAt === _bigNum ? 0 : ratios ? l * ratioY / wrapAt - .5 : from / wrapAt | 0;\n      max = 0;\n      min = _bigNum;\n\n      for (j = 0; j < l; j++) {\n        x = j % wrapAt - originX;\n        y = originY - (j / wrapAt | 0);\n        distances[j] = d = !axis ? _sqrt(x * x + y * y) : Math.abs(axis === \"y\" ? y : x);\n        d > max && (max = d);\n        d < min && (min = d);\n      }\n\n      from === \"random\" && shuffle(distances);\n      distances.max = max - min;\n      distances.min = min;\n      distances.v = l = (parseFloat(vars.amount) || parseFloat(vars.each) * (wrapAt > l ? l - 1 : !axis ? Math.max(wrapAt, l / wrapAt) : axis === \"y\" ? l / wrapAt : wrapAt) || 0) * (from === \"edges\" ? -1 : 1);\n      distances.b = l < 0 ? base - l : base;\n      distances.u = getUnit(vars.amount || vars.each) || 0; //unit\n\n      ease = ease && l < 0 ? _invertEase(ease) : ease;\n    }\n\n    l = (distances[i] - distances.min) / distances.max || 0;\n    return _roundPrecise(distances.b + (ease ? ease(l) : l) * distances.v) + distances.u; //round in order to work around floating point errors\n  };\n},\n    _roundModifier = function _roundModifier(v) {\n  //pass in 0.1 get a function that'll round to the nearest tenth, or 5 to round to the closest 5, or 0.001 to the closest 1000th, etc.\n  var p = Math.pow(10, ((v + \"\").split(\".\")[1] || \"\").length); //to avoid floating point math errors (like 24 * 0.1 == 2.4000000000000004), we chop off at a specific number of decimal places (much faster than toFixed())\n\n  return function (raw) {\n    var n = _roundPrecise(Math.round(parseFloat(raw) / v) * v * p);\n\n    return (n - n % 1) / p + (_isNumber(raw) ? 0 : getUnit(raw)); // n - n % 1 replaces Math.floor() in order to handle negative values properly. For example, Math.floor(-150.00000000000003) is 151!\n  };\n},\n    snap = function snap(snapTo, value) {\n  var isArray = _isArray(snapTo),\n      radius,\n      is2D;\n\n  if (!isArray && _isObject(snapTo)) {\n    radius = isArray = snapTo.radius || _bigNum;\n\n    if (snapTo.values) {\n      snapTo = toArray(snapTo.values);\n\n      if (is2D = !_isNumber(snapTo[0])) {\n        radius *= radius; //performance optimization so we don't have to Math.sqrt() in the loop.\n      }\n    } else {\n      snapTo = _roundModifier(snapTo.increment);\n    }\n  }\n\n  return _conditionalReturn(value, !isArray ? _roundModifier(snapTo) : _isFunction(snapTo) ? function (raw) {\n    is2D = snapTo(raw);\n    return Math.abs(is2D - raw) <= radius ? is2D : raw;\n  } : function (raw) {\n    var x = parseFloat(is2D ? raw.x : raw),\n        y = parseFloat(is2D ? raw.y : 0),\n        min = _bigNum,\n        closest = 0,\n        i = snapTo.length,\n        dx,\n        dy;\n\n    while (i--) {\n      if (is2D) {\n        dx = snapTo[i].x - x;\n        dy = snapTo[i].y - y;\n        dx = dx * dx + dy * dy;\n      } else {\n        dx = Math.abs(snapTo[i] - x);\n      }\n\n      if (dx < min) {\n        min = dx;\n        closest = i;\n      }\n    }\n\n    closest = !radius || min <= radius ? snapTo[closest] : raw;\n    return is2D || closest === raw || _isNumber(raw) ? closest : closest + getUnit(raw);\n  });\n},\n    random = function random(min, max, roundingIncrement, returnFunction) {\n  return _conditionalReturn(_isArray(min) ? !max : roundingIncrement === true ? !!(roundingIncrement = 0) : !returnFunction, function () {\n    return _isArray(min) ? min[~~(Math.random() * min.length)] : (roundingIncrement = roundingIncrement || 1e-5) && (returnFunction = roundingIncrement < 1 ? Math.pow(10, (roundingIncrement + \"\").length - 2) : 1) && Math.floor(Math.round((min - roundingIncrement / 2 + Math.random() * (max - min + roundingIncrement * .99)) / roundingIncrement) * roundingIncrement * returnFunction) / returnFunction;\n  });\n},\n    pipe = function pipe() {\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 (value) {\n    return functions.reduce(function (v, f) {\n      return f(v);\n    }, value);\n  };\n},\n    unitize = function unitize(func, unit) {\n  return function (value) {\n    return func(parseFloat(value)) + (unit || getUnit(value));\n  };\n},\n    normalize = function normalize(min, max, value) {\n  return mapRange(min, max, 0, 1, value);\n},\n    _wrapArray = function _wrapArray(a, wrapper, value) {\n  return _conditionalReturn(value, function (index) {\n    return a[~~wrapper(index)];\n  });\n},\n    wrap = function wrap(min, max, value) {\n  // NOTE: wrap() CANNOT be an arrow function! A very odd compiling bug causes problems (unrelated to GSAP).\n  var range = max - min;\n  return _isArray(min) ? _wrapArray(min, wrap(0, min.length), max) : _conditionalReturn(value, function (value) {\n    return (range + (value - min) % range) % range + min;\n  });\n},\n    wrapYoyo = function wrapYoyo(min, max, value) {\n  var range = max - min,\n      total = range * 2;\n  return _isArray(min) ? _wrapArray(min, wrapYoyo(0, min.length - 1), max) : _conditionalReturn(value, function (value) {\n    value = (total + (value - min) % total) % total || 0;\n    return min + (value > range ? total - value : value);\n  });\n},\n    _replaceRandom = function _replaceRandom(value) {\n  //replaces all occurrences of random(...) in a string with the calculated random value. can be a range like random(-100, 100, 5) or an array like random([0, 100, 500])\n  var prev = 0,\n      s = \"\",\n      i,\n      nums,\n      end,\n      isArray;\n\n  while (~(i = value.indexOf(\"random(\", prev))) {\n    end = value.indexOf(\")\", i);\n    isArray = value.charAt(i + 7) === \"[\";\n    nums = value.substr(i + 7, end - i - 7).match(isArray ? _delimitedValueExp : _strictNumExp);\n    s += value.substr(prev, i - prev) + random(isArray ? nums : +nums[0], isArray ? 0 : +nums[1], +nums[2] || 1e-5);\n    prev = end + 1;\n  }\n\n  return s + value.substr(prev, value.length - prev);\n},\n    mapRange = function mapRange(inMin, inMax, outMin, outMax, value) {\n  var inRange = inMax - inMin,\n      outRange = outMax - outMin;\n  return _conditionalReturn(value, function (value) {\n    return outMin + ((value - inMin) / inRange * outRange || 0);\n  });\n},\n    interpolate = function interpolate(start, end, progress, mutate) {\n  var func = isNaN(start + end) ? 0 : function (p) {\n    return (1 - p) * start + p * end;\n  };\n\n  if (!func) {\n    var isString = _isString(start),\n        master = {},\n        p,\n        i,\n        interpolators,\n        l,\n        il;\n\n    progress === true && (mutate = 1) && (progress = null);\n\n    if (isString) {\n      start = {\n        p: start\n      };\n      end = {\n        p: end\n      };\n    } else if (_isArray(start) && !_isArray(end)) {\n      interpolators = [];\n      l = start.length;\n      il = l - 2;\n\n      for (i = 1; i < l; i++) {\n        interpolators.push(interpolate(start[i - 1], start[i])); //build the interpolators up front as a performance optimization so that when the function is called many times, it can just reuse them.\n      }\n\n      l--;\n\n      func = function func(p) {\n        p *= l;\n        var i = Math.min(il, ~~p);\n        return interpolators[i](p - i);\n      };\n\n      progress = end;\n    } else if (!mutate) {\n      start = _merge(_isArray(start) ? [] : {}, start);\n    }\n\n    if (!interpolators) {\n      for (p in end) {\n        _addPropTween.call(master, start, p, \"get\", end[p]);\n      }\n\n      func = function func(p) {\n        return _renderPropTweens(p, master) || (isString ? start.p : start);\n      };\n    }\n  }\n\n  return _conditionalReturn(progress, func);\n},\n    _getLabelInDirection = function _getLabelInDirection(timeline, fromTime, backward) {\n  //used for nextLabel() and previousLabel()\n  var labels = timeline.labels,\n      min = _bigNum,\n      p,\n      distance,\n      label;\n\n  for (p in labels) {\n    distance = labels[p] - fromTime;\n\n    if (distance < 0 === !!backward && distance && min > (distance = Math.abs(distance))) {\n      label = p;\n      min = distance;\n    }\n  }\n\n  return label;\n},\n    _callback = function _callback(animation, type, executeLazyFirst) {\n  var v = animation.vars,\n      callback = v[type],\n      prevContext = _context,\n      context = animation._ctx,\n      params,\n      scope,\n      result;\n\n  if (!callback) {\n    return;\n  }\n\n  params = v[type + \"Params\"];\n  scope = v.callbackScope || animation;\n  executeLazyFirst && _lazyTweens.length && _lazyRender(); //in case rendering caused any tweens to lazy-init, we should render them because typically when a timeline finishes, users expect things to have rendered fully. Imagine an onUpdate on a timeline that reports/checks tweened values.\n\n  context && (_context = context);\n  result = params ? callback.apply(scope, params) : callback.call(scope);\n  _context = prevContext;\n  return result;\n},\n    _interrupt = function _interrupt(animation) {\n  _removeFromParent(animation);\n\n  animation.scrollTrigger && animation.scrollTrigger.kill(!!_reverting);\n  animation.progress() < 1 && _callback(animation, \"onInterrupt\");\n  return animation;\n},\n    _quickTween,\n    _registerPluginQueue = [],\n    _createPlugin = function _createPlugin(config) {\n  if (!config) return;\n  config = !config.name && config[\"default\"] || config; // UMD packaging wraps things oddly, so for example MotionPathHelper becomes {MotionPathHelper:MotionPathHelper, default:MotionPathHelper}.\n\n  if (_windowExists() || config.headless) {\n    // edge case: some build tools may pass in a null/undefined value\n    var name = config.name,\n        isFunc = _isFunction(config),\n        Plugin = name && !isFunc && config.init ? function () {\n      this._props = [];\n    } : config,\n        //in case someone passes in an object that's not a plugin, like CustomEase\n    instanceDefaults = {\n      init: _emptyFunc,\n      render: _renderPropTweens,\n      add: _addPropTween,\n      kill: _killPropTweensOf,\n      modifier: _addPluginModifier,\n      rawVars: 0\n    },\n        statics = {\n      targetTest: 0,\n      get: 0,\n      getSetter: _getSetter,\n      aliases: {},\n      register: 0\n    };\n\n    _wake();\n\n    if (config !== Plugin) {\n      if (_plugins[name]) {\n        return;\n      }\n\n      _setDefaults(Plugin, _setDefaults(_copyExcluding(config, instanceDefaults), statics)); //static methods\n\n\n      _merge(Plugin.prototype, _merge(instanceDefaults, _copyExcluding(config, statics))); //instance methods\n\n\n      _plugins[Plugin.prop = name] = Plugin;\n\n      if (config.targetTest) {\n        _harnessPlugins.push(Plugin);\n\n        _reservedProps[name] = 1;\n      }\n\n      name = (name === \"css\" ? \"CSS\" : name.charAt(0).toUpperCase() + name.substr(1)) + \"Plugin\"; //for the global name. \"motionPath\" should become MotionPathPlugin\n    }\n\n    _addGlobal(name, Plugin);\n\n    config.register && config.register(gsap, Plugin, PropTween);\n  } else {\n    _registerPluginQueue.push(config);\n  }\n},\n\n/*\n * --------------------------------------------------------------------------------------\n * COLORS\n * --------------------------------------------------------------------------------------\n */\n_255 = 255,\n    _colorLookup = {\n  aqua: [0, _255, _255],\n  lime: [0, _255, 0],\n  silver: [192, 192, 192],\n  black: [0, 0, 0],\n  maroon: [128, 0, 0],\n  teal: [0, 128, 128],\n  blue: [0, 0, _255],\n  navy: [0, 0, 128],\n  white: [_255, _255, _255],\n  olive: [128, 128, 0],\n  yellow: [_255, _255, 0],\n  orange: [_255, 165, 0],\n  gray: [128, 128, 128],\n  purple: [128, 0, 128],\n  green: [0, 128, 0],\n  red: [_255, 0, 0],\n  pink: [_255, 192, 203],\n  cyan: [0, _255, _255],\n  transparent: [_255, _255, _255, 0]\n},\n    // possible future idea to replace the hard-coded color name values - put this in the ticker.wake() where we set the _doc:\n// let ctx = _doc.createElement(\"canvas\").getContext(\"2d\");\n// _forEachName(\"aqua,lime,silver,black,maroon,teal,blue,navy,white,olive,yellow,orange,gray,purple,green,red,pink,cyan\", color => {ctx.fillStyle = color; _colorLookup[color] = splitColor(ctx.fillStyle)});\n_hue = function _hue(h, m1, m2) {\n  h += h < 0 ? 1 : h > 1 ? -1 : 0;\n  return (h * 6 < 1 ? m1 + (m2 - m1) * h * 6 : h < .5 ? m2 : h * 3 < 2 ? m1 + (m2 - m1) * (2 / 3 - h) * 6 : m1) * _255 + .5 | 0;\n},\n    splitColor = function splitColor(v, toHSL, forceAlpha) {\n  var a = !v ? _colorLookup.black : _isNumber(v) ? [v >> 16, v >> 8 & _255, v & _255] : 0,\n      r,\n      g,\n      b,\n      h,\n      s,\n      l,\n      max,\n      min,\n      d,\n      wasHSL;\n\n  if (!a) {\n    if (v.substr(-1) === \",\") {\n      //sometimes a trailing comma is included and we should chop it off (typically from a comma-delimited list of values like a textShadow:\"2px 2px 2px blue, 5px 5px 5px rgb(255,0,0)\" - in this example \"blue,\" has a trailing comma. We could strip it out inside parseComplex() but we'd need to do it to the beginning and ending values plus it wouldn't provide protection from other potential scenarios like if the user passes in a similar value.\n      v = v.substr(0, v.length - 1);\n    }\n\n    if (_colorLookup[v]) {\n      a = _colorLookup[v];\n    } else if (v.charAt(0) === \"#\") {\n      if (v.length < 6) {\n        //for shorthand like #9F0 or #9F0F (could have alpha)\n        r = v.charAt(1);\n        g = v.charAt(2);\n        b = v.charAt(3);\n        v = \"#\" + r + r + g + g + b + b + (v.length === 5 ? v.charAt(4) + v.charAt(4) : \"\");\n      }\n\n      if (v.length === 9) {\n        // hex with alpha, like #fd5e53ff\n        a = parseInt(v.substr(1, 6), 16);\n        return [a >> 16, a >> 8 & _255, a & _255, parseInt(v.substr(7), 16) / 255];\n      }\n\n      v = parseInt(v.substr(1), 16);\n      a = [v >> 16, v >> 8 & _255, v & _255];\n    } else if (v.substr(0, 3) === \"hsl\") {\n      a = wasHSL = v.match(_strictNumExp);\n\n      if (!toHSL) {\n        h = +a[0] % 360 / 360;\n        s = +a[1] / 100;\n        l = +a[2] / 100;\n        g = l <= .5 ? l * (s + 1) : l + s - l * s;\n        r = l * 2 - g;\n        a.length > 3 && (a[3] *= 1); //cast as number\n\n        a[0] = _hue(h + 1 / 3, r, g);\n        a[1] = _hue(h, r, g);\n        a[2] = _hue(h - 1 / 3, r, g);\n      } else if (~v.indexOf(\"=\")) {\n        //if relative values are found, just return the raw strings with the relative prefixes in place.\n        a = v.match(_numExp);\n        forceAlpha && a.length < 4 && (a[3] = 1);\n        return a;\n      }\n    } else {\n      a = v.match(_strictNumExp) || _colorLookup.transparent;\n    }\n\n    a = a.map(Number);\n  }\n\n  if (toHSL && !wasHSL) {\n    r = a[0] / _255;\n    g = a[1] / _255;\n    b = a[2] / _255;\n    max = Math.max(r, g, b);\n    min = Math.min(r, g, b);\n    l = (max + min) / 2;\n\n    if (max === min) {\n      h = s = 0;\n    } else {\n      d = max - min;\n      s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n      h = max === r ? (g - b) / d + (g < b ? 6 : 0) : max === g ? (b - r) / d + 2 : (r - g) / d + 4;\n      h *= 60;\n    }\n\n    a[0] = ~~(h + .5);\n    a[1] = ~~(s * 100 + .5);\n    a[2] = ~~(l * 100 + .5);\n  }\n\n  forceAlpha && a.length < 4 && (a[3] = 1);\n  return a;\n},\n    _colorOrderData = function _colorOrderData(v) {\n  // strips out the colors from the string, finds all the numeric slots (with units) and returns an array of those. The Array also has a \"c\" property which is an Array of the index values where the colors belong. This is to help work around issues where there's a mis-matched order of color/numeric data like drop-shadow(#f00 0px 1px 2px) and drop-shadow(0x 1px 2px #f00). This is basically a helper function used in _formatColors()\n  var values = [],\n      c = [],\n      i = -1;\n  v.split(_colorExp).forEach(function (v) {\n    var a = v.match(_numWithUnitExp) || [];\n    values.push.apply(values, a);\n    c.push(i += a.length + 1);\n  });\n  values.c = c;\n  return values;\n},\n    _formatColors = function _formatColors(s, toHSL, orderMatchData) {\n  var result = \"\",\n      colors = (s + result).match(_colorExp),\n      type = toHSL ? \"hsla(\" : \"rgba(\",\n      i = 0,\n      c,\n      shell,\n      d,\n      l;\n\n  if (!colors) {\n    return s;\n  }\n\n  colors = colors.map(function (color) {\n    return (color = splitColor(color, toHSL, 1)) && type + (toHSL ? color[0] + \",\" + color[1] + \"%,\" + color[2] + \"%,\" + color[3] : color.join(\",\")) + \")\";\n  });\n\n  if (orderMatchData) {\n    d = _colorOrderData(s);\n    c = orderMatchData.c;\n\n    if (c.join(result) !== d.c.join(result)) {\n      shell = s.replace(_colorExp, \"1\").split(_numWithUnitExp);\n      l = shell.length - 1;\n\n      for (; i < l; i++) {\n        result += shell[i] + (~c.indexOf(i) ? colors.shift() || type + \"0,0,0,0)\" : (d.length ? d : colors.length ? colors : orderMatchData).shift());\n      }\n    }\n  }\n\n  if (!shell) {\n    shell = s.split(_colorExp);\n    l = shell.length - 1;\n\n    for (; i < l; i++) {\n      result += shell[i] + colors[i];\n    }\n  }\n\n  return result + shell[l];\n},\n    _colorExp = function () {\n  var s = \"(?:\\\\b(?:(?:rgb|rgba|hsl|hsla)\\\\(.+?\\\\))|\\\\B#(?:[0-9a-f]{3,4}){1,2}\\\\b\",\n      //we'll dynamically build this Regular Expression to conserve file size. After building it, it will be able to find rgb(), rgba(), # (hexadecimal), and named color values like red, blue, purple, etc.,\n  p;\n\n  for (p in _colorLookup) {\n    s += \"|\" + p + \"\\\\b\";\n  }\n\n  return new RegExp(s + \")\", \"gi\");\n}(),\n    _hslExp = /hsl[a]?\\(/,\n    _colorStringFilter = function _colorStringFilter(a) {\n  var combined = a.join(\" \"),\n      toHSL;\n  _colorExp.lastIndex = 0;\n\n  if (_colorExp.test(combined)) {\n    toHSL = _hslExp.test(combined);\n    a[1] = _formatColors(a[1], toHSL);\n    a[0] = _formatColors(a[0], toHSL, _colorOrderData(a[1])); // make sure the order of numbers/colors match with the END value.\n\n    return true;\n  }\n},\n\n/*\n * --------------------------------------------------------------------------------------\n * TICKER\n * --------------------------------------------------------------------------------------\n */\n_tickerActive,\n    _ticker = function () {\n  var _getTime = Date.now,\n      _lagThreshold = 500,\n      _adjustedLag = 33,\n      _startTime = _getTime(),\n      _lastUpdate = _startTime,\n      _gap = 1000 / 240,\n      _nextTime = _gap,\n      _listeners = [],\n      _id,\n      _req,\n      _raf,\n      _self,\n      _delta,\n      _i,\n      _tick = function _tick(v) {\n    var elapsed = _getTime() - _lastUpdate,\n        manual = v === true,\n        overlap,\n        dispatch,\n        time,\n        frame;\n\n    (elapsed > _lagThreshold || elapsed < 0) && (_startTime += elapsed - _adjustedLag);\n    _lastUpdate += elapsed;\n    time = _lastUpdate - _startTime;\n    overlap = time - _nextTime;\n\n    if (overlap > 0 || manual) {\n      frame = ++_self.frame;\n      _delta = time - _self.time * 1000;\n      _self.time = time = time / 1000;\n      _nextTime += overlap + (overlap >= _gap ? 4 : _gap - overlap);\n      dispatch = 1;\n    }\n\n    manual || (_id = _req(_tick)); //make sure the request is made before we dispatch the \"tick\" event so that timing is maintained. Otherwise, if processing the \"tick\" requires a bunch of time (like 15ms) and we're using a setTimeout() that's based on 16.7ms, it'd technically take 31.7ms between frames otherwise.\n\n    if (dispatch) {\n      for (_i = 0; _i < _listeners.length; _i++) {\n        // use _i and check _listeners.length instead of a variable because a listener could get removed during the loop, and if that happens to an element less than the current index, it'd throw things off in the loop.\n        _listeners[_i](time, _delta, frame, v);\n      }\n    }\n  };\n\n  _self = {\n    time: 0,\n    frame: 0,\n    tick: function tick() {\n      _tick(true);\n    },\n    deltaRatio: function deltaRatio(fps) {\n      return _delta / (1000 / (fps || 60));\n    },\n    wake: function wake() {\n      if (_coreReady) {\n        if (!_coreInitted && _windowExists()) {\n          _win = _coreInitted = window;\n          _doc = _win.document || {};\n          _globals.gsap = gsap;\n          (_win.gsapVersions || (_win.gsapVersions = [])).push(gsap.version);\n\n          _install(_installScope || _win.GreenSockGlobals || !_win.gsap && _win || {});\n\n          _registerPluginQueue.forEach(_createPlugin);\n        }\n\n        _raf = typeof requestAnimationFrame !== \"undefined\" && requestAnimationFrame;\n        _id && _self.sleep();\n\n        _req = _raf || function (f) {\n          return setTimeout(f, _nextTime - _self.time * 1000 + 1 | 0);\n        };\n\n        _tickerActive = 1;\n\n        _tick(2);\n      }\n    },\n    sleep: function sleep() {\n      (_raf ? cancelAnimationFrame : clearTimeout)(_id);\n      _tickerActive = 0;\n      _req = _emptyFunc;\n    },\n    lagSmoothing: function lagSmoothing(threshold, adjustedLag) {\n      _lagThreshold = threshold || Infinity; // zero should be interpreted as basically unlimited\n\n      _adjustedLag = Math.min(adjustedLag || 33, _lagThreshold);\n    },\n    fps: function fps(_fps) {\n      _gap = 1000 / (_fps || 240);\n      _nextTime = _self.time * 1000 + _gap;\n    },\n    add: function add(callback, once, prioritize) {\n      var func = once ? function (t, d, f, v) {\n        callback(t, d, f, v);\n\n        _self.remove(func);\n      } : callback;\n\n      _self.remove(callback);\n\n      _listeners[prioritize ? \"unshift\" : \"push\"](func);\n\n      _wake();\n\n      return func;\n    },\n    remove: function remove(callback, i) {\n      ~(i = _listeners.indexOf(callback)) && _listeners.splice(i, 1) && _i >= i && _i--;\n    },\n    _listeners: _listeners\n  };\n  return _self;\n}(),\n    _wake = function _wake() {\n  return !_tickerActive && _ticker.wake();\n},\n    //also ensures the core classes are initialized.\n\n/*\n* -------------------------------------------------\n* EASING\n* -------------------------------------------------\n*/\n_easeMap = {},\n    _customEaseExp = /^[\\d.\\-M][\\d.\\-,\\s]/,\n    _quotesExp = /[\"']/g,\n    _parseObjectInString = function _parseObjectInString(value) {\n  //takes a string like \"{wiggles:10, type:anticipate})\" and turns it into a real object. Notice it ends in \")\" and includes the {} wrappers. This is because we only use this function for parsing ease configs and prioritized optimization rather than reusability.\n  var obj = {},\n      split = value.substr(1, value.length - 3).split(\":\"),\n      key = split[0],\n      i = 1,\n      l = split.length,\n      index,\n      val,\n      parsedVal;\n\n  for (; i < l; i++) {\n    val = split[i];\n    index = i !== l - 1 ? val.lastIndexOf(\",\") : val.length;\n    parsedVal = val.substr(0, index);\n    obj[key] = isNaN(parsedVal) ? parsedVal.replace(_quotesExp, \"\").trim() : +parsedVal;\n    key = val.substr(index + 1).trim();\n  }\n\n  return obj;\n},\n    _valueInParentheses = function _valueInParentheses(value) {\n  var open = value.indexOf(\"(\") + 1,\n      close = value.indexOf(\")\"),\n      nested = value.indexOf(\"(\", open);\n  return value.substring(open, ~nested && nested < close ? value.indexOf(\")\", close + 1) : close);\n},\n    _configEaseFromString = function _configEaseFromString(name) {\n  //name can be a string like \"elastic.out(1,0.5)\", and pass in _easeMap as obj and it'll parse it out and call the actual function like _easeMap.Elastic.easeOut.config(1,0.5). It will also parse custom ease strings as long as CustomEase is loaded and registered (internally as _easeMap._CE).\n  var split = (name + \"\").split(\"(\"),\n      ease = _easeMap[split[0]];\n  return ease && split.length > 1 && ease.config ? ease.config.apply(null, ~name.indexOf(\"{\") ? [_parseObjectInString(split[1])] : _valueInParentheses(name).split(\",\").map(_numericIfPossible)) : _easeMap._CE && _customEaseExp.test(name) ? _easeMap._CE(\"\", name) : ease;\n},\n    _invertEase = function _invertEase(ease) {\n  return function (p) {\n    return 1 - ease(1 - p);\n  };\n},\n    // allow yoyoEase to be set in children and have those affected when the parent/ancestor timeline yoyos.\n_propagateYoyoEase = function _propagateYoyoEase(timeline, isYoyo) {\n  var child = timeline._first,\n      ease;\n\n  while (child) {\n    if (child instanceof Timeline) {\n      _propagateYoyoEase(child, isYoyo);\n    } else if (child.vars.yoyoEase && (!child._yoyo || !child._repeat) && child._yoyo !== isYoyo) {\n      if (child.timeline) {\n        _propagateYoyoEase(child.timeline, isYoyo);\n      } else {\n        ease = child._ease;\n        child._ease = child._yEase;\n        child._yEase = ease;\n        child._yoyo = isYoyo;\n      }\n    }\n\n    child = child._next;\n  }\n},\n    _parseEase = function _parseEase(ease, defaultEase) {\n  return !ease ? defaultEase : (_isFunction(ease) ? ease : _easeMap[ease] || _configEaseFromString(ease)) || defaultEase;\n},\n    _insertEase = function _insertEase(names, easeIn, easeOut, easeInOut) {\n  if (easeOut === void 0) {\n    easeOut = function easeOut(p) {\n      return 1 - easeIn(1 - p);\n    };\n  }\n\n  if (easeInOut === void 0) {\n    easeInOut = function easeInOut(p) {\n      return p < .5 ? easeIn(p * 2) / 2 : 1 - easeIn((1 - p) * 2) / 2;\n    };\n  }\n\n  var ease = {\n    easeIn: easeIn,\n    easeOut: easeOut,\n    easeInOut: easeInOut\n  },\n      lowercaseName;\n\n  _forEachName(names, function (name) {\n    _easeMap[name] = _globals[name] = ease;\n    _easeMap[lowercaseName = name.toLowerCase()] = easeOut;\n\n    for (var p in ease) {\n      _easeMap[lowercaseName + (p === \"easeIn\" ? \".in\" : p === \"easeOut\" ? \".out\" : \".inOut\")] = _easeMap[name + \".\" + p] = ease[p];\n    }\n  });\n\n  return ease;\n},\n    _easeInOutFromOut = function _easeInOutFromOut(easeOut) {\n  return function (p) {\n    return p < .5 ? (1 - easeOut(1 - p * 2)) / 2 : .5 + easeOut((p - .5) * 2) / 2;\n  };\n},\n    _configElastic = function _configElastic(type, amplitude, period) {\n  var p1 = amplitude >= 1 ? amplitude : 1,\n      //note: if amplitude is < 1, we simply adjust the period for a more natural feel. Otherwise the math doesn't work right and the curve starts at 1.\n  p2 = (period || (type ? .3 : .45)) / (amplitude < 1 ? amplitude : 1),\n      p3 = p2 / _2PI * (Math.asin(1 / p1) || 0),\n      easeOut = function easeOut(p) {\n    return p === 1 ? 1 : p1 * Math.pow(2, -10 * p) * _sin((p - p3) * p2) + 1;\n  },\n      ease = type === \"out\" ? easeOut : type === \"in\" ? function (p) {\n    return 1 - easeOut(1 - p);\n  } : _easeInOutFromOut(easeOut);\n\n  p2 = _2PI / p2; //precalculate to optimize\n\n  ease.config = function (amplitude, period) {\n    return _configElastic(type, amplitude, period);\n  };\n\n  return ease;\n},\n    _configBack = function _configBack(type, overshoot) {\n  if (overshoot === void 0) {\n    overshoot = 1.70158;\n  }\n\n  var easeOut = function easeOut(p) {\n    return p ? --p * p * ((overshoot + 1) * p + overshoot) + 1 : 0;\n  },\n      ease = type === \"out\" ? easeOut : type === \"in\" ? function (p) {\n    return 1 - easeOut(1 - p);\n  } : _easeInOutFromOut(easeOut);\n\n  ease.config = function (overshoot) {\n    return _configBack(type, overshoot);\n  };\n\n  return ease;\n}; // a cheaper (kb and cpu) but more mild way to get a parameterized weighted ease by feeding in a value between -1 (easeIn) and 1 (easeOut) where 0 is linear.\n// _weightedEase = ratio => {\n// \tlet y = 0.5 + ratio / 2;\n// \treturn p => (2 * (1 - p) * p * y + p * p);\n// },\n// a stronger (but more expensive kb/cpu) parameterized weighted ease that lets you feed in a value between -1 (easeIn) and 1 (easeOut) where 0 is linear.\n// _weightedEaseStrong = ratio => {\n// \tratio = .5 + ratio / 2;\n// \tlet o = 1 / 3 * (ratio < .5 ? ratio : 1 - ratio),\n// \t\tb = ratio - o,\n// \t\tc = ratio + o;\n// \treturn p => p === 1 ? p : 3 * b * (1 - p) * (1 - p) * p + 3 * c * (1 - p) * p * p + p * p * p;\n// };\n\n\n_forEachName(\"Linear,Quad,Cubic,Quart,Quint,Strong\", function (name, i) {\n  var power = i < 5 ? i + 1 : i;\n\n  _insertEase(name + \",Power\" + (power - 1), i ? function (p) {\n    return Math.pow(p, power);\n  } : function (p) {\n    return p;\n  }, function (p) {\n    return 1 - Math.pow(1 - p, power);\n  }, function (p) {\n    return p < .5 ? Math.pow(p * 2, power) / 2 : 1 - Math.pow((1 - p) * 2, power) / 2;\n  });\n});\n\n_easeMap.Linear.easeNone = _easeMap.none = _easeMap.Linear.easeIn;\n\n_insertEase(\"Elastic\", _configElastic(\"in\"), _configElastic(\"out\"), _configElastic());\n\n(function (n, c) {\n  var n1 = 1 / c,\n      n2 = 2 * n1,\n      n3 = 2.5 * n1,\n      easeOut = function easeOut(p) {\n    return p < n1 ? n * p * p : p < n2 ? n * Math.pow(p - 1.5 / c, 2) + .75 : p < n3 ? n * (p -= 2.25 / c) * p + .9375 : n * Math.pow(p - 2.625 / c, 2) + .984375;\n  };\n\n  _insertEase(\"Bounce\", function (p) {\n    return 1 - easeOut(1 - p);\n  }, easeOut);\n})(7.5625, 2.75);\n\n_insertEase(\"Expo\", function (p) {\n  return p ? Math.pow(2, 10 * (p - 1)) : 0;\n});\n\n_insertEase(\"Circ\", function (p) {\n  return -(_sqrt(1 - p * p) - 1);\n});\n\n_insertEase(\"Sine\", function (p) {\n  return p === 1 ? 1 : -_cos(p * _HALF_PI) + 1;\n});\n\n_insertEase(\"Back\", _configBack(\"in\"), _configBack(\"out\"), _configBack());\n\n_easeMap.SteppedEase = _easeMap.steps = _globals.SteppedEase = {\n  config: function config(steps, immediateStart) {\n    if (steps === void 0) {\n      steps = 1;\n    }\n\n    var p1 = 1 / steps,\n        p2 = steps + (immediateStart ? 0 : 1),\n        p3 = immediateStart ? 1 : 0,\n        max = 1 - _tinyNum;\n    return function (p) {\n      return ((p2 * _clamp(0, max, p) | 0) + p3) * p1;\n    };\n  }\n};\n_defaults.ease = _easeMap[\"quad.out\"];\n\n_forEachName(\"onComplete,onUpdate,onStart,onRepeat,onReverseComplete,onInterrupt\", function (name) {\n  return _callbackNames += name + \",\" + name + \"Params,\";\n});\n/*\n * --------------------------------------------------------------------------------------\n * CACHE\n * --------------------------------------------------------------------------------------\n */\n\n\nexport var GSCache = function GSCache(target, harness) {\n  this.id = _gsID++;\n  target._gsap = this;\n  this.target = target;\n  this.harness = harness;\n  this.get = harness ? harness.get : _getProperty;\n  this.set = harness ? harness.getSetter : _getSetter;\n};\n/*\n * --------------------------------------------------------------------------------------\n * ANIMATION\n * --------------------------------------------------------------------------------------\n */\n\nexport var Animation = /*#__PURE__*/function () {\n  function Animation(vars) {\n    this.vars = vars;\n    this._delay = +vars.delay || 0;\n\n    if (this._repeat = vars.repeat === Infinity ? -2 : vars.repeat || 0) {\n      // TODO: repeat: Infinity on a timeline's children must flag that timeline internally and affect its totalDuration, otherwise it'll stop in the negative direction when reaching the start.\n      this._rDelay = vars.repeatDelay || 0;\n      this._yoyo = !!vars.yoyo || !!vars.yoyoEase;\n    }\n\n    this._ts = 1;\n\n    _setDuration(this, +vars.duration, 1, 1);\n\n    this.data = vars.data;\n\n    if (_context) {\n      this._ctx = _context;\n\n      _context.data.push(this);\n    }\n\n    _tickerActive || _ticker.wake();\n  }\n\n  var _proto = Animation.prototype;\n\n  _proto.delay = function delay(value) {\n    if (value || value === 0) {\n      this.parent && this.parent.smoothChildTiming && this.startTime(this._start + value - this._delay);\n      this._delay = value;\n      return this;\n    }\n\n    return this._delay;\n  };\n\n  _proto.duration = function duration(value) {\n    return arguments.length ? this.totalDuration(this._repeat > 0 ? value + (value + this._rDelay) * this._repeat : value) : this.totalDuration() && this._dur;\n  };\n\n  _proto.totalDuration = function totalDuration(value) {\n    if (!arguments.length) {\n      return this._tDur;\n    }\n\n    this._dirty = 0;\n    return _setDuration(this, this._repeat < 0 ? value : (value - this._repeat * this._rDelay) / (this._repeat + 1));\n  };\n\n  _proto.totalTime = function totalTime(_totalTime, suppressEvents) {\n    _wake();\n\n    if (!arguments.length) {\n      return this._tTime;\n    }\n\n    var parent = this._dp;\n\n    if (parent && parent.smoothChildTiming && this._ts) {\n      _alignPlayhead(this, _totalTime);\n\n      !parent._dp || parent.parent || _postAddChecks(parent, this); // edge case: if this is a child of a timeline that already completed, for example, we must re-activate the parent.\n      //in case any of the ancestor timelines had completed but should now be enabled, we should reset their totalTime() which will also ensure that they're lined up properly and enabled. Skip for animations that are on the root (wasteful). Example: a TimelineLite.exportRoot() is performed when there's a paused tween on the root, the export will not complete until that tween is unpaused, but imagine a child gets restarted later, after all [unpaused] tweens have completed. The start of that child would get pushed out, but one of the ancestors may have completed.\n\n      while (parent && parent.parent) {\n        if (parent.parent._time !== parent._start + (parent._ts >= 0 ? parent._tTime / parent._ts : (parent.totalDuration() - parent._tTime) / -parent._ts)) {\n          parent.totalTime(parent._tTime, true);\n        }\n\n        parent = parent.parent;\n      }\n\n      if (!this.parent && this._dp.autoRemoveChildren && (this._ts > 0 && _totalTime < this._tDur || this._ts < 0 && _totalTime > 0 || !this._tDur && !_totalTime)) {\n        //if the animation doesn't have a parent, put it back into its last parent (recorded as _dp for exactly cases like this). Limit to parents with autoRemoveChildren (like globalTimeline) so that if the user manually removes an animation from a timeline and then alters its playhead, it doesn't get added back in.\n        _addToTimeline(this._dp, this, this._start - this._delay);\n      }\n    }\n\n    if (this._tTime !== _totalTime || !this._dur && !suppressEvents || this._initted && Math.abs(this._zTime) === _tinyNum || !_totalTime && !this._initted && (this.add || this._ptLookup)) {\n      // check for _ptLookup on a Tween instance to ensure it has actually finished being instantiated, otherwise if this.reverse() gets called in the Animation constructor, it could trigger a render() here even though the _targets weren't populated, thus when _init() is called there won't be any PropTweens (it'll act like the tween is non-functional)\n      this._ts || (this._pTime = _totalTime); // otherwise, if an animation is paused, then the playhead is moved back to zero, then resumed, it'd revert back to the original time at the pause\n      //if (!this._lock) { // avoid endless recursion (not sure we need this yet or if it's worth the performance hit)\n      //   this._lock = 1;\n\n      _lazySafeRender(this, _totalTime, suppressEvents); //   this._lock = 0;\n      //}\n\n    }\n\n    return this;\n  };\n\n  _proto.time = function time(value, suppressEvents) {\n    return arguments.length ? this.totalTime(Math.min(this.totalDuration(), value + _elapsedCycleDuration(this)) % (this._dur + this._rDelay) || (value ? this._dur : 0), suppressEvents) : this._time; // note: if the modulus results in 0, the playhead could be exactly at the end or the beginning, and we always defer to the END with a non-zero value, otherwise if you set the time() to the very end (duration()), it would render at the START!\n  };\n\n  _proto.totalProgress = function totalProgress(value, suppressEvents) {\n    return arguments.length ? this.totalTime(this.totalDuration() * value, suppressEvents) : this.totalDuration() ? Math.min(1, this._tTime / this._tDur) : this.rawTime() > 0 ? 1 : 0;\n  };\n\n  _proto.progress = function progress(value, suppressEvents) {\n    return arguments.length ? this.totalTime(this.duration() * (this._yoyo && !(this.iteration() & 1) ? 1 - value : value) + _elapsedCycleDuration(this), suppressEvents) : this.duration() ? Math.min(1, this._time / this._dur) : this.rawTime() > 0 ? 1 : 0;\n  };\n\n  _proto.iteration = function iteration(value, suppressEvents) {\n    var cycleDuration = this.duration() + this._rDelay;\n\n    return arguments.length ? this.totalTime(this._time + (value - 1) * cycleDuration, suppressEvents) : this._repeat ? _animationCycle(this._tTime, cycleDuration) + 1 : 1;\n  } // potential future addition:\n  // isPlayingBackwards() {\n  // \tlet animation = this,\n  // \t\torientation = 1; // 1 = forward, -1 = backward\n  // \twhile (animation) {\n  // \t\torientation *= animation.reversed() || (animation.repeat() && !(animation.iteration() & 1)) ? -1 : 1;\n  // \t\tanimation = animation.parent;\n  // \t}\n  // \treturn orientation < 0;\n  // }\n  ;\n\n  _proto.timeScale = function timeScale(value, suppressEvents) {\n    if (!arguments.length) {\n      return this._rts === -_tinyNum ? 0 : this._rts; // recorded timeScale. Special case: if someone calls reverse() on an animation with timeScale of 0, we assign it -_tinyNum to remember it's reversed.\n    }\n\n    if (this._rts === value) {\n      return this;\n    }\n\n    var tTime = this.parent && this._ts ? _parentToChildTotalTime(this.parent._time, this) : this._tTime; // make sure to do the parentToChildTotalTime() BEFORE setting the new _ts because the old one must be used in that calculation.\n    // future addition? Up side: fast and minimal file size. Down side: only works on this animation; if a timeline is reversed, for example, its childrens' onReverse wouldn't get called.\n    //(+value < 0 && this._rts >= 0) && _callback(this, \"onReverse\", true);\n    // prioritize rendering where the parent's playhead lines up instead of this._tTime because there could be a tween that's animating another tween's timeScale in the same rendering loop (same parent), thus if the timeScale tween renders first, it would alter _start BEFORE _tTime was set on that tick (in the rendering loop), effectively freezing it until the timeScale tween finishes.\n\n    this._rts = +value || 0;\n    this._ts = this._ps || value === -_tinyNum ? 0 : this._rts; // _ts is the functional timeScale which would be 0 if the animation is paused.\n\n    this.totalTime(_clamp(-Math.abs(this._delay), this._tDur, tTime), suppressEvents !== false);\n\n    _setEnd(this); // if parent.smoothChildTiming was false, the end time didn't get updated in the _alignPlayhead() method, so do it here.\n\n\n    return _recacheAncestors(this);\n  };\n\n  _proto.paused = function paused(value) {\n    if (!arguments.length) {\n      return this._ps;\n    }\n\n    if (this._ps !== value) {\n      this._ps = value;\n\n      if (value) {\n        this._pTime = this._tTime || Math.max(-this._delay, this.rawTime()); // if the pause occurs during the delay phase, make sure that's factored in when resuming.\n\n        this._ts = this._act = 0; // _ts is the functional timeScale, so a paused tween would effectively have a timeScale of 0. We record the \"real\" timeScale as _rts (recorded time scale)\n      } else {\n        _wake();\n\n        this._ts = this._rts; //only defer to _pTime (pauseTime) if tTime is zero. Remember, someone could pause() an animation, then scrub the playhead and resume(). If the parent doesn't have smoothChildTiming, we render at the rawTime() because the startTime won't get updated.\n\n        this.totalTime(this.parent && !this.parent.smoothChildTiming ? this.rawTime() : this._tTime || this._pTime, this.progress() === 1 && Math.abs(this._zTime) !== _tinyNum && (this._tTime -= _tinyNum)); // edge case: animation.progress(1).pause().play() wouldn't render again because the playhead is already at the end, but the call to totalTime() below will add it back to its parent...and not remove it again (since removing only happens upon rendering at a new time). Offsetting the _tTime slightly is done simply to cause the final render in totalTime() that'll pop it off its timeline (if autoRemoveChildren is true, of course). Check to make sure _zTime isn't -_tinyNum to avoid an edge case where the playhead is pushed to the end but INSIDE a tween/callback, the timeline itself is paused thus halting rendering and leaving a few unrendered. When resuming, it wouldn't render those otherwise.\n      }\n    }\n\n    return this;\n  };\n\n  _proto.startTime = function startTime(value) {\n    if (arguments.length) {\n      this._start = value;\n      var parent = this.parent || this._dp;\n      parent && (parent._sort || !this.parent) && _addToTimeline(parent, this, value - this._delay);\n      return this;\n    }\n\n    return this._start;\n  };\n\n  _proto.endTime = function endTime(includeRepeats) {\n    return this._start + (_isNotFalse(includeRepeats) ? this.totalDuration() : this.duration()) / Math.abs(this._ts || 1);\n  };\n\n  _proto.rawTime = function rawTime(wrapRepeats) {\n    var parent = this.parent || this._dp; // _dp = detached parent\n\n    return !parent ? this._tTime : wrapRepeats && (!this._ts || this._repeat && this._time && this.totalProgress() < 1) ? this._tTime % (this._dur + this._rDelay) : !this._ts ? this._tTime : _parentToChildTotalTime(parent.rawTime(wrapRepeats), this);\n  };\n\n  _proto.revert = function revert(config) {\n    if (config === void 0) {\n      config = _revertConfig;\n    }\n\n    var prevIsReverting = _reverting;\n    _reverting = config;\n\n    if (this._initted || this._startAt) {\n      this.timeline && this.timeline.revert(config);\n      this.totalTime(-0.01, config.suppressEvents);\n    }\n\n    this.data !== \"nested\" && config.kill !== false && this.kill();\n    _reverting = prevIsReverting;\n    return this;\n  };\n\n  _proto.globalTime = function globalTime(rawTime) {\n    var animation = this,\n        time = arguments.length ? rawTime : animation.rawTime();\n\n    while (animation) {\n      time = animation._start + time / (Math.abs(animation._ts) || 1);\n      animation = animation._dp;\n    }\n\n    return !this.parent && this._sat ? this._sat.globalTime(rawTime) : time; // the _startAt tweens for .fromTo() and .from() that have immediateRender should always be FIRST in the timeline (important for context.revert()). \"_sat\" stands for _startAtTween, referring to the parent tween that created the _startAt. We must discern if that tween had immediateRender so that we can know whether or not to prioritize it in revert().\n  };\n\n  _proto.repeat = function repeat(value) {\n    if (arguments.length) {\n      this._repeat = value === Infinity ? -2 : value;\n      return _onUpdateTotalDuration(this);\n    }\n\n    return this._repeat === -2 ? Infinity : this._repeat;\n  };\n\n  _proto.repeatDelay = function repeatDelay(value) {\n    if (arguments.length) {\n      var time = this._time;\n      this._rDelay = value;\n\n      _onUpdateTotalDuration(this);\n\n      return time ? this.time(time) : this;\n    }\n\n    return this._rDelay;\n  };\n\n  _proto.yoyo = function yoyo(value) {\n    if (arguments.length) {\n      this._yoyo = value;\n      return this;\n    }\n\n    return this._yoyo;\n  };\n\n  _proto.seek = function seek(position, suppressEvents) {\n    return this.totalTime(_parsePosition(this, position), _isNotFalse(suppressEvents));\n  };\n\n  _proto.restart = function restart(includeDelay, suppressEvents) {\n    return this.play().totalTime(includeDelay ? -this._delay : 0, _isNotFalse(suppressEvents));\n  };\n\n  _proto.play = function play(from, suppressEvents) {\n    from != null && this.seek(from, suppressEvents);\n    return this.reversed(false).paused(false);\n  };\n\n  _proto.reverse = function reverse(from, suppressEvents) {\n    from != null && this.seek(from || this.totalDuration(), suppressEvents);\n    return this.reversed(true).paused(false);\n  };\n\n  _proto.pause = function pause(atTime, suppressEvents) {\n    atTime != null && this.seek(atTime, suppressEvents);\n    return this.paused(true);\n  };\n\n  _proto.resume = function resume() {\n    return this.paused(false);\n  };\n\n  _proto.reversed = function reversed(value) {\n    if (arguments.length) {\n      !!value !== this.reversed() && this.timeScale(-this._rts || (value ? -_tinyNum : 0)); // in case timeScale is zero, reversing would have no effect so we use _tinyNum.\n\n      return this;\n    }\n\n    return this._rts < 0;\n  };\n\n  _proto.invalidate = function invalidate() {\n    this._initted = this._act = 0;\n    this._zTime = -_tinyNum;\n    return this;\n  };\n\n  _proto.isActive = function isActive() {\n    var parent = this.parent || this._dp,\n        start = this._start,\n        rawTime;\n    return !!(!parent || this._ts && this._initted && parent.isActive() && (rawTime = parent.rawTime(true)) >= start && rawTime < this.endTime(true) - _tinyNum);\n  };\n\n  _proto.eventCallback = function eventCallback(type, callback, params) {\n    var vars = this.vars;\n\n    if (arguments.length > 1) {\n      if (!callback) {\n        delete vars[type];\n      } else {\n        vars[type] = callback;\n        params && (vars[type + \"Params\"] = params);\n        type === \"onUpdate\" && (this._onUpdate = callback);\n      }\n\n      return this;\n    }\n\n    return vars[type];\n  };\n\n  _proto.then = function then(onFulfilled) {\n    var self = this;\n    return new Promise(function (resolve) {\n      var f = _isFunction(onFulfilled) ? onFulfilled : _passThrough,\n          _resolve = function _resolve() {\n        var _then = self.then;\n        self.then = null; // temporarily null the then() method to avoid an infinite loop (see https://github.com/greensock/GSAP/issues/322)\n\n        _isFunction(f) && (f = f(self)) && (f.then || f === self) && (self.then = _then);\n        resolve(f);\n        self.then = _then;\n      };\n\n      if (self._initted && self.totalProgress() === 1 && self._ts >= 0 || !self._tTime && self._ts < 0) {\n        _resolve();\n      } else {\n        self._prom = _resolve;\n      }\n    });\n  };\n\n  _proto.kill = function kill() {\n    _interrupt(this);\n  };\n\n  return Animation;\n}();\n\n_setDefaults(Animation.prototype, {\n  _time: 0,\n  _start: 0,\n  _end: 0,\n  _tTime: 0,\n  _tDur: 0,\n  _dirty: 0,\n  _repeat: 0,\n  _yoyo: false,\n  parent: null,\n  _initted: false,\n  _rDelay: 0,\n  _ts: 1,\n  _dp: 0,\n  ratio: 0,\n  _zTime: -_tinyNum,\n  _prom: 0,\n  _ps: false,\n  _rts: 1\n});\n/*\n * -------------------------------------------------\n * TIMELINE\n * -------------------------------------------------\n */\n\n\nexport var Timeline = /*#__PURE__*/function (_Animation) {\n  _inheritsLoose(Timeline, _Animation);\n\n  function Timeline(vars, position) {\n    var _this;\n\n    if (vars === void 0) {\n      vars = {};\n    }\n\n    _this = _Animation.call(this, vars) || this;\n    _this.labels = {};\n    _this.smoothChildTiming = !!vars.smoothChildTiming;\n    _this.autoRemoveChildren = !!vars.autoRemoveChildren;\n    _this._sort = _isNotFalse(vars.sortChildren);\n    _globalTimeline && _addToTimeline(vars.parent || _globalTimeline, _assertThisInitialized(_this), position);\n    vars.reversed && _this.reverse();\n    vars.paused && _this.paused(true);\n    vars.scrollTrigger && _scrollTrigger(_assertThisInitialized(_this), vars.scrollTrigger);\n    return _this;\n  }\n\n  var _proto2 = Timeline.prototype;\n\n  _proto2.to = function to(targets, vars, position) {\n    _createTweenType(0, arguments, this);\n\n    return this;\n  };\n\n  _proto2.from = function from(targets, vars, position) {\n    _createTweenType(1, arguments, this);\n\n    return this;\n  };\n\n  _proto2.fromTo = function fromTo(targets, fromVars, toVars, position) {\n    _createTweenType(2, arguments, this);\n\n    return this;\n  };\n\n  _proto2.set = function set(targets, vars, position) {\n    vars.duration = 0;\n    vars.parent = this;\n    _inheritDefaults(vars).repeatDelay || (vars.repeat = 0);\n    vars.immediateRender = !!vars.immediateRender;\n    new Tween(targets, vars, _parsePosition(this, position), 1);\n    return this;\n  };\n\n  _proto2.call = function call(callback, params, position) {\n    return _addToTimeline(this, Tween.delayedCall(0, callback, params), position);\n  } //ONLY for backward compatibility! Maybe delete?\n  ;\n\n  _proto2.staggerTo = function staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {\n    vars.duration = duration;\n    vars.stagger = vars.stagger || stagger;\n    vars.onComplete = onCompleteAll;\n    vars.onCompleteParams = onCompleteAllParams;\n    vars.parent = this;\n    new Tween(targets, vars, _parsePosition(this, position));\n    return this;\n  };\n\n  _proto2.staggerFrom = function staggerFrom(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {\n    vars.runBackwards = 1;\n    _inheritDefaults(vars).immediateRender = _isNotFalse(vars.immediateRender);\n    return this.staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams);\n  };\n\n  _proto2.staggerFromTo = function staggerFromTo(targets, duration, fromVars, toVars, stagger, position, onCompleteAll, onCompleteAllParams) {\n    toVars.startAt = fromVars;\n    _inheritDefaults(toVars).immediateRender = _isNotFalse(toVars.immediateRender);\n    return this.staggerTo(targets, duration, toVars, stagger, position, onCompleteAll, onCompleteAllParams);\n  };\n\n  _proto2.render = function render(totalTime, suppressEvents, force) {\n    var prevTime = this._time,\n        tDur = this._dirty ? this.totalDuration() : this._tDur,\n        dur = this._dur,\n        tTime = totalTime <= 0 ? 0 : _roundPrecise(totalTime),\n        // if a paused timeline is resumed (or its _start is updated for another reason...which rounds it), that could result in the playhead shifting a **tiny** amount and a zero-duration child at that spot may get rendered at a different ratio, like its totalTime in render() may be 1e-17 instead of 0, for example.\n    crossingStart = this._zTime < 0 !== totalTime < 0 && (this._initted || !dur),\n        time,\n        child,\n        next,\n        iteration,\n        cycleDuration,\n        prevPaused,\n        pauseTween,\n        timeScale,\n        prevStart,\n        prevIteration,\n        yoyo,\n        isYoyo;\n    this !== _globalTimeline && tTime > tDur && totalTime >= 0 && (tTime = tDur);\n\n    if (tTime !== this._tTime || force || crossingStart) {\n      if (prevTime !== this._time && dur) {\n        //if totalDuration() finds a child with a negative startTime and smoothChildTiming is true, things get shifted around internally so we need to adjust the time accordingly. For example, if a tween starts at -30 we must shift EVERYTHING forward 30 seconds and move this timeline's startTime backward by 30 seconds so that things align with the playhead (no jump).\n        tTime += this._time - prevTime;\n        totalTime += this._time - prevTime;\n      }\n\n      time = tTime;\n      prevStart = this._start;\n      timeScale = this._ts;\n      prevPaused = !timeScale;\n\n      if (crossingStart) {\n        dur || (prevTime = this._zTime); //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect.\n\n        (totalTime || !suppressEvents) && (this._zTime = totalTime);\n      }\n\n      if (this._repeat) {\n        //adjust the time for repeats and yoyos\n        yoyo = this._yoyo;\n        cycleDuration = dur + this._rDelay;\n\n        if (this._repeat < -1 && totalTime < 0) {\n          return this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force);\n        }\n\n        time = _roundPrecise(tTime % cycleDuration); //round to avoid floating point errors. (4 % 0.8 should be 0 but some browsers report it as 0.79999999!)\n\n        if (tTime === tDur) {\n          // the tDur === tTime is for edge cases where there's a lengthy decimal on the duration and it may reach the very end but the time is rendered as not-quite-there (remember, tDur is rounded to 4 decimals whereas dur isn't)\n          iteration = this._repeat;\n          time = dur;\n        } else {\n          iteration = ~~(tTime / cycleDuration);\n\n          if (iteration && iteration === tTime / cycleDuration) {\n            time = dur;\n            iteration--;\n          }\n\n          time > dur && (time = dur);\n        }\n\n        prevIteration = _animationCycle(this._tTime, cycleDuration);\n        !prevTime && this._tTime && prevIteration !== iteration && this._tTime - prevIteration * cycleDuration - this._dur <= 0 && (prevIteration = iteration); // edge case - if someone does addPause() at the very beginning of a repeating timeline, that pause is technically at the same spot as the end which causes this._time to get set to 0 when the totalTime would normally place the playhead at the end. See https://gsap.com/forums/topic/23823-closing-nav-animation-not-working-on-ie-and-iphone-6-maybe-other-older-browser/?tab=comments#comment-113005 also, this._tTime - prevIteration * cycleDuration - this._dur <= 0 just checks to make sure it wasn't previously in the \"repeatDelay\" portion\n\n        if (yoyo && iteration & 1) {\n          time = dur - time;\n          isYoyo = 1;\n        }\n        /*\n        make sure children at the end/beginning of the timeline are rendered properly. If, for example,\n        a 3-second long timeline rendered at 2.9 seconds previously, and now renders at 3.2 seconds (which\n        would get translated to 2.8 seconds if the timeline yoyos or 0.2 seconds if it just repeats), there\n        could be a callback or a short tween that's at 2.95 or 3 seconds in which wouldn't render. So\n        we need to push the timeline to the end (and/or beginning depending on its yoyo value). Also we must\n        ensure that zero-duration tweens at the very beginning or end of the Timeline work.\n        */\n\n\n        if (iteration !== prevIteration && !this._lock) {\n          var rewinding = yoyo && prevIteration & 1,\n              doesWrap = rewinding === (yoyo && iteration & 1);\n          iteration < prevIteration && (rewinding = !rewinding);\n          prevTime = rewinding ? 0 : tTime % dur ? dur : tTime; // if the playhead is landing exactly at the end of an iteration, use that totalTime rather than only the duration, otherwise it'll skip the 2nd render since it's effectively at the same time.\n\n          this._lock = 1;\n          this.render(prevTime || (isYoyo ? 0 : _roundPrecise(iteration * cycleDuration)), suppressEvents, !dur)._lock = 0;\n          this._tTime = tTime; // if a user gets the iteration() inside the onRepeat, for example, it should be accurate.\n\n          !suppressEvents && this.parent && _callback(this, \"onRepeat\");\n          this.vars.repeatRefresh && !isYoyo && (this.invalidate()._lock = 1);\n\n          if (prevTime && prevTime !== this._time || prevPaused !== !this._ts || this.vars.onRepeat && !this.parent && !this._act) {\n            // if prevTime is 0 and we render at the very end, _time will be the end, thus won't match. So in this edge case, prevTime won't match _time but that's okay. If it gets killed in the onRepeat, eject as well.\n            return this;\n          }\n\n          dur = this._dur; // in case the duration changed in the onRepeat\n\n          tDur = this._tDur;\n\n          if (doesWrap) {\n            this._lock = 2;\n            prevTime = rewinding ? dur : -0.0001;\n            this.render(prevTime, true);\n            this.vars.repeatRefresh && !isYoyo && this.invalidate();\n          }\n\n          this._lock = 0;\n\n          if (!this._ts && !prevPaused) {\n            return this;\n          } //in order for yoyoEase to work properly when there's a stagger, we must swap out the ease in each sub-tween.\n\n\n          _propagateYoyoEase(this, isYoyo);\n        }\n      }\n\n      if (this._hasPause && !this._forcing && this._lock < 2) {\n        pauseTween = _findNextPauseTween(this, _roundPrecise(prevTime), _roundPrecise(time));\n\n        if (pauseTween) {\n          tTime -= time - (time = pauseTween._start);\n        }\n      }\n\n      this._tTime = tTime;\n      this._time = time;\n      this._act = !timeScale; //as long as it's not paused, force it to be active so that if the user renders independent of the parent timeline, it'll be forced to re-render on the next tick.\n\n      if (!this._initted) {\n        this._onUpdate = this.vars.onUpdate;\n        this._initted = 1;\n        this._zTime = totalTime;\n        prevTime = 0; // upon init, the playhead should always go forward; someone could invalidate() a completed timeline and then if they restart(), that would make child tweens render in reverse order which could lock in the wrong starting values if they build on each other, like tl.to(obj, {x: 100}).to(obj, {x: 0}).\n      }\n\n      if (!prevTime && time && !suppressEvents && !iteration) {\n        _callback(this, \"onStart\");\n\n        if (this._tTime !== tTime) {\n          // in case the onStart triggered a render at a different spot, eject. Like if someone did animation.pause(0.5) or something inside the onStart.\n          return this;\n        }\n      }\n\n      if (time >= prevTime && totalTime >= 0) {\n        child = this._first;\n\n        while (child) {\n          next = child._next;\n\n          if ((child._act || time >= child._start) && child._ts && pauseTween !== child) {\n            if (child.parent !== this) {\n              // an extreme edge case - the child's render could do something like kill() the \"next\" one in the linked list, or reparent it. In that case we must re-initiate the whole render to be safe.\n              return this.render(totalTime, suppressEvents, force);\n            }\n\n            child.render(child._ts > 0 ? (time - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (time - child._start) * child._ts, suppressEvents, force);\n\n            if (time !== this._time || !this._ts && !prevPaused) {\n              //in case a tween pauses or seeks the timeline when rendering, like inside of an onUpdate/onComplete\n              pauseTween = 0;\n              next && (tTime += this._zTime = -_tinyNum); // it didn't finish rendering, so flag zTime as negative so that so that the next time render() is called it'll be forced (to render any remaining children)\n\n              break;\n            }\n          }\n\n          child = next;\n        }\n      } else {\n        child = this._last;\n        var adjustedTime = totalTime < 0 ? totalTime : time; //when the playhead goes backward beyond the start of this timeline, we must pass that information down to the child animations so that zero-duration tweens know whether to render their starting or ending values.\n\n        while (child) {\n          next = child._prev;\n\n          if ((child._act || adjustedTime <= child._end) && child._ts && pauseTween !== child) {\n            if (child.parent !== this) {\n              // an extreme edge case - the child's render could do something like kill() the \"next\" one in the linked list, or reparent it. In that case we must re-initiate the whole render to be safe.\n              return this.render(totalTime, suppressEvents, force);\n            }\n\n            child.render(child._ts > 0 ? (adjustedTime - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (adjustedTime - child._start) * child._ts, suppressEvents, force || _reverting && (child._initted || child._startAt)); // if reverting, we should always force renders of initted tweens (but remember that .fromTo() or .from() may have a _startAt but not _initted yet). If, for example, a .fromTo() tween with a stagger (which creates an internal timeline) gets reverted BEFORE some of its child tweens render for the first time, it may not properly trigger them to revert.\n\n            if (time !== this._time || !this._ts && !prevPaused) {\n              //in case a tween pauses or seeks the timeline when rendering, like inside of an onUpdate/onComplete\n              pauseTween = 0;\n              next && (tTime += this._zTime = adjustedTime ? -_tinyNum : _tinyNum); // it didn't finish rendering, so adjust zTime so that so that the next time render() is called it'll be forced (to render any remaining children)\n\n              break;\n            }\n          }\n\n          child = next;\n        }\n      }\n\n      if (pauseTween && !suppressEvents) {\n        this.pause();\n        pauseTween.render(time >= prevTime ? 0 : -_tinyNum)._zTime = time >= prevTime ? 1 : -1;\n\n        if (this._ts) {\n          //the callback resumed playback! So since we may have held back the playhead due to where the pause is positioned, go ahead and jump to where it's SUPPOSED to be (if no pause happened).\n          this._start = prevStart; //if the pause was at an earlier time and the user resumed in the callback, it could reposition the timeline (changing its startTime), throwing things off slightly, so we make sure the _start doesn't shift.\n\n          _setEnd(this);\n\n          return this.render(totalTime, suppressEvents, force);\n        }\n      }\n\n      this._onUpdate && !suppressEvents && _callback(this, \"onUpdate\", true);\n      if (tTime === tDur && this._tTime >= this.totalDuration() || !tTime && prevTime) if (prevStart === this._start || Math.abs(timeScale) !== Math.abs(this._ts)) if (!this._lock) {\n        // remember, a child's callback may alter this timeline's playhead or timeScale which is why we need to add some of these checks.\n        (totalTime || !dur) && (tTime === tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1); // don't remove if the timeline is reversed and the playhead isn't at 0, otherwise tl.progress(1).reverse() won't work. Only remove if the playhead is at the end and timeScale is positive, or if the playhead is at 0 and the timeScale is negative.\n\n        if (!suppressEvents && !(totalTime < 0 && !prevTime) && (tTime || prevTime || !tDur)) {\n          _callback(this, tTime === tDur && totalTime >= 0 ? \"onComplete\" : \"onReverseComplete\", true);\n\n          this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom();\n        }\n      }\n    }\n\n    return this;\n  };\n\n  _proto2.add = function add(child, position) {\n    var _this2 = this;\n\n    _isNumber(position) || (position = _parsePosition(this, position, child));\n\n    if (!(child instanceof Animation)) {\n      if (_isArray(child)) {\n        child.forEach(function (obj) {\n          return _this2.add(obj, position);\n        });\n        return this;\n      }\n\n      if (_isString(child)) {\n        return this.addLabel(child, position);\n      }\n\n      if (_isFunction(child)) {\n        child = Tween.delayedCall(0, child);\n      } else {\n        return this;\n      }\n    }\n\n    return this !== child ? _addToTimeline(this, child, position) : this; //don't allow a timeline to be added to itself as a child!\n  };\n\n  _proto2.getChildren = function getChildren(nested, tweens, timelines, ignoreBeforeTime) {\n    if (nested === void 0) {\n      nested = true;\n    }\n\n    if (tweens === void 0) {\n      tweens = true;\n    }\n\n    if (timelines === void 0) {\n      timelines = true;\n    }\n\n    if (ignoreBeforeTime === void 0) {\n      ignoreBeforeTime = -_bigNum;\n    }\n\n    var a = [],\n        child = this._first;\n\n    while (child) {\n      if (child._start >= ignoreBeforeTime) {\n        if (child instanceof Tween) {\n          tweens && a.push(child);\n        } else {\n          timelines && a.push(child);\n          nested && a.push.apply(a, child.getChildren(true, tweens, timelines));\n        }\n      }\n\n      child = child._next;\n    }\n\n    return a;\n  };\n\n  _proto2.getById = function getById(id) {\n    var animations = this.getChildren(1, 1, 1),\n        i = animations.length;\n\n    while (i--) {\n      if (animations[i].vars.id === id) {\n        return animations[i];\n      }\n    }\n  };\n\n  _proto2.remove = function remove(child) {\n    if (_isString(child)) {\n      return this.removeLabel(child);\n    }\n\n    if (_isFunction(child)) {\n      return this.killTweensOf(child);\n    }\n\n    _removeLinkedListItem(this, child);\n\n    if (child === this._recent) {\n      this._recent = this._last;\n    }\n\n    return _uncache(this);\n  };\n\n  _proto2.totalTime = function totalTime(_totalTime2, suppressEvents) {\n    if (!arguments.length) {\n      return this._tTime;\n    }\n\n    this._forcing = 1;\n\n    if (!this._dp && this._ts) {\n      //special case for the global timeline (or any other that has no parent or detached parent).\n      this._start = _roundPrecise(_ticker.time - (this._ts > 0 ? _totalTime2 / this._ts : (this.totalDuration() - _totalTime2) / -this._ts));\n    }\n\n    _Animation.prototype.totalTime.call(this, _totalTime2, suppressEvents);\n\n    this._forcing = 0;\n    return this;\n  };\n\n  _proto2.addLabel = function addLabel(label, position) {\n    this.labels[label] = _parsePosition(this, position);\n    return this;\n  };\n\n  _proto2.removeLabel = function removeLabel(label) {\n    delete this.labels[label];\n    return this;\n  };\n\n  _proto2.addPause = function addPause(position, callback, params) {\n    var t = Tween.delayedCall(0, callback || _emptyFunc, params);\n    t.data = \"isPause\";\n    this._hasPause = 1;\n    return _addToTimeline(this, t, _parsePosition(this, position));\n  };\n\n  _proto2.removePause = function removePause(position) {\n    var child = this._first;\n    position = _parsePosition(this, position);\n\n    while (child) {\n      if (child._start === position && child.data === \"isPause\") {\n        _removeFromParent(child);\n      }\n\n      child = child._next;\n    }\n  };\n\n  _proto2.killTweensOf = function killTweensOf(targets, props, onlyActive) {\n    var tweens = this.getTweensOf(targets, onlyActive),\n        i = tweens.length;\n\n    while (i--) {\n      _overwritingTween !== tweens[i] && tweens[i].kill(targets, props);\n    }\n\n    return this;\n  };\n\n  _proto2.getTweensOf = function getTweensOf(targets, onlyActive) {\n    var a = [],\n        parsedTargets = toArray(targets),\n        child = this._first,\n        isGlobalTime = _isNumber(onlyActive),\n        // a number is interpreted as a global time. If the animation spans\n    children;\n\n    while (child) {\n      if (child instanceof Tween) {\n        if (_arrayContainsAny(child._targets, parsedTargets) && (isGlobalTime ? (!_overwritingTween || child._initted && child._ts) && child.globalTime(0) <= onlyActive && child.globalTime(child.totalDuration()) > onlyActive : !onlyActive || child.isActive())) {\n          // note: if this is for overwriting, it should only be for tweens that aren't paused and are initted.\n          a.push(child);\n        }\n      } else if ((children = child.getTweensOf(parsedTargets, onlyActive)).length) {\n        a.push.apply(a, children);\n      }\n\n      child = child._next;\n    }\n\n    return a;\n  } // potential future feature - targets() on timelines\n  // targets() {\n  // \tlet result = [];\n  // \tthis.getChildren(true, true, false).forEach(t => result.push(...t.targets()));\n  // \treturn result.filter((v, i) => result.indexOf(v) === i);\n  // }\n  ;\n\n  _proto2.tweenTo = function tweenTo(position, vars) {\n    vars = vars || {};\n\n    var tl = this,\n        endTime = _parsePosition(tl, position),\n        _vars = vars,\n        startAt = _vars.startAt,\n        _onStart = _vars.onStart,\n        onStartParams = _vars.onStartParams,\n        immediateRender = _vars.immediateRender,\n        initted,\n        tween = Tween.to(tl, _setDefaults({\n      ease: vars.ease || \"none\",\n      lazy: false,\n      immediateRender: false,\n      time: endTime,\n      overwrite: \"auto\",\n      duration: vars.duration || Math.abs((endTime - (startAt && \"time\" in startAt ? startAt.time : tl._time)) / tl.timeScale()) || _tinyNum,\n      onStart: function onStart() {\n        tl.pause();\n\n        if (!initted) {\n          var duration = vars.duration || Math.abs((endTime - (startAt && \"time\" in startAt ? startAt.time : tl._time)) / tl.timeScale());\n          tween._dur !== duration && _setDuration(tween, duration, 0, 1).render(tween._time, true, true);\n          initted = 1;\n        }\n\n        _onStart && _onStart.apply(tween, onStartParams || []); //in case the user had an onStart in the vars - we don't want to overwrite it.\n      }\n    }, vars));\n\n    return immediateRender ? tween.render(0) : tween;\n  };\n\n  _proto2.tweenFromTo = function tweenFromTo(fromPosition, toPosition, vars) {\n    return this.tweenTo(toPosition, _setDefaults({\n      startAt: {\n        time: _parsePosition(this, fromPosition)\n      }\n    }, vars));\n  };\n\n  _proto2.recent = function recent() {\n    return this._recent;\n  };\n\n  _proto2.nextLabel = function nextLabel(afterTime) {\n    if (afterTime === void 0) {\n      afterTime = this._time;\n    }\n\n    return _getLabelInDirection(this, _parsePosition(this, afterTime));\n  };\n\n  _proto2.previousLabel = function previousLabel(beforeTime) {\n    if (beforeTime === void 0) {\n      beforeTime = this._time;\n    }\n\n    return _getLabelInDirection(this, _parsePosition(this, beforeTime), 1);\n  };\n\n  _proto2.currentLabel = function currentLabel(value) {\n    return arguments.length ? this.seek(value, true) : this.previousLabel(this._time + _tinyNum);\n  };\n\n  _proto2.shiftChildren = function shiftChildren(amount, adjustLabels, ignoreBeforeTime) {\n    if (ignoreBeforeTime === void 0) {\n      ignoreBeforeTime = 0;\n    }\n\n    var child = this._first,\n        labels = this.labels,\n        p;\n\n    while (child) {\n      if (child._start >= ignoreBeforeTime) {\n        child._start += amount;\n        child._end += amount;\n      }\n\n      child = child._next;\n    }\n\n    if (adjustLabels) {\n      for (p in labels) {\n        if (labels[p] >= ignoreBeforeTime) {\n          labels[p] += amount;\n        }\n      }\n    }\n\n    return _uncache(this);\n  };\n\n  _proto2.invalidate = function invalidate(soft) {\n    var child = this._first;\n    this._lock = 0;\n\n    while (child) {\n      child.invalidate(soft);\n      child = child._next;\n    }\n\n    return _Animation.prototype.invalidate.call(this, soft);\n  };\n\n  _proto2.clear = function clear(includeLabels) {\n    if (includeLabels === void 0) {\n      includeLabels = true;\n    }\n\n    var child = this._first,\n        next;\n\n    while (child) {\n      next = child._next;\n      this.remove(child);\n      child = next;\n    }\n\n    this._dp && (this._time = this._tTime = this._pTime = 0);\n    includeLabels && (this.labels = {});\n    return _uncache(this);\n  };\n\n  _proto2.totalDuration = function totalDuration(value) {\n    var max = 0,\n        self = this,\n        child = self._last,\n        prevStart = _bigNum,\n        prev,\n        start,\n        parent;\n\n    if (arguments.length) {\n      return self.timeScale((self._repeat < 0 ? self.duration() : self.totalDuration()) / (self.reversed() ? -value : value));\n    }\n\n    if (self._dirty) {\n      parent = self.parent;\n\n      while (child) {\n        prev = child._prev; //record it here in case the tween changes position in the sequence...\n\n        child._dirty && child.totalDuration(); //could change the tween._startTime, so make sure the animation's cache is clean before analyzing it.\n\n        start = child._start;\n\n        if (start > prevStart && self._sort && child._ts && !self._lock) {\n          //in case one of the tweens shifted out of order, it needs to be re-inserted into the correct position in the sequence\n          self._lock = 1; //prevent endless recursive calls - there are methods that get triggered that check duration/totalDuration when we add().\n\n          _addToTimeline(self, child, start - child._delay, 1)._lock = 0;\n        } else {\n          prevStart = start;\n        }\n\n        if (start < 0 && child._ts) {\n          //children aren't allowed to have negative startTimes unless smoothChildTiming is true, so adjust here if one is found.\n          max -= start;\n\n          if (!parent && !self._dp || parent && parent.smoothChildTiming) {\n            self._start += start / self._ts;\n            self._time -= start;\n            self._tTime -= start;\n          }\n\n          self.shiftChildren(-start, false, -1e999);\n          prevStart = 0;\n        }\n\n        child._end > max && child._ts && (max = child._end);\n        child = prev;\n      }\n\n      _setDuration(self, self === _globalTimeline && self._time > max ? self._time : max, 1, 1);\n\n      self._dirty = 0;\n    }\n\n    return self._tDur;\n  };\n\n  Timeline.updateRoot = function updateRoot(time) {\n    if (_globalTimeline._ts) {\n      _lazySafeRender(_globalTimeline, _parentToChildTotalTime(time, _globalTimeline));\n\n      _lastRenderedFrame = _ticker.frame;\n    }\n\n    if (_ticker.frame >= _nextGCFrame) {\n      _nextGCFrame += _config.autoSleep || 120;\n      var child = _globalTimeline._first;\n      if (!child || !child._ts) if (_config.autoSleep && _ticker._listeners.length < 2) {\n        while (child && !child._ts) {\n          child = child._next;\n        }\n\n        child || _ticker.sleep();\n      }\n    }\n  };\n\n  return Timeline;\n}(Animation);\n\n_setDefaults(Timeline.prototype, {\n  _lock: 0,\n  _hasPause: 0,\n  _forcing: 0\n});\n\nvar _addComplexStringPropTween = function _addComplexStringPropTween(target, prop, start, end, setter, stringFilter, funcParam) {\n  //note: we call _addComplexStringPropTween.call(tweenInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus \"this\" would refer to the plugin.\n  var pt = new PropTween(this._pt, target, prop, 0, 1, _renderComplexString, null, setter),\n      index = 0,\n      matchIndex = 0,\n      result,\n      startNums,\n      color,\n      endNum,\n      chunk,\n      startNum,\n      hasRandom,\n      a;\n  pt.b = start;\n  pt.e = end;\n  start += \"\"; //ensure values are strings\n\n  end += \"\";\n\n  if (hasRandom = ~end.indexOf(\"random(\")) {\n    end = _replaceRandom(end);\n  }\n\n  if (stringFilter) {\n    a = [start, end];\n    stringFilter(a, target, prop); //pass an array with the starting and ending values and let the filter do whatever it needs to the values.\n\n    start = a[0];\n    end = a[1];\n  }\n\n  startNums = start.match(_complexStringNumExp) || [];\n\n  while (result = _complexStringNumExp.exec(end)) {\n    endNum = result[0];\n    chunk = end.substring(index, result.index);\n\n    if (color) {\n      color = (color + 1) % 5;\n    } else if (chunk.substr(-5) === \"rgba(\") {\n      color = 1;\n    }\n\n    if (endNum !== startNums[matchIndex++]) {\n      startNum = parseFloat(startNums[matchIndex - 1]) || 0; //these nested PropTweens are handled in a special way - we'll never actually call a render or setter method on them. We'll just loop through them in the parent complex string PropTween's render method.\n\n      pt._pt = {\n        _next: pt._pt,\n        p: chunk || matchIndex === 1 ? chunk : \",\",\n        //note: SVG spec allows omission of comma/space when a negative sign is wedged between two numbers, like 2.5-5.3 instead of 2.5,-5.3 but when tweening, the negative value may switch to positive, so we insert the comma just in case.\n        s: startNum,\n        c: endNum.charAt(1) === \"=\" ? _parseRelative(startNum, endNum) - startNum : parseFloat(endNum) - startNum,\n        m: color && color < 4 ? Math.round : 0\n      };\n      index = _complexStringNumExp.lastIndex;\n    }\n  }\n\n  pt.c = index < end.length ? end.substring(index, end.length) : \"\"; //we use the \"c\" of the PropTween to store the final part of the string (after the last number)\n\n  pt.fp = funcParam;\n\n  if (_relExp.test(end) || hasRandom) {\n    pt.e = 0; //if the end string contains relative values or dynamic random(...) values, delete the end it so that on the final render we don't actually set it to the string with += or -= characters (forces it to use the calculated value).\n  }\n\n  this._pt = pt; //start the linked list with this new PropTween. Remember, we call _addComplexStringPropTween.call(tweenInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus \"this\" would refer to the plugin.\n\n  return pt;\n},\n    _addPropTween = function _addPropTween(target, prop, start, end, index, targets, modifier, stringFilter, funcParam, optional) {\n  _isFunction(end) && (end = end(index || 0, target, targets));\n  var currentValue = target[prop],\n      parsedStart = start !== \"get\" ? start : !_isFunction(currentValue) ? currentValue : funcParam ? target[prop.indexOf(\"set\") || !_isFunction(target[\"get\" + prop.substr(3)]) ? prop : \"get\" + prop.substr(3)](funcParam) : target[prop](),\n      setter = !_isFunction(currentValue) ? _setterPlain : funcParam ? _setterFuncWithParam : _setterFunc,\n      pt;\n\n  if (_isString(end)) {\n    if (~end.indexOf(\"random(\")) {\n      end = _replaceRandom(end);\n    }\n\n    if (end.charAt(1) === \"=\") {\n      pt = _parseRelative(parsedStart, end) + (getUnit(parsedStart) || 0);\n\n      if (pt || pt === 0) {\n        // to avoid isNaN, like if someone passes in a value like \"!= whatever\"\n        end = pt;\n      }\n    }\n  }\n\n  if (!optional || parsedStart !== end || _forceAllPropTweens) {\n    if (!isNaN(parsedStart * end) && end !== \"\") {\n      // fun fact: any number multiplied by \"\" is evaluated as the number 0!\n      pt = new PropTween(this._pt, target, prop, +parsedStart || 0, end - (parsedStart || 0), typeof currentValue === \"boolean\" ? _renderBoolean : _renderPlain, 0, setter);\n      funcParam && (pt.fp = funcParam);\n      modifier && pt.modifier(modifier, this, target);\n      return this._pt = pt;\n    }\n\n    !currentValue && !(prop in target) && _missingPlugin(prop, end);\n    return _addComplexStringPropTween.call(this, target, prop, parsedStart, end, setter, stringFilter || _config.stringFilter, funcParam);\n  }\n},\n    //creates a copy of the vars object and processes any function-based values (putting the resulting values directly into the copy) as well as strings with \"random()\" in them. It does NOT process relative values.\n_processVars = function _processVars(vars, index, target, targets, tween) {\n  _isFunction(vars) && (vars = _parseFuncOrString(vars, tween, index, target, targets));\n\n  if (!_isObject(vars) || vars.style && vars.nodeType || _isArray(vars) || _isTypedArray(vars)) {\n    return _isString(vars) ? _parseFuncOrString(vars, tween, index, target, targets) : vars;\n  }\n\n  var copy = {},\n      p;\n\n  for (p in vars) {\n    copy[p] = _parseFuncOrString(vars[p], tween, index, target, targets);\n  }\n\n  return copy;\n},\n    _checkPlugin = function _checkPlugin(property, vars, tween, index, target, targets) {\n  var plugin, pt, ptLookup, i;\n\n  if (_plugins[property] && (plugin = new _plugins[property]()).init(target, plugin.rawVars ? vars[property] : _processVars(vars[property], index, target, targets, tween), tween, index, targets) !== false) {\n    tween._pt = pt = new PropTween(tween._pt, target, property, 0, 1, plugin.render, plugin, 0, plugin.priority);\n\n    if (tween !== _quickTween) {\n      ptLookup = tween._ptLookup[tween._targets.indexOf(target)]; //note: we can't use tween._ptLookup[index] because for staggered tweens, the index from the fullTargets array won't match what it is in each individual tween that spawns from the stagger.\n\n      i = plugin._props.length;\n\n      while (i--) {\n        ptLookup[plugin._props[i]] = pt;\n      }\n    }\n  }\n\n  return plugin;\n},\n    _overwritingTween,\n    //store a reference temporarily so we can avoid overwriting itself.\n_forceAllPropTweens,\n    _initTween = function _initTween(tween, time, tTime) {\n  var vars = tween.vars,\n      ease = vars.ease,\n      startAt = vars.startAt,\n      immediateRender = vars.immediateRender,\n      lazy = vars.lazy,\n      onUpdate = vars.onUpdate,\n      runBackwards = vars.runBackwards,\n      yoyoEase = vars.yoyoEase,\n      keyframes = vars.keyframes,\n      autoRevert = vars.autoRevert,\n      dur = tween._dur,\n      prevStartAt = tween._startAt,\n      targets = tween._targets,\n      parent = tween.parent,\n      fullTargets = parent && parent.data === \"nested\" ? parent.vars.targets : targets,\n      autoOverwrite = tween._overwrite === \"auto\" && !_suppressOverwrites,\n      tl = tween.timeline,\n      cleanVars,\n      i,\n      p,\n      pt,\n      target,\n      hasPriority,\n      gsData,\n      harness,\n      plugin,\n      ptLookup,\n      index,\n      harnessVars,\n      overwritten;\n  tl && (!keyframes || !ease) && (ease = \"none\");\n  tween._ease = _parseEase(ease, _defaults.ease);\n  tween._yEase = yoyoEase ? _invertEase(_parseEase(yoyoEase === true ? ease : yoyoEase, _defaults.ease)) : 0;\n\n  if (yoyoEase && tween._yoyo && !tween._repeat) {\n    //there must have been a parent timeline with yoyo:true that is currently in its yoyo phase, so flip the eases.\n    yoyoEase = tween._yEase;\n    tween._yEase = tween._ease;\n    tween._ease = yoyoEase;\n  }\n\n  tween._from = !tl && !!vars.runBackwards; //nested timelines should never run backwards - the backwards-ness is in the child tweens.\n\n  if (!tl || keyframes && !vars.stagger) {\n    //if there's an internal timeline, skip all the parsing because we passed that task down the chain.\n    harness = targets[0] ? _getCache(targets[0]).harness : 0;\n    harnessVars = harness && vars[harness.prop]; //someone may need to specify CSS-specific values AND non-CSS values, like if the element has an \"x\" property plus it's a standard DOM element. We allow people to distinguish by wrapping plugin-specific stuff in a css:{} object for example.\n\n    cleanVars = _copyExcluding(vars, _reservedProps);\n\n    if (prevStartAt) {\n      prevStartAt._zTime < 0 && prevStartAt.progress(1); // in case it's a lazy startAt that hasn't rendered yet.\n\n      time < 0 && runBackwards && immediateRender && !autoRevert ? prevStartAt.render(-1, true) : prevStartAt.revert(runBackwards && dur ? _revertConfigNoKill : _startAtRevertConfig); // if it's a \"startAt\" (not \"from()\" or runBackwards: true), we only need to do a shallow revert (keep transforms cached in CSSPlugin)\n      // don't just _removeFromParent(prevStartAt.render(-1, true)) because that'll leave inline styles. We're creating a new _startAt for \"startAt\" tweens that re-capture things to ensure that if the pre-tween values changed since the tween was created, they're recorded.\n\n      prevStartAt._lazy = 0;\n    }\n\n    if (startAt) {\n      _removeFromParent(tween._startAt = Tween.set(targets, _setDefaults({\n        data: \"isStart\",\n        overwrite: false,\n        parent: parent,\n        immediateRender: true,\n        lazy: !prevStartAt && _isNotFalse(lazy),\n        startAt: null,\n        delay: 0,\n        onUpdate: onUpdate && function () {\n          return _callback(tween, \"onUpdate\");\n        },\n        stagger: 0\n      }, startAt))); //copy the properties/values into a new object to avoid collisions, like var to = {x:0}, from = {x:500}; timeline.fromTo(e, from, to).fromTo(e, to, from);\n\n\n      tween._startAt._dp = 0; // don't allow it to get put back into root timeline! Like when revert() is called and totalTime() gets set.\n\n      tween._startAt._sat = tween; // used in globalTime(). _sat stands for _startAtTween\n\n      time < 0 && (_reverting || !immediateRender && !autoRevert) && tween._startAt.revert(_revertConfigNoKill); // rare edge case, like if a render is forced in the negative direction of a non-initted tween.\n\n      if (immediateRender) {\n        if (dur && time <= 0 && tTime <= 0) {\n          // check tTime here because in the case of a yoyo tween whose playhead gets pushed to the end like tween.progress(1), we should allow it through so that the onComplete gets fired properly.\n          time && (tween._zTime = time);\n          return; //we skip initialization here so that overwriting doesn't occur until the tween actually begins. Otherwise, if you create several immediateRender:true tweens of the same target/properties to drop into a Timeline, the last one created would overwrite the first ones because they didn't get placed into the timeline yet before the first render occurs and kicks in overwriting.\n        }\n      }\n    } else if (runBackwards && dur) {\n      //from() tweens must be handled uniquely: their beginning values must be rendered but we don't want overwriting to occur yet (when time is still 0). Wait until the tween actually begins before doing all the routines like overwriting. At that time, we should render at the END of the tween to ensure that things initialize correctly (remember, from() tweens go backwards)\n      if (!prevStartAt) {\n        time && (immediateRender = false); //in rare cases (like if a from() tween runs and then is invalidate()-ed), immediateRender could be true but the initial forced-render gets skipped, so there's no need to force the render in this context when the _time is greater than 0\n\n        p = _setDefaults({\n          overwrite: false,\n          data: \"isFromStart\",\n          //we tag the tween with as \"isFromStart\" so that if [inside a plugin] we need to only do something at the very END of a tween, we have a way of identifying this tween as merely the one that's setting the beginning values for a \"from()\" tween. For example, clearProps in CSSPlugin should only get applied at the very END of a tween and without this tag, from(...{height:100, clearProps:\"height\", delay:1}) would wipe the height at the beginning of the tween and after 1 second, it'd kick back in.\n          lazy: immediateRender && !prevStartAt && _isNotFalse(lazy),\n          immediateRender: immediateRender,\n          //zero-duration tweens render immediately by default, but if we're not specifically instructed to render this tween immediately, we should skip this and merely _init() to record the starting values (rendering them immediately would push them to completion which is wasteful in that case - we'd have to render(-1) immediately after)\n          stagger: 0,\n          parent: parent //ensures that nested tweens that had a stagger are handled properly, like gsap.from(\".class\", {y: gsap.utils.wrap([-100,100]), stagger: 0.5})\n\n        }, cleanVars);\n        harnessVars && (p[harness.prop] = harnessVars); // in case someone does something like .from(..., {css:{}})\n\n        _removeFromParent(tween._startAt = Tween.set(targets, p));\n\n        tween._startAt._dp = 0; // don't allow it to get put back into root timeline!\n\n        tween._startAt._sat = tween; // used in globalTime()\n\n        time < 0 && (_reverting ? tween._startAt.revert(_revertConfigNoKill) : tween._startAt.render(-1, true));\n        tween._zTime = time;\n\n        if (!immediateRender) {\n          _initTween(tween._startAt, _tinyNum, _tinyNum); //ensures that the initial values are recorded\n\n        } else if (!time) {\n          return;\n        }\n      }\n    }\n\n    tween._pt = tween._ptCache = 0;\n    lazy = dur && _isNotFalse(lazy) || lazy && !dur;\n\n    for (i = 0; i < targets.length; i++) {\n      target = targets[i];\n      gsData = target._gsap || _harness(targets)[i]._gsap;\n      tween._ptLookup[i] = ptLookup = {};\n      _lazyLookup[gsData.id] && _lazyTweens.length && _lazyRender(); //if other tweens of the same target have recently initted but haven't rendered yet, we've got to force the render so that the starting values are correct (imagine populating a timeline with a bunch of sequential tweens and then jumping to the end)\n\n      index = fullTargets === targets ? i : fullTargets.indexOf(target);\n\n      if (harness && (plugin = new harness()).init(target, harnessVars || cleanVars, tween, index, fullTargets) !== false) {\n        tween._pt = pt = new PropTween(tween._pt, target, plugin.name, 0, 1, plugin.render, plugin, 0, plugin.priority);\n\n        plugin._props.forEach(function (name) {\n          ptLookup[name] = pt;\n        });\n\n        plugin.priority && (hasPriority = 1);\n      }\n\n      if (!harness || harnessVars) {\n        for (p in cleanVars) {\n          if (_plugins[p] && (plugin = _checkPlugin(p, cleanVars, tween, index, target, fullTargets))) {\n            plugin.priority && (hasPriority = 1);\n          } else {\n            ptLookup[p] = pt = _addPropTween.call(tween, target, p, \"get\", cleanVars[p], index, fullTargets, 0, vars.stringFilter);\n          }\n        }\n      }\n\n      tween._op && tween._op[i] && tween.kill(target, tween._op[i]);\n\n      if (autoOverwrite && tween._pt) {\n        _overwritingTween = tween;\n\n        _globalTimeline.killTweensOf(target, ptLookup, tween.globalTime(time)); // make sure the overwriting doesn't overwrite THIS tween!!!\n\n\n        overwritten = !tween.parent;\n        _overwritingTween = 0;\n      }\n\n      tween._pt && lazy && (_lazyLookup[gsData.id] = 1);\n    }\n\n    hasPriority && _sortPropTweensByPriority(tween);\n    tween._onInit && tween._onInit(tween); //plugins like RoundProps must wait until ALL of the PropTweens are instantiated. In the plugin's init() function, it sets the _onInit on the tween instance. May not be pretty/intuitive, but it's fast and keeps file size down.\n  }\n\n  tween._onUpdate = onUpdate;\n  tween._initted = (!tween._op || tween._pt) && !overwritten; // if overwrittenProps resulted in the entire tween being killed, do NOT flag it as initted or else it may render for one tick.\n\n  keyframes && time <= 0 && tl.render(_bigNum, true, true); // if there's a 0% keyframe, it'll render in the \"before\" state for any staggered/delayed animations thus when the following tween initializes, it'll use the \"before\" state instead of the \"after\" state as the initial values.\n},\n    _updatePropTweens = function _updatePropTweens(tween, property, value, start, startIsRelative, ratio, time, skipRecursion) {\n  var ptCache = (tween._pt && tween._ptCache || (tween._ptCache = {}))[property],\n      pt,\n      rootPT,\n      lookup,\n      i;\n\n  if (!ptCache) {\n    ptCache = tween._ptCache[property] = [];\n    lookup = tween._ptLookup;\n    i = tween._targets.length;\n\n    while (i--) {\n      pt = lookup[i][property];\n\n      if (pt && pt.d && pt.d._pt) {\n        // it's a plugin, so find the nested PropTween\n        pt = pt.d._pt;\n\n        while (pt && pt.p !== property && pt.fp !== property) {\n          // \"fp\" is functionParam for things like setting CSS variables which require .setProperty(\"--var-name\", value)\n          pt = pt._next;\n        }\n      }\n\n      if (!pt) {\n        // there is no PropTween associated with that property, so we must FORCE one to be created and ditch out of this\n        // if the tween has other properties that already rendered at new positions, we'd normally have to rewind to put them back like tween.render(0, true) before forcing an _initTween(), but that can create another edge case like tweening a timeline's progress would trigger onUpdates to fire which could move other things around. It's better to just inform users that .resetTo() should ONLY be used for tweens that already have that property. For example, you can't gsap.to(...{ y: 0 }) and then tween.restTo(\"x\", 200) for example.\n        _forceAllPropTweens = 1; // otherwise, when we _addPropTween() and it finds no change between the start and end values, it skips creating a PropTween (for efficiency...why tween when there's no difference?) but in this case we NEED that PropTween created so we can edit it.\n\n        tween.vars[property] = \"+=0\";\n\n        _initTween(tween, time);\n\n        _forceAllPropTweens = 0;\n        return skipRecursion ? _warn(property + \" not eligible for reset\") : 1; // if someone tries to do a quickTo() on a special property like borderRadius which must get split into 4 different properties, that's not eligible for .resetTo().\n      }\n\n      ptCache.push(pt);\n    }\n  }\n\n  i = ptCache.length;\n\n  while (i--) {\n    rootPT = ptCache[i];\n    pt = rootPT._pt || rootPT; // complex values may have nested PropTweens. We only accommodate the FIRST value.\n\n    pt.s = (start || start === 0) && !startIsRelative ? start : pt.s + (start || 0) + ratio * pt.c;\n    pt.c = value - pt.s;\n    rootPT.e && (rootPT.e = _round(value) + getUnit(rootPT.e)); // mainly for CSSPlugin (end value)\n\n    rootPT.b && (rootPT.b = pt.s + getUnit(rootPT.b)); // (beginning value)\n  }\n},\n    _addAliasesToVars = function _addAliasesToVars(targets, vars) {\n  var harness = targets[0] ? _getCache(targets[0]).harness : 0,\n      propertyAliases = harness && harness.aliases,\n      copy,\n      p,\n      i,\n      aliases;\n\n  if (!propertyAliases) {\n    return vars;\n  }\n\n  copy = _merge({}, vars);\n\n  for (p in propertyAliases) {\n    if (p in copy) {\n      aliases = propertyAliases[p].split(\",\");\n      i = aliases.length;\n\n      while (i--) {\n        copy[aliases[i]] = copy[p];\n      }\n    }\n  }\n\n  return copy;\n},\n    // parses multiple formats, like {\"0%\": {x: 100}, {\"50%\": {x: -20}} and { x: {\"0%\": 100, \"50%\": -20} }, and an \"ease\" can be set on any object. We populate an \"allProps\" object with an Array for each property, like {x: [{}, {}], y:[{}, {}]} with data for each property tween. The objects have a \"t\" (time), \"v\", (value), and \"e\" (ease) property. This allows us to piece together a timeline later.\n_parseKeyframe = function _parseKeyframe(prop, obj, allProps, easeEach) {\n  var ease = obj.ease || easeEach || \"power1.inOut\",\n      p,\n      a;\n\n  if (_isArray(obj)) {\n    a = allProps[prop] || (allProps[prop] = []); // t = time (out of 100), v = value, e = ease\n\n    obj.forEach(function (value, i) {\n      return a.push({\n        t: i / (obj.length - 1) * 100,\n        v: value,\n        e: ease\n      });\n    });\n  } else {\n    for (p in obj) {\n      a = allProps[p] || (allProps[p] = []);\n      p === \"ease\" || a.push({\n        t: parseFloat(prop),\n        v: obj[p],\n        e: ease\n      });\n    }\n  }\n},\n    _parseFuncOrString = function _parseFuncOrString(value, tween, i, target, targets) {\n  return _isFunction(value) ? value.call(tween, i, target, targets) : _isString(value) && ~value.indexOf(\"random(\") ? _replaceRandom(value) : value;\n},\n    _staggerTweenProps = _callbackNames + \"repeat,repeatDelay,yoyo,repeatRefresh,yoyoEase,autoRevert\",\n    _staggerPropsToSkip = {};\n\n_forEachName(_staggerTweenProps + \",id,stagger,delay,duration,paused,scrollTrigger\", function (name) {\n  return _staggerPropsToSkip[name] = 1;\n});\n/*\n * --------------------------------------------------------------------------------------\n * TWEEN\n * --------------------------------------------------------------------------------------\n */\n\n\nexport var Tween = /*#__PURE__*/function (_Animation2) {\n  _inheritsLoose(Tween, _Animation2);\n\n  function Tween(targets, vars, position, skipInherit) {\n    var _this3;\n\n    if (typeof vars === \"number\") {\n      position.duration = vars;\n      vars = position;\n      position = null;\n    }\n\n    _this3 = _Animation2.call(this, skipInherit ? vars : _inheritDefaults(vars)) || this;\n    var _this3$vars = _this3.vars,\n        duration = _this3$vars.duration,\n        delay = _this3$vars.delay,\n        immediateRender = _this3$vars.immediateRender,\n        stagger = _this3$vars.stagger,\n        overwrite = _this3$vars.overwrite,\n        keyframes = _this3$vars.keyframes,\n        defaults = _this3$vars.defaults,\n        scrollTrigger = _this3$vars.scrollTrigger,\n        yoyoEase = _this3$vars.yoyoEase,\n        parent = vars.parent || _globalTimeline,\n        parsedTargets = (_isArray(targets) || _isTypedArray(targets) ? _isNumber(targets[0]) : \"length\" in vars) ? [targets] : toArray(targets),\n        tl,\n        i,\n        copy,\n        l,\n        p,\n        curTarget,\n        staggerFunc,\n        staggerVarsToMerge;\n    _this3._targets = parsedTargets.length ? _harness(parsedTargets) : _warn(\"GSAP target \" + targets + \" not found. https://gsap.com\", !_config.nullTargetWarn) || [];\n    _this3._ptLookup = []; //PropTween lookup. An array containing an object for each target, having keys for each tweening property\n\n    _this3._overwrite = overwrite;\n\n    if (keyframes || stagger || _isFuncOrString(duration) || _isFuncOrString(delay)) {\n      vars = _this3.vars;\n      tl = _this3.timeline = new Timeline({\n        data: \"nested\",\n        defaults: defaults || {},\n        targets: parent && parent.data === \"nested\" ? parent.vars.targets : parsedTargets\n      }); // we need to store the targets because for staggers and keyframes, we end up creating an individual tween for each but function-based values need to know the index and the whole Array of targets.\n\n      tl.kill();\n      tl.parent = tl._dp = _assertThisInitialized(_this3);\n      tl._start = 0;\n\n      if (stagger || _isFuncOrString(duration) || _isFuncOrString(delay)) {\n        l = parsedTargets.length;\n        staggerFunc = stagger && distribute(stagger);\n\n        if (_isObject(stagger)) {\n          //users can pass in callbacks like onStart/onComplete in the stagger object. These should fire with each individual tween.\n          for (p in stagger) {\n            if (~_staggerTweenProps.indexOf(p)) {\n              staggerVarsToMerge || (staggerVarsToMerge = {});\n              staggerVarsToMerge[p] = stagger[p];\n            }\n          }\n        }\n\n        for (i = 0; i < l; i++) {\n          copy = _copyExcluding(vars, _staggerPropsToSkip);\n          copy.stagger = 0;\n          yoyoEase && (copy.yoyoEase = yoyoEase);\n          staggerVarsToMerge && _merge(copy, staggerVarsToMerge);\n          curTarget = parsedTargets[i]; //don't just copy duration or delay because if they're a string or function, we'd end up in an infinite loop because _isFuncOrString() would evaluate as true in the child tweens, entering this loop, etc. So we parse the value straight from vars and default to 0.\n\n          copy.duration = +_parseFuncOrString(duration, _assertThisInitialized(_this3), i, curTarget, parsedTargets);\n          copy.delay = (+_parseFuncOrString(delay, _assertThisInitialized(_this3), i, curTarget, parsedTargets) || 0) - _this3._delay;\n\n          if (!stagger && l === 1 && copy.delay) {\n            // if someone does delay:\"random(1, 5)\", repeat:-1, for example, the delay shouldn't be inside the repeat.\n            _this3._delay = delay = copy.delay;\n            _this3._start += delay;\n            copy.delay = 0;\n          }\n\n          tl.to(curTarget, copy, staggerFunc ? staggerFunc(i, curTarget, parsedTargets) : 0);\n          tl._ease = _easeMap.none;\n        }\n\n        tl.duration() ? duration = delay = 0 : _this3.timeline = 0; // if the timeline's duration is 0, we don't need a timeline internally!\n      } else if (keyframes) {\n        _inheritDefaults(_setDefaults(tl.vars.defaults, {\n          ease: \"none\"\n        }));\n\n        tl._ease = _parseEase(keyframes.ease || vars.ease || \"none\");\n        var time = 0,\n            a,\n            kf,\n            v;\n\n        if (_isArray(keyframes)) {\n          keyframes.forEach(function (frame) {\n            return tl.to(parsedTargets, frame, \">\");\n          });\n          tl.duration(); // to ensure tl._dur is cached because we tap into it for performance purposes in the render() method.\n        } else {\n          copy = {};\n\n          for (p in keyframes) {\n            p === \"ease\" || p === \"easeEach\" || _parseKeyframe(p, keyframes[p], copy, keyframes.easeEach);\n          }\n\n          for (p in copy) {\n            a = copy[p].sort(function (a, b) {\n              return a.t - b.t;\n            });\n            time = 0;\n\n            for (i = 0; i < a.length; i++) {\n              kf = a[i];\n              v = {\n                ease: kf.e,\n                duration: (kf.t - (i ? a[i - 1].t : 0)) / 100 * duration\n              };\n              v[p] = kf.v;\n              tl.to(parsedTargets, v, time);\n              time += v.duration;\n            }\n          }\n\n          tl.duration() < duration && tl.to({}, {\n            duration: duration - tl.duration()\n          }); // in case keyframes didn't go to 100%\n        }\n      }\n\n      duration || _this3.duration(duration = tl.duration());\n    } else {\n      _this3.timeline = 0; //speed optimization, faster lookups (no going up the prototype chain)\n    }\n\n    if (overwrite === true && !_suppressOverwrites) {\n      _overwritingTween = _assertThisInitialized(_this3);\n\n      _globalTimeline.killTweensOf(parsedTargets);\n\n      _overwritingTween = 0;\n    }\n\n    _addToTimeline(parent, _assertThisInitialized(_this3), position);\n\n    vars.reversed && _this3.reverse();\n    vars.paused && _this3.paused(true);\n\n    if (immediateRender || !duration && !keyframes && _this3._start === _roundPrecise(parent._time) && _isNotFalse(immediateRender) && _hasNoPausedAncestors(_assertThisInitialized(_this3)) && parent.data !== \"nested\") {\n      _this3._tTime = -_tinyNum; //forces a render without having to set the render() \"force\" parameter to true because we want to allow lazying by default (using the \"force\" parameter always forces an immediate full render)\n\n      _this3.render(Math.max(0, -delay) || 0); //in case delay is negative\n\n    }\n\n    scrollTrigger && _scrollTrigger(_assertThisInitialized(_this3), scrollTrigger);\n    return _this3;\n  }\n\n  var _proto3 = Tween.prototype;\n\n  _proto3.render = function render(totalTime, suppressEvents, force) {\n    var prevTime = this._time,\n        tDur = this._tDur,\n        dur = this._dur,\n        isNegative = totalTime < 0,\n        tTime = totalTime > tDur - _tinyNum && !isNegative ? tDur : totalTime < _tinyNum ? 0 : totalTime,\n        time,\n        pt,\n        iteration,\n        cycleDuration,\n        prevIteration,\n        isYoyo,\n        ratio,\n        timeline,\n        yoyoEase;\n\n    if (!dur) {\n      _renderZeroDurationTween(this, totalTime, suppressEvents, force);\n    } else if (tTime !== this._tTime || !totalTime || force || !this._initted && this._tTime || this._startAt && this._zTime < 0 !== isNegative) {\n      //this senses if we're crossing over the start time, in which case we must record _zTime and force the render, but we do it in this lengthy conditional way for performance reasons (usually we can skip the calculations): this._initted && (this._zTime < 0) !== (totalTime < 0)\n      time = tTime;\n      timeline = this.timeline;\n\n      if (this._repeat) {\n        //adjust the time for repeats and yoyos\n        cycleDuration = dur + this._rDelay;\n\n        if (this._repeat < -1 && isNegative) {\n          return this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force);\n        }\n\n        time = _roundPrecise(tTime % cycleDuration); //round to avoid floating point errors. (4 % 0.8 should be 0 but some browsers report it as 0.79999999!)\n\n        if (tTime === tDur) {\n          // the tDur === tTime is for edge cases where there's a lengthy decimal on the duration and it may reach the very end but the time is rendered as not-quite-there (remember, tDur is rounded to 4 decimals whereas dur isn't)\n          iteration = this._repeat;\n          time = dur;\n        } else {\n          iteration = ~~(tTime / cycleDuration);\n\n          if (iteration && iteration === _roundPrecise(tTime / cycleDuration)) {\n            time = dur;\n            iteration--;\n          }\n\n          time > dur && (time = dur);\n        }\n\n        isYoyo = this._yoyo && iteration & 1;\n\n        if (isYoyo) {\n          yoyoEase = this._yEase;\n          time = dur - time;\n        }\n\n        prevIteration = _animationCycle(this._tTime, cycleDuration);\n\n        if (time === prevTime && !force && this._initted && iteration === prevIteration) {\n          //could be during the repeatDelay part. No need to render and fire callbacks.\n          this._tTime = tTime;\n          return this;\n        }\n\n        if (iteration !== prevIteration) {\n          timeline && this._yEase && _propagateYoyoEase(timeline, isYoyo); //repeatRefresh functionality\n\n          if (this.vars.repeatRefresh && !isYoyo && !this._lock && this._time !== cycleDuration && this._initted) {\n            // this._time will === cycleDuration when we render at EXACTLY the end of an iteration. Without this condition, it'd often do the repeatRefresh render TWICE (again on the very next tick).\n            this._lock = force = 1; //force, otherwise if lazy is true, the _attemptInitTween() will return and we'll jump out and get caught bouncing on each tick.\n\n            this.render(_roundPrecise(cycleDuration * iteration), true).invalidate()._lock = 0;\n          }\n        }\n      }\n\n      if (!this._initted) {\n        if (_attemptInitTween(this, isNegative ? totalTime : time, force, suppressEvents, tTime)) {\n          this._tTime = 0; // in constructor if immediateRender is true, we set _tTime to -_tinyNum to have the playhead cross the starting point but we can't leave _tTime as a negative number.\n\n          return this;\n        }\n\n        if (prevTime !== this._time && !(force && this.vars.repeatRefresh && iteration !== prevIteration)) {\n          // rare edge case - during initialization, an onUpdate in the _startAt (.fromTo()) might force this tween to render at a different spot in which case we should ditch this render() call so that it doesn't revert the values. But we also don't want to dump if we're doing a repeatRefresh render!\n          return this;\n        }\n\n        if (dur !== this._dur) {\n          // while initting, a plugin like InertiaPlugin might alter the duration, so rerun from the start to ensure everything renders as it should.\n          return this.render(totalTime, suppressEvents, force);\n        }\n      }\n\n      this._tTime = tTime;\n      this._time = time;\n\n      if (!this._act && this._ts) {\n        this._act = 1; //as long as it's not paused, force it to be active so that if the user renders independent of the parent timeline, it'll be forced to re-render on the next tick.\n\n        this._lazy = 0;\n      }\n\n      this.ratio = ratio = (yoyoEase || this._ease)(time / dur);\n\n      if (this._from) {\n        this.ratio = ratio = 1 - ratio;\n      }\n\n      if (time && !prevTime && !suppressEvents && !iteration) {\n        _callback(this, \"onStart\");\n\n        if (this._tTime !== tTime) {\n          // in case the onStart triggered a render at a different spot, eject. Like if someone did animation.pause(0.5) or something inside the onStart.\n          return this;\n        }\n      }\n\n      pt = this._pt;\n\n      while (pt) {\n        pt.r(ratio, pt.d);\n        pt = pt._next;\n      }\n\n      timeline && timeline.render(totalTime < 0 ? totalTime : timeline._dur * timeline._ease(time / this._dur), suppressEvents, force) || this._startAt && (this._zTime = totalTime);\n\n      if (this._onUpdate && !suppressEvents) {\n        isNegative && _rewindStartAt(this, totalTime, suppressEvents, force); //note: for performance reasons, we tuck this conditional logic inside less traveled areas (most tweens don't have an onUpdate). We'd just have it at the end before the onComplete, but the values should be updated before any onUpdate is called, so we ALSO put it here and then if it's not called, we do so later near the onComplete.\n\n        _callback(this, \"onUpdate\");\n      }\n\n      this._repeat && iteration !== prevIteration && this.vars.onRepeat && !suppressEvents && this.parent && _callback(this, \"onRepeat\");\n\n      if ((tTime === this._tDur || !tTime) && this._tTime === tTime) {\n        isNegative && !this._onUpdate && _rewindStartAt(this, totalTime, true, true);\n        (totalTime || !dur) && (tTime === this._tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1); // don't remove if we're rendering at exactly a time of 0, as there could be autoRevert values that should get set on the next tick (if the playhead goes backward beyond the startTime, negative totalTime). Don't remove if the timeline is reversed and the playhead isn't at 0, otherwise tl.progress(1).reverse() won't work. Only remove if the playhead is at the end and timeScale is positive, or if the playhead is at 0 and the timeScale is negative.\n\n        if (!suppressEvents && !(isNegative && !prevTime) && (tTime || prevTime || isYoyo)) {\n          // if prevTime and tTime are zero, we shouldn't fire the onReverseComplete. This could happen if you gsap.to(... {paused:true}).play();\n          _callback(this, tTime === tDur ? \"onComplete\" : \"onReverseComplete\", true);\n\n          this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom();\n        }\n      }\n    }\n\n    return this;\n  };\n\n  _proto3.targets = function targets() {\n    return this._targets;\n  };\n\n  _proto3.invalidate = function invalidate(soft) {\n    // \"soft\" gives us a way to clear out everything EXCEPT the recorded pre-\"from\" portion of from() tweens. Otherwise, for example, if you tween.progress(1).render(0, true true).invalidate(), the \"from\" values would persist and then on the next render, the from() tweens would initialize and the current value would match the \"from\" values, thus animate from the same value to the same value (no animation). We tap into this in ScrollTrigger's refresh() where we must push a tween to completion and then back again but honor its init state in case the tween is dependent on another tween further up on the page.\n    (!soft || !this.vars.runBackwards) && (this._startAt = 0);\n    this._pt = this._op = this._onUpdate = this._lazy = this.ratio = 0;\n    this._ptLookup = [];\n    this.timeline && this.timeline.invalidate(soft);\n    return _Animation2.prototype.invalidate.call(this, soft);\n  };\n\n  _proto3.resetTo = function resetTo(property, value, start, startIsRelative, skipRecursion) {\n    _tickerActive || _ticker.wake();\n    this._ts || this.play();\n    var time = Math.min(this._dur, (this._dp._time - this._start) * this._ts),\n        ratio;\n    this._initted || _initTween(this, time);\n    ratio = this._ease(time / this._dur); // don't just get tween.ratio because it may not have rendered yet.\n    // possible future addition to allow an object with multiple values to update, like tween.resetTo({x: 100, y: 200}); At this point, it doesn't seem worth the added kb given the fact that most users will likely opt for the convenient gsap.quickTo() way of interacting with this method.\n    // if (_isObject(property)) { // performance optimization\n    // \tfor (p in property) {\n    // \t\tif (_updatePropTweens(this, p, property[p], value ? value[p] : null, start, ratio, time)) {\n    // \t\t\treturn this.resetTo(property, value, start, startIsRelative); // if a PropTween wasn't found for the property, it'll get forced with a re-initialization so we need to jump out and start over again.\n    // \t\t}\n    // \t}\n    // } else {\n\n    if (_updatePropTweens(this, property, value, start, startIsRelative, ratio, time, skipRecursion)) {\n      return this.resetTo(property, value, start, startIsRelative, 1); // if a PropTween wasn't found for the property, it'll get forced with a re-initialization so we need to jump out and start over again.\n    } //}\n\n\n    _alignPlayhead(this, 0);\n\n    this.parent || _addLinkedListItem(this._dp, this, \"_first\", \"_last\", this._dp._sort ? \"_start\" : 0);\n    return this.render(0);\n  };\n\n  _proto3.kill = function kill(targets, vars) {\n    if (vars === void 0) {\n      vars = \"all\";\n    }\n\n    if (!targets && (!vars || vars === \"all\")) {\n      this._lazy = this._pt = 0;\n      return this.parent ? _interrupt(this) : this;\n    }\n\n    if (this.timeline) {\n      var tDur = this.timeline.totalDuration();\n      this.timeline.killTweensOf(targets, vars, _overwritingTween && _overwritingTween.vars.overwrite !== true)._first || _interrupt(this); // if nothing is left tweening, interrupt.\n\n      this.parent && tDur !== this.timeline.totalDuration() && _setDuration(this, this._dur * this.timeline._tDur / tDur, 0, 1); // if a nested tween is killed that changes the duration, it should affect this tween's duration. We must use the ratio, though, because sometimes the internal timeline is stretched like for keyframes where they don't all add up to whatever the parent tween's duration was set to.\n\n      return this;\n    }\n\n    var parsedTargets = this._targets,\n        killingTargets = targets ? toArray(targets) : parsedTargets,\n        propTweenLookup = this._ptLookup,\n        firstPT = this._pt,\n        overwrittenProps,\n        curLookup,\n        curOverwriteProps,\n        props,\n        p,\n        pt,\n        i;\n\n    if ((!vars || vars === \"all\") && _arraysMatch(parsedTargets, killingTargets)) {\n      vars === \"all\" && (this._pt = 0);\n      return _interrupt(this);\n    }\n\n    overwrittenProps = this._op = this._op || [];\n\n    if (vars !== \"all\") {\n      //so people can pass in a comma-delimited list of property names\n      if (_isString(vars)) {\n        p = {};\n\n        _forEachName(vars, function (name) {\n          return p[name] = 1;\n        });\n\n        vars = p;\n      }\n\n      vars = _addAliasesToVars(parsedTargets, vars);\n    }\n\n    i = parsedTargets.length;\n\n    while (i--) {\n      if (~killingTargets.indexOf(parsedTargets[i])) {\n        curLookup = propTweenLookup[i];\n\n        if (vars === \"all\") {\n          overwrittenProps[i] = vars;\n          props = curLookup;\n          curOverwriteProps = {};\n        } else {\n          curOverwriteProps = overwrittenProps[i] = overwrittenProps[i] || {};\n          props = vars;\n        }\n\n        for (p in props) {\n          pt = curLookup && curLookup[p];\n\n          if (pt) {\n            if (!(\"kill\" in pt.d) || pt.d.kill(p) === true) {\n              _removeLinkedListItem(this, pt, \"_pt\");\n            }\n\n            delete curLookup[p];\n          }\n\n          if (curOverwriteProps !== \"all\") {\n            curOverwriteProps[p] = 1;\n          }\n        }\n      }\n    }\n\n    this._initted && !this._pt && firstPT && _interrupt(this); //if all tweening properties are killed, kill the tween. Without this line, if there's a tween with multiple targets and then you killTweensOf() each target individually, the tween would technically still remain active and fire its onComplete even though there aren't any more properties tweening.\n\n    return this;\n  };\n\n  Tween.to = function to(targets, vars) {\n    return new Tween(targets, vars, arguments[2]);\n  };\n\n  Tween.from = function from(targets, vars) {\n    return _createTweenType(1, arguments);\n  };\n\n  Tween.delayedCall = function delayedCall(delay, callback, params, scope) {\n    return new Tween(callback, 0, {\n      immediateRender: false,\n      lazy: false,\n      overwrite: false,\n      delay: delay,\n      onComplete: callback,\n      onReverseComplete: callback,\n      onCompleteParams: params,\n      onReverseCompleteParams: params,\n      callbackScope: scope\n    }); // we must use onReverseComplete too for things like timeline.add(() => {...}) which should be triggered in BOTH directions (forward and reverse)\n  };\n\n  Tween.fromTo = function fromTo(targets, fromVars, toVars) {\n    return _createTweenType(2, arguments);\n  };\n\n  Tween.set = function set(targets, vars) {\n    vars.duration = 0;\n    vars.repeatDelay || (vars.repeat = 0);\n    return new Tween(targets, vars);\n  };\n\n  Tween.killTweensOf = function killTweensOf(targets, props, onlyActive) {\n    return _globalTimeline.killTweensOf(targets, props, onlyActive);\n  };\n\n  return Tween;\n}(Animation);\n\n_setDefaults(Tween.prototype, {\n  _targets: [],\n  _lazy: 0,\n  _startAt: 0,\n  _op: 0,\n  _onInit: 0\n}); //add the pertinent timeline methods to Tween instances so that users can chain conveniently and create a timeline automatically. (removed due to concerns that it'd ultimately add to more confusion especially for beginners)\n// _forEachName(\"to,from,fromTo,set,call,add,addLabel,addPause\", name => {\n// \tTween.prototype[name] = function() {\n// \t\tlet tl = new Timeline();\n// \t\treturn _addToTimeline(tl, this)[name].apply(tl, toArray(arguments));\n// \t}\n// });\n//for backward compatibility. Leverage the timeline calls.\n\n\n_forEachName(\"staggerTo,staggerFrom,staggerFromTo\", function (name) {\n  Tween[name] = function () {\n    var tl = new Timeline(),\n        params = _slice.call(arguments, 0);\n\n    params.splice(name === \"staggerFromTo\" ? 5 : 4, 0, 0);\n    return tl[name].apply(tl, params);\n  };\n});\n/*\n * --------------------------------------------------------------------------------------\n * PROPTWEEN\n * --------------------------------------------------------------------------------------\n */\n\n\nvar _setterPlain = function _setterPlain(target, property, value) {\n  return target[property] = value;\n},\n    _setterFunc = function _setterFunc(target, property, value) {\n  return target[property](value);\n},\n    _setterFuncWithParam = function _setterFuncWithParam(target, property, value, data) {\n  return target[property](data.fp, value);\n},\n    _setterAttribute = function _setterAttribute(target, property, value) {\n  return target.setAttribute(property, value);\n},\n    _getSetter = function _getSetter(target, property) {\n  return _isFunction(target[property]) ? _setterFunc : _isUndefined(target[property]) && target.setAttribute ? _setterAttribute : _setterPlain;\n},\n    _renderPlain = function _renderPlain(ratio, data) {\n  return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 1000000) / 1000000, data);\n},\n    _renderBoolean = function _renderBoolean(ratio, data) {\n  return data.set(data.t, data.p, !!(data.s + data.c * ratio), data);\n},\n    _renderComplexString = function _renderComplexString(ratio, data) {\n  var pt = data._pt,\n      s = \"\";\n\n  if (!ratio && data.b) {\n    //b = beginning string\n    s = data.b;\n  } else if (ratio === 1 && data.e) {\n    //e = ending string\n    s = data.e;\n  } else {\n    while (pt) {\n      s = pt.p + (pt.m ? pt.m(pt.s + pt.c * ratio) : Math.round((pt.s + pt.c * ratio) * 10000) / 10000) + s; //we use the \"p\" property for the text inbetween (like a suffix). And in the context of a complex string, the modifier (m) is typically just Math.round(), like for RGB colors.\n\n      pt = pt._next;\n    }\n\n    s += data.c; //we use the \"c\" of the PropTween to store the final chunk of non-numeric text.\n  }\n\n  data.set(data.t, data.p, s, data);\n},\n    _renderPropTweens = function _renderPropTweens(ratio, data) {\n  var pt = data._pt;\n\n  while (pt) {\n    pt.r(ratio, pt.d);\n    pt = pt._next;\n  }\n},\n    _addPluginModifier = function _addPluginModifier(modifier, tween, target, property) {\n  var pt = this._pt,\n      next;\n\n  while (pt) {\n    next = pt._next;\n    pt.p === property && pt.modifier(modifier, tween, target);\n    pt = next;\n  }\n},\n    _killPropTweensOf = function _killPropTweensOf(property) {\n  var pt = this._pt,\n      hasNonDependentRemaining,\n      next;\n\n  while (pt) {\n    next = pt._next;\n\n    if (pt.p === property && !pt.op || pt.op === property) {\n      _removeLinkedListItem(this, pt, \"_pt\");\n    } else if (!pt.dep) {\n      hasNonDependentRemaining = 1;\n    }\n\n    pt = next;\n  }\n\n  return !hasNonDependentRemaining;\n},\n    _setterWithModifier = function _setterWithModifier(target, property, value, data) {\n  data.mSet(target, property, data.m.call(data.tween, value, data.mt), data);\n},\n    _sortPropTweensByPriority = function _sortPropTweensByPriority(parent) {\n  var pt = parent._pt,\n      next,\n      pt2,\n      first,\n      last; //sorts the PropTween linked list in order of priority because some plugins need to do their work after ALL of the PropTweens were created (like RoundPropsPlugin and ModifiersPlugin)\n\n  while (pt) {\n    next = pt._next;\n    pt2 = first;\n\n    while (pt2 && pt2.pr > pt.pr) {\n      pt2 = pt2._next;\n    }\n\n    if (pt._prev = pt2 ? pt2._prev : last) {\n      pt._prev._next = pt;\n    } else {\n      first = pt;\n    }\n\n    if (pt._next = pt2) {\n      pt2._prev = pt;\n    } else {\n      last = pt;\n    }\n\n    pt = next;\n  }\n\n  parent._pt = first;\n}; //PropTween key: t = target, p = prop, r = renderer, d = data, s = start, c = change, op = overwriteProperty (ONLY populated when it's different than p), pr = priority, _next/_prev for the linked list siblings, set = setter, m = modifier, mSet = modifierSetter (the original setter, before a modifier was added)\n\n\nexport var PropTween = /*#__PURE__*/function () {\n  function PropTween(next, target, prop, start, change, renderer, data, setter, priority) {\n    this.t = target;\n    this.s = start;\n    this.c = change;\n    this.p = prop;\n    this.r = renderer || _renderPlain;\n    this.d = data || this;\n    this.set = setter || _setterPlain;\n    this.pr = priority || 0;\n    this._next = next;\n\n    if (next) {\n      next._prev = this;\n    }\n  }\n\n  var _proto4 = PropTween.prototype;\n\n  _proto4.modifier = function modifier(func, tween, target) {\n    this.mSet = this.mSet || this.set; //in case it was already set (a PropTween can only have one modifier)\n\n    this.set = _setterWithModifier;\n    this.m = func;\n    this.mt = target; //modifier target\n\n    this.tween = tween;\n  };\n\n  return PropTween;\n}(); //Initialization tasks\n\n_forEachName(_callbackNames + \"parent,duration,ease,delay,overwrite,runBackwards,startAt,yoyo,immediateRender,repeat,repeatDelay,data,paused,reversed,lazy,callbackScope,stringFilter,id,yoyoEase,stagger,inherit,repeatRefresh,keyframes,autoRevert,scrollTrigger\", function (name) {\n  return _reservedProps[name] = 1;\n});\n\n_globals.TweenMax = _globals.TweenLite = Tween;\n_globals.TimelineLite = _globals.TimelineMax = Timeline;\n_globalTimeline = new Timeline({\n  sortChildren: false,\n  defaults: _defaults,\n  autoRemoveChildren: true,\n  id: \"root\",\n  smoothChildTiming: true\n});\n_config.stringFilter = _colorStringFilter;\n\nvar _media = [],\n    _listeners = {},\n    _emptyArray = [],\n    _lastMediaTime = 0,\n    _contextID = 0,\n    _dispatch = function _dispatch(type) {\n  return (_listeners[type] || _emptyArray).map(function (f) {\n    return f();\n  });\n},\n    _onMediaChange = function _onMediaChange() {\n  var time = Date.now(),\n      matches = [];\n\n  if (time - _lastMediaTime > 2) {\n    _dispatch(\"matchMediaInit\");\n\n    _media.forEach(function (c) {\n      var queries = c.queries,\n          conditions = c.conditions,\n          match,\n          p,\n          anyMatch,\n          toggled;\n\n      for (p in queries) {\n        match = _win.matchMedia(queries[p]).matches; // Firefox doesn't update the \"matches\" property of the MediaQueryList object correctly - it only does so as it calls its change handler - so we must re-create a media query here to ensure it's accurate.\n\n        match && (anyMatch = 1);\n\n        if (match !== conditions[p]) {\n          conditions[p] = match;\n          toggled = 1;\n        }\n      }\n\n      if (toggled) {\n        c.revert();\n        anyMatch && matches.push(c);\n      }\n    });\n\n    _dispatch(\"matchMediaRevert\");\n\n    matches.forEach(function (c) {\n      return c.onMatch(c, function (func) {\n        return c.add(null, func);\n      });\n    });\n    _lastMediaTime = time;\n\n    _dispatch(\"matchMedia\");\n  }\n};\n\nvar Context = /*#__PURE__*/function () {\n  function Context(func, scope) {\n    this.selector = scope && selector(scope);\n    this.data = [];\n    this._r = []; // returned/cleanup functions\n\n    this.isReverted = false;\n    this.id = _contextID++; // to work around issues that frameworks like Vue cause by making things into Proxies which make it impossible to do something like _media.indexOf(this) because \"this\" would no longer refer to the Context instance itself - it'd refer to a Proxy! We needed a way to identify the context uniquely\n\n    func && this.add(func);\n  }\n\n  var _proto5 = Context.prototype;\n\n  _proto5.add = function add(name, func, scope) {\n    // possible future addition if we need the ability to add() an animation to a context and for whatever reason cannot create that animation inside of a context.add(() => {...}) function.\n    // if (name && _isFunction(name.revert)) {\n    // \tthis.data.push(name);\n    // \treturn (name._ctx = this);\n    // }\n    if (_isFunction(name)) {\n      scope = func;\n      func = name;\n      name = _isFunction;\n    }\n\n    var self = this,\n        f = function f() {\n      var prev = _context,\n          prevSelector = self.selector,\n          result;\n      prev && prev !== self && prev.data.push(self);\n      scope && (self.selector = selector(scope));\n      _context = self;\n      result = func.apply(self, arguments);\n      _isFunction(result) && self._r.push(result);\n      _context = prev;\n      self.selector = prevSelector;\n      self.isReverted = false;\n      return result;\n    };\n\n    self.last = f;\n    return name === _isFunction ? f(self, function (func) {\n      return self.add(null, func);\n    }) : name ? self[name] = f : f;\n  };\n\n  _proto5.ignore = function ignore(func) {\n    var prev = _context;\n    _context = null;\n    func(this);\n    _context = prev;\n  };\n\n  _proto5.getTweens = function getTweens() {\n    var a = [];\n    this.data.forEach(function (e) {\n      return e instanceof Context ? a.push.apply(a, e.getTweens()) : e instanceof Tween && !(e.parent && e.parent.data === \"nested\") && a.push(e);\n    });\n    return a;\n  };\n\n  _proto5.clear = function clear() {\n    this._r.length = this.data.length = 0;\n  };\n\n  _proto5.kill = function kill(revert, matchMedia) {\n    var _this4 = this;\n\n    if (revert) {\n      (function () {\n        var tweens = _this4.getTweens(),\n            i = _this4.data.length,\n            t;\n\n        while (i--) {\n          // Flip plugin tweens are very different in that they should actually be pushed to their end. The plugin replaces the timeline's .revert() method to do exactly that. But we also need to remove any of those nested tweens inside the flip timeline so that they don't get individually reverted.\n          t = _this4.data[i];\n\n          if (t.data === \"isFlip\") {\n            t.revert();\n            t.getChildren(true, true, false).forEach(function (tween) {\n              return tweens.splice(tweens.indexOf(tween), 1);\n            });\n          }\n        } // save as an object so that we can cache the globalTime for each tween to optimize performance during the sort\n\n\n        tweens.map(function (t) {\n          return {\n            g: t._dur || t._delay || t._sat && !t._sat.vars.immediateRender ? t.globalTime(0) : -Infinity,\n            t: t\n          };\n        }).sort(function (a, b) {\n          return b.g - a.g || -Infinity;\n        }).forEach(function (o) {\n          return o.t.revert(revert);\n        }); // note: all of the _startAt tweens should be reverted in reverse order that they were created, and they'll all have the same globalTime (-1) so the \" || -1\" in the sort keeps the order properly.\n\n        i = _this4.data.length;\n\n        while (i--) {\n          // make sure we loop backwards so that, for example, SplitTexts that were created later on the same element get reverted first\n          t = _this4.data[i];\n\n          if (t instanceof Timeline) {\n            if (t.data !== \"nested\") {\n              t.scrollTrigger && t.scrollTrigger.revert();\n              t.kill(); // don't revert() the timeline because that's duplicating efforts since we already reverted all the tweens\n            }\n          } else {\n            !(t instanceof Tween) && t.revert && t.revert(revert);\n          }\n        }\n\n        _this4._r.forEach(function (f) {\n          return f(revert, _this4);\n        });\n\n        _this4.isReverted = true;\n      })();\n    } else {\n      this.data.forEach(function (e) {\n        return e.kill && e.kill();\n      });\n    }\n\n    this.clear();\n\n    if (matchMedia) {\n      var i = _media.length;\n\n      while (i--) {\n        // previously, we checked _media.indexOf(this), but some frameworks like Vue enforce Proxy objects that make it impossible to get the proper result that way, so we must use a unique ID number instead.\n        _media[i].id === this.id && _media.splice(i, 1);\n      }\n    }\n  };\n\n  _proto5.revert = function revert(config) {\n    this.kill(config || {});\n  };\n\n  return Context;\n}();\n\nvar MatchMedia = /*#__PURE__*/function () {\n  function MatchMedia(scope) {\n    this.contexts = [];\n    this.scope = scope;\n    _context && _context.data.push(this);\n  }\n\n  var _proto6 = MatchMedia.prototype;\n\n  _proto6.add = function add(conditions, func, scope) {\n    _isObject(conditions) || (conditions = {\n      matches: conditions\n    });\n    var context = new Context(0, scope || this.scope),\n        cond = context.conditions = {},\n        mq,\n        p,\n        active;\n    _context && !context.selector && (context.selector = _context.selector); // in case a context is created inside a context. Like a gsap.matchMedia() that's inside a scoped gsap.context()\n\n    this.contexts.push(context);\n    func = context.add(\"onMatch\", func);\n    context.queries = conditions;\n\n    for (p in conditions) {\n      if (p === \"all\") {\n        active = 1;\n      } else {\n        mq = _win.matchMedia(conditions[p]);\n\n        if (mq) {\n          _media.indexOf(context) < 0 && _media.push(context);\n          (cond[p] = mq.matches) && (active = 1);\n          mq.addListener ? mq.addListener(_onMediaChange) : mq.addEventListener(\"change\", _onMediaChange);\n        }\n      }\n    }\n\n    active && func(context, function (f) {\n      return context.add(null, f);\n    });\n    return this;\n  } // refresh() {\n  // \tlet time = _lastMediaTime,\n  // \t\tmedia = _media;\n  // \t_lastMediaTime = -1;\n  // \t_media = this.contexts;\n  // \t_onMediaChange();\n  // \t_lastMediaTime = time;\n  // \t_media = media;\n  // }\n  ;\n\n  _proto6.revert = function revert(config) {\n    this.kill(config || {});\n  };\n\n  _proto6.kill = function kill(revert) {\n    this.contexts.forEach(function (c) {\n      return c.kill(revert, true);\n    });\n  };\n\n  return MatchMedia;\n}();\n/*\n * --------------------------------------------------------------------------------------\n * GSAP\n * --------------------------------------------------------------------------------------\n */\n\n\nvar _gsap = {\n  registerPlugin: function registerPlugin() {\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    args.forEach(function (config) {\n      return _createPlugin(config);\n    });\n  },\n  timeline: function timeline(vars) {\n    return new Timeline(vars);\n  },\n  getTweensOf: function getTweensOf(targets, onlyActive) {\n    return _globalTimeline.getTweensOf(targets, onlyActive);\n  },\n  getProperty: function getProperty(target, property, unit, uncache) {\n    _isString(target) && (target = toArray(target)[0]); //in case selector text or an array is passed in\n\n    var getter = _getCache(target || {}).get,\n        format = unit ? _passThrough : _numericIfPossible;\n\n    unit === \"native\" && (unit = \"\");\n    return !target ? target : !property ? function (property, unit, uncache) {\n      return format((_plugins[property] && _plugins[property].get || getter)(target, property, unit, uncache));\n    } : format((_plugins[property] && _plugins[property].get || getter)(target, property, unit, uncache));\n  },\n  quickSetter: function quickSetter(target, property, unit) {\n    target = toArray(target);\n\n    if (target.length > 1) {\n      var setters = target.map(function (t) {\n        return gsap.quickSetter(t, property, unit);\n      }),\n          l = setters.length;\n      return function (value) {\n        var i = l;\n\n        while (i--) {\n          setters[i](value);\n        }\n      };\n    }\n\n    target = target[0] || {};\n\n    var Plugin = _plugins[property],\n        cache = _getCache(target),\n        p = cache.harness && (cache.harness.aliases || {})[property] || property,\n        // in case it's an alias, like \"rotate\" for \"rotation\".\n    setter = Plugin ? function (value) {\n      var p = new Plugin();\n      _quickTween._pt = 0;\n      p.init(target, unit ? value + unit : value, _quickTween, 0, [target]);\n      p.render(1, p);\n      _quickTween._pt && _renderPropTweens(1, _quickTween);\n    } : cache.set(target, p);\n\n    return Plugin ? setter : function (value) {\n      return setter(target, p, unit ? value + unit : value, cache, 1);\n    };\n  },\n  quickTo: function quickTo(target, property, vars) {\n    var _merge2;\n\n    var tween = gsap.to(target, _merge((_merge2 = {}, _merge2[property] = \"+=0.1\", _merge2.paused = true, _merge2), vars || {})),\n        func = function func(value, start, startIsRelative) {\n      return tween.resetTo(property, value, start, startIsRelative);\n    };\n\n    func.tween = tween;\n    return func;\n  },\n  isTweening: function isTweening(targets) {\n    return _globalTimeline.getTweensOf(targets, true).length > 0;\n  },\n  defaults: function defaults(value) {\n    value && value.ease && (value.ease = _parseEase(value.ease, _defaults.ease));\n    return _mergeDeep(_defaults, value || {});\n  },\n  config: function config(value) {\n    return _mergeDeep(_config, value || {});\n  },\n  registerEffect: function registerEffect(_ref3) {\n    var name = _ref3.name,\n        effect = _ref3.effect,\n        plugins = _ref3.plugins,\n        defaults = _ref3.defaults,\n        extendTimeline = _ref3.extendTimeline;\n    (plugins || \"\").split(\",\").forEach(function (pluginName) {\n      return pluginName && !_plugins[pluginName] && !_globals[pluginName] && _warn(name + \" effect requires \" + pluginName + \" plugin.\");\n    });\n\n    _effects[name] = function (targets, vars, tl) {\n      return effect(toArray(targets), _setDefaults(vars || {}, defaults), tl);\n    };\n\n    if (extendTimeline) {\n      Timeline.prototype[name] = function (targets, vars, position) {\n        return this.add(_effects[name](targets, _isObject(vars) ? vars : (position = vars) && {}, this), position);\n      };\n    }\n  },\n  registerEase: function registerEase(name, ease) {\n    _easeMap[name] = _parseEase(ease);\n  },\n  parseEase: function parseEase(ease, defaultEase) {\n    return arguments.length ? _parseEase(ease, defaultEase) : _easeMap;\n  },\n  getById: function getById(id) {\n    return _globalTimeline.getById(id);\n  },\n  exportRoot: function exportRoot(vars, includeDelayedCalls) {\n    if (vars === void 0) {\n      vars = {};\n    }\n\n    var tl = new Timeline(vars),\n        child,\n        next;\n    tl.smoothChildTiming = _isNotFalse(vars.smoothChildTiming);\n\n    _globalTimeline.remove(tl);\n\n    tl._dp = 0; //otherwise it'll get re-activated when adding children and be re-introduced into _globalTimeline's linked list (then added to itself).\n\n    tl._time = tl._tTime = _globalTimeline._time;\n    child = _globalTimeline._first;\n\n    while (child) {\n      next = child._next;\n\n      if (includeDelayedCalls || !(!child._dur && child instanceof Tween && child.vars.onComplete === child._targets[0])) {\n        _addToTimeline(tl, child, child._start - child._delay);\n      }\n\n      child = next;\n    }\n\n    _addToTimeline(_globalTimeline, tl, 0);\n\n    return tl;\n  },\n  context: function context(func, scope) {\n    return func ? new Context(func, scope) : _context;\n  },\n  matchMedia: function matchMedia(scope) {\n    return new MatchMedia(scope);\n  },\n  matchMediaRefresh: function matchMediaRefresh() {\n    return _media.forEach(function (c) {\n      var cond = c.conditions,\n          found,\n          p;\n\n      for (p in cond) {\n        if (cond[p]) {\n          cond[p] = false;\n          found = 1;\n        }\n      }\n\n      found && c.revert();\n    }) || _onMediaChange();\n  },\n  addEventListener: function addEventListener(type, callback) {\n    var a = _listeners[type] || (_listeners[type] = []);\n    ~a.indexOf(callback) || a.push(callback);\n  },\n  removeEventListener: function removeEventListener(type, callback) {\n    var a = _listeners[type],\n        i = a && a.indexOf(callback);\n    i >= 0 && a.splice(i, 1);\n  },\n  utils: {\n    wrap: wrap,\n    wrapYoyo: wrapYoyo,\n    distribute: distribute,\n    random: random,\n    snap: snap,\n    normalize: normalize,\n    getUnit: getUnit,\n    clamp: clamp,\n    splitColor: splitColor,\n    toArray: toArray,\n    selector: selector,\n    mapRange: mapRange,\n    pipe: pipe,\n    unitize: unitize,\n    interpolate: interpolate,\n    shuffle: shuffle\n  },\n  install: _install,\n  effects: _effects,\n  ticker: _ticker,\n  updateRoot: Timeline.updateRoot,\n  plugins: _plugins,\n  globalTimeline: _globalTimeline,\n  core: {\n    PropTween: PropTween,\n    globals: _addGlobal,\n    Tween: Tween,\n    Timeline: Timeline,\n    Animation: Animation,\n    getCache: _getCache,\n    _removeLinkedListItem: _removeLinkedListItem,\n    reverting: function reverting() {\n      return _reverting;\n    },\n    context: function context(toAdd) {\n      if (toAdd && _context) {\n        _context.data.push(toAdd);\n\n        toAdd._ctx = _context;\n      }\n\n      return _context;\n    },\n    suppressOverwrites: function suppressOverwrites(value) {\n      return _suppressOverwrites = value;\n    }\n  }\n};\n\n_forEachName(\"to,from,fromTo,delayedCall,set,killTweensOf\", function (name) {\n  return _gsap[name] = Tween[name];\n});\n\n_ticker.add(Timeline.updateRoot);\n\n_quickTween = _gsap.to({}, {\n  duration: 0\n}); // ---- EXTRA PLUGINS --------------------------------------------------------\n\nvar _getPluginPropTween = function _getPluginPropTween(plugin, prop) {\n  var pt = plugin._pt;\n\n  while (pt && pt.p !== prop && pt.op !== prop && pt.fp !== prop) {\n    pt = pt._next;\n  }\n\n  return pt;\n},\n    _addModifiers = function _addModifiers(tween, modifiers) {\n  var targets = tween._targets,\n      p,\n      i,\n      pt;\n\n  for (p in modifiers) {\n    i = targets.length;\n\n    while (i--) {\n      pt = tween._ptLookup[i][p];\n\n      if (pt && (pt = pt.d)) {\n        if (pt._pt) {\n          // is a plugin\n          pt = _getPluginPropTween(pt, p);\n        }\n\n        pt && pt.modifier && pt.modifier(modifiers[p], tween, targets[i], p);\n      }\n    }\n  }\n},\n    _buildModifierPlugin = function _buildModifierPlugin(name, modifier) {\n  return {\n    name: name,\n    rawVars: 1,\n    //don't pre-process function-based values or \"random()\" strings.\n    init: function init(target, vars, tween) {\n      tween._onInit = function (tween) {\n        var temp, p;\n\n        if (_isString(vars)) {\n          temp = {};\n\n          _forEachName(vars, function (name) {\n            return temp[name] = 1;\n          }); //if the user passes in a comma-delimited list of property names to roundProps, like \"x,y\", we round to whole numbers.\n\n\n          vars = temp;\n        }\n\n        if (modifier) {\n          temp = {};\n\n          for (p in vars) {\n            temp[p] = modifier(vars[p]);\n          }\n\n          vars = temp;\n        }\n\n        _addModifiers(tween, vars);\n      };\n    }\n  };\n}; //register core plugins\n\n\nexport var gsap = _gsap.registerPlugin({\n  name: \"attr\",\n  init: function init(target, vars, tween, index, targets) {\n    var p, pt, v;\n    this.tween = tween;\n\n    for (p in vars) {\n      v = target.getAttribute(p) || \"\";\n      pt = this.add(target, \"setAttribute\", (v || 0) + \"\", vars[p], index, targets, 0, 0, p);\n      pt.op = p;\n      pt.b = v; // record the beginning value so we can revert()\n\n      this._props.push(p);\n    }\n  },\n  render: function render(ratio, data) {\n    var pt = data._pt;\n\n    while (pt) {\n      _reverting ? pt.set(pt.t, pt.p, pt.b, pt) : pt.r(ratio, pt.d); // if reverting, go back to the original (pt.b)\n\n      pt = pt._next;\n    }\n  }\n}, {\n  name: \"endArray\",\n  init: function init(target, value) {\n    var i = value.length;\n\n    while (i--) {\n      this.add(target, i, target[i] || 0, value[i], 0, 0, 0, 0, 0, 1);\n    }\n  }\n}, _buildModifierPlugin(\"roundProps\", _roundModifier), _buildModifierPlugin(\"modifiers\"), _buildModifierPlugin(\"snap\", snap)) || _gsap; //to prevent the core plugins from being dropped via aggressive tree shaking, we must include them in the variable declaration in this way.\n\nTween.version = Timeline.version = gsap.version = \"3.12.5\";\n_coreReady = 1;\n_windowExists() && _wake();\nvar Power0 = _easeMap.Power0,\n    Power1 = _easeMap.Power1,\n    Power2 = _easeMap.Power2,\n    Power3 = _easeMap.Power3,\n    Power4 = _easeMap.Power4,\n    Linear = _easeMap.Linear,\n    Quad = _easeMap.Quad,\n    Cubic = _easeMap.Cubic,\n    Quart = _easeMap.Quart,\n    Quint = _easeMap.Quint,\n    Strong = _easeMap.Strong,\n    Elastic = _easeMap.Elastic,\n    Back = _easeMap.Back,\n    SteppedEase = _easeMap.SteppedEase,\n    Bounce = _easeMap.Bounce,\n    Sine = _easeMap.Sine,\n    Expo = _easeMap.Expo,\n    Circ = _easeMap.Circ;\nexport { Power0, Power1, Power2, Power3, Power4, Linear, Quad, Cubic, Quart, Quint, Strong, Elastic, Back, SteppedEase, Bounce, Sine, Expo, Circ };\nexport { Tween as TweenMax, Tween as TweenLite, Timeline as TimelineMax, Timeline as TimelineLite, gsap as default, wrap, wrapYoyo, distribute, random, snap, normalize, getUnit, clamp, splitColor, toArray, selector, mapRange, pipe, unitize, interpolate, shuffle }; //export some internal methods/orojects for use in CSSPlugin so that we can externalize that file and allow custom builds that exclude it.\n\nexport { _getProperty, _numExp, _numWithUnitExp, _isString, _isUndefined, _renderComplexString, _relExp, _setDefaults, _removeLinkedListItem, _forEachName, _sortPropTweensByPriority, _colorStringFilter, _replaceRandom, _checkPlugin, _plugins, _ticker, _config, _roundModifier, _round, _missingPlugin, _getSetter, _getCache, _colorExp, _parseRelative };","/*!\n * CSSPlugin 3.12.5\n * https://gsap.com\n *\n * Copyright 2008-2024, GreenSock. All rights reserved.\n * Subject to the terms at https://gsap.com/standard-license or for\n * Club GSAP members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\nimport { gsap, _getProperty, _numExp, _numWithUnitExp, getUnit, _isString, _isUndefined, _renderComplexString, _relExp, _forEachName, _sortPropTweensByPriority, _colorStringFilter, _checkPlugin, _replaceRandom, _plugins, GSCache, PropTween, _config, _ticker, _round, _missingPlugin, _getSetter, _getCache, _colorExp, _parseRelative, _setDefaults, _removeLinkedListItem //for the commented-out className feature.\n} from \"./gsap-core.js\";\n\nvar _win,\n    _doc,\n    _docElement,\n    _pluginInitted,\n    _tempDiv,\n    _tempDivStyler,\n    _recentSetterPlugin,\n    _reverting,\n    _windowExists = function _windowExists() {\n  return typeof window !== \"undefined\";\n},\n    _transformProps = {},\n    _RAD2DEG = 180 / Math.PI,\n    _DEG2RAD = Math.PI / 180,\n    _atan2 = Math.atan2,\n    _bigNum = 1e8,\n    _capsExp = /([A-Z])/g,\n    _horizontalExp = /(left|right|width|margin|padding|x)/i,\n    _complexExp = /[\\s,\\(]\\S/,\n    _propertyAliases = {\n  autoAlpha: \"opacity,visibility\",\n  scale: \"scaleX,scaleY\",\n  alpha: \"opacity\"\n},\n    _renderCSSProp = function _renderCSSProp(ratio, data) {\n  return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u, data);\n},\n    _renderPropWithEnd = function _renderPropWithEnd(ratio, data) {\n  return data.set(data.t, data.p, ratio === 1 ? data.e : Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u, data);\n},\n    _renderCSSPropWithBeginning = function _renderCSSPropWithBeginning(ratio, data) {\n  return data.set(data.t, data.p, ratio ? Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u : data.b, data);\n},\n    //if units change, we need a way to render the original unit/value when the tween goes all the way back to the beginning (ratio:0)\n_renderRoundedCSSProp = function _renderRoundedCSSProp(ratio, data) {\n  var value = data.s + data.c * ratio;\n  data.set(data.t, data.p, ~~(value + (value < 0 ? -.5 : .5)) + data.u, data);\n},\n    _renderNonTweeningValue = function _renderNonTweeningValue(ratio, data) {\n  return data.set(data.t, data.p, ratio ? data.e : data.b, data);\n},\n    _renderNonTweeningValueOnlyAtEnd = function _renderNonTweeningValueOnlyAtEnd(ratio, data) {\n  return data.set(data.t, data.p, ratio !== 1 ? data.b : data.e, data);\n},\n    _setterCSSStyle = function _setterCSSStyle(target, property, value) {\n  return target.style[property] = value;\n},\n    _setterCSSProp = function _setterCSSProp(target, property, value) {\n  return target.style.setProperty(property, value);\n},\n    _setterTransform = function _setterTransform(target, property, value) {\n  return target._gsap[property] = value;\n},\n    _setterScale = function _setterScale(target, property, value) {\n  return target._gsap.scaleX = target._gsap.scaleY = value;\n},\n    _setterScaleWithRender = function _setterScaleWithRender(target, property, value, data, ratio) {\n  var cache = target._gsap;\n  cache.scaleX = cache.scaleY = value;\n  cache.renderTransform(ratio, cache);\n},\n    _setterTransformWithRender = function _setterTransformWithRender(target, property, value, data, ratio) {\n  var cache = target._gsap;\n  cache[property] = value;\n  cache.renderTransform(ratio, cache);\n},\n    _transformProp = \"transform\",\n    _transformOriginProp = _transformProp + \"Origin\",\n    _saveStyle = function _saveStyle(property, isNotCSS) {\n  var _this = this;\n\n  var target = this.target,\n      style = target.style,\n      cache = target._gsap;\n\n  if (property in _transformProps && style) {\n    this.tfm = this.tfm || {};\n\n    if (property !== \"transform\") {\n      property = _propertyAliases[property] || property;\n      ~property.indexOf(\",\") ? property.split(\",\").forEach(function (a) {\n        return _this.tfm[a] = _get(target, a);\n      }) : this.tfm[property] = cache.x ? cache[property] : _get(target, property); // note: scale would map to \"scaleX,scaleY\", thus we loop and apply them both.\n\n      property === _transformOriginProp && (this.tfm.zOrigin = cache.zOrigin);\n    } else {\n      return _propertyAliases.transform.split(\",\").forEach(function (p) {\n        return _saveStyle.call(_this, p, isNotCSS);\n      });\n    }\n\n    if (this.props.indexOf(_transformProp) >= 0) {\n      return;\n    }\n\n    if (cache.svg) {\n      this.svgo = target.getAttribute(\"data-svg-origin\");\n      this.props.push(_transformOriginProp, isNotCSS, \"\");\n    }\n\n    property = _transformProp;\n  }\n\n  (style || isNotCSS) && this.props.push(property, isNotCSS, style[property]);\n},\n    _removeIndependentTransforms = function _removeIndependentTransforms(style) {\n  if (style.translate) {\n    style.removeProperty(\"translate\");\n    style.removeProperty(\"scale\");\n    style.removeProperty(\"rotate\");\n  }\n},\n    _revertStyle = function _revertStyle() {\n  var props = this.props,\n      target = this.target,\n      style = target.style,\n      cache = target._gsap,\n      i,\n      p;\n\n  for (i = 0; i < props.length; i += 3) {\n    // stored like this: property, isNotCSS, value\n    props[i + 1] ? target[props[i]] = props[i + 2] : props[i + 2] ? style[props[i]] = props[i + 2] : style.removeProperty(props[i].substr(0, 2) === \"--\" ? props[i] : props[i].replace(_capsExp, \"-$1\").toLowerCase());\n  }\n\n  if (this.tfm) {\n    for (p in this.tfm) {\n      cache[p] = this.tfm[p];\n    }\n\n    if (cache.svg) {\n      cache.renderTransform();\n      target.setAttribute(\"data-svg-origin\", this.svgo || \"\");\n    }\n\n    i = _reverting();\n\n    if ((!i || !i.isStart) && !style[_transformProp]) {\n      _removeIndependentTransforms(style);\n\n      if (cache.zOrigin && style[_transformOriginProp]) {\n        style[_transformOriginProp] += \" \" + cache.zOrigin + \"px\"; // since we're uncaching, we must put the zOrigin back into the transformOrigin so that we can pull it out accurately when we parse again. Otherwise, we'd lose the z portion of the origin since we extract it to protect from Safari bugs.\n\n        cache.zOrigin = 0;\n        cache.renderTransform();\n      }\n\n      cache.uncache = 1; // if it's a startAt that's being reverted in the _initTween() of the core, we don't need to uncache transforms. This is purely a performance optimization.\n    }\n  }\n},\n    _getStyleSaver = function _getStyleSaver(target, properties) {\n  var saver = {\n    target: target,\n    props: [],\n    revert: _revertStyle,\n    save: _saveStyle\n  };\n  target._gsap || gsap.core.getCache(target); // just make sure there's a _gsap cache defined because we read from it in _saveStyle() and it's more efficient to just check it here once.\n\n  properties && properties.split(\",\").forEach(function (p) {\n    return saver.save(p);\n  });\n  return saver;\n},\n    _supports3D,\n    _createElement = function _createElement(type, ns) {\n  var e = _doc.createElementNS ? _doc.createElementNS((ns || \"http://www.w3.org/1999/xhtml\").replace(/^https/, \"http\"), type) : _doc.createElement(type); //some servers swap in https for http in the namespace which can break things, making \"style\" inaccessible.\n\n  return e && e.style ? e : _doc.createElement(type); //some environments won't allow access to the element's style when created with a namespace in which case we default to the standard createElement() to work around the issue. Also note that when GSAP is embedded directly inside an SVG file, createElement() won't allow access to the style object in Firefox (see https://gsap.com/forums/topic/20215-problem-using-tweenmax-in-standalone-self-containing-svg-file-err-cannot-set-property-csstext-of-undefined/).\n},\n    _getComputedProperty = function _getComputedProperty(target, property, skipPrefixFallback) {\n  var cs = getComputedStyle(target);\n  return cs[property] || cs.getPropertyValue(property.replace(_capsExp, \"-$1\").toLowerCase()) || cs.getPropertyValue(property) || !skipPrefixFallback && _getComputedProperty(target, _checkPropPrefix(property) || property, 1) || \"\"; //css variables may not need caps swapped out for dashes and lowercase.\n},\n    _prefixes = \"O,Moz,ms,Ms,Webkit\".split(\",\"),\n    _checkPropPrefix = function _checkPropPrefix(property, element, preferPrefix) {\n  var e = element || _tempDiv,\n      s = e.style,\n      i = 5;\n\n  if (property in s && !preferPrefix) {\n    return property;\n  }\n\n  property = property.charAt(0).toUpperCase() + property.substr(1);\n\n  while (i-- && !(_prefixes[i] + property in s)) {}\n\n  return i < 0 ? null : (i === 3 ? \"ms\" : i >= 0 ? _prefixes[i] : \"\") + property;\n},\n    _initCore = function _initCore() {\n  if (_windowExists() && window.document) {\n    _win = window;\n    _doc = _win.document;\n    _docElement = _doc.documentElement;\n    _tempDiv = _createElement(\"div\") || {\n      style: {}\n    };\n    _tempDivStyler = _createElement(\"div\");\n    _transformProp = _checkPropPrefix(_transformProp);\n    _transformOriginProp = _transformProp + \"Origin\";\n    _tempDiv.style.cssText = \"border-width:0;line-height:0;position:absolute;padding:0\"; //make sure to override certain properties that may contaminate measurements, in case the user has overreaching style sheets.\n\n    _supports3D = !!_checkPropPrefix(\"perspective\");\n    _reverting = gsap.core.reverting;\n    _pluginInitted = 1;\n  }\n},\n    _getBBoxHack = function _getBBoxHack(swapIfPossible) {\n  //works around issues in some browsers (like Firefox) that don't correctly report getBBox() on SVG elements inside a <defs> element and/or <mask>. We try creating an SVG, adding it to the documentElement and toss the element in there so that it's definitely part of the rendering tree, then grab the bbox and if it works, we actually swap out the original getBBox() method for our own that does these extra steps whenever getBBox is needed. This helps ensure that performance is optimal (only do all these extra steps when absolutely necessary...most elements don't need it).\n  var svg = _createElement(\"svg\", this.ownerSVGElement && this.ownerSVGElement.getAttribute(\"xmlns\") || \"http://www.w3.org/2000/svg\"),\n      oldParent = this.parentNode,\n      oldSibling = this.nextSibling,\n      oldCSS = this.style.cssText,\n      bbox;\n\n  _docElement.appendChild(svg);\n\n  svg.appendChild(this);\n  this.style.display = \"block\";\n\n  if (swapIfPossible) {\n    try {\n      bbox = this.getBBox();\n      this._gsapBBox = this.getBBox; //store the original\n\n      this.getBBox = _getBBoxHack;\n    } catch (e) {}\n  } else if (this._gsapBBox) {\n    bbox = this._gsapBBox();\n  }\n\n  if (oldParent) {\n    if (oldSibling) {\n      oldParent.insertBefore(this, oldSibling);\n    } else {\n      oldParent.appendChild(this);\n    }\n  }\n\n  _docElement.removeChild(svg);\n\n  this.style.cssText = oldCSS;\n  return bbox;\n},\n    _getAttributeFallbacks = function _getAttributeFallbacks(target, attributesArray) {\n  var i = attributesArray.length;\n\n  while (i--) {\n    if (target.hasAttribute(attributesArray[i])) {\n      return target.getAttribute(attributesArray[i]);\n    }\n  }\n},\n    _getBBox = function _getBBox(target) {\n  var bounds;\n\n  try {\n    bounds = target.getBBox(); //Firefox throws errors if you try calling getBBox() on an SVG element that's not rendered (like in a <symbol> or <defs>). https://bugzilla.mozilla.org/show_bug.cgi?id=612118\n  } catch (error) {\n    bounds = _getBBoxHack.call(target, true);\n  }\n\n  bounds && (bounds.width || bounds.height) || target.getBBox === _getBBoxHack || (bounds = _getBBoxHack.call(target, true)); //some browsers (like Firefox) misreport the bounds if the element has zero width and height (it just assumes it's at x:0, y:0), thus we need to manually grab the position in that case.\n\n  return bounds && !bounds.width && !bounds.x && !bounds.y ? {\n    x: +_getAttributeFallbacks(target, [\"x\", \"cx\", \"x1\"]) || 0,\n    y: +_getAttributeFallbacks(target, [\"y\", \"cy\", \"y1\"]) || 0,\n    width: 0,\n    height: 0\n  } : bounds;\n},\n    _isSVG = function _isSVG(e) {\n  return !!(e.getCTM && (!e.parentNode || e.ownerSVGElement) && _getBBox(e));\n},\n    //reports if the element is an SVG on which getBBox() actually works\n_removeProperty = function _removeProperty(target, property) {\n  if (property) {\n    var style = target.style,\n        first2Chars;\n\n    if (property in _transformProps && property !== _transformOriginProp) {\n      property = _transformProp;\n    }\n\n    if (style.removeProperty) {\n      first2Chars = property.substr(0, 2);\n\n      if (first2Chars === \"ms\" || property.substr(0, 6) === \"webkit\") {\n        //Microsoft and some Webkit browsers don't conform to the standard of capitalizing the first prefix character, so we adjust so that when we prefix the caps with a dash, it's correct (otherwise it'd be \"ms-transform\" instead of \"-ms-transform\" for IE9, for example)\n        property = \"-\" + property;\n      }\n\n      style.removeProperty(first2Chars === \"--\" ? property : property.replace(_capsExp, \"-$1\").toLowerCase());\n    } else {\n      //note: old versions of IE use \"removeAttribute()\" instead of \"removeProperty()\"\n      style.removeAttribute(property);\n    }\n  }\n},\n    _addNonTweeningPT = function _addNonTweeningPT(plugin, target, property, beginning, end, onlySetAtEnd) {\n  var pt = new PropTween(plugin._pt, target, property, 0, 1, onlySetAtEnd ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue);\n  plugin._pt = pt;\n  pt.b = beginning;\n  pt.e = end;\n\n  plugin._props.push(property);\n\n  return pt;\n},\n    _nonConvertibleUnits = {\n  deg: 1,\n  rad: 1,\n  turn: 1\n},\n    _nonStandardLayouts = {\n  grid: 1,\n  flex: 1\n},\n    //takes a single value like 20px and converts it to the unit specified, like \"%\", returning only the numeric amount.\n_convertToUnit = function _convertToUnit(target, property, value, unit) {\n  var curValue = parseFloat(value) || 0,\n      curUnit = (value + \"\").trim().substr((curValue + \"\").length) || \"px\",\n      // some browsers leave extra whitespace at the beginning of CSS variables, hence the need to trim()\n  style = _tempDiv.style,\n      horizontal = _horizontalExp.test(property),\n      isRootSVG = target.tagName.toLowerCase() === \"svg\",\n      measureProperty = (isRootSVG ? \"client\" : \"offset\") + (horizontal ? \"Width\" : \"Height\"),\n      amount = 100,\n      toPixels = unit === \"px\",\n      toPercent = unit === \"%\",\n      px,\n      parent,\n      cache,\n      isSVG;\n\n  if (unit === curUnit || !curValue || _nonConvertibleUnits[unit] || _nonConvertibleUnits[curUnit]) {\n    return curValue;\n  }\n\n  curUnit !== \"px\" && !toPixels && (curValue = _convertToUnit(target, property, value, \"px\"));\n  isSVG = target.getCTM && _isSVG(target);\n\n  if ((toPercent || curUnit === \"%\") && (_transformProps[property] || ~property.indexOf(\"adius\"))) {\n    px = isSVG ? target.getBBox()[horizontal ? \"width\" : \"height\"] : target[measureProperty];\n    return _round(toPercent ? curValue / px * amount : curValue / 100 * px);\n  }\n\n  style[horizontal ? \"width\" : \"height\"] = amount + (toPixels ? curUnit : unit);\n  parent = ~property.indexOf(\"adius\") || unit === \"em\" && target.appendChild && !isRootSVG ? target : target.parentNode;\n\n  if (isSVG) {\n    parent = (target.ownerSVGElement || {}).parentNode;\n  }\n\n  if (!parent || parent === _doc || !parent.appendChild) {\n    parent = _doc.body;\n  }\n\n  cache = parent._gsap;\n\n  if (cache && toPercent && cache.width && horizontal && cache.time === _ticker.time && !cache.uncache) {\n    return _round(curValue / cache.width * amount);\n  } else {\n    if (toPercent && (property === \"height\" || property === \"width\")) {\n      // if we're dealing with width/height that's inside a container with padding and/or it's a flexbox/grid container, we must apply it to the target itself rather than the _tempDiv in order to ensure complete accuracy, factoring in the parent's padding.\n      var v = target.style[property];\n      target.style[property] = amount + unit;\n      px = target[measureProperty];\n      v ? target.style[property] = v : _removeProperty(target, property);\n    } else {\n      (toPercent || curUnit === \"%\") && !_nonStandardLayouts[_getComputedProperty(parent, \"display\")] && (style.position = _getComputedProperty(target, \"position\"));\n      parent === target && (style.position = \"static\"); // like for borderRadius, if it's a % we must have it relative to the target itself but that may not have position: relative or position: absolute in which case it'd go up the chain until it finds its offsetParent (bad). position: static protects against that.\n\n      parent.appendChild(_tempDiv);\n      px = _tempDiv[measureProperty];\n      parent.removeChild(_tempDiv);\n      style.position = \"absolute\";\n    }\n\n    if (horizontal && toPercent) {\n      cache = _getCache(parent);\n      cache.time = _ticker.time;\n      cache.width = parent[measureProperty];\n    }\n  }\n\n  return _round(toPixels ? px * curValue / amount : px && curValue ? amount / px * curValue : 0);\n},\n    _get = function _get(target, property, unit, uncache) {\n  var value;\n  _pluginInitted || _initCore();\n\n  if (property in _propertyAliases && property !== \"transform\") {\n    property = _propertyAliases[property];\n\n    if (~property.indexOf(\",\")) {\n      property = property.split(\",\")[0];\n    }\n  }\n\n  if (_transformProps[property] && property !== \"transform\") {\n    value = _parseTransform(target, uncache);\n    value = property !== \"transformOrigin\" ? value[property] : value.svg ? value.origin : _firstTwoOnly(_getComputedProperty(target, _transformOriginProp)) + \" \" + value.zOrigin + \"px\";\n  } else {\n    value = target.style[property];\n\n    if (!value || value === \"auto\" || uncache || ~(value + \"\").indexOf(\"calc(\")) {\n      value = _specialProps[property] && _specialProps[property](target, property, unit) || _getComputedProperty(target, property) || _getProperty(target, property) || (property === \"opacity\" ? 1 : 0); // note: some browsers, like Firefox, don't report borderRadius correctly! Instead, it only reports every corner like  borderTopLeftRadius\n    }\n  }\n\n  return unit && !~(value + \"\").trim().indexOf(\" \") ? _convertToUnit(target, property, value, unit) + unit : value;\n},\n    _tweenComplexCSSString = function _tweenComplexCSSString(target, prop, start, end) {\n  // note: we call _tweenComplexCSSString.call(pluginInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus \"this\" would refer to the plugin.\n  if (!start || start === \"none\") {\n    // some browsers like Safari actually PREFER the prefixed property and mis-report the unprefixed value like clipPath (BUG). In other words, even though clipPath exists in the style (\"clipPath\" in target.style) and it's set in the CSS properly (along with -webkit-clip-path), Safari reports clipPath as \"none\" whereas WebkitClipPath reports accurately like \"ellipse(100% 0% at 50% 0%)\", so in this case we must SWITCH to using the prefixed property instead. See https://gsap.com/forums/topic/18310-clippath-doesnt-work-on-ios/\n    var p = _checkPropPrefix(prop, target, 1),\n        s = p && _getComputedProperty(target, p, 1);\n\n    if (s && s !== start) {\n      prop = p;\n      start = s;\n    } else if (prop === \"borderColor\") {\n      start = _getComputedProperty(target, \"borderTopColor\"); // Firefox bug: always reports \"borderColor\" as \"\", so we must fall back to borderTopColor. See https://gsap.com/forums/topic/24583-how-to-return-colors-that-i-had-after-reverse/\n    }\n  }\n\n  var pt = new PropTween(this._pt, target.style, prop, 0, 1, _renderComplexString),\n      index = 0,\n      matchIndex = 0,\n      a,\n      result,\n      startValues,\n      startNum,\n      color,\n      startValue,\n      endValue,\n      endNum,\n      chunk,\n      endUnit,\n      startUnit,\n      endValues;\n  pt.b = start;\n  pt.e = end;\n  start += \"\"; // ensure values are strings\n\n  end += \"\";\n\n  if (end === \"auto\") {\n    startValue = target.style[prop];\n    target.style[prop] = end;\n    end = _getComputedProperty(target, prop) || end;\n    startValue ? target.style[prop] = startValue : _removeProperty(target, prop);\n  }\n\n  a = [start, end];\n\n  _colorStringFilter(a); // pass an array with the starting and ending values and let the filter do whatever it needs to the values. If colors are found, it returns true and then we must match where the color shows up order-wise because for things like boxShadow, sometimes the browser provides the computed values with the color FIRST, but the user provides it with the color LAST, so flip them if necessary. Same for drop-shadow().\n\n\n  start = a[0];\n  end = a[1];\n  startValues = start.match(_numWithUnitExp) || [];\n  endValues = end.match(_numWithUnitExp) || [];\n\n  if (endValues.length) {\n    while (result = _numWithUnitExp.exec(end)) {\n      endValue = result[0];\n      chunk = end.substring(index, result.index);\n\n      if (color) {\n        color = (color + 1) % 5;\n      } else if (chunk.substr(-5) === \"rgba(\" || chunk.substr(-5) === \"hsla(\") {\n        color = 1;\n      }\n\n      if (endValue !== (startValue = startValues[matchIndex++] || \"\")) {\n        startNum = parseFloat(startValue) || 0;\n        startUnit = startValue.substr((startNum + \"\").length);\n        endValue.charAt(1) === \"=\" && (endValue = _parseRelative(startNum, endValue) + startUnit);\n        endNum = parseFloat(endValue);\n        endUnit = endValue.substr((endNum + \"\").length);\n        index = _numWithUnitExp.lastIndex - endUnit.length;\n\n        if (!endUnit) {\n          //if something like \"perspective:300\" is passed in and we must add a unit to the end\n          endUnit = endUnit || _config.units[prop] || startUnit;\n\n          if (index === end.length) {\n            end += endUnit;\n            pt.e += endUnit;\n          }\n        }\n\n        if (startUnit !== endUnit) {\n          startNum = _convertToUnit(target, prop, startValue, endUnit) || 0;\n        } // these nested PropTweens are handled in a special way - we'll never actually call a render or setter method on them. We'll just loop through them in the parent complex string PropTween's render method.\n\n\n        pt._pt = {\n          _next: pt._pt,\n          p: chunk || matchIndex === 1 ? chunk : \",\",\n          //note: SVG spec allows omission of comma/space when a negative sign is wedged between two numbers, like 2.5-5.3 instead of 2.5,-5.3 but when tweening, the negative value may switch to positive, so we insert the comma just in case.\n          s: startNum,\n          c: endNum - startNum,\n          m: color && color < 4 || prop === \"zIndex\" ? Math.round : 0\n        };\n      }\n    }\n\n    pt.c = index < end.length ? end.substring(index, end.length) : \"\"; //we use the \"c\" of the PropTween to store the final part of the string (after the last number)\n  } else {\n    pt.r = prop === \"display\" && end === \"none\" ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue;\n  }\n\n  _relExp.test(end) && (pt.e = 0); //if the end string contains relative values or dynamic random(...) values, delete the end it so that on the final render we don't actually set it to the string with += or -= characters (forces it to use the calculated value).\n\n  this._pt = pt; //start the linked list with this new PropTween. Remember, we call _tweenComplexCSSString.call(pluginInstance...) to ensure that it's scoped properly. We may call it from within another plugin too, thus \"this\" would refer to the plugin.\n\n  return pt;\n},\n    _keywordToPercent = {\n  top: \"0%\",\n  bottom: \"100%\",\n  left: \"0%\",\n  right: \"100%\",\n  center: \"50%\"\n},\n    _convertKeywordsToPercentages = function _convertKeywordsToPercentages(value) {\n  var split = value.split(\" \"),\n      x = split[0],\n      y = split[1] || \"50%\";\n\n  if (x === \"top\" || x === \"bottom\" || y === \"left\" || y === \"right\") {\n    //the user provided them in the wrong order, so flip them\n    value = x;\n    x = y;\n    y = value;\n  }\n\n  split[0] = _keywordToPercent[x] || x;\n  split[1] = _keywordToPercent[y] || y;\n  return split.join(\" \");\n},\n    _renderClearProps = function _renderClearProps(ratio, data) {\n  if (data.tween && data.tween._time === data.tween._dur) {\n    var target = data.t,\n        style = target.style,\n        props = data.u,\n        cache = target._gsap,\n        prop,\n        clearTransforms,\n        i;\n\n    if (props === \"all\" || props === true) {\n      style.cssText = \"\";\n      clearTransforms = 1;\n    } else {\n      props = props.split(\",\");\n      i = props.length;\n\n      while (--i > -1) {\n        prop = props[i];\n\n        if (_transformProps[prop]) {\n          clearTransforms = 1;\n          prop = prop === \"transformOrigin\" ? _transformOriginProp : _transformProp;\n        }\n\n        _removeProperty(target, prop);\n      }\n    }\n\n    if (clearTransforms) {\n      _removeProperty(target, _transformProp);\n\n      if (cache) {\n        cache.svg && target.removeAttribute(\"transform\");\n\n        _parseTransform(target, 1); // force all the cached values back to \"normal\"/identity, otherwise if there's another tween that's already set to render transforms on this element, it could display the wrong values.\n\n\n        cache.uncache = 1;\n\n        _removeIndependentTransforms(style);\n      }\n    }\n  }\n},\n    // note: specialProps should return 1 if (and only if) they have a non-zero priority. It indicates we need to sort the linked list.\n_specialProps = {\n  clearProps: function clearProps(plugin, target, property, endValue, tween) {\n    if (tween.data !== \"isFromStart\") {\n      var pt = plugin._pt = new PropTween(plugin._pt, target, property, 0, 0, _renderClearProps);\n      pt.u = endValue;\n      pt.pr = -10;\n      pt.tween = tween;\n\n      plugin._props.push(property);\n\n      return 1;\n    }\n  }\n  /* className feature (about 0.4kb gzipped).\n  , className(plugin, target, property, endValue, tween) {\n  \tlet _renderClassName = (ratio, data) => {\n  \t\t\tdata.css.render(ratio, data.css);\n  \t\t\tif (!ratio || ratio === 1) {\n  \t\t\t\tlet inline = data.rmv,\n  \t\t\t\t\ttarget = data.t,\n  \t\t\t\t\tp;\n  \t\t\t\ttarget.setAttribute(\"class\", ratio ? data.e : data.b);\n  \t\t\t\tfor (p in inline) {\n  \t\t\t\t\t_removeProperty(target, p);\n  \t\t\t\t}\n  \t\t\t}\n  \t\t},\n  \t\t_getAllStyles = (target) => {\n  \t\t\tlet styles = {},\n  \t\t\t\tcomputed = getComputedStyle(target),\n  \t\t\t\tp;\n  \t\t\tfor (p in computed) {\n  \t\t\t\tif (isNaN(p) && p !== \"cssText\" && p !== \"length\") {\n  \t\t\t\t\tstyles[p] = computed[p];\n  \t\t\t\t}\n  \t\t\t}\n  \t\t\t_setDefaults(styles, _parseTransform(target, 1));\n  \t\t\treturn styles;\n  \t\t},\n  \t\tstartClassList = target.getAttribute(\"class\"),\n  \t\tstyle = target.style,\n  \t\tcssText = style.cssText,\n  \t\tcache = target._gsap,\n  \t\tclassPT = cache.classPT,\n  \t\tinlineToRemoveAtEnd = {},\n  \t\tdata = {t:target, plugin:plugin, rmv:inlineToRemoveAtEnd, b:startClassList, e:(endValue.charAt(1) !== \"=\") ? endValue : startClassList.replace(new RegExp(\"(?:\\\\s|^)\" + endValue.substr(2) + \"(?![\\\\w-])\"), \"\") + ((endValue.charAt(0) === \"+\") ? \" \" + endValue.substr(2) : \"\")},\n  \t\tchangingVars = {},\n  \t\tstartVars = _getAllStyles(target),\n  \t\ttransformRelated = /(transform|perspective)/i,\n  \t\tendVars, p;\n  \tif (classPT) {\n  \t\tclassPT.r(1, classPT.d);\n  \t\t_removeLinkedListItem(classPT.d.plugin, classPT, \"_pt\");\n  \t}\n  \ttarget.setAttribute(\"class\", data.e);\n  \tendVars = _getAllStyles(target, true);\n  \ttarget.setAttribute(\"class\", startClassList);\n  \tfor (p in endVars) {\n  \t\tif (endVars[p] !== startVars[p] && !transformRelated.test(p)) {\n  \t\t\tchangingVars[p] = endVars[p];\n  \t\t\tif (!style[p] && style[p] !== \"0\") {\n  \t\t\t\tinlineToRemoveAtEnd[p] = 1;\n  \t\t\t}\n  \t\t}\n  \t}\n  \tcache.classPT = plugin._pt = new PropTween(plugin._pt, target, \"className\", 0, 0, _renderClassName, data, 0, -11);\n  \tif (style.cssText !== cssText) { //only apply if things change. Otherwise, in cases like a background-image that's pulled dynamically, it could cause a refresh. See https://gsap.com/forums/topic/20368-possible-gsap-bug-switching-classnames-in-chrome/.\n  \t\tstyle.cssText = cssText; //we recorded cssText before we swapped classes and ran _getAllStyles() because in cases when a className tween is overwritten, we remove all the related tweening properties from that class change (otherwise class-specific stuff can't override properties we've directly set on the target's style object due to specificity).\n  \t}\n  \t_parseTransform(target, true); //to clear the caching of transforms\n  \tdata.css = new gsap.plugins.css();\n  \tdata.css.init(target, changingVars, tween);\n  \tplugin._props.push(...data.css._props);\n  \treturn 1;\n  }\n  */\n\n},\n\n/*\n * --------------------------------------------------------------------------------------\n * TRANSFORMS\n * --------------------------------------------------------------------------------------\n */\n_identity2DMatrix = [1, 0, 0, 1, 0, 0],\n    _rotationalProperties = {},\n    _isNullTransform = function _isNullTransform(value) {\n  return value === \"matrix(1, 0, 0, 1, 0, 0)\" || value === \"none\" || !value;\n},\n    _getComputedTransformMatrixAsArray = function _getComputedTransformMatrixAsArray(target) {\n  var matrixString = _getComputedProperty(target, _transformProp);\n\n  return _isNullTransform(matrixString) ? _identity2DMatrix : matrixString.substr(7).match(_numExp).map(_round);\n},\n    _getMatrix = function _getMatrix(target, force2D) {\n  var cache = target._gsap || _getCache(target),\n      style = target.style,\n      matrix = _getComputedTransformMatrixAsArray(target),\n      parent,\n      nextSibling,\n      temp,\n      addedToDOM;\n\n  if (cache.svg && target.getAttribute(\"transform\")) {\n    temp = target.transform.baseVal.consolidate().matrix; //ensures that even complex values like \"translate(50,60) rotate(135,0,0)\" are parsed because it mashes it into a matrix.\n\n    matrix = [temp.a, temp.b, temp.c, temp.d, temp.e, temp.f];\n    return matrix.join(\",\") === \"1,0,0,1,0,0\" ? _identity2DMatrix : matrix;\n  } else if (matrix === _identity2DMatrix && !target.offsetParent && target !== _docElement && !cache.svg) {\n    //note: if offsetParent is null, that means the element isn't in the normal document flow, like if it has display:none or one of its ancestors has display:none). Firefox returns null for getComputedStyle() if the element is in an iframe that has display:none. https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n    //browsers don't report transforms accurately unless the element is in the DOM and has a display value that's not \"none\". Firefox and Microsoft browsers have a partial bug where they'll report transforms even if display:none BUT not any percentage-based values like translate(-50%, 8px) will be reported as if it's translate(0, 8px).\n    temp = style.display;\n    style.display = \"block\";\n    parent = target.parentNode;\n\n    if (!parent || !target.offsetParent) {\n      // note: in 3.3.0 we switched target.offsetParent to _doc.body.contains(target) to avoid [sometimes unnecessary] MutationObserver calls but that wasn't adequate because there are edge cases where nested position: fixed elements need to get reparented to accurately sense transforms. See https://github.com/greensock/GSAP/issues/388 and https://github.com/greensock/GSAP/issues/375\n      addedToDOM = 1; //flag\n\n      nextSibling = target.nextElementSibling;\n\n      _docElement.appendChild(target); //we must add it to the DOM in order to get values properly\n\n    }\n\n    matrix = _getComputedTransformMatrixAsArray(target);\n    temp ? style.display = temp : _removeProperty(target, \"display\");\n\n    if (addedToDOM) {\n      nextSibling ? parent.insertBefore(target, nextSibling) : parent ? parent.appendChild(target) : _docElement.removeChild(target);\n    }\n  }\n\n  return force2D && matrix.length > 6 ? [matrix[0], matrix[1], matrix[4], matrix[5], matrix[12], matrix[13]] : matrix;\n},\n    _applySVGOrigin = function _applySVGOrigin(target, origin, originIsAbsolute, smooth, matrixArray, pluginToAddPropTweensTo) {\n  var cache = target._gsap,\n      matrix = matrixArray || _getMatrix(target, true),\n      xOriginOld = cache.xOrigin || 0,\n      yOriginOld = cache.yOrigin || 0,\n      xOffsetOld = cache.xOffset || 0,\n      yOffsetOld = cache.yOffset || 0,\n      a = matrix[0],\n      b = matrix[1],\n      c = matrix[2],\n      d = matrix[3],\n      tx = matrix[4],\n      ty = matrix[5],\n      originSplit = origin.split(\" \"),\n      xOrigin = parseFloat(originSplit[0]) || 0,\n      yOrigin = parseFloat(originSplit[1]) || 0,\n      bounds,\n      determinant,\n      x,\n      y;\n\n  if (!originIsAbsolute) {\n    bounds = _getBBox(target);\n    xOrigin = bounds.x + (~originSplit[0].indexOf(\"%\") ? xOrigin / 100 * bounds.width : xOrigin);\n    yOrigin = bounds.y + (~(originSplit[1] || originSplit[0]).indexOf(\"%\") ? yOrigin / 100 * bounds.height : yOrigin); // if (!(\"xOrigin\" in cache) && (xOrigin || yOrigin)) { // added in 3.12.3, reverted in 3.12.4; requires more exploration\n    // \txOrigin -= bounds.x;\n    // \tyOrigin -= bounds.y;\n    // }\n  } else if (matrix !== _identity2DMatrix && (determinant = a * d - b * c)) {\n    //if it's zero (like if scaleX and scaleY are zero), skip it to avoid errors with dividing by zero.\n    x = xOrigin * (d / determinant) + yOrigin * (-c / determinant) + (c * ty - d * tx) / determinant;\n    y = xOrigin * (-b / determinant) + yOrigin * (a / determinant) - (a * ty - b * tx) / determinant;\n    xOrigin = x;\n    yOrigin = y; // theory: we only had to do this for smoothing and it assumes that the previous one was not originIsAbsolute.\n  }\n\n  if (smooth || smooth !== false && cache.smooth) {\n    tx = xOrigin - xOriginOld;\n    ty = yOrigin - yOriginOld;\n    cache.xOffset = xOffsetOld + (tx * a + ty * c) - tx;\n    cache.yOffset = yOffsetOld + (tx * b + ty * d) - ty;\n  } else {\n    cache.xOffset = cache.yOffset = 0;\n  }\n\n  cache.xOrigin = xOrigin;\n  cache.yOrigin = yOrigin;\n  cache.smooth = !!smooth;\n  cache.origin = origin;\n  cache.originIsAbsolute = !!originIsAbsolute;\n  target.style[_transformOriginProp] = \"0px 0px\"; //otherwise, if someone sets  an origin via CSS, it will likely interfere with the SVG transform attribute ones (because remember, we're baking the origin into the matrix() value).\n\n  if (pluginToAddPropTweensTo) {\n    _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"xOrigin\", xOriginOld, xOrigin);\n\n    _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"yOrigin\", yOriginOld, yOrigin);\n\n    _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"xOffset\", xOffsetOld, cache.xOffset);\n\n    _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"yOffset\", yOffsetOld, cache.yOffset);\n  }\n\n  target.setAttribute(\"data-svg-origin\", xOrigin + \" \" + yOrigin);\n},\n    _parseTransform = function _parseTransform(target, uncache) {\n  var cache = target._gsap || new GSCache(target);\n\n  if (\"x\" in cache && !uncache && !cache.uncache) {\n    return cache;\n  }\n\n  var style = target.style,\n      invertedScaleX = cache.scaleX < 0,\n      px = \"px\",\n      deg = \"deg\",\n      cs = getComputedStyle(target),\n      origin = _getComputedProperty(target, _transformOriginProp) || \"0\",\n      x,\n      y,\n      z,\n      scaleX,\n      scaleY,\n      rotation,\n      rotationX,\n      rotationY,\n      skewX,\n      skewY,\n      perspective,\n      xOrigin,\n      yOrigin,\n      matrix,\n      angle,\n      cos,\n      sin,\n      a,\n      b,\n      c,\n      d,\n      a12,\n      a22,\n      t1,\n      t2,\n      t3,\n      a13,\n      a23,\n      a33,\n      a42,\n      a43,\n      a32;\n  x = y = z = rotation = rotationX = rotationY = skewX = skewY = perspective = 0;\n  scaleX = scaleY = 1;\n  cache.svg = !!(target.getCTM && _isSVG(target));\n\n  if (cs.translate) {\n    // accommodate independent transforms by combining them into normal ones.\n    if (cs.translate !== \"none\" || cs.scale !== \"none\" || cs.rotate !== \"none\") {\n      style[_transformProp] = (cs.translate !== \"none\" ? \"translate3d(\" + (cs.translate + \" 0 0\").split(\" \").slice(0, 3).join(\", \") + \") \" : \"\") + (cs.rotate !== \"none\" ? \"rotate(\" + cs.rotate + \") \" : \"\") + (cs.scale !== \"none\" ? \"scale(\" + cs.scale.split(\" \").join(\",\") + \") \" : \"\") + (cs[_transformProp] !== \"none\" ? cs[_transformProp] : \"\");\n    }\n\n    style.scale = style.rotate = style.translate = \"none\";\n  }\n\n  matrix = _getMatrix(target, cache.svg);\n\n  if (cache.svg) {\n    if (cache.uncache) {\n      // if cache.uncache is true (and maybe if origin is 0,0), we need to set element.style.transformOrigin = (cache.xOrigin - bbox.x) + \"px \" + (cache.yOrigin - bbox.y) + \"px\". Previously we let the data-svg-origin stay instead, but when introducing revert(), it complicated things.\n      t2 = target.getBBox();\n      origin = cache.xOrigin - t2.x + \"px \" + (cache.yOrigin - t2.y) + \"px\";\n      t1 = \"\";\n    } else {\n      t1 = !uncache && target.getAttribute(\"data-svg-origin\"); //  Remember, to work around browser inconsistencies we always force SVG elements' transformOrigin to 0,0 and offset the translation accordingly.\n    }\n\n    _applySVGOrigin(target, t1 || origin, !!t1 || cache.originIsAbsolute, cache.smooth !== false, matrix);\n  }\n\n  xOrigin = cache.xOrigin || 0;\n  yOrigin = cache.yOrigin || 0;\n\n  if (matrix !== _identity2DMatrix) {\n    a = matrix[0]; //a11\n\n    b = matrix[1]; //a21\n\n    c = matrix[2]; //a31\n\n    d = matrix[3]; //a41\n\n    x = a12 = matrix[4];\n    y = a22 = matrix[5]; //2D matrix\n\n    if (matrix.length === 6) {\n      scaleX = Math.sqrt(a * a + b * b);\n      scaleY = Math.sqrt(d * d + c * c);\n      rotation = a || b ? _atan2(b, a) * _RAD2DEG : 0; //note: if scaleX is 0, we cannot accurately measure rotation. Same for skewX with a scaleY of 0. Therefore, we default to the previously recorded value (or zero if that doesn't exist).\n\n      skewX = c || d ? _atan2(c, d) * _RAD2DEG + rotation : 0;\n      skewX && (scaleY *= Math.abs(Math.cos(skewX * _DEG2RAD)));\n\n      if (cache.svg) {\n        x -= xOrigin - (xOrigin * a + yOrigin * c);\n        y -= yOrigin - (xOrigin * b + yOrigin * d);\n      } //3D matrix\n\n    } else {\n      a32 = matrix[6];\n      a42 = matrix[7];\n      a13 = matrix[8];\n      a23 = matrix[9];\n      a33 = matrix[10];\n      a43 = matrix[11];\n      x = matrix[12];\n      y = matrix[13];\n      z = matrix[14];\n      angle = _atan2(a32, a33);\n      rotationX = angle * _RAD2DEG; //rotationX\n\n      if (angle) {\n        cos = Math.cos(-angle);\n        sin = Math.sin(-angle);\n        t1 = a12 * cos + a13 * sin;\n        t2 = a22 * cos + a23 * sin;\n        t3 = a32 * cos + a33 * sin;\n        a13 = a12 * -sin + a13 * cos;\n        a23 = a22 * -sin + a23 * cos;\n        a33 = a32 * -sin + a33 * cos;\n        a43 = a42 * -sin + a43 * cos;\n        a12 = t1;\n        a22 = t2;\n        a32 = t3;\n      } //rotationY\n\n\n      angle = _atan2(-c, a33);\n      rotationY = angle * _RAD2DEG;\n\n      if (angle) {\n        cos = Math.cos(-angle);\n        sin = Math.sin(-angle);\n        t1 = a * cos - a13 * sin;\n        t2 = b * cos - a23 * sin;\n        t3 = c * cos - a33 * sin;\n        a43 = d * sin + a43 * cos;\n        a = t1;\n        b = t2;\n        c = t3;\n      } //rotationZ\n\n\n      angle = _atan2(b, a);\n      rotation = angle * _RAD2DEG;\n\n      if (angle) {\n        cos = Math.cos(angle);\n        sin = Math.sin(angle);\n        t1 = a * cos + b * sin;\n        t2 = a12 * cos + a22 * sin;\n        b = b * cos - a * sin;\n        a22 = a22 * cos - a12 * sin;\n        a = t1;\n        a12 = t2;\n      }\n\n      if (rotationX && Math.abs(rotationX) + Math.abs(rotation) > 359.9) {\n        //when rotationY is set, it will often be parsed as 180 degrees different than it should be, and rotationX and rotation both being 180 (it looks the same), so we adjust for that here.\n        rotationX = rotation = 0;\n        rotationY = 180 - rotationY;\n      }\n\n      scaleX = _round(Math.sqrt(a * a + b * b + c * c));\n      scaleY = _round(Math.sqrt(a22 * a22 + a32 * a32));\n      angle = _atan2(a12, a22);\n      skewX = Math.abs(angle) > 0.0002 ? angle * _RAD2DEG : 0;\n      perspective = a43 ? 1 / (a43 < 0 ? -a43 : a43) : 0;\n    }\n\n    if (cache.svg) {\n      //sense if there are CSS transforms applied on an SVG element in which case we must overwrite them when rendering. The transform attribute is more reliable cross-browser, but we can't just remove the CSS ones because they may be applied in a CSS rule somewhere (not just inline).\n      t1 = target.getAttribute(\"transform\");\n      cache.forceCSS = target.setAttribute(\"transform\", \"\") || !_isNullTransform(_getComputedProperty(target, _transformProp));\n      t1 && target.setAttribute(\"transform\", t1);\n    }\n  }\n\n  if (Math.abs(skewX) > 90 && Math.abs(skewX) < 270) {\n    if (invertedScaleX) {\n      scaleX *= -1;\n      skewX += rotation <= 0 ? 180 : -180;\n      rotation += rotation <= 0 ? 180 : -180;\n    } else {\n      scaleY *= -1;\n      skewX += skewX <= 0 ? 180 : -180;\n    }\n  }\n\n  uncache = uncache || cache.uncache;\n  cache.x = x - ((cache.xPercent = x && (!uncache && cache.xPercent || (Math.round(target.offsetWidth / 2) === Math.round(-x) ? -50 : 0))) ? target.offsetWidth * cache.xPercent / 100 : 0) + px;\n  cache.y = y - ((cache.yPercent = y && (!uncache && cache.yPercent || (Math.round(target.offsetHeight / 2) === Math.round(-y) ? -50 : 0))) ? target.offsetHeight * cache.yPercent / 100 : 0) + px;\n  cache.z = z + px;\n  cache.scaleX = _round(scaleX);\n  cache.scaleY = _round(scaleY);\n  cache.rotation = _round(rotation) + deg;\n  cache.rotationX = _round(rotationX) + deg;\n  cache.rotationY = _round(rotationY) + deg;\n  cache.skewX = skewX + deg;\n  cache.skewY = skewY + deg;\n  cache.transformPerspective = perspective + px;\n\n  if (cache.zOrigin = parseFloat(origin.split(\" \")[2]) || !uncache && cache.zOrigin || 0) {\n    style[_transformOriginProp] = _firstTwoOnly(origin);\n  }\n\n  cache.xOffset = cache.yOffset = 0;\n  cache.force3D = _config.force3D;\n  cache.renderTransform = cache.svg ? _renderSVGTransforms : _supports3D ? _renderCSSTransforms : _renderNon3DTransforms;\n  cache.uncache = 0;\n  return cache;\n},\n    _firstTwoOnly = function _firstTwoOnly(value) {\n  return (value = value.split(\" \"))[0] + \" \" + value[1];\n},\n    //for handling transformOrigin values, stripping out the 3rd dimension\n_addPxTranslate = function _addPxTranslate(target, start, value) {\n  var unit = getUnit(start);\n  return _round(parseFloat(start) + parseFloat(_convertToUnit(target, \"x\", value + \"px\", unit))) + unit;\n},\n    _renderNon3DTransforms = function _renderNon3DTransforms(ratio, cache) {\n  cache.z = \"0px\";\n  cache.rotationY = cache.rotationX = \"0deg\";\n  cache.force3D = 0;\n\n  _renderCSSTransforms(ratio, cache);\n},\n    _zeroDeg = \"0deg\",\n    _zeroPx = \"0px\",\n    _endParenthesis = \") \",\n    _renderCSSTransforms = function _renderCSSTransforms(ratio, cache) {\n  var _ref = cache || this,\n      xPercent = _ref.xPercent,\n      yPercent = _ref.yPercent,\n      x = _ref.x,\n      y = _ref.y,\n      z = _ref.z,\n      rotation = _ref.rotation,\n      rotationY = _ref.rotationY,\n      rotationX = _ref.rotationX,\n      skewX = _ref.skewX,\n      skewY = _ref.skewY,\n      scaleX = _ref.scaleX,\n      scaleY = _ref.scaleY,\n      transformPerspective = _ref.transformPerspective,\n      force3D = _ref.force3D,\n      target = _ref.target,\n      zOrigin = _ref.zOrigin,\n      transforms = \"\",\n      use3D = force3D === \"auto\" && ratio && ratio !== 1 || force3D === true; // Safari has a bug that causes it not to render 3D transform-origin values properly, so we force the z origin to 0, record it in the cache, and then do the math here to offset the translate values accordingly (basically do the 3D transform-origin part manually)\n\n\n  if (zOrigin && (rotationX !== _zeroDeg || rotationY !== _zeroDeg)) {\n    var angle = parseFloat(rotationY) * _DEG2RAD,\n        a13 = Math.sin(angle),\n        a33 = Math.cos(angle),\n        cos;\n\n    angle = parseFloat(rotationX) * _DEG2RAD;\n    cos = Math.cos(angle);\n    x = _addPxTranslate(target, x, a13 * cos * -zOrigin);\n    y = _addPxTranslate(target, y, -Math.sin(angle) * -zOrigin);\n    z = _addPxTranslate(target, z, a33 * cos * -zOrigin + zOrigin);\n  }\n\n  if (transformPerspective !== _zeroPx) {\n    transforms += \"perspective(\" + transformPerspective + _endParenthesis;\n  }\n\n  if (xPercent || yPercent) {\n    transforms += \"translate(\" + xPercent + \"%, \" + yPercent + \"%) \";\n  }\n\n  if (use3D || x !== _zeroPx || y !== _zeroPx || z !== _zeroPx) {\n    transforms += z !== _zeroPx || use3D ? \"translate3d(\" + x + \", \" + y + \", \" + z + \") \" : \"translate(\" + x + \", \" + y + _endParenthesis;\n  }\n\n  if (rotation !== _zeroDeg) {\n    transforms += \"rotate(\" + rotation + _endParenthesis;\n  }\n\n  if (rotationY !== _zeroDeg) {\n    transforms += \"rotateY(\" + rotationY + _endParenthesis;\n  }\n\n  if (rotationX !== _zeroDeg) {\n    transforms += \"rotateX(\" + rotationX + _endParenthesis;\n  }\n\n  if (skewX !== _zeroDeg || skewY !== _zeroDeg) {\n    transforms += \"skew(\" + skewX + \", \" + skewY + _endParenthesis;\n  }\n\n  if (scaleX !== 1 || scaleY !== 1) {\n    transforms += \"scale(\" + scaleX + \", \" + scaleY + _endParenthesis;\n  }\n\n  target.style[_transformProp] = transforms || \"translate(0, 0)\";\n},\n    _renderSVGTransforms = function _renderSVGTransforms(ratio, cache) {\n  var _ref2 = cache || this,\n      xPercent = _ref2.xPercent,\n      yPercent = _ref2.yPercent,\n      x = _ref2.x,\n      y = _ref2.y,\n      rotation = _ref2.rotation,\n      skewX = _ref2.skewX,\n      skewY = _ref2.skewY,\n      scaleX = _ref2.scaleX,\n      scaleY = _ref2.scaleY,\n      target = _ref2.target,\n      xOrigin = _ref2.xOrigin,\n      yOrigin = _ref2.yOrigin,\n      xOffset = _ref2.xOffset,\n      yOffset = _ref2.yOffset,\n      forceCSS = _ref2.forceCSS,\n      tx = parseFloat(x),\n      ty = parseFloat(y),\n      a11,\n      a21,\n      a12,\n      a22,\n      temp;\n\n  rotation = parseFloat(rotation);\n  skewX = parseFloat(skewX);\n  skewY = parseFloat(skewY);\n\n  if (skewY) {\n    //for performance reasons, we combine all skewing into the skewX and rotation values. Remember, a skewY of 10 degrees looks the same as a rotation of 10 degrees plus a skewX of 10 degrees.\n    skewY = parseFloat(skewY);\n    skewX += skewY;\n    rotation += skewY;\n  }\n\n  if (rotation || skewX) {\n    rotation *= _DEG2RAD;\n    skewX *= _DEG2RAD;\n    a11 = Math.cos(rotation) * scaleX;\n    a21 = Math.sin(rotation) * scaleX;\n    a12 = Math.sin(rotation - skewX) * -scaleY;\n    a22 = Math.cos(rotation - skewX) * scaleY;\n\n    if (skewX) {\n      skewY *= _DEG2RAD;\n      temp = Math.tan(skewX - skewY);\n      temp = Math.sqrt(1 + temp * temp);\n      a12 *= temp;\n      a22 *= temp;\n\n      if (skewY) {\n        temp = Math.tan(skewY);\n        temp = Math.sqrt(1 + temp * temp);\n        a11 *= temp;\n        a21 *= temp;\n      }\n    }\n\n    a11 = _round(a11);\n    a21 = _round(a21);\n    a12 = _round(a12);\n    a22 = _round(a22);\n  } else {\n    a11 = scaleX;\n    a22 = scaleY;\n    a21 = a12 = 0;\n  }\n\n  if (tx && !~(x + \"\").indexOf(\"px\") || ty && !~(y + \"\").indexOf(\"px\")) {\n    tx = _convertToUnit(target, \"x\", x, \"px\");\n    ty = _convertToUnit(target, \"y\", y, \"px\");\n  }\n\n  if (xOrigin || yOrigin || xOffset || yOffset) {\n    tx = _round(tx + xOrigin - (xOrigin * a11 + yOrigin * a12) + xOffset);\n    ty = _round(ty + yOrigin - (xOrigin * a21 + yOrigin * a22) + yOffset);\n  }\n\n  if (xPercent || yPercent) {\n    //The SVG spec doesn't support percentage-based translation in the \"transform\" attribute, so we merge it into the translation to simulate it.\n    temp = target.getBBox();\n    tx = _round(tx + xPercent / 100 * temp.width);\n    ty = _round(ty + yPercent / 100 * temp.height);\n  }\n\n  temp = \"matrix(\" + a11 + \",\" + a21 + \",\" + a12 + \",\" + a22 + \",\" + tx + \",\" + ty + \")\";\n  target.setAttribute(\"transform\", temp);\n  forceCSS && (target.style[_transformProp] = temp); //some browsers prioritize CSS transforms over the transform attribute. When we sense that the user has CSS transforms applied, we must overwrite them this way (otherwise some browser simply won't render the transform attribute changes!)\n},\n    _addRotationalPropTween = function _addRotationalPropTween(plugin, target, property, startNum, endValue) {\n  var cap = 360,\n      isString = _isString(endValue),\n      endNum = parseFloat(endValue) * (isString && ~endValue.indexOf(\"rad\") ? _RAD2DEG : 1),\n      change = endNum - startNum,\n      finalValue = startNum + change + \"deg\",\n      direction,\n      pt;\n\n  if (isString) {\n    direction = endValue.split(\"_\")[1];\n\n    if (direction === \"short\") {\n      change %= cap;\n\n      if (change !== change % (cap / 2)) {\n        change += change < 0 ? cap : -cap;\n      }\n    }\n\n    if (direction === \"cw\" && change < 0) {\n      change = (change + cap * _bigNum) % cap - ~~(change / cap) * cap;\n    } else if (direction === \"ccw\" && change > 0) {\n      change = (change - cap * _bigNum) % cap - ~~(change / cap) * cap;\n    }\n  }\n\n  plugin._pt = pt = new PropTween(plugin._pt, target, property, startNum, change, _renderPropWithEnd);\n  pt.e = finalValue;\n  pt.u = \"deg\";\n\n  plugin._props.push(property);\n\n  return pt;\n},\n    _assign = function _assign(target, source) {\n  // Internet Explorer doesn't have Object.assign(), so we recreate it here.\n  for (var p in source) {\n    target[p] = source[p];\n  }\n\n  return target;\n},\n    _addRawTransformPTs = function _addRawTransformPTs(plugin, transforms, target) {\n  //for handling cases where someone passes in a whole transform string, like transform: \"scale(2, 3) rotate(20deg) translateY(30em)\"\n  var startCache = _assign({}, target._gsap),\n      exclude = \"perspective,force3D,transformOrigin,svgOrigin\",\n      style = target.style,\n      endCache,\n      p,\n      startValue,\n      endValue,\n      startNum,\n      endNum,\n      startUnit,\n      endUnit;\n\n  if (startCache.svg) {\n    startValue = target.getAttribute(\"transform\");\n    target.setAttribute(\"transform\", \"\");\n    style[_transformProp] = transforms;\n    endCache = _parseTransform(target, 1);\n\n    _removeProperty(target, _transformProp);\n\n    target.setAttribute(\"transform\", startValue);\n  } else {\n    startValue = getComputedStyle(target)[_transformProp];\n    style[_transformProp] = transforms;\n    endCache = _parseTransform(target, 1);\n    style[_transformProp] = startValue;\n  }\n\n  for (p in _transformProps) {\n    startValue = startCache[p];\n    endValue = endCache[p];\n\n    if (startValue !== endValue && exclude.indexOf(p) < 0) {\n      //tweening to no perspective gives very unintuitive results - just keep the same perspective in that case.\n      startUnit = getUnit(startValue);\n      endUnit = getUnit(endValue);\n      startNum = startUnit !== endUnit ? _convertToUnit(target, p, startValue, endUnit) : parseFloat(startValue);\n      endNum = parseFloat(endValue);\n      plugin._pt = new PropTween(plugin._pt, endCache, p, startNum, endNum - startNum, _renderCSSProp);\n      plugin._pt.u = endUnit || 0;\n\n      plugin._props.push(p);\n    }\n  }\n\n  _assign(endCache, startCache);\n}; // handle splitting apart padding, margin, borderWidth, and borderRadius into their 4 components. Firefox, for example, won't report borderRadius correctly - it will only do borderTopLeftRadius and the other corners. We also want to handle paddingTop, marginLeft, borderRightWidth, etc.\n\n\n_forEachName(\"padding,margin,Width,Radius\", function (name, index) {\n  var t = \"Top\",\n      r = \"Right\",\n      b = \"Bottom\",\n      l = \"Left\",\n      props = (index < 3 ? [t, r, b, l] : [t + l, t + r, b + r, b + l]).map(function (side) {\n    return index < 2 ? name + side : \"border\" + side + name;\n  });\n\n  _specialProps[index > 1 ? \"border\" + name : name] = function (plugin, target, property, endValue, tween) {\n    var a, vars;\n\n    if (arguments.length < 4) {\n      // getter, passed target, property, and unit (from _get())\n      a = props.map(function (prop) {\n        return _get(plugin, prop, property);\n      });\n      vars = a.join(\" \");\n      return vars.split(a[0]).length === 5 ? a[0] : vars;\n    }\n\n    a = (endValue + \"\").split(\" \");\n    vars = {};\n    props.forEach(function (prop, i) {\n      return vars[prop] = a[i] = a[i] || a[(i - 1) / 2 | 0];\n    });\n    plugin.init(target, vars, tween);\n  };\n});\n\nexport var CSSPlugin = {\n  name: \"css\",\n  register: _initCore,\n  targetTest: function targetTest(target) {\n    return target.style && target.nodeType;\n  },\n  init: function init(target, vars, tween, index, targets) {\n    var props = this._props,\n        style = target.style,\n        startAt = tween.vars.startAt,\n        startValue,\n        endValue,\n        endNum,\n        startNum,\n        type,\n        specialProp,\n        p,\n        startUnit,\n        endUnit,\n        relative,\n        isTransformRelated,\n        transformPropTween,\n        cache,\n        smooth,\n        hasPriority,\n        inlineProps;\n    _pluginInitted || _initCore(); // we may call init() multiple times on the same plugin instance, like when adding special properties, so make sure we don't overwrite the revert data or inlineProps\n\n    this.styles = this.styles || _getStyleSaver(target);\n    inlineProps = this.styles.props;\n    this.tween = tween;\n\n    for (p in vars) {\n      if (p === \"autoRound\") {\n        continue;\n      }\n\n      endValue = vars[p];\n\n      if (_plugins[p] && _checkPlugin(p, vars, tween, index, target, targets)) {\n        // plugins\n        continue;\n      }\n\n      type = typeof endValue;\n      specialProp = _specialProps[p];\n\n      if (type === \"function\") {\n        endValue = endValue.call(tween, index, target, targets);\n        type = typeof endValue;\n      }\n\n      if (type === \"string\" && ~endValue.indexOf(\"random(\")) {\n        endValue = _replaceRandom(endValue);\n      }\n\n      if (specialProp) {\n        specialProp(this, target, p, endValue, tween) && (hasPriority = 1);\n      } else if (p.substr(0, 2) === \"--\") {\n        //CSS variable\n        startValue = (getComputedStyle(target).getPropertyValue(p) + \"\").trim();\n        endValue += \"\";\n        _colorExp.lastIndex = 0;\n\n        if (!_colorExp.test(startValue)) {\n          // colors don't have units\n          startUnit = getUnit(startValue);\n          endUnit = getUnit(endValue);\n        }\n\n        endUnit ? startUnit !== endUnit && (startValue = _convertToUnit(target, p, startValue, endUnit) + endUnit) : startUnit && (endValue += startUnit);\n        this.add(style, \"setProperty\", startValue, endValue, index, targets, 0, 0, p);\n        props.push(p);\n        inlineProps.push(p, 0, style[p]);\n      } else if (type !== \"undefined\") {\n        if (startAt && p in startAt) {\n          // in case someone hard-codes a complex value as the start, like top: \"calc(2vh / 2)\". Without this, it'd use the computed value (always in px)\n          startValue = typeof startAt[p] === \"function\" ? startAt[p].call(tween, index, target, targets) : startAt[p];\n          _isString(startValue) && ~startValue.indexOf(\"random(\") && (startValue = _replaceRandom(startValue));\n          getUnit(startValue + \"\") || startValue === \"auto\" || (startValue += _config.units[p] || getUnit(_get(target, p)) || \"\"); // for cases when someone passes in a unitless value like {x: 100}; if we try setting translate(100, 0px) it won't work.\n\n          (startValue + \"\").charAt(1) === \"=\" && (startValue = _get(target, p)); // can't work with relative values\n        } else {\n          startValue = _get(target, p);\n        }\n\n        startNum = parseFloat(startValue);\n        relative = type === \"string\" && endValue.charAt(1) === \"=\" && endValue.substr(0, 2);\n        relative && (endValue = endValue.substr(2));\n        endNum = parseFloat(endValue);\n\n        if (p in _propertyAliases) {\n          if (p === \"autoAlpha\") {\n            //special case where we control the visibility along with opacity. We still allow the opacity value to pass through and get tweened.\n            if (startNum === 1 && _get(target, \"visibility\") === \"hidden\" && endNum) {\n              //if visibility is initially set to \"hidden\", we should interpret that as intent to make opacity 0 (a convenience)\n              startNum = 0;\n            }\n\n            inlineProps.push(\"visibility\", 0, style.visibility);\n\n            _addNonTweeningPT(this, style, \"visibility\", startNum ? \"inherit\" : \"hidden\", endNum ? \"inherit\" : \"hidden\", !endNum);\n          }\n\n          if (p !== \"scale\" && p !== \"transform\") {\n            p = _propertyAliases[p];\n            ~p.indexOf(\",\") && (p = p.split(\",\")[0]);\n          }\n        }\n\n        isTransformRelated = p in _transformProps; //--- TRANSFORM-RELATED ---\n\n        if (isTransformRelated) {\n          this.styles.save(p);\n\n          if (!transformPropTween) {\n            cache = target._gsap;\n            cache.renderTransform && !vars.parseTransform || _parseTransform(target, vars.parseTransform); // if, for example, gsap.set(... {transform:\"translateX(50vw)\"}), the _get() call doesn't parse the transform, thus cache.renderTransform won't be set yet so force the parsing of the transform here.\n\n            smooth = vars.smoothOrigin !== false && cache.smooth;\n            transformPropTween = this._pt = new PropTween(this._pt, style, _transformProp, 0, 1, cache.renderTransform, cache, 0, -1); //the first time through, create the rendering PropTween so that it runs LAST (in the linked list, we keep adding to the beginning)\n\n            transformPropTween.dep = 1; //flag it as dependent so that if things get killed/overwritten and this is the only PropTween left, we can safely kill the whole tween.\n          }\n\n          if (p === \"scale\") {\n            this._pt = new PropTween(this._pt, cache, \"scaleY\", cache.scaleY, (relative ? _parseRelative(cache.scaleY, relative + endNum) : endNum) - cache.scaleY || 0, _renderCSSProp);\n            this._pt.u = 0;\n            props.push(\"scaleY\", p);\n            p += \"X\";\n          } else if (p === \"transformOrigin\") {\n            inlineProps.push(_transformOriginProp, 0, style[_transformOriginProp]);\n            endValue = _convertKeywordsToPercentages(endValue); //in case something like \"left top\" or \"bottom right\" is passed in. Convert to percentages.\n\n            if (cache.svg) {\n              _applySVGOrigin(target, endValue, 0, smooth, 0, this);\n            } else {\n              endUnit = parseFloat(endValue.split(\" \")[2]) || 0; //handle the zOrigin separately!\n\n              endUnit !== cache.zOrigin && _addNonTweeningPT(this, cache, \"zOrigin\", cache.zOrigin, endUnit);\n\n              _addNonTweeningPT(this, style, p, _firstTwoOnly(startValue), _firstTwoOnly(endValue));\n            }\n\n            continue;\n          } else if (p === \"svgOrigin\") {\n            _applySVGOrigin(target, endValue, 1, smooth, 0, this);\n\n            continue;\n          } else if (p in _rotationalProperties) {\n            _addRotationalPropTween(this, cache, p, startNum, relative ? _parseRelative(startNum, relative + endValue) : endValue);\n\n            continue;\n          } else if (p === \"smoothOrigin\") {\n            _addNonTweeningPT(this, cache, \"smooth\", cache.smooth, endValue);\n\n            continue;\n          } else if (p === \"force3D\") {\n            cache[p] = endValue;\n            continue;\n          } else if (p === \"transform\") {\n            _addRawTransformPTs(this, endValue, target);\n\n            continue;\n          }\n        } else if (!(p in style)) {\n          p = _checkPropPrefix(p) || p;\n        }\n\n        if (isTransformRelated || (endNum || endNum === 0) && (startNum || startNum === 0) && !_complexExp.test(endValue) && p in style) {\n          startUnit = (startValue + \"\").substr((startNum + \"\").length);\n          endNum || (endNum = 0); // protect against NaN\n\n          endUnit = getUnit(endValue) || (p in _config.units ? _config.units[p] : startUnit);\n          startUnit !== endUnit && (startNum = _convertToUnit(target, p, startValue, endUnit));\n          this._pt = new PropTween(this._pt, isTransformRelated ? cache : style, p, startNum, (relative ? _parseRelative(startNum, relative + endNum) : endNum) - startNum, !isTransformRelated && (endUnit === \"px\" || p === \"zIndex\") && vars.autoRound !== false ? _renderRoundedCSSProp : _renderCSSProp);\n          this._pt.u = endUnit || 0;\n\n          if (startUnit !== endUnit && endUnit !== \"%\") {\n            //when the tween goes all the way back to the beginning, we need to revert it to the OLD/ORIGINAL value (with those units). We record that as a \"b\" (beginning) property and point to a render method that handles that. (performance optimization)\n            this._pt.b = startValue;\n            this._pt.r = _renderCSSPropWithBeginning;\n          }\n        } else if (!(p in style)) {\n          if (p in target) {\n            //maybe it's not a style - it could be a property added directly to an element in which case we'll try to animate that.\n            this.add(target, p, startValue || target[p], relative ? relative + endValue : endValue, index, targets);\n          } else if (p !== \"parseTransform\") {\n            _missingPlugin(p, endValue);\n\n            continue;\n          }\n        } else {\n          _tweenComplexCSSString.call(this, target, p, startValue, relative ? relative + endValue : endValue);\n        }\n\n        isTransformRelated || (p in style ? inlineProps.push(p, 0, style[p]) : inlineProps.push(p, 1, startValue || target[p]));\n        props.push(p);\n      }\n    }\n\n    hasPriority && _sortPropTweensByPriority(this);\n  },\n  render: function render(ratio, data) {\n    if (data.tween._time || !_reverting()) {\n      var pt = data._pt;\n\n      while (pt) {\n        pt.r(ratio, pt.d);\n        pt = pt._next;\n      }\n    } else {\n      data.styles.revert();\n    }\n  },\n  get: _get,\n  aliases: _propertyAliases,\n  getSetter: function getSetter(target, property, plugin) {\n    //returns a setter function that accepts target, property, value and applies it accordingly. Remember, properties like \"x\" aren't as simple as target.style.property = value because they've got to be applied to a proxy object and then merged into a transform string in a renderer.\n    var p = _propertyAliases[property];\n    p && p.indexOf(\",\") < 0 && (property = p);\n    return property in _transformProps && property !== _transformOriginProp && (target._gsap.x || _get(target, \"x\")) ? plugin && _recentSetterPlugin === plugin ? property === \"scale\" ? _setterScale : _setterTransform : (_recentSetterPlugin = plugin || {}) && (property === \"scale\" ? _setterScaleWithRender : _setterTransformWithRender) : target.style && !_isUndefined(target.style[property]) ? _setterCSSStyle : ~property.indexOf(\"-\") ? _setterCSSProp : _getSetter(target, property);\n  },\n  core: {\n    _removeProperty: _removeProperty,\n    _getMatrix: _getMatrix\n  }\n};\ngsap.utils.checkPrefix = _checkPropPrefix;\ngsap.core.getStyleSaver = _getStyleSaver;\n\n(function (positionAndScale, rotation, others, aliases) {\n  var all = _forEachName(positionAndScale + \",\" + rotation + \",\" + others, function (name) {\n    _transformProps[name] = 1;\n  });\n\n  _forEachName(rotation, function (name) {\n    _config.units[name] = \"deg\";\n    _rotationalProperties[name] = 1;\n  });\n\n  _propertyAliases[all[13]] = positionAndScale + \",\" + rotation;\n\n  _forEachName(aliases, function (name) {\n    var split = name.split(\":\");\n    _propertyAliases[split[1]] = all[split[0]];\n  });\n})(\"x,y,z,scale,scaleX,scaleY,xPercent,yPercent\", \"rotation,rotationX,rotationY,skewX,skewY\", \"transform,transformOrigin,svgOrigin,force3D,smoothOrigin,transformPerspective\", \"0:translateX,1:translateY,2:translateZ,8:rotate,8:rotationZ,8:rotateZ,9:rotateX,10:rotateY\");\n\n_forEachName(\"x,y,z,top,right,bottom,left,width,height,fontSize,padding,margin,perspective\", function (name) {\n  _config.units[name] = \"px\";\n});\n\ngsap.registerPlugin(CSSPlugin);\nexport { CSSPlugin as default, _getBBox, _createElement, _checkPropPrefix as checkPrefix };","import { gsap, Power0, Power1, Power2, Power3, Power4, Linear, Quad, Cubic, Quart, Quint, Strong, Elastic, Back, SteppedEase, Bounce, Sine, Expo, Circ, TweenLite, TimelineLite, TimelineMax } from \"./gsap-core.js\";\nimport { CSSPlugin } from \"./CSSPlugin.js\";\nvar gsapWithCSS = gsap.registerPlugin(CSSPlugin) || gsap,\n    // to protect from tree shaking\nTweenMaxWithCSS = gsapWithCSS.core.Tween;\nexport { gsapWithCSS as gsap, gsapWithCSS as default, CSSPlugin, TweenMaxWithCSS as TweenMax, TweenLite, TimelineMax, TimelineLite, Power0, Power1, Power2, Power3, Power4, Linear, Quad, Cubic, Quart, Quint, Strong, Elastic, Back, SteppedEase, Bounce, Sine, Expo, Circ };","/*!\n * ScrollToPlugin 3.12.5\n * https://gsap.com\n *\n * @license Copyright 2008-2024, GreenSock. All rights reserved.\n * Subject to the terms at https://gsap.com/standard-license or for\n * Club GSAP members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\nvar gsap,\n    _coreInitted,\n    _window,\n    _docEl,\n    _body,\n    _toArray,\n    _config,\n    ScrollTrigger,\n    _windowExists = function _windowExists() {\n  return typeof window !== \"undefined\";\n},\n    _getGSAP = function _getGSAP() {\n  return gsap || _windowExists() && (gsap = window.gsap) && gsap.registerPlugin && gsap;\n},\n    _isString = function _isString(value) {\n  return typeof value === \"string\";\n},\n    _isFunction = function _isFunction(value) {\n  return typeof value === \"function\";\n},\n    _max = function _max(element, axis) {\n  var dim = axis === \"x\" ? \"Width\" : \"Height\",\n      scroll = \"scroll\" + dim,\n      client = \"client\" + dim;\n  return element === _window || element === _docEl || element === _body ? Math.max(_docEl[scroll], _body[scroll]) - (_window[\"inner\" + dim] || _docEl[client] || _body[client]) : element[scroll] - element[\"offset\" + dim];\n},\n    _buildGetter = function _buildGetter(e, axis) {\n  //pass in an element and an axis (\"x\" or \"y\") and it'll return a getter function for the scroll position of that element (like scrollTop or scrollLeft, although if the element is the window, it'll use the pageXOffset/pageYOffset or the documentElement's scrollTop/scrollLeft or document.body's. Basically this streamlines things and makes a very fast getter across browsers.\n  var p = \"scroll\" + (axis === \"x\" ? \"Left\" : \"Top\");\n\n  if (e === _window) {\n    if (e.pageXOffset != null) {\n      p = \"page\" + axis.toUpperCase() + \"Offset\";\n    } else {\n      e = _docEl[p] != null ? _docEl : _body;\n    }\n  }\n\n  return function () {\n    return e[p];\n  };\n},\n    _clean = function _clean(value, index, target, targets) {\n  _isFunction(value) && (value = value(index, target, targets));\n\n  if (typeof value !== \"object\") {\n    return _isString(value) && value !== \"max\" && value.charAt(1) !== \"=\" ? {\n      x: value,\n      y: value\n    } : {\n      y: value\n    }; //if we don't receive an object as the parameter, assume the user intends \"y\".\n  } else if (value.nodeType) {\n    return {\n      y: value,\n      x: value\n    };\n  } else {\n    var result = {},\n        p;\n\n    for (p in value) {\n      result[p] = p !== \"onAutoKill\" && _isFunction(value[p]) ? value[p](index, target, targets) : value[p];\n    }\n\n    return result;\n  }\n},\n    _getOffset = function _getOffset(element, container) {\n  element = _toArray(element)[0];\n\n  if (!element || !element.getBoundingClientRect) {\n    return console.warn(\"scrollTo target doesn't exist. Using 0\") || {\n      x: 0,\n      y: 0\n    };\n  }\n\n  var rect = element.getBoundingClientRect(),\n      isRoot = !container || container === _window || container === _body,\n      cRect = isRoot ? {\n    top: _docEl.clientTop - (_window.pageYOffset || _docEl.scrollTop || _body.scrollTop || 0),\n    left: _docEl.clientLeft - (_window.pageXOffset || _docEl.scrollLeft || _body.scrollLeft || 0)\n  } : container.getBoundingClientRect(),\n      offsets = {\n    x: rect.left - cRect.left,\n    y: rect.top - cRect.top\n  };\n\n  if (!isRoot && container) {\n    //only add the current scroll position if it's not the window/body.\n    offsets.x += _buildGetter(container, \"x\")();\n    offsets.y += _buildGetter(container, \"y\")();\n  }\n\n  return offsets;\n},\n    _parseVal = function _parseVal(value, target, axis, currentVal, offset) {\n  return !isNaN(value) && typeof value !== \"object\" ? parseFloat(value) - offset : _isString(value) && value.charAt(1) === \"=\" ? parseFloat(value.substr(2)) * (value.charAt(0) === \"-\" ? -1 : 1) + currentVal - offset : value === \"max\" ? _max(target, axis) - offset : Math.min(_max(target, axis), _getOffset(value, target)[axis] - offset);\n},\n    _initCore = function _initCore() {\n  gsap = _getGSAP();\n\n  if (_windowExists() && gsap && typeof document !== \"undefined\" && document.body) {\n    _window = window;\n    _body = document.body;\n    _docEl = document.documentElement;\n    _toArray = gsap.utils.toArray;\n    gsap.config({\n      autoKillThreshold: 7\n    });\n    _config = gsap.config();\n    _coreInitted = 1;\n  }\n};\n\nexport var ScrollToPlugin = {\n  version: \"3.12.5\",\n  name: \"scrollTo\",\n  rawVars: 1,\n  register: function register(core) {\n    gsap = core;\n\n    _initCore();\n  },\n  init: function init(target, value, tween, index, targets) {\n    _coreInitted || _initCore();\n    var data = this,\n        snapType = gsap.getProperty(target, \"scrollSnapType\");\n    data.isWin = target === _window;\n    data.target = target;\n    data.tween = tween;\n    value = _clean(value, index, target, targets);\n    data.vars = value;\n    data.autoKill = !!value.autoKill;\n    data.getX = _buildGetter(target, \"x\");\n    data.getY = _buildGetter(target, \"y\");\n    data.x = data.xPrev = data.getX();\n    data.y = data.yPrev = data.getY();\n    ScrollTrigger || (ScrollTrigger = gsap.core.globals().ScrollTrigger);\n    gsap.getProperty(target, \"scrollBehavior\") === \"smooth\" && gsap.set(target, {\n      scrollBehavior: \"auto\"\n    });\n\n    if (snapType && snapType !== \"none\") {\n      // disable scroll snapping to avoid strange behavior\n      data.snap = 1;\n      data.snapInline = target.style.scrollSnapType;\n      target.style.scrollSnapType = \"none\";\n    }\n\n    if (value.x != null) {\n      data.add(data, \"x\", data.x, _parseVal(value.x, target, \"x\", data.x, value.offsetX || 0), index, targets);\n\n      data._props.push(\"scrollTo_x\");\n    } else {\n      data.skipX = 1;\n    }\n\n    if (value.y != null) {\n      data.add(data, \"y\", data.y, _parseVal(value.y, target, \"y\", data.y, value.offsetY || 0), index, targets);\n\n      data._props.push(\"scrollTo_y\");\n    } else {\n      data.skipY = 1;\n    }\n  },\n  render: function render(ratio, data) {\n    var pt = data._pt,\n        target = data.target,\n        tween = data.tween,\n        autoKill = data.autoKill,\n        xPrev = data.xPrev,\n        yPrev = data.yPrev,\n        isWin = data.isWin,\n        snap = data.snap,\n        snapInline = data.snapInline,\n        x,\n        y,\n        yDif,\n        xDif,\n        threshold;\n\n    while (pt) {\n      pt.r(ratio, pt.d);\n      pt = pt._next;\n    }\n\n    x = isWin || !data.skipX ? data.getX() : xPrev;\n    y = isWin || !data.skipY ? data.getY() : yPrev;\n    yDif = y - yPrev;\n    xDif = x - xPrev;\n    threshold = _config.autoKillThreshold;\n\n    if (data.x < 0) {\n      //can't scroll to a position less than 0! Might happen if someone uses a Back.easeOut or Elastic.easeOut when scrolling back to the top of the page (for example)\n      data.x = 0;\n    }\n\n    if (data.y < 0) {\n      data.y = 0;\n    }\n\n    if (autoKill) {\n      //note: iOS has a bug that throws off the scroll by several pixels, so we need to check if it's within 7 pixels of the previous one that we set instead of just looking for an exact match.\n      if (!data.skipX && (xDif > threshold || xDif < -threshold) && x < _max(target, \"x\")) {\n        data.skipX = 1; //if the user scrolls separately, we should stop tweening!\n      }\n\n      if (!data.skipY && (yDif > threshold || yDif < -threshold) && y < _max(target, \"y\")) {\n        data.skipY = 1; //if the user scrolls separately, we should stop tweening!\n      }\n\n      if (data.skipX && data.skipY) {\n        tween.kill();\n        data.vars.onAutoKill && data.vars.onAutoKill.apply(tween, data.vars.onAutoKillParams || []);\n      }\n    }\n\n    if (isWin) {\n      _window.scrollTo(!data.skipX ? data.x : x, !data.skipY ? data.y : y);\n    } else {\n      data.skipY || (target.scrollTop = data.y);\n      data.skipX || (target.scrollLeft = data.x);\n    }\n\n    if (snap && (ratio === 1 || ratio === 0)) {\n      y = target.scrollTop;\n      x = target.scrollLeft;\n      snapInline ? target.style.scrollSnapType = snapInline : target.style.removeProperty(\"scroll-snap-type\");\n      target.scrollTop = y + 1; // bug in Safari causes the element to totally reset its scroll position when scroll-snap-type changes, so we need to set it to a slightly different value and then back again to work around this bug.\n\n      target.scrollLeft = x + 1;\n      target.scrollTop = y;\n      target.scrollLeft = x;\n    }\n\n    data.xPrev = data.x;\n    data.yPrev = data.y;\n    ScrollTrigger && ScrollTrigger.update();\n  },\n  kill: function kill(property) {\n    var both = property === \"scrollTo\",\n        i = this._props.indexOf(property);\n\n    if (both || property === \"scrollTo_x\") {\n      this.skipX = 1;\n    }\n\n    if (both || property === \"scrollTo_y\") {\n      this.skipY = 1;\n    }\n\n    i > -1 && this._props.splice(i, 1);\n    return !this._props.length;\n  }\n};\nScrollToPlugin.max = _max;\nScrollToPlugin.getOffset = _getOffset;\nScrollToPlugin.buildGetter = _buildGetter;\n_getGSAP() && gsap.registerPlugin(ScrollToPlugin);\nexport { ScrollToPlugin as default };","function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/*!\n * Observer 3.12.5\n * https://gsap.com\n *\n * @license Copyright 2008-2024, GreenSock. All rights reserved.\n * Subject to the terms at https://gsap.com/standard-license or for\n * Club GSAP members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\nvar gsap,\n    _coreInitted,\n    _clamp,\n    _win,\n    _doc,\n    _docEl,\n    _body,\n    _isTouch,\n    _pointerType,\n    ScrollTrigger,\n    _root,\n    _normalizer,\n    _eventTypes,\n    _context,\n    _getGSAP = function _getGSAP() {\n  return gsap || typeof window !== \"undefined\" && (gsap = window.gsap) && gsap.registerPlugin && gsap;\n},\n    _startup = 1,\n    _observers = [],\n    _scrollers = [],\n    _proxies = [],\n    _getTime = Date.now,\n    _bridge = function _bridge(name, value) {\n  return value;\n},\n    _integrate = function _integrate() {\n  var core = ScrollTrigger.core,\n      data = core.bridge || {},\n      scrollers = core._scrollers,\n      proxies = core._proxies;\n  scrollers.push.apply(scrollers, _scrollers);\n  proxies.push.apply(proxies, _proxies);\n  _scrollers = scrollers;\n  _proxies = proxies;\n\n  _bridge = function _bridge(name, value) {\n    return data[name](value);\n  };\n},\n    _getProxyProp = function _getProxyProp(element, property) {\n  return ~_proxies.indexOf(element) && _proxies[_proxies.indexOf(element) + 1][property];\n},\n    _isViewport = function _isViewport(el) {\n  return !!~_root.indexOf(el);\n},\n    _addListener = function _addListener(element, type, func, passive, capture) {\n  return element.addEventListener(type, func, {\n    passive: passive !== false,\n    capture: !!capture\n  });\n},\n    _removeListener = function _removeListener(element, type, func, capture) {\n  return element.removeEventListener(type, func, !!capture);\n},\n    _scrollLeft = \"scrollLeft\",\n    _scrollTop = \"scrollTop\",\n    _onScroll = function _onScroll() {\n  return _normalizer && _normalizer.isPressed || _scrollers.cache++;\n},\n    _scrollCacheFunc = function _scrollCacheFunc(f, doNotCache) {\n  var cachingFunc = function cachingFunc(value) {\n    // since reading the scrollTop/scrollLeft/pageOffsetY/pageOffsetX can trigger a layout, this function allows us to cache the value so it only gets read fresh after a \"scroll\" event fires (or while we're refreshing because that can lengthen the page and alter the scroll position). when \"soft\" is true, that means don't actually set the scroll, but cache the new value instead (useful in ScrollSmoother)\n    if (value || value === 0) {\n      _startup && (_win.history.scrollRestoration = \"manual\"); // otherwise the new position will get overwritten by the browser onload.\n\n      var isNormalizing = _normalizer && _normalizer.isPressed;\n      value = cachingFunc.v = Math.round(value) || (_normalizer && _normalizer.iOS ? 1 : 0); //TODO: iOS Bug: if you allow it to go to 0, Safari can start to report super strange (wildly inaccurate) touch positions!\n\n      f(value);\n      cachingFunc.cacheID = _scrollers.cache;\n      isNormalizing && _bridge(\"ss\", value); // set scroll (notify ScrollTrigger so it can dispatch a \"scrollStart\" event if necessary\n    } else if (doNotCache || _scrollers.cache !== cachingFunc.cacheID || _bridge(\"ref\")) {\n      cachingFunc.cacheID = _scrollers.cache;\n      cachingFunc.v = f();\n    }\n\n    return cachingFunc.v + cachingFunc.offset;\n  };\n\n  cachingFunc.offset = 0;\n  return f && cachingFunc;\n},\n    _horizontal = {\n  s: _scrollLeft,\n  p: \"left\",\n  p2: \"Left\",\n  os: \"right\",\n  os2: \"Right\",\n  d: \"width\",\n  d2: \"Width\",\n  a: \"x\",\n  sc: _scrollCacheFunc(function (value) {\n    return arguments.length ? _win.scrollTo(value, _vertical.sc()) : _win.pageXOffset || _doc[_scrollLeft] || _docEl[_scrollLeft] || _body[_scrollLeft] || 0;\n  })\n},\n    _vertical = {\n  s: _scrollTop,\n  p: \"top\",\n  p2: \"Top\",\n  os: \"bottom\",\n  os2: \"Bottom\",\n  d: \"height\",\n  d2: \"Height\",\n  a: \"y\",\n  op: _horizontal,\n  sc: _scrollCacheFunc(function (value) {\n    return arguments.length ? _win.scrollTo(_horizontal.sc(), value) : _win.pageYOffset || _doc[_scrollTop] || _docEl[_scrollTop] || _body[_scrollTop] || 0;\n  })\n},\n    _getTarget = function _getTarget(t, self) {\n  return (self && self._ctx && self._ctx.selector || gsap.utils.toArray)(t)[0] || (typeof t === \"string\" && gsap.config().nullTargetWarn !== false ? console.warn(\"Element not found:\", t) : null);\n},\n    _getScrollFunc = function _getScrollFunc(element, _ref) {\n  var s = _ref.s,\n      sc = _ref.sc;\n  // we store the scroller functions in an alternating sequenced Array like [element, verticalScrollFunc, horizontalScrollFunc, ...] so that we can minimize memory, maximize performance, and we also record the last position as a \".rec\" property in order to revert to that after refreshing to ensure things don't shift around.\n  _isViewport(element) && (element = _doc.scrollingElement || _docEl);\n\n  var i = _scrollers.indexOf(element),\n      offset = sc === _vertical.sc ? 1 : 2;\n\n  !~i && (i = _scrollers.push(element) - 1);\n  _scrollers[i + offset] || _addListener(element, \"scroll\", _onScroll); // clear the cache when a scroll occurs\n\n  var prev = _scrollers[i + offset],\n      func = prev || (_scrollers[i + offset] = _scrollCacheFunc(_getProxyProp(element, s), true) || (_isViewport(element) ? sc : _scrollCacheFunc(function (value) {\n    return arguments.length ? element[s] = value : element[s];\n  })));\n  func.target = element;\n  prev || (func.smooth = gsap.getProperty(element, \"scrollBehavior\") === \"smooth\"); // only set it the first time (don't reset every time a scrollFunc is requested because perhaps it happens during a refresh() when it's disabled in ScrollTrigger.\n\n  return func;\n},\n    _getVelocityProp = function _getVelocityProp(value, minTimeRefresh, useDelta) {\n  var v1 = value,\n      v2 = value,\n      t1 = _getTime(),\n      t2 = t1,\n      min = minTimeRefresh || 50,\n      dropToZeroTime = Math.max(500, min * 3),\n      update = function update(value, force) {\n    var t = _getTime();\n\n    if (force || t - t1 > min) {\n      v2 = v1;\n      v1 = value;\n      t2 = t1;\n      t1 = t;\n    } else if (useDelta) {\n      v1 += value;\n    } else {\n      // not totally necessary, but makes it a bit more accurate by adjusting the v1 value according to the new slope. This way we're not just ignoring the incoming data. Removing for now because it doesn't seem to make much practical difference and it's probably not worth the kb.\n      v1 = v2 + (value - v2) / (t - t2) * (t1 - t2);\n    }\n  },\n      reset = function reset() {\n    v2 = v1 = useDelta ? 0 : v1;\n    t2 = t1 = 0;\n  },\n      getVelocity = function getVelocity(latestValue) {\n    var tOld = t2,\n        vOld = v2,\n        t = _getTime();\n\n    (latestValue || latestValue === 0) && latestValue !== v1 && update(latestValue);\n    return t1 === t2 || t - t2 > dropToZeroTime ? 0 : (v1 + (useDelta ? vOld : -vOld)) / ((useDelta ? t : t1) - tOld) * 1000;\n  };\n\n  return {\n    update: update,\n    reset: reset,\n    getVelocity: getVelocity\n  };\n},\n    _getEvent = function _getEvent(e, preventDefault) {\n  preventDefault && !e._gsapAllow && e.preventDefault();\n  return e.changedTouches ? e.changedTouches[0] : e;\n},\n    _getAbsoluteMax = function _getAbsoluteMax(a) {\n  var max = Math.max.apply(Math, a),\n      min = Math.min.apply(Math, a);\n  return Math.abs(max) >= Math.abs(min) ? max : min;\n},\n    _setScrollTrigger = function _setScrollTrigger() {\n  ScrollTrigger = gsap.core.globals().ScrollTrigger;\n  ScrollTrigger && ScrollTrigger.core && _integrate();\n},\n    _initCore = function _initCore(core) {\n  gsap = core || _getGSAP();\n\n  if (!_coreInitted && gsap && typeof document !== \"undefined\" && document.body) {\n    _win = window;\n    _doc = document;\n    _docEl = _doc.documentElement;\n    _body = _doc.body;\n    _root = [_win, _doc, _docEl, _body];\n    _clamp = gsap.utils.clamp;\n\n    _context = gsap.core.context || function () {};\n\n    _pointerType = \"onpointerenter\" in _body ? \"pointer\" : \"mouse\"; // isTouch is 0 if no touch, 1 if ONLY touch, and 2 if it can accommodate touch but also other types like mouse/pointer.\n\n    _isTouch = Observer.isTouch = _win.matchMedia && _win.matchMedia(\"(hover: none), (pointer: coarse)\").matches ? 1 : \"ontouchstart\" in _win || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0 ? 2 : 0;\n    _eventTypes = Observer.eventTypes = (\"ontouchstart\" in _docEl ? \"touchstart,touchmove,touchcancel,touchend\" : !(\"onpointerdown\" in _docEl) ? \"mousedown,mousemove,mouseup,mouseup\" : \"pointerdown,pointermove,pointercancel,pointerup\").split(\",\");\n    setTimeout(function () {\n      return _startup = 0;\n    }, 500);\n\n    _setScrollTrigger();\n\n    _coreInitted = 1;\n  }\n\n  return _coreInitted;\n};\n\n_horizontal.op = _vertical;\n_scrollers.cache = 0;\nexport var Observer = /*#__PURE__*/function () {\n  function Observer(vars) {\n    this.init(vars);\n  }\n\n  var _proto = Observer.prototype;\n\n  _proto.init = function init(vars) {\n    _coreInitted || _initCore(gsap) || console.warn(\"Please gsap.registerPlugin(Observer)\");\n    ScrollTrigger || _setScrollTrigger();\n    var tolerance = vars.tolerance,\n        dragMinimum = vars.dragMinimum,\n        type = vars.type,\n        target = vars.target,\n        lineHeight = vars.lineHeight,\n        debounce = vars.debounce,\n        preventDefault = vars.preventDefault,\n        onStop = vars.onStop,\n        onStopDelay = vars.onStopDelay,\n        ignore = vars.ignore,\n        wheelSpeed = vars.wheelSpeed,\n        event = vars.event,\n        onDragStart = vars.onDragStart,\n        onDragEnd = vars.onDragEnd,\n        onDrag = vars.onDrag,\n        onPress = vars.onPress,\n        onRelease = vars.onRelease,\n        onRight = vars.onRight,\n        onLeft = vars.onLeft,\n        onUp = vars.onUp,\n        onDown = vars.onDown,\n        onChangeX = vars.onChangeX,\n        onChangeY = vars.onChangeY,\n        onChange = vars.onChange,\n        onToggleX = vars.onToggleX,\n        onToggleY = vars.onToggleY,\n        onHover = vars.onHover,\n        onHoverEnd = vars.onHoverEnd,\n        onMove = vars.onMove,\n        ignoreCheck = vars.ignoreCheck,\n        isNormalizer = vars.isNormalizer,\n        onGestureStart = vars.onGestureStart,\n        onGestureEnd = vars.onGestureEnd,\n        onWheel = vars.onWheel,\n        onEnable = vars.onEnable,\n        onDisable = vars.onDisable,\n        onClick = vars.onClick,\n        scrollSpeed = vars.scrollSpeed,\n        capture = vars.capture,\n        allowClicks = vars.allowClicks,\n        lockAxis = vars.lockAxis,\n        onLockAxis = vars.onLockAxis;\n    this.target = target = _getTarget(target) || _docEl;\n    this.vars = vars;\n    ignore && (ignore = gsap.utils.toArray(ignore));\n    tolerance = tolerance || 1e-9;\n    dragMinimum = dragMinimum || 0;\n    wheelSpeed = wheelSpeed || 1;\n    scrollSpeed = scrollSpeed || 1;\n    type = type || \"wheel,touch,pointer\";\n    debounce = debounce !== false;\n    lineHeight || (lineHeight = parseFloat(_win.getComputedStyle(_body).lineHeight) || 22); // note: browser may report \"normal\", so default to 22.\n\n    var id,\n        onStopDelayedCall,\n        dragged,\n        moved,\n        wheeled,\n        locked,\n        axis,\n        self = this,\n        prevDeltaX = 0,\n        prevDeltaY = 0,\n        passive = vars.passive || !preventDefault,\n        scrollFuncX = _getScrollFunc(target, _horizontal),\n        scrollFuncY = _getScrollFunc(target, _vertical),\n        scrollX = scrollFuncX(),\n        scrollY = scrollFuncY(),\n        limitToTouch = ~type.indexOf(\"touch\") && !~type.indexOf(\"pointer\") && _eventTypes[0] === \"pointerdown\",\n        // for devices that accommodate mouse events and touch events, we need to distinguish.\n    isViewport = _isViewport(target),\n        ownerDoc = target.ownerDocument || _doc,\n        deltaX = [0, 0, 0],\n        // wheel, scroll, pointer/touch\n    deltaY = [0, 0, 0],\n        onClickTime = 0,\n        clickCapture = function clickCapture() {\n      return onClickTime = _getTime();\n    },\n        _ignoreCheck = function _ignoreCheck(e, isPointerOrTouch) {\n      return (self.event = e) && ignore && ~ignore.indexOf(e.target) || isPointerOrTouch && limitToTouch && e.pointerType !== \"touch\" || ignoreCheck && ignoreCheck(e, isPointerOrTouch);\n    },\n        onStopFunc = function onStopFunc() {\n      self._vx.reset();\n\n      self._vy.reset();\n\n      onStopDelayedCall.pause();\n      onStop && onStop(self);\n    },\n        update = function update() {\n      var dx = self.deltaX = _getAbsoluteMax(deltaX),\n          dy = self.deltaY = _getAbsoluteMax(deltaY),\n          changedX = Math.abs(dx) >= tolerance,\n          changedY = Math.abs(dy) >= tolerance;\n\n      onChange && (changedX || changedY) && onChange(self, dx, dy, deltaX, deltaY); // in ScrollTrigger.normalizeScroll(), we need to know if it was touch/pointer so we need access to the deltaX/deltaY Arrays before we clear them out.\n\n      if (changedX) {\n        onRight && self.deltaX > 0 && onRight(self);\n        onLeft && self.deltaX < 0 && onLeft(self);\n        onChangeX && onChangeX(self);\n        onToggleX && self.deltaX < 0 !== prevDeltaX < 0 && onToggleX(self);\n        prevDeltaX = self.deltaX;\n        deltaX[0] = deltaX[1] = deltaX[2] = 0;\n      }\n\n      if (changedY) {\n        onDown && self.deltaY > 0 && onDown(self);\n        onUp && self.deltaY < 0 && onUp(self);\n        onChangeY && onChangeY(self);\n        onToggleY && self.deltaY < 0 !== prevDeltaY < 0 && onToggleY(self);\n        prevDeltaY = self.deltaY;\n        deltaY[0] = deltaY[1] = deltaY[2] = 0;\n      }\n\n      if (moved || dragged) {\n        onMove && onMove(self);\n\n        if (dragged) {\n          onDrag(self);\n          dragged = false;\n        }\n\n        moved = false;\n      }\n\n      locked && !(locked = false) && onLockAxis && onLockAxis(self);\n\n      if (wheeled) {\n        onWheel(self);\n        wheeled = false;\n      }\n\n      id = 0;\n    },\n        onDelta = function onDelta(x, y, index) {\n      deltaX[index] += x;\n      deltaY[index] += y;\n\n      self._vx.update(x);\n\n      self._vy.update(y);\n\n      debounce ? id || (id = requestAnimationFrame(update)) : update();\n    },\n        onTouchOrPointerDelta = function onTouchOrPointerDelta(x, y) {\n      if (lockAxis && !axis) {\n        self.axis = axis = Math.abs(x) > Math.abs(y) ? \"x\" : \"y\";\n        locked = true;\n      }\n\n      if (axis !== \"y\") {\n        deltaX[2] += x;\n\n        self._vx.update(x, true); // update the velocity as frequently as possible instead of in the debounced function so that very quick touch-scrolls (flicks) feel natural. If it's the mouse/touch/pointer, force it so that we get snappy/accurate momentum scroll.\n\n      }\n\n      if (axis !== \"x\") {\n        deltaY[2] += y;\n\n        self._vy.update(y, true);\n      }\n\n      debounce ? id || (id = requestAnimationFrame(update)) : update();\n    },\n        _onDrag = function _onDrag(e) {\n      if (_ignoreCheck(e, 1)) {\n        return;\n      }\n\n      e = _getEvent(e, preventDefault);\n      var x = e.clientX,\n          y = e.clientY,\n          dx = x - self.x,\n          dy = y - self.y,\n          isDragging = self.isDragging;\n      self.x = x;\n      self.y = y;\n\n      if (isDragging || Math.abs(self.startX - x) >= dragMinimum || Math.abs(self.startY - y) >= dragMinimum) {\n        onDrag && (dragged = true);\n        isDragging || (self.isDragging = true);\n        onTouchOrPointerDelta(dx, dy);\n        isDragging || onDragStart && onDragStart(self);\n      }\n    },\n        _onPress = self.onPress = function (e) {\n      if (_ignoreCheck(e, 1) || e && e.button) {\n        return;\n      }\n\n      self.axis = axis = null;\n      onStopDelayedCall.pause();\n      self.isPressed = true;\n      e = _getEvent(e); // note: may need to preventDefault(?) Won't side-scroll on iOS Safari if we do, though.\n\n      prevDeltaX = prevDeltaY = 0;\n      self.startX = self.x = e.clientX;\n      self.startY = self.y = e.clientY;\n\n      self._vx.reset(); // otherwise the t2 may be stale if the user touches and flicks super fast and releases in less than 2 requestAnimationFrame ticks, causing velocity to be 0.\n\n\n      self._vy.reset();\n\n      _addListener(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, passive, true);\n\n      self.deltaX = self.deltaY = 0;\n      onPress && onPress(self);\n    },\n        _onRelease = self.onRelease = function (e) {\n      if (_ignoreCheck(e, 1)) {\n        return;\n      }\n\n      _removeListener(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, true);\n\n      var isTrackingDrag = !isNaN(self.y - self.startY),\n          wasDragging = self.isDragging,\n          isDragNotClick = wasDragging && (Math.abs(self.x - self.startX) > 3 || Math.abs(self.y - self.startY) > 3),\n          // some touch devices need some wiggle room in terms of sensing clicks - the finger may move a few pixels.\n      eventData = _getEvent(e);\n\n      if (!isDragNotClick && isTrackingDrag) {\n        self._vx.reset();\n\n        self._vy.reset(); //if (preventDefault && allowClicks && self.isPressed) { // check isPressed because in a rare edge case, the inputObserver in ScrollTrigger may stopPropagation() on the press/drag, so the onRelease may get fired without the onPress/onDrag ever getting called, thus it could trigger a click to occur on a link after scroll-dragging it.\n\n\n        if (preventDefault && allowClicks) {\n          gsap.delayedCall(0.08, function () {\n            // some browsers (like Firefox) won't trust script-generated clicks, so if the user tries to click on a video to play it, for example, it simply won't work. Since a regular \"click\" event will most likely be generated anyway (one that has its isTrusted flag set to true), we must slightly delay our script-generated click so that the \"real\"/trusted one is prioritized. Remember, when there are duplicate events in quick succession, we suppress all but the first one. Some browsers don't even trigger the \"real\" one at all, so our synthetic one is a safety valve that ensures that no matter what, a click event does get dispatched.\n            if (_getTime() - onClickTime > 300 && !e.defaultPrevented) {\n              if (e.target.click) {\n                //some browsers (like mobile Safari) don't properly trigger the click event\n                e.target.click();\n              } else if (ownerDoc.createEvent) {\n                var syntheticEvent = ownerDoc.createEvent(\"MouseEvents\");\n                syntheticEvent.initMouseEvent(\"click\", true, true, _win, 1, eventData.screenX, eventData.screenY, eventData.clientX, eventData.clientY, false, false, false, false, 0, null);\n                e.target.dispatchEvent(syntheticEvent);\n              }\n            }\n          });\n        }\n      }\n\n      self.isDragging = self.isGesturing = self.isPressed = false;\n      onStop && wasDragging && !isNormalizer && onStopDelayedCall.restart(true);\n      onDragEnd && wasDragging && onDragEnd(self);\n      onRelease && onRelease(self, isDragNotClick);\n    },\n        _onGestureStart = function _onGestureStart(e) {\n      return e.touches && e.touches.length > 1 && (self.isGesturing = true) && onGestureStart(e, self.isDragging);\n    },\n        _onGestureEnd = function _onGestureEnd() {\n      return (self.isGesturing = false) || onGestureEnd(self);\n    },\n        onScroll = function onScroll(e) {\n      if (_ignoreCheck(e)) {\n        return;\n      }\n\n      var x = scrollFuncX(),\n          y = scrollFuncY();\n      onDelta((x - scrollX) * scrollSpeed, (y - scrollY) * scrollSpeed, 1);\n      scrollX = x;\n      scrollY = y;\n      onStop && onStopDelayedCall.restart(true);\n    },\n        _onWheel = function _onWheel(e) {\n      if (_ignoreCheck(e)) {\n        return;\n      }\n\n      e = _getEvent(e, preventDefault);\n      onWheel && (wheeled = true);\n      var multiplier = (e.deltaMode === 1 ? lineHeight : e.deltaMode === 2 ? _win.innerHeight : 1) * wheelSpeed;\n      onDelta(e.deltaX * multiplier, e.deltaY * multiplier, 0);\n      onStop && !isNormalizer && onStopDelayedCall.restart(true);\n    },\n        _onMove = function _onMove(e) {\n      if (_ignoreCheck(e)) {\n        return;\n      }\n\n      var x = e.clientX,\n          y = e.clientY,\n          dx = x - self.x,\n          dy = y - self.y;\n      self.x = x;\n      self.y = y;\n      moved = true;\n      onStop && onStopDelayedCall.restart(true);\n      (dx || dy) && onTouchOrPointerDelta(dx, dy);\n    },\n        _onHover = function _onHover(e) {\n      self.event = e;\n      onHover(self);\n    },\n        _onHoverEnd = function _onHoverEnd(e) {\n      self.event = e;\n      onHoverEnd(self);\n    },\n        _onClick = function _onClick(e) {\n      return _ignoreCheck(e) || _getEvent(e, preventDefault) && onClick(self);\n    };\n\n    onStopDelayedCall = self._dc = gsap.delayedCall(onStopDelay || 0.25, onStopFunc).pause();\n    self.deltaX = self.deltaY = 0;\n    self._vx = _getVelocityProp(0, 50, true);\n    self._vy = _getVelocityProp(0, 50, true);\n    self.scrollX = scrollFuncX;\n    self.scrollY = scrollFuncY;\n    self.isDragging = self.isGesturing = self.isPressed = false;\n\n    _context(this);\n\n    self.enable = function (e) {\n      if (!self.isEnabled) {\n        _addListener(isViewport ? ownerDoc : target, \"scroll\", _onScroll);\n\n        type.indexOf(\"scroll\") >= 0 && _addListener(isViewport ? ownerDoc : target, \"scroll\", onScroll, passive, capture);\n        type.indexOf(\"wheel\") >= 0 && _addListener(target, \"wheel\", _onWheel, passive, capture);\n\n        if (type.indexOf(\"touch\") >= 0 && _isTouch || type.indexOf(\"pointer\") >= 0) {\n          _addListener(target, _eventTypes[0], _onPress, passive, capture);\n\n          _addListener(ownerDoc, _eventTypes[2], _onRelease);\n\n          _addListener(ownerDoc, _eventTypes[3], _onRelease);\n\n          allowClicks && _addListener(target, \"click\", clickCapture, true, true);\n          onClick && _addListener(target, \"click\", _onClick);\n          onGestureStart && _addListener(ownerDoc, \"gesturestart\", _onGestureStart);\n          onGestureEnd && _addListener(ownerDoc, \"gestureend\", _onGestureEnd);\n          onHover && _addListener(target, _pointerType + \"enter\", _onHover);\n          onHoverEnd && _addListener(target, _pointerType + \"leave\", _onHoverEnd);\n          onMove && _addListener(target, _pointerType + \"move\", _onMove);\n        }\n\n        self.isEnabled = true;\n        e && e.type && _onPress(e);\n        onEnable && onEnable(self);\n      }\n\n      return self;\n    };\n\n    self.disable = function () {\n      if (self.isEnabled) {\n        // only remove the _onScroll listener if there aren't any others that rely on the functionality.\n        _observers.filter(function (o) {\n          return o !== self && _isViewport(o.target);\n        }).length || _removeListener(isViewport ? ownerDoc : target, \"scroll\", _onScroll);\n\n        if (self.isPressed) {\n          self._vx.reset();\n\n          self._vy.reset();\n\n          _removeListener(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, true);\n        }\n\n        _removeListener(isViewport ? ownerDoc : target, \"scroll\", onScroll, capture);\n\n        _removeListener(target, \"wheel\", _onWheel, capture);\n\n        _removeListener(target, _eventTypes[0], _onPress, capture);\n\n        _removeListener(ownerDoc, _eventTypes[2], _onRelease);\n\n        _removeListener(ownerDoc, _eventTypes[3], _onRelease);\n\n        _removeListener(target, \"click\", clickCapture, true);\n\n        _removeListener(target, \"click\", _onClick);\n\n        _removeListener(ownerDoc, \"gesturestart\", _onGestureStart);\n\n        _removeListener(ownerDoc, \"gestureend\", _onGestureEnd);\n\n        _removeListener(target, _pointerType + \"enter\", _onHover);\n\n        _removeListener(target, _pointerType + \"leave\", _onHoverEnd);\n\n        _removeListener(target, _pointerType + \"move\", _onMove);\n\n        self.isEnabled = self.isPressed = self.isDragging = false;\n        onDisable && onDisable(self);\n      }\n    };\n\n    self.kill = self.revert = function () {\n      self.disable();\n\n      var i = _observers.indexOf(self);\n\n      i >= 0 && _observers.splice(i, 1);\n      _normalizer === self && (_normalizer = 0);\n    };\n\n    _observers.push(self);\n\n    isNormalizer && _isViewport(target) && (_normalizer = self);\n    self.enable(event);\n  };\n\n  _createClass(Observer, [{\n    key: \"velocityX\",\n    get: function get() {\n      return this._vx.getVelocity();\n    }\n  }, {\n    key: \"velocityY\",\n    get: function get() {\n      return this._vy.getVelocity();\n    }\n  }]);\n\n  return Observer;\n}();\nObserver.version = \"3.12.5\";\n\nObserver.create = function (vars) {\n  return new Observer(vars);\n};\n\nObserver.register = _initCore;\n\nObserver.getAll = function () {\n  return _observers.slice();\n};\n\nObserver.getById = function (id) {\n  return _observers.filter(function (o) {\n    return o.vars.id === id;\n  })[0];\n};\n\n_getGSAP() && gsap.registerPlugin(Observer);\nexport { Observer as default, _isViewport, _scrollers, _getScrollFunc, _getProxyProp, _proxies, _getVelocityProp, _vertical, _horizontal, _getTarget };","/*!\n * ScrollTrigger 3.12.5\n * https://gsap.com\n *\n * @license Copyright 2008-2024, GreenSock. All rights reserved.\n * Subject to the terms at https://gsap.com/standard-license or for\n * Club GSAP members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\nimport { Observer, _getTarget, _vertical, _horizontal, _scrollers, _proxies, _getScrollFunc, _getProxyProp, _getVelocityProp } from \"./Observer.js\";\n\nvar gsap,\n    _coreInitted,\n    _win,\n    _doc,\n    _docEl,\n    _body,\n    _root,\n    _resizeDelay,\n    _toArray,\n    _clamp,\n    _time2,\n    _syncInterval,\n    _refreshing,\n    _pointerIsDown,\n    _transformProp,\n    _i,\n    _prevWidth,\n    _prevHeight,\n    _autoRefresh,\n    _sort,\n    _suppressOverwrites,\n    _ignoreResize,\n    _normalizer,\n    _ignoreMobileResize,\n    _baseScreenHeight,\n    _baseScreenWidth,\n    _fixIOSBug,\n    _context,\n    _scrollRestoration,\n    _div100vh,\n    _100vh,\n    _isReverted,\n    _clampingMax,\n    _limitCallbacks,\n    // if true, we'll only trigger callbacks if the active state toggles, so if you scroll immediately past both the start and end positions of a ScrollTrigger (thus inactive to inactive), neither its onEnter nor onLeave will be called. This is useful during startup.\n_startup = 1,\n    _getTime = Date.now,\n    _time1 = _getTime(),\n    _lastScrollTime = 0,\n    _enabled = 0,\n    _parseClamp = function _parseClamp(value, type, self) {\n  var clamp = _isString(value) && (value.substr(0, 6) === \"clamp(\" || value.indexOf(\"max\") > -1);\n  self[\"_\" + type + \"Clamp\"] = clamp;\n  return clamp ? value.substr(6, value.length - 7) : value;\n},\n    _keepClamp = function _keepClamp(value, clamp) {\n  return clamp && (!_isString(value) || value.substr(0, 6) !== \"clamp(\") ? \"clamp(\" + value + \")\" : value;\n},\n    _rafBugFix = function _rafBugFix() {\n  return _enabled && requestAnimationFrame(_rafBugFix);\n},\n    // in some browsers (like Firefox), screen repaints weren't consistent unless we had SOMETHING queued up in requestAnimationFrame()! So this just creates a super simple loop to keep it alive and smooth out repaints.\n_pointerDownHandler = function _pointerDownHandler() {\n  return _pointerIsDown = 1;\n},\n    _pointerUpHandler = function _pointerUpHandler() {\n  return _pointerIsDown = 0;\n},\n    _passThrough = function _passThrough(v) {\n  return v;\n},\n    _round = function _round(value) {\n  return Math.round(value * 100000) / 100000 || 0;\n},\n    _windowExists = function _windowExists() {\n  return typeof window !== \"undefined\";\n},\n    _getGSAP = function _getGSAP() {\n  return gsap || _windowExists() && (gsap = window.gsap) && gsap.registerPlugin && gsap;\n},\n    _isViewport = function _isViewport(e) {\n  return !!~_root.indexOf(e);\n},\n    _getViewportDimension = function _getViewportDimension(dimensionProperty) {\n  return (dimensionProperty === \"Height\" ? _100vh : _win[\"inner\" + dimensionProperty]) || _docEl[\"client\" + dimensionProperty] || _body[\"client\" + dimensionProperty];\n},\n    _getBoundsFunc = function _getBoundsFunc(element) {\n  return _getProxyProp(element, \"getBoundingClientRect\") || (_isViewport(element) ? function () {\n    _winOffsets.width = _win.innerWidth;\n    _winOffsets.height = _100vh;\n    return _winOffsets;\n  } : function () {\n    return _getBounds(element);\n  });\n},\n    _getSizeFunc = function _getSizeFunc(scroller, isViewport, _ref) {\n  var d = _ref.d,\n      d2 = _ref.d2,\n      a = _ref.a;\n  return (a = _getProxyProp(scroller, \"getBoundingClientRect\")) ? function () {\n    return a()[d];\n  } : function () {\n    return (isViewport ? _getViewportDimension(d2) : scroller[\"client\" + d2]) || 0;\n  };\n},\n    _getOffsetsFunc = function _getOffsetsFunc(element, isViewport) {\n  return !isViewport || ~_proxies.indexOf(element) ? _getBoundsFunc(element) : function () {\n    return _winOffsets;\n  };\n},\n    _maxScroll = function _maxScroll(element, _ref2) {\n  var s = _ref2.s,\n      d2 = _ref2.d2,\n      d = _ref2.d,\n      a = _ref2.a;\n  return Math.max(0, (s = \"scroll\" + d2) && (a = _getProxyProp(element, s)) ? a() - _getBoundsFunc(element)()[d] : _isViewport(element) ? (_docEl[s] || _body[s]) - _getViewportDimension(d2) : element[s] - element[\"offset\" + d2]);\n},\n    _iterateAutoRefresh = function _iterateAutoRefresh(func, events) {\n  for (var i = 0; i < _autoRefresh.length; i += 3) {\n    (!events || ~events.indexOf(_autoRefresh[i + 1])) && func(_autoRefresh[i], _autoRefresh[i + 1], _autoRefresh[i + 2]);\n  }\n},\n    _isString = function _isString(value) {\n  return typeof value === \"string\";\n},\n    _isFunction = function _isFunction(value) {\n  return typeof value === \"function\";\n},\n    _isNumber = function _isNumber(value) {\n  return typeof value === \"number\";\n},\n    _isObject = function _isObject(value) {\n  return typeof value === \"object\";\n},\n    _endAnimation = function _endAnimation(animation, reversed, pause) {\n  return animation && animation.progress(reversed ? 0 : 1) && pause && animation.pause();\n},\n    _callback = function _callback(self, func) {\n  if (self.enabled) {\n    var result = self._ctx ? self._ctx.add(function () {\n      return func(self);\n    }) : func(self);\n    result && result.totalTime && (self.callbackAnimation = result);\n  }\n},\n    _abs = Math.abs,\n    _left = \"left\",\n    _top = \"top\",\n    _right = \"right\",\n    _bottom = \"bottom\",\n    _width = \"width\",\n    _height = \"height\",\n    _Right = \"Right\",\n    _Left = \"Left\",\n    _Top = \"Top\",\n    _Bottom = \"Bottom\",\n    _padding = \"padding\",\n    _margin = \"margin\",\n    _Width = \"Width\",\n    _Height = \"Height\",\n    _px = \"px\",\n    _getComputedStyle = function _getComputedStyle(element) {\n  return _win.getComputedStyle(element);\n},\n    _makePositionable = function _makePositionable(element) {\n  // if the element already has position: absolute or fixed, leave that, otherwise make it position: relative\n  var position = _getComputedStyle(element).position;\n\n  element.style.position = position === \"absolute\" || position === \"fixed\" ? position : \"relative\";\n},\n    _setDefaults = function _setDefaults(obj, defaults) {\n  for (var p in defaults) {\n    p in obj || (obj[p] = defaults[p]);\n  }\n\n  return obj;\n},\n    _getBounds = function _getBounds(element, withoutTransforms) {\n  var tween = withoutTransforms && _getComputedStyle(element)[_transformProp] !== \"matrix(1, 0, 0, 1, 0, 0)\" && gsap.to(element, {\n    x: 0,\n    y: 0,\n    xPercent: 0,\n    yPercent: 0,\n    rotation: 0,\n    rotationX: 0,\n    rotationY: 0,\n    scale: 1,\n    skewX: 0,\n    skewY: 0\n  }).progress(1),\n      bounds = element.getBoundingClientRect();\n  tween && tween.progress(0).kill();\n  return bounds;\n},\n    _getSize = function _getSize(element, _ref3) {\n  var d2 = _ref3.d2;\n  return element[\"offset\" + d2] || element[\"client\" + d2] || 0;\n},\n    _getLabelRatioArray = function _getLabelRatioArray(timeline) {\n  var a = [],\n      labels = timeline.labels,\n      duration = timeline.duration(),\n      p;\n\n  for (p in labels) {\n    a.push(labels[p] / duration);\n  }\n\n  return a;\n},\n    _getClosestLabel = function _getClosestLabel(animation) {\n  return function (value) {\n    return gsap.utils.snap(_getLabelRatioArray(animation), value);\n  };\n},\n    _snapDirectional = function _snapDirectional(snapIncrementOrArray) {\n  var snap = gsap.utils.snap(snapIncrementOrArray),\n      a = Array.isArray(snapIncrementOrArray) && snapIncrementOrArray.slice(0).sort(function (a, b) {\n    return a - b;\n  });\n  return a ? function (value, direction, threshold) {\n    if (threshold === void 0) {\n      threshold = 1e-3;\n    }\n\n    var i;\n\n    if (!direction) {\n      return snap(value);\n    }\n\n    if (direction > 0) {\n      value -= threshold; // to avoid rounding errors. If we're too strict, it might snap forward, then immediately again, and again.\n\n      for (i = 0; i < a.length; i++) {\n        if (a[i] >= value) {\n          return a[i];\n        }\n      }\n\n      return a[i - 1];\n    } else {\n      i = a.length;\n      value += threshold;\n\n      while (i--) {\n        if (a[i] <= value) {\n          return a[i];\n        }\n      }\n    }\n\n    return a[0];\n  } : function (value, direction, threshold) {\n    if (threshold === void 0) {\n      threshold = 1e-3;\n    }\n\n    var snapped = snap(value);\n    return !direction || Math.abs(snapped - value) < threshold || snapped - value < 0 === direction < 0 ? snapped : snap(direction < 0 ? value - snapIncrementOrArray : value + snapIncrementOrArray);\n  };\n},\n    _getLabelAtDirection = function _getLabelAtDirection(timeline) {\n  return function (value, st) {\n    return _snapDirectional(_getLabelRatioArray(timeline))(value, st.direction);\n  };\n},\n    _multiListener = function _multiListener(func, element, types, callback) {\n  return types.split(\",\").forEach(function (type) {\n    return func(element, type, callback);\n  });\n},\n    _addListener = function _addListener(element, type, func, nonPassive, capture) {\n  return element.addEventListener(type, func, {\n    passive: !nonPassive,\n    capture: !!capture\n  });\n},\n    _removeListener = function _removeListener(element, type, func, capture) {\n  return element.removeEventListener(type, func, !!capture);\n},\n    _wheelListener = function _wheelListener(func, el, scrollFunc) {\n  scrollFunc = scrollFunc && scrollFunc.wheelHandler;\n\n  if (scrollFunc) {\n    func(el, \"wheel\", scrollFunc);\n    func(el, \"touchmove\", scrollFunc);\n  }\n},\n    _markerDefaults = {\n  startColor: \"green\",\n  endColor: \"red\",\n  indent: 0,\n  fontSize: \"16px\",\n  fontWeight: \"normal\"\n},\n    _defaults = {\n  toggleActions: \"play\",\n  anticipatePin: 0\n},\n    _keywords = {\n  top: 0,\n  left: 0,\n  center: 0.5,\n  bottom: 1,\n  right: 1\n},\n    _offsetToPx = function _offsetToPx(value, size) {\n  if (_isString(value)) {\n    var eqIndex = value.indexOf(\"=\"),\n        relative = ~eqIndex ? +(value.charAt(eqIndex - 1) + 1) * parseFloat(value.substr(eqIndex + 1)) : 0;\n\n    if (~eqIndex) {\n      value.indexOf(\"%\") > eqIndex && (relative *= size / 100);\n      value = value.substr(0, eqIndex - 1);\n    }\n\n    value = relative + (value in _keywords ? _keywords[value] * size : ~value.indexOf(\"%\") ? parseFloat(value) * size / 100 : parseFloat(value) || 0);\n  }\n\n  return value;\n},\n    _createMarker = function _createMarker(type, name, container, direction, _ref4, offset, matchWidthEl, containerAnimation) {\n  var startColor = _ref4.startColor,\n      endColor = _ref4.endColor,\n      fontSize = _ref4.fontSize,\n      indent = _ref4.indent,\n      fontWeight = _ref4.fontWeight;\n\n  var e = _doc.createElement(\"div\"),\n      useFixedPosition = _isViewport(container) || _getProxyProp(container, \"pinType\") === \"fixed\",\n      isScroller = type.indexOf(\"scroller\") !== -1,\n      parent = useFixedPosition ? _body : container,\n      isStart = type.indexOf(\"start\") !== -1,\n      color = isStart ? startColor : endColor,\n      css = \"border-color:\" + color + \";font-size:\" + fontSize + \";color:\" + color + \";font-weight:\" + fontWeight + \";pointer-events:none;white-space:nowrap;font-family:sans-serif,Arial;z-index:1000;padding:4px 8px;border-width:0;border-style:solid;\";\n\n  css += \"position:\" + ((isScroller || containerAnimation) && useFixedPosition ? \"fixed;\" : \"absolute;\");\n  (isScroller || containerAnimation || !useFixedPosition) && (css += (direction === _vertical ? _right : _bottom) + \":\" + (offset + parseFloat(indent)) + \"px;\");\n  matchWidthEl && (css += \"box-sizing:border-box;text-align:left;width:\" + matchWidthEl.offsetWidth + \"px;\");\n  e._isStart = isStart;\n  e.setAttribute(\"class\", \"gsap-marker-\" + type + (name ? \" marker-\" + name : \"\"));\n  e.style.cssText = css;\n  e.innerText = name || name === 0 ? type + \"-\" + name : type;\n  parent.children[0] ? parent.insertBefore(e, parent.children[0]) : parent.appendChild(e);\n  e._offset = e[\"offset\" + direction.op.d2];\n\n  _positionMarker(e, 0, direction, isStart);\n\n  return e;\n},\n    _positionMarker = function _positionMarker(marker, start, direction, flipped) {\n  var vars = {\n    display: \"block\"\n  },\n      side = direction[flipped ? \"os2\" : \"p2\"],\n      oppositeSide = direction[flipped ? \"p2\" : \"os2\"];\n  marker._isFlipped = flipped;\n  vars[direction.a + \"Percent\"] = flipped ? -100 : 0;\n  vars[direction.a] = flipped ? \"1px\" : 0;\n  vars[\"border\" + side + _Width] = 1;\n  vars[\"border\" + oppositeSide + _Width] = 0;\n  vars[direction.p] = start + \"px\";\n  gsap.set(marker, vars);\n},\n    _triggers = [],\n    _ids = {},\n    _rafID,\n    _sync = function _sync() {\n  return _getTime() - _lastScrollTime > 34 && (_rafID || (_rafID = requestAnimationFrame(_updateAll)));\n},\n    _onScroll = function _onScroll() {\n  // previously, we tried to optimize performance by batching/deferring to the next requestAnimationFrame(), but discovered that Safari has a few bugs that make this unworkable (especially on iOS). See https://codepen.io/GreenSock/pen/16c435b12ef09c38125204818e7b45fc?editors=0010 and https://codepen.io/GreenSock/pen/JjOxYpQ/3dd65ccec5a60f1d862c355d84d14562?editors=0010 and https://codepen.io/GreenSock/pen/ExbrPNa/087cef197dc35445a0951e8935c41503?editors=0010\n  if (!_normalizer || !_normalizer.isPressed || _normalizer.startX > _body.clientWidth) {\n    // if the user is dragging the scrollbar, allow it.\n    _scrollers.cache++;\n\n    if (_normalizer) {\n      _rafID || (_rafID = requestAnimationFrame(_updateAll));\n    } else {\n      _updateAll(); // Safari in particular (on desktop) NEEDS the immediate update rather than waiting for a requestAnimationFrame() whereas iOS seems to benefit from waiting for the requestAnimationFrame() tick, at least when normalizing. See https://codepen.io/GreenSock/pen/qBYozqO?editors=0110\n\n    }\n\n    _lastScrollTime || _dispatch(\"scrollStart\");\n    _lastScrollTime = _getTime();\n  }\n},\n    _setBaseDimensions = function _setBaseDimensions() {\n  _baseScreenWidth = _win.innerWidth;\n  _baseScreenHeight = _win.innerHeight;\n},\n    _onResize = function _onResize() {\n  _scrollers.cache++;\n  !_refreshing && !_ignoreResize && !_doc.fullscreenElement && !_doc.webkitFullscreenElement && (!_ignoreMobileResize || _baseScreenWidth !== _win.innerWidth || Math.abs(_win.innerHeight - _baseScreenHeight) > _win.innerHeight * 0.25) && _resizeDelay.restart(true);\n},\n    // ignore resizes triggered by refresh()\n_listeners = {},\n    _emptyArray = [],\n    _softRefresh = function _softRefresh() {\n  return _removeListener(ScrollTrigger, \"scrollEnd\", _softRefresh) || _refreshAll(true);\n},\n    _dispatch = function _dispatch(type) {\n  return _listeners[type] && _listeners[type].map(function (f) {\n    return f();\n  }) || _emptyArray;\n},\n    _savedStyles = [],\n    // when ScrollTrigger.saveStyles() is called, the inline styles are recorded in this Array in a sequential format like [element, cssText, gsCache, media]. This keeps it very memory-efficient and fast to iterate through.\n_revertRecorded = function _revertRecorded(media) {\n  for (var i = 0; i < _savedStyles.length; i += 5) {\n    if (!media || _savedStyles[i + 4] && _savedStyles[i + 4].query === media) {\n      _savedStyles[i].style.cssText = _savedStyles[i + 1];\n      _savedStyles[i].getBBox && _savedStyles[i].setAttribute(\"transform\", _savedStyles[i + 2] || \"\");\n      _savedStyles[i + 3].uncache = 1;\n    }\n  }\n},\n    _revertAll = function _revertAll(kill, media) {\n  var trigger;\n\n  for (_i = 0; _i < _triggers.length; _i++) {\n    trigger = _triggers[_i];\n\n    if (trigger && (!media || trigger._ctx === media)) {\n      if (kill) {\n        trigger.kill(1);\n      } else {\n        trigger.revert(true, true);\n      }\n    }\n  }\n\n  _isReverted = true;\n  media && _revertRecorded(media);\n  media || _dispatch(\"revert\");\n},\n    _clearScrollMemory = function _clearScrollMemory(scrollRestoration, force) {\n  // zero-out all the recorded scroll positions. Don't use _triggers because if, for example, .matchMedia() is used to create some ScrollTriggers and then the user resizes and it removes ALL ScrollTriggers, and then go back to a size where there are ScrollTriggers, it would have kept the position(s) saved from the initial state.\n  _scrollers.cache++;\n  (force || !_refreshingAll) && _scrollers.forEach(function (obj) {\n    return _isFunction(obj) && obj.cacheID++ && (obj.rec = 0);\n  });\n  _isString(scrollRestoration) && (_win.history.scrollRestoration = _scrollRestoration = scrollRestoration);\n},\n    _refreshingAll,\n    _refreshID = 0,\n    _queueRefreshID,\n    _queueRefreshAll = function _queueRefreshAll() {\n  // we don't want to call _refreshAll() every time we create a new ScrollTrigger (for performance reasons) - it's better to batch them. Some frameworks dynamically load content and we can't rely on the window's \"load\" or \"DOMContentLoaded\" events to trigger it.\n  if (_queueRefreshID !== _refreshID) {\n    var id = _queueRefreshID = _refreshID;\n    requestAnimationFrame(function () {\n      return id === _refreshID && _refreshAll(true);\n    });\n  }\n},\n    _refresh100vh = function _refresh100vh() {\n  _body.appendChild(_div100vh);\n\n  _100vh = !_normalizer && _div100vh.offsetHeight || _win.innerHeight;\n\n  _body.removeChild(_div100vh);\n},\n    _hideAllMarkers = function _hideAllMarkers(hide) {\n  return _toArray(\".gsap-marker-start, .gsap-marker-end, .gsap-marker-scroller-start, .gsap-marker-scroller-end\").forEach(function (el) {\n    return el.style.display = hide ? \"none\" : \"block\";\n  });\n},\n    _refreshAll = function _refreshAll(force, skipRevert) {\n  if (_lastScrollTime && !force && !_isReverted) {\n    _addListener(ScrollTrigger, \"scrollEnd\", _softRefresh);\n\n    return;\n  }\n\n  _refresh100vh();\n\n  _refreshingAll = ScrollTrigger.isRefreshing = true;\n\n  _scrollers.forEach(function (obj) {\n    return _isFunction(obj) && ++obj.cacheID && (obj.rec = obj());\n  }); // force the clearing of the cache because some browsers take a little while to dispatch the \"scroll\" event and the user may have changed the scroll position and then called ScrollTrigger.refresh() right away\n\n\n  var refreshInits = _dispatch(\"refreshInit\");\n\n  _sort && ScrollTrigger.sort();\n  skipRevert || _revertAll();\n\n  _scrollers.forEach(function (obj) {\n    if (_isFunction(obj)) {\n      obj.smooth && (obj.target.style.scrollBehavior = \"auto\"); // smooth scrolling interferes\n\n      obj(0);\n    }\n  });\n\n  _triggers.slice(0).forEach(function (t) {\n    return t.refresh();\n  }); // don't loop with _i because during a refresh() someone could call ScrollTrigger.update() which would iterate through _i resulting in a skip.\n\n\n  _isReverted = false;\n\n  _triggers.forEach(function (t) {\n    // nested pins (pinnedContainer) with pinSpacing may expand the container, so we must accommodate that here.\n    if (t._subPinOffset && t.pin) {\n      var prop = t.vars.horizontal ? \"offsetWidth\" : \"offsetHeight\",\n          original = t.pin[prop];\n      t.revert(true, 1);\n      t.adjustPinSpacing(t.pin[prop] - original);\n      t.refresh();\n    }\n  });\n\n  _clampingMax = 1; // pinSpacing might be propping a page open, thus when we .setPositions() to clamp a ScrollTrigger's end we should leave the pinSpacing alone. That's what this flag is for.\n\n  _hideAllMarkers(true);\n\n  _triggers.forEach(function (t) {\n    // the scroller's max scroll position may change after all the ScrollTriggers refreshed (like pinning could push it down), so we need to loop back and correct any with end: \"max\". Same for anything with a clamped end\n    var max = _maxScroll(t.scroller, t._dir),\n        endClamp = t.vars.end === \"max\" || t._endClamp && t.end > max,\n        startClamp = t._startClamp && t.start >= max;\n\n    (endClamp || startClamp) && t.setPositions(startClamp ? max - 1 : t.start, endClamp ? Math.max(startClamp ? max : t.start + 1, max) : t.end, true);\n  });\n\n  _hideAllMarkers(false);\n\n  _clampingMax = 0;\n  refreshInits.forEach(function (result) {\n    return result && result.render && result.render(-1);\n  }); // if the onRefreshInit() returns an animation (typically a gsap.set()), revert it. This makes it easy to put things in a certain spot before refreshing for measurement purposes, and then put things back.\n\n  _scrollers.forEach(function (obj) {\n    if (_isFunction(obj)) {\n      obj.smooth && requestAnimationFrame(function () {\n        return obj.target.style.scrollBehavior = \"smooth\";\n      });\n      obj.rec && obj(obj.rec);\n    }\n  });\n\n  _clearScrollMemory(_scrollRestoration, 1);\n\n  _resizeDelay.pause();\n\n  _refreshID++;\n  _refreshingAll = 2;\n\n  _updateAll(2);\n\n  _triggers.forEach(function (t) {\n    return _isFunction(t.vars.onRefresh) && t.vars.onRefresh(t);\n  });\n\n  _refreshingAll = ScrollTrigger.isRefreshing = false;\n\n  _dispatch(\"refresh\");\n},\n    _lastScroll = 0,\n    _direction = 1,\n    _primary,\n    _updateAll = function _updateAll(force) {\n  if (force === 2 || !_refreshingAll && !_isReverted) {\n    // _isReverted could be true if, for example, a matchMedia() is in the process of executing. We don't want to update during the time everything is reverted.\n    ScrollTrigger.isUpdating = true;\n    _primary && _primary.update(0); // ScrollSmoother uses refreshPriority -9999 to become the primary that gets updated before all others because it affects the scroll position.\n\n    var l = _triggers.length,\n        time = _getTime(),\n        recordVelocity = time - _time1 >= 50,\n        scroll = l && _triggers[0].scroll();\n\n    _direction = _lastScroll > scroll ? -1 : 1;\n    _refreshingAll || (_lastScroll = scroll);\n\n    if (recordVelocity) {\n      if (_lastScrollTime && !_pointerIsDown && time - _lastScrollTime > 200) {\n        _lastScrollTime = 0;\n\n        _dispatch(\"scrollEnd\");\n      }\n\n      _time2 = _time1;\n      _time1 = time;\n    }\n\n    if (_direction < 0) {\n      _i = l;\n\n      while (_i-- > 0) {\n        _triggers[_i] && _triggers[_i].update(0, recordVelocity);\n      }\n\n      _direction = 1;\n    } else {\n      for (_i = 0; _i < l; _i++) {\n        _triggers[_i] && _triggers[_i].update(0, recordVelocity);\n      }\n    }\n\n    ScrollTrigger.isUpdating = false;\n  }\n\n  _rafID = 0;\n},\n    _propNamesToCopy = [_left, _top, _bottom, _right, _margin + _Bottom, _margin + _Right, _margin + _Top, _margin + _Left, \"display\", \"flexShrink\", \"float\", \"zIndex\", \"gridColumnStart\", \"gridColumnEnd\", \"gridRowStart\", \"gridRowEnd\", \"gridArea\", \"justifySelf\", \"alignSelf\", \"placeSelf\", \"order\"],\n    _stateProps = _propNamesToCopy.concat([_width, _height, \"boxSizing\", \"max\" + _Width, \"max\" + _Height, \"position\", _margin, _padding, _padding + _Top, _padding + _Right, _padding + _Bottom, _padding + _Left]),\n    _swapPinOut = function _swapPinOut(pin, spacer, state) {\n  _setState(state);\n\n  var cache = pin._gsap;\n\n  if (cache.spacerIsNative) {\n    _setState(cache.spacerState);\n  } else if (pin._gsap.swappedIn) {\n    var parent = spacer.parentNode;\n\n    if (parent) {\n      parent.insertBefore(pin, spacer);\n      parent.removeChild(spacer);\n    }\n  }\n\n  pin._gsap.swappedIn = false;\n},\n    _swapPinIn = function _swapPinIn(pin, spacer, cs, spacerState) {\n  if (!pin._gsap.swappedIn) {\n    var i = _propNamesToCopy.length,\n        spacerStyle = spacer.style,\n        pinStyle = pin.style,\n        p;\n\n    while (i--) {\n      p = _propNamesToCopy[i];\n      spacerStyle[p] = cs[p];\n    }\n\n    spacerStyle.position = cs.position === \"absolute\" ? \"absolute\" : \"relative\";\n    cs.display === \"inline\" && (spacerStyle.display = \"inline-block\");\n    pinStyle[_bottom] = pinStyle[_right] = \"auto\";\n    spacerStyle.flexBasis = cs.flexBasis || \"auto\";\n    spacerStyle.overflow = \"visible\";\n    spacerStyle.boxSizing = \"border-box\";\n    spacerStyle[_width] = _getSize(pin, _horizontal) + _px;\n    spacerStyle[_height] = _getSize(pin, _vertical) + _px;\n    spacerStyle[_padding] = pinStyle[_margin] = pinStyle[_top] = pinStyle[_left] = \"0\";\n\n    _setState(spacerState);\n\n    pinStyle[_width] = pinStyle[\"max\" + _Width] = cs[_width];\n    pinStyle[_height] = pinStyle[\"max\" + _Height] = cs[_height];\n    pinStyle[_padding] = cs[_padding];\n\n    if (pin.parentNode !== spacer) {\n      pin.parentNode.insertBefore(spacer, pin);\n      spacer.appendChild(pin);\n    }\n\n    pin._gsap.swappedIn = true;\n  }\n},\n    _capsExp = /([A-Z])/g,\n    _setState = function _setState(state) {\n  if (state) {\n    var style = state.t.style,\n        l = state.length,\n        i = 0,\n        p,\n        value;\n    (state.t._gsap || gsap.core.getCache(state.t)).uncache = 1; // otherwise transforms may be off\n\n    for (; i < l; i += 2) {\n      value = state[i + 1];\n      p = state[i];\n\n      if (value) {\n        style[p] = value;\n      } else if (style[p]) {\n        style.removeProperty(p.replace(_capsExp, \"-$1\").toLowerCase());\n      }\n    }\n  }\n},\n    _getState = function _getState(element) {\n  // returns an Array with alternating values like [property, value, property, value] and a \"t\" property pointing to the target (element). Makes it fast and cheap.\n  var l = _stateProps.length,\n      style = element.style,\n      state = [],\n      i = 0;\n\n  for (; i < l; i++) {\n    state.push(_stateProps[i], style[_stateProps[i]]);\n  }\n\n  state.t = element;\n  return state;\n},\n    _copyState = function _copyState(state, override, omitOffsets) {\n  var result = [],\n      l = state.length,\n      i = omitOffsets ? 8 : 0,\n      // skip top, left, right, bottom if omitOffsets is true\n  p;\n\n  for (; i < l; i += 2) {\n    p = state[i];\n    result.push(p, p in override ? override[p] : state[i + 1]);\n  }\n\n  result.t = state.t;\n  return result;\n},\n    _winOffsets = {\n  left: 0,\n  top: 0\n},\n    // // potential future feature (?) Allow users to calculate where a trigger hits (scroll position) like getScrollPosition(\"#id\", \"top bottom\")\n// _getScrollPosition = (trigger, position, {scroller, containerAnimation, horizontal}) => {\n// \tscroller = _getTarget(scroller || _win);\n// \tlet direction = horizontal ? _horizontal : _vertical,\n// \t\tisViewport = _isViewport(scroller);\n// \t_getSizeFunc(scroller, isViewport, direction);\n// \treturn _parsePosition(position, _getTarget(trigger), _getSizeFunc(scroller, isViewport, direction)(), direction, _getScrollFunc(scroller, direction)(), 0, 0, 0, _getOffsetsFunc(scroller, isViewport)(), isViewport ? 0 : parseFloat(_getComputedStyle(scroller)[\"border\" + direction.p2 + _Width]) || 0, 0, containerAnimation ? containerAnimation.duration() : _maxScroll(scroller), containerAnimation);\n// },\n_parsePosition = function _parsePosition(value, trigger, scrollerSize, direction, scroll, marker, markerScroller, self, scrollerBounds, borderWidth, useFixedPosition, scrollerMax, containerAnimation, clampZeroProp) {\n  _isFunction(value) && (value = value(self));\n\n  if (_isString(value) && value.substr(0, 3) === \"max\") {\n    value = scrollerMax + (value.charAt(4) === \"=\" ? _offsetToPx(\"0\" + value.substr(3), scrollerSize) : 0);\n  }\n\n  var time = containerAnimation ? containerAnimation.time() : 0,\n      p1,\n      p2,\n      element;\n  containerAnimation && containerAnimation.seek(0);\n  isNaN(value) || (value = +value); // convert a string number like \"45\" to an actual number\n\n  if (!_isNumber(value)) {\n    _isFunction(trigger) && (trigger = trigger(self));\n    var offsets = (value || \"0\").split(\" \"),\n        bounds,\n        localOffset,\n        globalOffset,\n        display;\n    element = _getTarget(trigger, self) || _body;\n    bounds = _getBounds(element) || {};\n\n    if ((!bounds || !bounds.left && !bounds.top) && _getComputedStyle(element).display === \"none\") {\n      // if display is \"none\", it won't report getBoundingClientRect() properly\n      display = element.style.display;\n      element.style.display = \"block\";\n      bounds = _getBounds(element);\n      display ? element.style.display = display : element.style.removeProperty(\"display\");\n    }\n\n    localOffset = _offsetToPx(offsets[0], bounds[direction.d]);\n    globalOffset = _offsetToPx(offsets[1] || \"0\", scrollerSize);\n    value = bounds[direction.p] - scrollerBounds[direction.p] - borderWidth + localOffset + scroll - globalOffset;\n    markerScroller && _positionMarker(markerScroller, globalOffset, direction, scrollerSize - globalOffset < 20 || markerScroller._isStart && globalOffset > 20);\n    scrollerSize -= scrollerSize - globalOffset; // adjust for the marker\n  } else {\n    containerAnimation && (value = gsap.utils.mapRange(containerAnimation.scrollTrigger.start, containerAnimation.scrollTrigger.end, 0, scrollerMax, value));\n    markerScroller && _positionMarker(markerScroller, scrollerSize, direction, true);\n  }\n\n  if (clampZeroProp) {\n    self[clampZeroProp] = value || -0.001;\n    value < 0 && (value = 0);\n  }\n\n  if (marker) {\n    var position = value + scrollerSize,\n        isStart = marker._isStart;\n    p1 = \"scroll\" + direction.d2;\n\n    _positionMarker(marker, position, direction, isStart && position > 20 || !isStart && (useFixedPosition ? Math.max(_body[p1], _docEl[p1]) : marker.parentNode[p1]) <= position + 1);\n\n    if (useFixedPosition) {\n      scrollerBounds = _getBounds(markerScroller);\n      useFixedPosition && (marker.style[direction.op.p] = scrollerBounds[direction.op.p] - direction.op.m - marker._offset + _px);\n    }\n  }\n\n  if (containerAnimation && element) {\n    p1 = _getBounds(element);\n    containerAnimation.seek(scrollerMax);\n    p2 = _getBounds(element);\n    containerAnimation._caScrollDist = p1[direction.p] - p2[direction.p];\n    value = value / containerAnimation._caScrollDist * scrollerMax;\n  }\n\n  containerAnimation && containerAnimation.seek(time);\n  return containerAnimation ? value : Math.round(value);\n},\n    _prefixExp = /(webkit|moz|length|cssText|inset)/i,\n    _reparent = function _reparent(element, parent, top, left) {\n  if (element.parentNode !== parent) {\n    var style = element.style,\n        p,\n        cs;\n\n    if (parent === _body) {\n      element._stOrig = style.cssText; // record original inline styles so we can revert them later\n\n      cs = _getComputedStyle(element);\n\n      for (p in cs) {\n        // must copy all relevant styles to ensure that nothing changes visually when we reparent to the <body>. Skip the vendor prefixed ones.\n        if (!+p && !_prefixExp.test(p) && cs[p] && typeof style[p] === \"string\" && p !== \"0\") {\n          style[p] = cs[p];\n        }\n      }\n\n      style.top = top;\n      style.left = left;\n    } else {\n      style.cssText = element._stOrig;\n    }\n\n    gsap.core.getCache(element).uncache = 1;\n    parent.appendChild(element);\n  }\n},\n    _interruptionTracker = function _interruptionTracker(getValueFunc, initialValue, onInterrupt) {\n  var last1 = initialValue,\n      last2 = last1;\n  return function (value) {\n    var current = Math.round(getValueFunc()); // round because in some [very uncommon] Windows environments, scroll can get reported with decimals even though it was set without.\n\n    if (current !== last1 && current !== last2 && Math.abs(current - last1) > 3 && Math.abs(current - last2) > 3) {\n      // if the user scrolls, kill the tween. iOS Safari intermittently misreports the scroll position, it may be the most recently-set one or the one before that! When Safari is zoomed (CMD-+), it often misreports as 1 pixel off too! So if we set the scroll position to 125, for example, it'll actually report it as 124.\n      value = current;\n      onInterrupt && onInterrupt();\n    }\n\n    last2 = last1;\n    last1 = value;\n    return value;\n  };\n},\n    _shiftMarker = function _shiftMarker(marker, direction, value) {\n  var vars = {};\n  vars[direction.p] = \"+=\" + value;\n  gsap.set(marker, vars);\n},\n    // _mergeAnimations = animations => {\n// \tlet tl = gsap.timeline({smoothChildTiming: true}).startTime(Math.min(...animations.map(a => a.globalTime(0))));\n// \tanimations.forEach(a => {let time = a.totalTime(); tl.add(a); a.totalTime(time); });\n// \ttl.smoothChildTiming = false;\n// \treturn tl;\n// },\n// returns a function that can be used to tween the scroll position in the direction provided, and when doing so it'll add a .tween property to the FUNCTION itself, and remove it when the tween completes or gets killed. This gives us a way to have multiple ScrollTriggers use a central function for any given scroller and see if there's a scroll tween running (which would affect if/how things get updated)\n_getTweenCreator = function _getTweenCreator(scroller, direction) {\n  var getScroll = _getScrollFunc(scroller, direction),\n      prop = \"_scroll\" + direction.p2,\n      // add a tweenable property to the scroller that's a getter/setter function, like _scrollTop or _scrollLeft. This way, if someone does gsap.killTweensOf(scroller) it'll kill the scroll tween.\n  getTween = function getTween(scrollTo, vars, initialValue, change1, change2) {\n    var tween = getTween.tween,\n        onComplete = vars.onComplete,\n        modifiers = {};\n    initialValue = initialValue || getScroll();\n\n    var checkForInterruption = _interruptionTracker(getScroll, initialValue, function () {\n      tween.kill();\n      getTween.tween = 0;\n    });\n\n    change2 = change1 && change2 || 0; // if change1 is 0, we set that to the difference and ignore change2. Otherwise, there would be a compound effect.\n\n    change1 = change1 || scrollTo - initialValue;\n    tween && tween.kill();\n    vars[prop] = scrollTo;\n    vars.inherit = false;\n    vars.modifiers = modifiers;\n\n    modifiers[prop] = function () {\n      return checkForInterruption(initialValue + change1 * tween.ratio + change2 * tween.ratio * tween.ratio);\n    };\n\n    vars.onUpdate = function () {\n      _scrollers.cache++;\n      getTween.tween && _updateAll(); // if it was interrupted/killed, like in a context.revert(), don't force an updateAll()\n    };\n\n    vars.onComplete = function () {\n      getTween.tween = 0;\n      onComplete && onComplete.call(tween);\n    };\n\n    tween = getTween.tween = gsap.to(scroller, vars);\n    return tween;\n  };\n\n  scroller[prop] = getScroll;\n\n  getScroll.wheelHandler = function () {\n    return getTween.tween && getTween.tween.kill() && (getTween.tween = 0);\n  };\n\n  _addListener(scroller, \"wheel\", getScroll.wheelHandler); // Windows machines handle mousewheel scrolling in chunks (like \"3 lines per scroll\") meaning the typical strategy for cancelling the scroll isn't as sensitive. It's much more likely to match one of the previous 2 scroll event positions. So we kill any snapping as soon as there's a wheel event.\n\n\n  ScrollTrigger.isTouch && _addListener(scroller, \"touchmove\", getScroll.wheelHandler);\n  return getTween;\n};\n\nexport var ScrollTrigger = /*#__PURE__*/function () {\n  function ScrollTrigger(vars, animation) {\n    _coreInitted || ScrollTrigger.register(gsap) || console.warn(\"Please gsap.registerPlugin(ScrollTrigger)\");\n\n    _context(this);\n\n    this.init(vars, animation);\n  }\n\n  var _proto = ScrollTrigger.prototype;\n\n  _proto.init = function init(vars, animation) {\n    this.progress = this.start = 0;\n    this.vars && this.kill(true, true); // in case it's being initted again\n\n    if (!_enabled) {\n      this.update = this.refresh = this.kill = _passThrough;\n      return;\n    }\n\n    vars = _setDefaults(_isString(vars) || _isNumber(vars) || vars.nodeType ? {\n      trigger: vars\n    } : vars, _defaults);\n\n    var _vars = vars,\n        onUpdate = _vars.onUpdate,\n        toggleClass = _vars.toggleClass,\n        id = _vars.id,\n        onToggle = _vars.onToggle,\n        onRefresh = _vars.onRefresh,\n        scrub = _vars.scrub,\n        trigger = _vars.trigger,\n        pin = _vars.pin,\n        pinSpacing = _vars.pinSpacing,\n        invalidateOnRefresh = _vars.invalidateOnRefresh,\n        anticipatePin = _vars.anticipatePin,\n        onScrubComplete = _vars.onScrubComplete,\n        onSnapComplete = _vars.onSnapComplete,\n        once = _vars.once,\n        snap = _vars.snap,\n        pinReparent = _vars.pinReparent,\n        pinSpacer = _vars.pinSpacer,\n        containerAnimation = _vars.containerAnimation,\n        fastScrollEnd = _vars.fastScrollEnd,\n        preventOverlaps = _vars.preventOverlaps,\n        direction = vars.horizontal || vars.containerAnimation && vars.horizontal !== false ? _horizontal : _vertical,\n        isToggle = !scrub && scrub !== 0,\n        scroller = _getTarget(vars.scroller || _win),\n        scrollerCache = gsap.core.getCache(scroller),\n        isViewport = _isViewport(scroller),\n        useFixedPosition = (\"pinType\" in vars ? vars.pinType : _getProxyProp(scroller, \"pinType\") || isViewport && \"fixed\") === \"fixed\",\n        callbacks = [vars.onEnter, vars.onLeave, vars.onEnterBack, vars.onLeaveBack],\n        toggleActions = isToggle && vars.toggleActions.split(\" \"),\n        markers = \"markers\" in vars ? vars.markers : _defaults.markers,\n        borderWidth = isViewport ? 0 : parseFloat(_getComputedStyle(scroller)[\"border\" + direction.p2 + _Width]) || 0,\n        self = this,\n        onRefreshInit = vars.onRefreshInit && function () {\n      return vars.onRefreshInit(self);\n    },\n        getScrollerSize = _getSizeFunc(scroller, isViewport, direction),\n        getScrollerOffsets = _getOffsetsFunc(scroller, isViewport),\n        lastSnap = 0,\n        lastRefresh = 0,\n        prevProgress = 0,\n        scrollFunc = _getScrollFunc(scroller, direction),\n        tweenTo,\n        pinCache,\n        snapFunc,\n        scroll1,\n        scroll2,\n        start,\n        end,\n        markerStart,\n        markerEnd,\n        markerStartTrigger,\n        markerEndTrigger,\n        markerVars,\n        executingOnRefresh,\n        change,\n        pinOriginalState,\n        pinActiveState,\n        pinState,\n        spacer,\n        offset,\n        pinGetter,\n        pinSetter,\n        pinStart,\n        pinChange,\n        spacingStart,\n        spacerState,\n        markerStartSetter,\n        pinMoves,\n        markerEndSetter,\n        cs,\n        snap1,\n        snap2,\n        scrubTween,\n        scrubSmooth,\n        snapDurClamp,\n        snapDelayedCall,\n        prevScroll,\n        prevAnimProgress,\n        caMarkerSetter,\n        customRevertReturn; // for the sake of efficiency, _startClamp/_endClamp serve like a truthy value indicating that clamping was enabled on the start/end, and ALSO store the actual pre-clamped numeric value. We tap into that in ScrollSmoother for speed effects. So for example, if start=\"clamp(top bottom)\" results in a start of -100 naturally, it would get clamped to 0 but -100 would be stored in _startClamp.\n\n\n    self._startClamp = self._endClamp = false;\n    self._dir = direction;\n    anticipatePin *= 45;\n    self.scroller = scroller;\n    self.scroll = containerAnimation ? containerAnimation.time.bind(containerAnimation) : scrollFunc;\n    scroll1 = scrollFunc();\n    self.vars = vars;\n    animation = animation || vars.animation;\n\n    if (\"refreshPriority\" in vars) {\n      _sort = 1;\n      vars.refreshPriority === -9999 && (_primary = self); // used by ScrollSmoother\n    }\n\n    scrollerCache.tweenScroll = scrollerCache.tweenScroll || {\n      top: _getTweenCreator(scroller, _vertical),\n      left: _getTweenCreator(scroller, _horizontal)\n    };\n    self.tweenTo = tweenTo = scrollerCache.tweenScroll[direction.p];\n\n    self.scrubDuration = function (value) {\n      scrubSmooth = _isNumber(value) && value;\n\n      if (!scrubSmooth) {\n        scrubTween && scrubTween.progress(1).kill();\n        scrubTween = 0;\n      } else {\n        scrubTween ? scrubTween.duration(value) : scrubTween = gsap.to(animation, {\n          ease: \"expo\",\n          totalProgress: \"+=0\",\n          inherit: false,\n          duration: scrubSmooth,\n          paused: true,\n          onComplete: function onComplete() {\n            return onScrubComplete && onScrubComplete(self);\n          }\n        });\n      }\n    };\n\n    if (animation) {\n      animation.vars.lazy = false;\n      animation._initted && !self.isReverted || animation.vars.immediateRender !== false && vars.immediateRender !== false && animation.duration() && animation.render(0, true, true); // special case: if this ScrollTrigger gets re-initted, a from() tween with a stagger could get initted initially and then reverted on the re-init which means it'll need to get rendered again here to properly display things. Otherwise, See https://gsap.com/forums/topic/36777-scrollsmoother-splittext-nextjs/ and https://codepen.io/GreenSock/pen/eYPyPpd?editors=0010\n\n      self.animation = animation.pause();\n      animation.scrollTrigger = self;\n      self.scrubDuration(scrub);\n      snap1 = 0;\n      id || (id = animation.vars.id);\n    }\n\n    if (snap) {\n      // TODO: potential idea: use legitimate CSS scroll snapping by pushing invisible elements into the DOM that serve as snap positions, and toggle the document.scrollingElement.style.scrollSnapType onToggle. See https://codepen.io/GreenSock/pen/JjLrgWM for a quick proof of concept.\n      if (!_isObject(snap) || snap.push) {\n        snap = {\n          snapTo: snap\n        };\n      }\n\n      \"scrollBehavior\" in _body.style && gsap.set(isViewport ? [_body, _docEl] : scroller, {\n        scrollBehavior: \"auto\"\n      }); // smooth scrolling doesn't work with snap.\n\n      _scrollers.forEach(function (o) {\n        return _isFunction(o) && o.target === (isViewport ? _doc.scrollingElement || _docEl : scroller) && (o.smooth = false);\n      }); // note: set smooth to false on both the vertical and horizontal scroll getters/setters\n\n\n      snapFunc = _isFunction(snap.snapTo) ? snap.snapTo : snap.snapTo === \"labels\" ? _getClosestLabel(animation) : snap.snapTo === \"labelsDirectional\" ? _getLabelAtDirection(animation) : snap.directional !== false ? function (value, st) {\n        return _snapDirectional(snap.snapTo)(value, _getTime() - lastRefresh < 500 ? 0 : st.direction);\n      } : gsap.utils.snap(snap.snapTo);\n      snapDurClamp = snap.duration || {\n        min: 0.1,\n        max: 2\n      };\n      snapDurClamp = _isObject(snapDurClamp) ? _clamp(snapDurClamp.min, snapDurClamp.max) : _clamp(snapDurClamp, snapDurClamp);\n      snapDelayedCall = gsap.delayedCall(snap.delay || scrubSmooth / 2 || 0.1, function () {\n        var scroll = scrollFunc(),\n            refreshedRecently = _getTime() - lastRefresh < 500,\n            tween = tweenTo.tween;\n\n        if ((refreshedRecently || Math.abs(self.getVelocity()) < 10) && !tween && !_pointerIsDown && lastSnap !== scroll) {\n          var progress = (scroll - start) / change,\n              totalProgress = animation && !isToggle ? animation.totalProgress() : progress,\n              velocity = refreshedRecently ? 0 : (totalProgress - snap2) / (_getTime() - _time2) * 1000 || 0,\n              change1 = gsap.utils.clamp(-progress, 1 - progress, _abs(velocity / 2) * velocity / 0.185),\n              naturalEnd = progress + (snap.inertia === false ? 0 : change1),\n              endValue,\n              endScroll,\n              _snap = snap,\n              onStart = _snap.onStart,\n              _onInterrupt = _snap.onInterrupt,\n              _onComplete = _snap.onComplete;\n          endValue = snapFunc(naturalEnd, self);\n          _isNumber(endValue) || (endValue = naturalEnd); // in case the function didn't return a number, fall back to using the naturalEnd\n\n          endScroll = Math.round(start + endValue * change);\n\n          if (scroll <= end && scroll >= start && endScroll !== scroll) {\n            if (tween && !tween._initted && tween.data <= _abs(endScroll - scroll)) {\n              // there's an overlapping snap! So we must figure out which one is closer and let that tween live.\n              return;\n            }\n\n            if (snap.inertia === false) {\n              change1 = endValue - progress;\n            }\n\n            tweenTo(endScroll, {\n              duration: snapDurClamp(_abs(Math.max(_abs(naturalEnd - totalProgress), _abs(endValue - totalProgress)) * 0.185 / velocity / 0.05 || 0)),\n              ease: snap.ease || \"power3\",\n              data: _abs(endScroll - scroll),\n              // record the distance so that if another snap tween occurs (conflict) we can prioritize the closest snap.\n              onInterrupt: function onInterrupt() {\n                return snapDelayedCall.restart(true) && _onInterrupt && _onInterrupt(self);\n              },\n              onComplete: function onComplete() {\n                self.update();\n                lastSnap = scrollFunc();\n\n                if (animation) {\n                  // the resolution of the scrollbar is limited, so we should correct the scrubbed animation's playhead at the end to match EXACTLY where it was supposed to snap\n                  scrubTween ? scrubTween.resetTo(\"totalProgress\", endValue, animation._tTime / animation._tDur) : animation.progress(endValue);\n                }\n\n                snap1 = snap2 = animation && !isToggle ? animation.totalProgress() : self.progress;\n                onSnapComplete && onSnapComplete(self);\n                _onComplete && _onComplete(self);\n              }\n            }, scroll, change1 * change, endScroll - scroll - change1 * change);\n            onStart && onStart(self, tweenTo.tween);\n          }\n        } else if (self.isActive && lastSnap !== scroll) {\n          snapDelayedCall.restart(true);\n        }\n      }).pause();\n    }\n\n    id && (_ids[id] = self);\n    trigger = self.trigger = _getTarget(trigger || pin !== true && pin); // if a trigger has some kind of scroll-related effect applied that could contaminate the \"y\" or \"x\" position (like a ScrollSmoother effect), we needed a way to temporarily revert it, so we use the stRevert property of the gsCache. It can return another function that we'll call at the end so it can return to its normal state.\n\n    customRevertReturn = trigger && trigger._gsap && trigger._gsap.stRevert;\n    customRevertReturn && (customRevertReturn = customRevertReturn(self));\n    pin = pin === true ? trigger : _getTarget(pin);\n    _isString(toggleClass) && (toggleClass = {\n      targets: trigger,\n      className: toggleClass\n    });\n\n    if (pin) {\n      pinSpacing === false || pinSpacing === _margin || (pinSpacing = !pinSpacing && pin.parentNode && pin.parentNode.style && _getComputedStyle(pin.parentNode).display === \"flex\" ? false : _padding); // if the parent is display: flex, don't apply pinSpacing by default. We should check that pin.parentNode is an element (not shadow dom window)\n\n      self.pin = pin;\n      pinCache = gsap.core.getCache(pin);\n\n      if (!pinCache.spacer) {\n        // record the spacer and pinOriginalState on the cache in case someone tries pinning the same element with MULTIPLE ScrollTriggers - we don't want to have multiple spacers or record the \"original\" pin state after it has already been affected by another ScrollTrigger.\n        if (pinSpacer) {\n          pinSpacer = _getTarget(pinSpacer);\n          pinSpacer && !pinSpacer.nodeType && (pinSpacer = pinSpacer.current || pinSpacer.nativeElement); // for React & Angular\n\n          pinCache.spacerIsNative = !!pinSpacer;\n          pinSpacer && (pinCache.spacerState = _getState(pinSpacer));\n        }\n\n        pinCache.spacer = spacer = pinSpacer || _doc.createElement(\"div\");\n        spacer.classList.add(\"pin-spacer\");\n        id && spacer.classList.add(\"pin-spacer-\" + id);\n        pinCache.pinState = pinOriginalState = _getState(pin);\n      } else {\n        pinOriginalState = pinCache.pinState;\n      }\n\n      vars.force3D !== false && gsap.set(pin, {\n        force3D: true\n      });\n      self.spacer = spacer = pinCache.spacer;\n      cs = _getComputedStyle(pin);\n      spacingStart = cs[pinSpacing + direction.os2];\n      pinGetter = gsap.getProperty(pin);\n      pinSetter = gsap.quickSetter(pin, direction.a, _px); // pin.firstChild && !_maxScroll(pin, direction) && (pin.style.overflow = \"hidden\"); // protects from collapsing margins, but can have unintended consequences as demonstrated here: https://codepen.io/GreenSock/pen/1e42c7a73bfa409d2cf1e184e7a4248d so it was removed in favor of just telling people to set up their CSS to avoid the collapsing margins (overflow: hidden | auto is just one option. Another is border-top: 1px solid transparent).\n\n      _swapPinIn(pin, spacer, cs);\n\n      pinState = _getState(pin);\n    }\n\n    if (markers) {\n      markerVars = _isObject(markers) ? _setDefaults(markers, _markerDefaults) : _markerDefaults;\n      markerStartTrigger = _createMarker(\"scroller-start\", id, scroller, direction, markerVars, 0);\n      markerEndTrigger = _createMarker(\"scroller-end\", id, scroller, direction, markerVars, 0, markerStartTrigger);\n      offset = markerStartTrigger[\"offset\" + direction.op.d2];\n\n      var content = _getTarget(_getProxyProp(scroller, \"content\") || scroller);\n\n      markerStart = this.markerStart = _createMarker(\"start\", id, content, direction, markerVars, offset, 0, containerAnimation);\n      markerEnd = this.markerEnd = _createMarker(\"end\", id, content, direction, markerVars, offset, 0, containerAnimation);\n      containerAnimation && (caMarkerSetter = gsap.quickSetter([markerStart, markerEnd], direction.a, _px));\n\n      if (!useFixedPosition && !(_proxies.length && _getProxyProp(scroller, \"fixedMarkers\") === true)) {\n        _makePositionable(isViewport ? _body : scroller);\n\n        gsap.set([markerStartTrigger, markerEndTrigger], {\n          force3D: true\n        });\n        markerStartSetter = gsap.quickSetter(markerStartTrigger, direction.a, _px);\n        markerEndSetter = gsap.quickSetter(markerEndTrigger, direction.a, _px);\n      }\n    }\n\n    if (containerAnimation) {\n      var oldOnUpdate = containerAnimation.vars.onUpdate,\n          oldParams = containerAnimation.vars.onUpdateParams;\n      containerAnimation.eventCallback(\"onUpdate\", function () {\n        self.update(0, 0, 1);\n        oldOnUpdate && oldOnUpdate.apply(containerAnimation, oldParams || []);\n      });\n    }\n\n    self.previous = function () {\n      return _triggers[_triggers.indexOf(self) - 1];\n    };\n\n    self.next = function () {\n      return _triggers[_triggers.indexOf(self) + 1];\n    };\n\n    self.revert = function (revert, temp) {\n      if (!temp) {\n        return self.kill(true);\n      } // for compatibility with gsap.context() and gsap.matchMedia() which call revert()\n\n\n      var r = revert !== false || !self.enabled,\n          prevRefreshing = _refreshing;\n\n      if (r !== self.isReverted) {\n        if (r) {\n          prevScroll = Math.max(scrollFunc(), self.scroll.rec || 0); // record the scroll so we can revert later (repositioning/pinning things can affect scroll position). In the static refresh() method, we first record all the scroll positions as a reference.\n\n          prevProgress = self.progress;\n          prevAnimProgress = animation && animation.progress();\n        }\n\n        markerStart && [markerStart, markerEnd, markerStartTrigger, markerEndTrigger].forEach(function (m) {\n          return m.style.display = r ? \"none\" : \"block\";\n        });\n\n        if (r) {\n          _refreshing = self;\n          self.update(r); // make sure the pin is back in its original position so that all the measurements are correct. do this BEFORE swapping the pin out\n        }\n\n        if (pin && (!pinReparent || !self.isActive)) {\n          if (r) {\n            _swapPinOut(pin, spacer, pinOriginalState);\n          } else {\n            _swapPinIn(pin, spacer, _getComputedStyle(pin), spacerState);\n          }\n        }\n\n        r || self.update(r); // when we're restoring, the update should run AFTER swapping the pin into its pin-spacer.\n\n        _refreshing = prevRefreshing; // restore. We set it to true during the update() so that things fire properly in there.\n\n        self.isReverted = r;\n      }\n    };\n\n    self.refresh = function (soft, force, position, pinOffset) {\n      // position is typically only defined if it's coming from setPositions() - it's a way to skip the normal parsing. pinOffset is also only from setPositions() and is mostly related to fancy stuff we need to do in ScrollSmoother with effects\n      if ((_refreshing || !self.enabled) && !force) {\n        return;\n      }\n\n      if (pin && soft && _lastScrollTime) {\n        _addListener(ScrollTrigger, \"scrollEnd\", _softRefresh);\n\n        return;\n      }\n\n      !_refreshingAll && onRefreshInit && onRefreshInit(self);\n      _refreshing = self;\n\n      if (tweenTo.tween && !position) {\n        // we skip this if a position is passed in because typically that's from .setPositions() and it's best to allow in-progress snapping to continue.\n        tweenTo.tween.kill();\n        tweenTo.tween = 0;\n      }\n\n      scrubTween && scrubTween.pause();\n      invalidateOnRefresh && animation && animation.revert({\n        kill: false\n      }).invalidate();\n      self.isReverted || self.revert(true, true);\n      self._subPinOffset = false; // we'll set this to true in the sub-pins if we find any\n\n      var size = getScrollerSize(),\n          scrollerBounds = getScrollerOffsets(),\n          max = containerAnimation ? containerAnimation.duration() : _maxScroll(scroller, direction),\n          isFirstRefresh = change <= 0.01,\n          offset = 0,\n          otherPinOffset = pinOffset || 0,\n          parsedEnd = _isObject(position) ? position.end : vars.end,\n          parsedEndTrigger = vars.endTrigger || trigger,\n          parsedStart = _isObject(position) ? position.start : vars.start || (vars.start === 0 || !trigger ? 0 : pin ? \"0 0\" : \"0 100%\"),\n          pinnedContainer = self.pinnedContainer = vars.pinnedContainer && _getTarget(vars.pinnedContainer, self),\n          triggerIndex = trigger && Math.max(0, _triggers.indexOf(self)) || 0,\n          i = triggerIndex,\n          cs,\n          bounds,\n          scroll,\n          isVertical,\n          override,\n          curTrigger,\n          curPin,\n          oppositeScroll,\n          initted,\n          revertedPins,\n          forcedOverflow,\n          markerStartOffset,\n          markerEndOffset;\n\n      if (markers && _isObject(position)) {\n        // if we alter the start/end positions with .setPositions(), it generally feeds in absolute NUMBERS which don't convey information about where to line up the markers, so to keep it intuitive, we record how far the trigger positions shift after applying the new numbers and then offset by that much in the opposite direction. We do the same to the associated trigger markers too of course.\n        markerStartOffset = gsap.getProperty(markerStartTrigger, direction.p);\n        markerEndOffset = gsap.getProperty(markerEndTrigger, direction.p);\n      }\n\n      while (i--) {\n        // user might try to pin the same element more than once, so we must find any prior triggers with the same pin, revert them, and determine how long they're pinning so that we can offset things appropriately. Make sure we revert from last to first so that things \"rewind\" properly.\n        curTrigger = _triggers[i];\n        curTrigger.end || curTrigger.refresh(0, 1) || (_refreshing = self); // if it's a timeline-based trigger that hasn't been fully initialized yet because it's waiting for 1 tick, just force the refresh() here, otherwise if it contains a pin that's supposed to affect other ScrollTriggers further down the page, they won't be adjusted properly.\n\n        curPin = curTrigger.pin;\n\n        if (curPin && (curPin === trigger || curPin === pin || curPin === pinnedContainer) && !curTrigger.isReverted) {\n          revertedPins || (revertedPins = []);\n          revertedPins.unshift(curTrigger); // we'll revert from first to last to make sure things reach their end state properly\n\n          curTrigger.revert(true, true);\n        }\n\n        if (curTrigger !== _triggers[i]) {\n          // in case it got removed.\n          triggerIndex--;\n          i--;\n        }\n      }\n\n      _isFunction(parsedStart) && (parsedStart = parsedStart(self));\n      parsedStart = _parseClamp(parsedStart, \"start\", self);\n      start = _parsePosition(parsedStart, trigger, size, direction, scrollFunc(), markerStart, markerStartTrigger, self, scrollerBounds, borderWidth, useFixedPosition, max, containerAnimation, self._startClamp && \"_startClamp\") || (pin ? -0.001 : 0);\n      _isFunction(parsedEnd) && (parsedEnd = parsedEnd(self));\n\n      if (_isString(parsedEnd) && !parsedEnd.indexOf(\"+=\")) {\n        if (~parsedEnd.indexOf(\" \")) {\n          parsedEnd = (_isString(parsedStart) ? parsedStart.split(\" \")[0] : \"\") + parsedEnd;\n        } else {\n          offset = _offsetToPx(parsedEnd.substr(2), size);\n          parsedEnd = _isString(parsedStart) ? parsedStart : (containerAnimation ? gsap.utils.mapRange(0, containerAnimation.duration(), containerAnimation.scrollTrigger.start, containerAnimation.scrollTrigger.end, start) : start) + offset; // _parsePosition won't factor in the offset if the start is a number, so do it here.\n\n          parsedEndTrigger = trigger;\n        }\n      }\n\n      parsedEnd = _parseClamp(parsedEnd, \"end\", self);\n      end = Math.max(start, _parsePosition(parsedEnd || (parsedEndTrigger ? \"100% 0\" : max), parsedEndTrigger, size, direction, scrollFunc() + offset, markerEnd, markerEndTrigger, self, scrollerBounds, borderWidth, useFixedPosition, max, containerAnimation, self._endClamp && \"_endClamp\")) || -0.001;\n      offset = 0;\n      i = triggerIndex;\n\n      while (i--) {\n        curTrigger = _triggers[i];\n        curPin = curTrigger.pin;\n\n        if (curPin && curTrigger.start - curTrigger._pinPush <= start && !containerAnimation && curTrigger.end > 0) {\n          cs = curTrigger.end - (self._startClamp ? Math.max(0, curTrigger.start) : curTrigger.start);\n\n          if ((curPin === trigger && curTrigger.start - curTrigger._pinPush < start || curPin === pinnedContainer) && isNaN(parsedStart)) {\n            // numeric start values shouldn't be offset at all - treat them as absolute\n            offset += cs * (1 - curTrigger.progress);\n          }\n\n          curPin === pin && (otherPinOffset += cs);\n        }\n      }\n\n      start += offset;\n      end += offset;\n      self._startClamp && (self._startClamp += offset);\n\n      if (self._endClamp && !_refreshingAll) {\n        self._endClamp = end || -0.001;\n        end = Math.min(end, _maxScroll(scroller, direction));\n      }\n\n      change = end - start || (start -= 0.01) && 0.001;\n\n      if (isFirstRefresh) {\n        // on the very first refresh(), the prevProgress couldn't have been accurate yet because the start/end were never calculated, so we set it here. Before 3.11.5, it could lead to an inaccurate scroll position restoration with snapping.\n        prevProgress = gsap.utils.clamp(0, 1, gsap.utils.normalize(start, end, prevScroll));\n      }\n\n      self._pinPush = otherPinOffset;\n\n      if (markerStart && offset) {\n        // offset the markers if necessary\n        cs = {};\n        cs[direction.a] = \"+=\" + offset;\n        pinnedContainer && (cs[direction.p] = \"-=\" + scrollFunc());\n        gsap.set([markerStart, markerEnd], cs);\n      }\n\n      if (pin && !(_clampingMax && self.end >= _maxScroll(scroller, direction))) {\n        cs = _getComputedStyle(pin);\n        isVertical = direction === _vertical;\n        scroll = scrollFunc(); // recalculate because the triggers can affect the scroll\n\n        pinStart = parseFloat(pinGetter(direction.a)) + otherPinOffset;\n\n        if (!max && end > 1) {\n          // makes sure the scroller has a scrollbar, otherwise if something has width: 100%, for example, it would be too big (exclude the scrollbar). See https://gsap.com/forums/topic/25182-scrolltrigger-width-of-page-increase-where-markers-are-set-to-false/\n          forcedOverflow = (isViewport ? _doc.scrollingElement || _docEl : scroller).style;\n          forcedOverflow = {\n            style: forcedOverflow,\n            value: forcedOverflow[\"overflow\" + direction.a.toUpperCase()]\n          };\n\n          if (isViewport && _getComputedStyle(_body)[\"overflow\" + direction.a.toUpperCase()] !== \"scroll\") {\n            // avoid an extra scrollbar if BOTH <html> and <body> have overflow set to \"scroll\"\n            forcedOverflow.style[\"overflow\" + direction.a.toUpperCase()] = \"scroll\";\n          }\n        }\n\n        _swapPinIn(pin, spacer, cs);\n\n        pinState = _getState(pin); // transforms will interfere with the top/left/right/bottom placement, so remove them temporarily. getBoundingClientRect() factors in transforms.\n\n        bounds = _getBounds(pin, true);\n        oppositeScroll = useFixedPosition && _getScrollFunc(scroller, isVertical ? _horizontal : _vertical)();\n\n        if (pinSpacing) {\n          spacerState = [pinSpacing + direction.os2, change + otherPinOffset + _px];\n          spacerState.t = spacer;\n          i = pinSpacing === _padding ? _getSize(pin, direction) + change + otherPinOffset : 0;\n\n          if (i) {\n            spacerState.push(direction.d, i + _px); // for box-sizing: border-box (must include padding).\n\n            spacer.style.flexBasis !== \"auto\" && (spacer.style.flexBasis = i + _px);\n          }\n\n          _setState(spacerState);\n\n          if (pinnedContainer) {\n            // in ScrollTrigger.refresh(), we need to re-evaluate the pinContainer's size because this pinSpacing may stretch it out, but we can't just add the exact distance because depending on layout, it may not push things down or it may only do so partially.\n            _triggers.forEach(function (t) {\n              if (t.pin === pinnedContainer && t.vars.pinSpacing !== false) {\n                t._subPinOffset = true;\n              }\n            });\n          }\n\n          useFixedPosition && scrollFunc(prevScroll);\n        } else {\n          i = _getSize(pin, direction);\n          i && spacer.style.flexBasis !== \"auto\" && (spacer.style.flexBasis = i + _px);\n        }\n\n        if (useFixedPosition) {\n          override = {\n            top: bounds.top + (isVertical ? scroll - start : oppositeScroll) + _px,\n            left: bounds.left + (isVertical ? oppositeScroll : scroll - start) + _px,\n            boxSizing: \"border-box\",\n            position: \"fixed\"\n          };\n          override[_width] = override[\"max\" + _Width] = Math.ceil(bounds.width) + _px;\n          override[_height] = override[\"max\" + _Height] = Math.ceil(bounds.height) + _px;\n          override[_margin] = override[_margin + _Top] = override[_margin + _Right] = override[_margin + _Bottom] = override[_margin + _Left] = \"0\";\n          override[_padding] = cs[_padding];\n          override[_padding + _Top] = cs[_padding + _Top];\n          override[_padding + _Right] = cs[_padding + _Right];\n          override[_padding + _Bottom] = cs[_padding + _Bottom];\n          override[_padding + _Left] = cs[_padding + _Left];\n          pinActiveState = _copyState(pinOriginalState, override, pinReparent);\n          _refreshingAll && scrollFunc(0);\n        }\n\n        if (animation) {\n          // the animation might be affecting the transform, so we must jump to the end, check the value, and compensate accordingly. Otherwise, when it becomes unpinned, the pinSetter() will get set to a value that doesn't include whatever the animation did.\n          initted = animation._initted; // if not, we must invalidate() after this step, otherwise it could lock in starting values prematurely.\n\n          _suppressOverwrites(1);\n\n          animation.render(animation.duration(), true, true);\n          pinChange = pinGetter(direction.a) - pinStart + change + otherPinOffset;\n          pinMoves = Math.abs(change - pinChange) > 1;\n          useFixedPosition && pinMoves && pinActiveState.splice(pinActiveState.length - 2, 2); // transform is the last property/value set in the state Array. Since the animation is controlling that, we should omit it.\n\n          animation.render(0, true, true);\n          initted || animation.invalidate(true);\n          animation.parent || animation.totalTime(animation.totalTime()); // if, for example, a toggleAction called play() and then refresh() happens and when we render(1) above, it would cause the animation to complete and get removed from its parent, so this makes sure it gets put back in.\n\n          _suppressOverwrites(0);\n        } else {\n          pinChange = change;\n        }\n\n        forcedOverflow && (forcedOverflow.value ? forcedOverflow.style[\"overflow\" + direction.a.toUpperCase()] = forcedOverflow.value : forcedOverflow.style.removeProperty(\"overflow-\" + direction.a));\n      } else if (trigger && scrollFunc() && !containerAnimation) {\n        // it may be INSIDE a pinned element, so walk up the tree and look for any elements with _pinOffset to compensate because anything with pinSpacing that's already scrolled would throw off the measurements in getBoundingClientRect()\n        bounds = trigger.parentNode;\n\n        while (bounds && bounds !== _body) {\n          if (bounds._pinOffset) {\n            start -= bounds._pinOffset;\n            end -= bounds._pinOffset;\n          }\n\n          bounds = bounds.parentNode;\n        }\n      }\n\n      revertedPins && revertedPins.forEach(function (t) {\n        return t.revert(false, true);\n      });\n      self.start = start;\n      self.end = end;\n      scroll1 = scroll2 = _refreshingAll ? prevScroll : scrollFunc(); // reset velocity\n\n      if (!containerAnimation && !_refreshingAll) {\n        scroll1 < prevScroll && scrollFunc(prevScroll);\n        self.scroll.rec = 0;\n      }\n\n      self.revert(false, true);\n      lastRefresh = _getTime();\n\n      if (snapDelayedCall) {\n        lastSnap = -1; // just so snapping gets re-enabled, clear out any recorded last value\n        // self.isActive && scrollFunc(start + change * prevProgress); // previously this line was here to ensure that when snapping kicks in, it's from the previous progress but in some cases that's not desirable, like an all-page ScrollTrigger when new content gets added to the page, that'd totally change the progress.\n\n        snapDelayedCall.restart(true);\n      }\n\n      _refreshing = 0;\n      animation && isToggle && (animation._initted || prevAnimProgress) && animation.progress() !== prevAnimProgress && animation.progress(prevAnimProgress || 0, true).render(animation.time(), true, true); // must force a re-render because if saveStyles() was used on the target(s), the styles could have been wiped out during the refresh().\n\n      if (isFirstRefresh || prevProgress !== self.progress || containerAnimation || invalidateOnRefresh) {\n        // ensures that the direction is set properly (when refreshing, progress is set back to 0 initially, then back again to wherever it needs to be) and that callbacks are triggered.\n        animation && !isToggle && animation.totalProgress(containerAnimation && start < -0.001 && !prevProgress ? gsap.utils.normalize(start, end, 0) : prevProgress, true); // to avoid issues where animation callbacks like onStart aren't triggered.\n\n        self.progress = isFirstRefresh || (scroll1 - start) / change === prevProgress ? 0 : prevProgress;\n      }\n\n      pin && pinSpacing && (spacer._pinOffset = Math.round(self.progress * pinChange));\n      scrubTween && scrubTween.invalidate();\n\n      if (!isNaN(markerStartOffset)) {\n        // numbers were passed in for the position which are absolute, so instead of just putting the markers at the very bottom of the viewport, we figure out how far they shifted down (it's safe to assume they were originally positioned in closer relation to the trigger element with values like \"top\", \"center\", a percentage or whatever, so we offset that much in the opposite direction to basically revert them to the relative position thy were at previously.\n        markerStartOffset -= gsap.getProperty(markerStartTrigger, direction.p);\n        markerEndOffset -= gsap.getProperty(markerEndTrigger, direction.p);\n\n        _shiftMarker(markerStartTrigger, direction, markerStartOffset);\n\n        _shiftMarker(markerStart, direction, markerStartOffset - (pinOffset || 0));\n\n        _shiftMarker(markerEndTrigger, direction, markerEndOffset);\n\n        _shiftMarker(markerEnd, direction, markerEndOffset - (pinOffset || 0));\n      }\n\n      isFirstRefresh && !_refreshingAll && self.update(); // edge case - when you reload a page when it's already scrolled down, some browsers fire a \"scroll\" event before DOMContentLoaded, triggering an updateAll(). If we don't update the self.progress as part of refresh(), then when it happens next, it may record prevProgress as 0 when it really shouldn't, potentially causing a callback in an animation to fire again.\n\n      if (onRefresh && !_refreshingAll && !executingOnRefresh) {\n        // when refreshing all, we do extra work to correct pinnedContainer sizes and ensure things don't exceed the maxScroll, so we should do all the refreshes at the end after all that work so that the start/end values are corrected.\n        executingOnRefresh = true;\n        onRefresh(self);\n        executingOnRefresh = false;\n      }\n    };\n\n    self.getVelocity = function () {\n      return (scrollFunc() - scroll2) / (_getTime() - _time2) * 1000 || 0;\n    };\n\n    self.endAnimation = function () {\n      _endAnimation(self.callbackAnimation);\n\n      if (animation) {\n        scrubTween ? scrubTween.progress(1) : !animation.paused() ? _endAnimation(animation, animation.reversed()) : isToggle || _endAnimation(animation, self.direction < 0, 1);\n      }\n    };\n\n    self.labelToScroll = function (label) {\n      return animation && animation.labels && (start || self.refresh() || start) + animation.labels[label] / animation.duration() * change || 0;\n    };\n\n    self.getTrailing = function (name) {\n      var i = _triggers.indexOf(self),\n          a = self.direction > 0 ? _triggers.slice(0, i).reverse() : _triggers.slice(i + 1);\n\n      return (_isString(name) ? a.filter(function (t) {\n        return t.vars.preventOverlaps === name;\n      }) : a).filter(function (t) {\n        return self.direction > 0 ? t.end <= start : t.start >= end;\n      });\n    };\n\n    self.update = function (reset, recordVelocity, forceFake) {\n      if (containerAnimation && !forceFake && !reset) {\n        return;\n      }\n\n      var scroll = _refreshingAll === true ? prevScroll : self.scroll(),\n          p = reset ? 0 : (scroll - start) / change,\n          clipped = p < 0 ? 0 : p > 1 ? 1 : p || 0,\n          prevProgress = self.progress,\n          isActive,\n          wasActive,\n          toggleState,\n          action,\n          stateChanged,\n          toggled,\n          isAtMax,\n          isTakingAction;\n\n      if (recordVelocity) {\n        scroll2 = scroll1;\n        scroll1 = containerAnimation ? scrollFunc() : scroll;\n\n        if (snap) {\n          snap2 = snap1;\n          snap1 = animation && !isToggle ? animation.totalProgress() : clipped;\n        }\n      } // anticipate the pinning a few ticks ahead of time based on velocity to avoid a visual glitch due to the fact that most browsers do scrolling on a separate thread (not synced with requestAnimationFrame).\n\n\n      if (anticipatePin && pin && !_refreshing && !_startup && _lastScrollTime) {\n        if (!clipped && start < scroll + (scroll - scroll2) / (_getTime() - _time2) * anticipatePin) {\n          clipped = 0.0001;\n        } else if (clipped === 1 && end > scroll + (scroll - scroll2) / (_getTime() - _time2) * anticipatePin) {\n          clipped = 0.9999;\n        }\n      }\n\n      if (clipped !== prevProgress && self.enabled) {\n        isActive = self.isActive = !!clipped && clipped < 1;\n        wasActive = !!prevProgress && prevProgress < 1;\n        toggled = isActive !== wasActive;\n        stateChanged = toggled || !!clipped !== !!prevProgress; // could go from start all the way to end, thus it didn't toggle but it did change state in a sense (may need to fire a callback)\n\n        self.direction = clipped > prevProgress ? 1 : -1;\n        self.progress = clipped;\n\n        if (stateChanged && !_refreshing) {\n          toggleState = clipped && !prevProgress ? 0 : clipped === 1 ? 1 : prevProgress === 1 ? 2 : 3; // 0 = enter, 1 = leave, 2 = enterBack, 3 = leaveBack (we prioritize the FIRST encounter, thus if you scroll really fast past the onEnter and onLeave in one tick, it'd prioritize onEnter.\n\n          if (isToggle) {\n            action = !toggled && toggleActions[toggleState + 1] !== \"none\" && toggleActions[toggleState + 1] || toggleActions[toggleState]; // if it didn't toggle, that means it shot right past and since we prioritize the \"enter\" action, we should switch to the \"leave\" in this case (but only if one is defined)\n\n            isTakingAction = animation && (action === \"complete\" || action === \"reset\" || action in animation);\n          }\n        }\n\n        preventOverlaps && (toggled || isTakingAction) && (isTakingAction || scrub || !animation) && (_isFunction(preventOverlaps) ? preventOverlaps(self) : self.getTrailing(preventOverlaps).forEach(function (t) {\n          return t.endAnimation();\n        }));\n\n        if (!isToggle) {\n          if (scrubTween && !_refreshing && !_startup) {\n            scrubTween._dp._time - scrubTween._start !== scrubTween._time && scrubTween.render(scrubTween._dp._time - scrubTween._start); // if there's a scrub on both the container animation and this one (or a ScrollSmoother), the update order would cause this one not to have rendered yet, so it wouldn't make any progress before we .restart() it heading toward the new progress so it'd appear stuck thus we force a render here.\n\n            if (scrubTween.resetTo) {\n              scrubTween.resetTo(\"totalProgress\", clipped, animation._tTime / animation._tDur);\n            } else {\n              // legacy support (courtesy), before 3.10.0\n              scrubTween.vars.totalProgress = clipped;\n              scrubTween.invalidate().restart();\n            }\n          } else if (animation) {\n            animation.totalProgress(clipped, !!(_refreshing && (lastRefresh || reset)));\n          }\n        }\n\n        if (pin) {\n          reset && pinSpacing && (spacer.style[pinSpacing + direction.os2] = spacingStart);\n\n          if (!useFixedPosition) {\n            pinSetter(_round(pinStart + pinChange * clipped));\n          } else if (stateChanged) {\n            isAtMax = !reset && clipped > prevProgress && end + 1 > scroll && scroll + 1 >= _maxScroll(scroller, direction); // if it's at the VERY end of the page, don't switch away from position: fixed because it's pointless and it could cause a brief flash when the user scrolls back up (when it gets pinned again)\n\n            if (pinReparent) {\n              if (!reset && (isActive || isAtMax)) {\n                var bounds = _getBounds(pin, true),\n                    _offset = scroll - start;\n\n                _reparent(pin, _body, bounds.top + (direction === _vertical ? _offset : 0) + _px, bounds.left + (direction === _vertical ? 0 : _offset) + _px);\n              } else {\n                _reparent(pin, spacer);\n              }\n            }\n\n            _setState(isActive || isAtMax ? pinActiveState : pinState);\n\n            pinMoves && clipped < 1 && isActive || pinSetter(pinStart + (clipped === 1 && !isAtMax ? pinChange : 0));\n          }\n        }\n\n        snap && !tweenTo.tween && !_refreshing && !_startup && snapDelayedCall.restart(true);\n        toggleClass && (toggled || once && clipped && (clipped < 1 || !_limitCallbacks)) && _toArray(toggleClass.targets).forEach(function (el) {\n          return el.classList[isActive || once ? \"add\" : \"remove\"](toggleClass.className);\n        }); // classes could affect positioning, so do it even if reset or refreshing is true.\n\n        onUpdate && !isToggle && !reset && onUpdate(self);\n\n        if (stateChanged && !_refreshing) {\n          if (isToggle) {\n            if (isTakingAction) {\n              if (action === \"complete\") {\n                animation.pause().totalProgress(1);\n              } else if (action === \"reset\") {\n                animation.restart(true).pause();\n              } else if (action === \"restart\") {\n                animation.restart(true);\n              } else {\n                animation[action]();\n              }\n            }\n\n            onUpdate && onUpdate(self);\n          }\n\n          if (toggled || !_limitCallbacks) {\n            // on startup, the page could be scrolled and we don't want to fire callbacks that didn't toggle. For example onEnter shouldn't fire if the ScrollTrigger isn't actually entered.\n            onToggle && toggled && _callback(self, onToggle);\n            callbacks[toggleState] && _callback(self, callbacks[toggleState]);\n            once && (clipped === 1 ? self.kill(false, 1) : callbacks[toggleState] = 0); // a callback shouldn't be called again if once is true.\n\n            if (!toggled) {\n              // it's possible to go completely past, like from before the start to after the end (or vice-versa) in which case BOTH callbacks should be fired in that order\n              toggleState = clipped === 1 ? 1 : 3;\n              callbacks[toggleState] && _callback(self, callbacks[toggleState]);\n            }\n          }\n\n          if (fastScrollEnd && !isActive && Math.abs(self.getVelocity()) > (_isNumber(fastScrollEnd) ? fastScrollEnd : 2500)) {\n            _endAnimation(self.callbackAnimation);\n\n            scrubTween ? scrubTween.progress(1) : _endAnimation(animation, action === \"reverse\" ? 1 : !clipped, 1);\n          }\n        } else if (isToggle && onUpdate && !_refreshing) {\n          onUpdate(self);\n        }\n      } // update absolutely-positioned markers (only if the scroller isn't the viewport)\n\n\n      if (markerEndSetter) {\n        var n = containerAnimation ? scroll / containerAnimation.duration() * (containerAnimation._caScrollDist || 0) : scroll;\n        markerStartSetter(n + (markerStartTrigger._isFlipped ? 1 : 0));\n        markerEndSetter(n);\n      }\n\n      caMarkerSetter && caMarkerSetter(-scroll / containerAnimation.duration() * (containerAnimation._caScrollDist || 0));\n    };\n\n    self.enable = function (reset, refresh) {\n      if (!self.enabled) {\n        self.enabled = true;\n\n        _addListener(scroller, \"resize\", _onResize);\n\n        isViewport || _addListener(scroller, \"scroll\", _onScroll);\n        onRefreshInit && _addListener(ScrollTrigger, \"refreshInit\", onRefreshInit);\n\n        if (reset !== false) {\n          self.progress = prevProgress = 0;\n          scroll1 = scroll2 = lastSnap = scrollFunc();\n        }\n\n        refresh !== false && self.refresh();\n      }\n    };\n\n    self.getTween = function (snap) {\n      return snap && tweenTo ? tweenTo.tween : scrubTween;\n    };\n\n    self.setPositions = function (newStart, newEnd, keepClamp, pinOffset) {\n      // doesn't persist after refresh()! Intended to be a way to override values that were set during refresh(), like you could set it in onRefresh()\n      if (containerAnimation) {\n        // convert ratios into scroll positions. Remember, start/end values on ScrollTriggers that have a containerAnimation refer to the time (in seconds), NOT scroll positions.\n        var st = containerAnimation.scrollTrigger,\n            duration = containerAnimation.duration(),\n            _change = st.end - st.start;\n\n        newStart = st.start + _change * newStart / duration;\n        newEnd = st.start + _change * newEnd / duration;\n      }\n\n      self.refresh(false, false, {\n        start: _keepClamp(newStart, keepClamp && !!self._startClamp),\n        end: _keepClamp(newEnd, keepClamp && !!self._endClamp)\n      }, pinOffset);\n      self.update();\n    };\n\n    self.adjustPinSpacing = function (amount) {\n      if (spacerState && amount) {\n        var i = spacerState.indexOf(direction.d) + 1;\n        spacerState[i] = parseFloat(spacerState[i]) + amount + _px;\n        spacerState[1] = parseFloat(spacerState[1]) + amount + _px;\n\n        _setState(spacerState);\n      }\n    };\n\n    self.disable = function (reset, allowAnimation) {\n      if (self.enabled) {\n        reset !== false && self.revert(true, true);\n        self.enabled = self.isActive = false;\n        allowAnimation || scrubTween && scrubTween.pause();\n        prevScroll = 0;\n        pinCache && (pinCache.uncache = 1);\n        onRefreshInit && _removeListener(ScrollTrigger, \"refreshInit\", onRefreshInit);\n\n        if (snapDelayedCall) {\n          snapDelayedCall.pause();\n          tweenTo.tween && tweenTo.tween.kill() && (tweenTo.tween = 0);\n        }\n\n        if (!isViewport) {\n          var i = _triggers.length;\n\n          while (i--) {\n            if (_triggers[i].scroller === scroller && _triggers[i] !== self) {\n              return; //don't remove the listeners if there are still other triggers referencing it.\n            }\n          }\n\n          _removeListener(scroller, \"resize\", _onResize);\n\n          isViewport || _removeListener(scroller, \"scroll\", _onScroll);\n        }\n      }\n    };\n\n    self.kill = function (revert, allowAnimation) {\n      self.disable(revert, allowAnimation);\n      scrubTween && !allowAnimation && scrubTween.kill();\n      id && delete _ids[id];\n\n      var i = _triggers.indexOf(self);\n\n      i >= 0 && _triggers.splice(i, 1);\n      i === _i && _direction > 0 && _i--; // if we're in the middle of a refresh() or update(), splicing would cause skips in the index, so adjust...\n      // if no other ScrollTrigger instances of the same scroller are found, wipe out any recorded scroll position. Otherwise, in a single page application, for example, it could maintain scroll position when it really shouldn't.\n\n      i = 0;\n\n      _triggers.forEach(function (t) {\n        return t.scroller === self.scroller && (i = 1);\n      });\n\n      i || _refreshingAll || (self.scroll.rec = 0);\n\n      if (animation) {\n        animation.scrollTrigger = null;\n        revert && animation.revert({\n          kill: false\n        });\n        allowAnimation || animation.kill();\n      }\n\n      markerStart && [markerStart, markerEnd, markerStartTrigger, markerEndTrigger].forEach(function (m) {\n        return m.parentNode && m.parentNode.removeChild(m);\n      });\n      _primary === self && (_primary = 0);\n\n      if (pin) {\n        pinCache && (pinCache.uncache = 1);\n        i = 0;\n\n        _triggers.forEach(function (t) {\n          return t.pin === pin && i++;\n        });\n\n        i || (pinCache.spacer = 0); // if there aren't any more ScrollTriggers with the same pin, remove the spacer, otherwise it could be contaminated with old/stale values if the user re-creates a ScrollTrigger for the same element.\n      }\n\n      vars.onKill && vars.onKill(self);\n    };\n\n    _triggers.push(self);\n\n    self.enable(false, false);\n    customRevertReturn && customRevertReturn(self);\n\n    if (animation && animation.add && !change) {\n      // if the animation is a timeline, it may not have been populated yet, so it wouldn't render at the proper place on the first refresh(), thus we should schedule one for the next tick. If \"change\" is defined, we know it must be re-enabling, thus we can refresh() right away.\n      var updateFunc = self.update; // some browsers may fire a scroll event BEFORE a tick elapses and/or the DOMContentLoaded fires. So there's a chance update() will be called BEFORE a refresh() has happened on a Timeline-attached ScrollTrigger which means the start/end won't be calculated yet. We don't want to add conditional logic inside the update() method (like check to see if end is defined and if not, force a refresh()) because that's a function that gets hit a LOT (performance). So we swap out the real update() method for this one that'll re-attach it the first time it gets called and of course forces a refresh().\n\n      self.update = function () {\n        self.update = updateFunc;\n        start || end || self.refresh();\n      };\n\n      gsap.delayedCall(0.01, self.update);\n      change = 0.01;\n      start = end = 0;\n    } else {\n      self.refresh();\n    }\n\n    pin && _queueRefreshAll(); // pinning could affect the positions of other things, so make sure we queue a full refresh()\n  };\n\n  ScrollTrigger.register = function register(core) {\n    if (!_coreInitted) {\n      gsap = core || _getGSAP();\n      _windowExists() && window.document && ScrollTrigger.enable();\n      _coreInitted = _enabled;\n    }\n\n    return _coreInitted;\n  };\n\n  ScrollTrigger.defaults = function defaults(config) {\n    if (config) {\n      for (var p in config) {\n        _defaults[p] = config[p];\n      }\n    }\n\n    return _defaults;\n  };\n\n  ScrollTrigger.disable = function disable(reset, kill) {\n    _enabled = 0;\n\n    _triggers.forEach(function (trigger) {\n      return trigger[kill ? \"kill\" : \"disable\"](reset);\n    });\n\n    _removeListener(_win, \"wheel\", _onScroll);\n\n    _removeListener(_doc, \"scroll\", _onScroll);\n\n    clearInterval(_syncInterval);\n\n    _removeListener(_doc, \"touchcancel\", _passThrough);\n\n    _removeListener(_body, \"touchstart\", _passThrough);\n\n    _multiListener(_removeListener, _doc, \"pointerdown,touchstart,mousedown\", _pointerDownHandler);\n\n    _multiListener(_removeListener, _doc, \"pointerup,touchend,mouseup\", _pointerUpHandler);\n\n    _resizeDelay.kill();\n\n    _iterateAutoRefresh(_removeListener);\n\n    for (var i = 0; i < _scrollers.length; i += 3) {\n      _wheelListener(_removeListener, _scrollers[i], _scrollers[i + 1]);\n\n      _wheelListener(_removeListener, _scrollers[i], _scrollers[i + 2]);\n    }\n  };\n\n  ScrollTrigger.enable = function enable() {\n    _win = window;\n    _doc = document;\n    _docEl = _doc.documentElement;\n    _body = _doc.body;\n\n    if (gsap) {\n      _toArray = gsap.utils.toArray;\n      _clamp = gsap.utils.clamp;\n      _context = gsap.core.context || _passThrough;\n      _suppressOverwrites = gsap.core.suppressOverwrites || _passThrough;\n      _scrollRestoration = _win.history.scrollRestoration || \"auto\";\n      _lastScroll = _win.pageYOffset;\n      gsap.core.globals(\"ScrollTrigger\", ScrollTrigger); // must register the global manually because in Internet Explorer, functions (classes) don't have a \"name\" property.\n\n      if (_body) {\n        _enabled = 1;\n        _div100vh = document.createElement(\"div\"); // to solve mobile browser address bar show/hide resizing, we shouldn't rely on window.innerHeight. Instead, use a <div> with its height set to 100vh and measure that since that's what the scrolling is based on anyway and it's not affected by address bar showing/hiding.\n\n        _div100vh.style.height = \"100vh\";\n        _div100vh.style.position = \"absolute\";\n\n        _refresh100vh();\n\n        _rafBugFix();\n\n        Observer.register(gsap); // isTouch is 0 if no touch, 1 if ONLY touch, and 2 if it can accommodate touch but also other types like mouse/pointer.\n\n        ScrollTrigger.isTouch = Observer.isTouch;\n        _fixIOSBug = Observer.isTouch && /(iPad|iPhone|iPod|Mac)/g.test(navigator.userAgent); // since 2017, iOS has had a bug that causes event.clientX/Y to be inaccurate when a scroll occurs, thus we must alternate ignoring every other touchmove event to work around it. See https://bugs.webkit.org/show_bug.cgi?id=181954 and https://codepen.io/GreenSock/pen/ExbrPNa/087cef197dc35445a0951e8935c41503\n\n        _ignoreMobileResize = Observer.isTouch === 1;\n\n        _addListener(_win, \"wheel\", _onScroll); // mostly for 3rd party smooth scrolling libraries.\n\n\n        _root = [_win, _doc, _docEl, _body];\n\n        if (gsap.matchMedia) {\n          ScrollTrigger.matchMedia = function (vars) {\n            var mm = gsap.matchMedia(),\n                p;\n\n            for (p in vars) {\n              mm.add(p, vars[p]);\n            }\n\n            return mm;\n          };\n\n          gsap.addEventListener(\"matchMediaInit\", function () {\n            return _revertAll();\n          });\n          gsap.addEventListener(\"matchMediaRevert\", function () {\n            return _revertRecorded();\n          });\n          gsap.addEventListener(\"matchMedia\", function () {\n            _refreshAll(0, 1);\n\n            _dispatch(\"matchMedia\");\n          });\n          gsap.matchMedia(\"(orientation: portrait)\", function () {\n            // when orientation changes, we should take new base measurements for the ignoreMobileResize feature.\n            _setBaseDimensions();\n\n            return _setBaseDimensions;\n          });\n        } else {\n          console.warn(\"Requires GSAP 3.11.0 or later\");\n        }\n\n        _setBaseDimensions();\n\n        _addListener(_doc, \"scroll\", _onScroll); // some browsers (like Chrome), the window stops dispatching scroll events on the window if you scroll really fast, but it's consistent on the document!\n\n\n        var bodyStyle = _body.style,\n            border = bodyStyle.borderTopStyle,\n            AnimationProto = gsap.core.Animation.prototype,\n            bounds,\n            i;\n        AnimationProto.revert || Object.defineProperty(AnimationProto, \"revert\", {\n          value: function value() {\n            return this.time(-0.01, true);\n          }\n        }); // only for backwards compatibility (Animation.revert() was added after 3.10.4)\n\n        bodyStyle.borderTopStyle = \"solid\"; // works around an issue where a margin of a child element could throw off the bounds of the _body, making it seem like there's a margin when there actually isn't. The border ensures that the bounds are accurate.\n\n        bounds = _getBounds(_body);\n        _vertical.m = Math.round(bounds.top + _vertical.sc()) || 0; // accommodate the offset of the <body> caused by margins and/or padding\n\n        _horizontal.m = Math.round(bounds.left + _horizontal.sc()) || 0;\n        border ? bodyStyle.borderTopStyle = border : bodyStyle.removeProperty(\"border-top-style\"); // TODO: (?) maybe move to leveraging the velocity mechanism in Observer and skip intervals.\n\n        _syncInterval = setInterval(_sync, 250);\n        gsap.delayedCall(0.5, function () {\n          return _startup = 0;\n        });\n\n        _addListener(_doc, \"touchcancel\", _passThrough); // some older Android devices intermittently stop dispatching \"touchmove\" events if we don't listen for \"touchcancel\" on the document.\n\n\n        _addListener(_body, \"touchstart\", _passThrough); //works around Safari bug: https://gsap.com/forums/topic/21450-draggable-in-iframe-on-mobile-is-buggy/\n\n\n        _multiListener(_addListener, _doc, \"pointerdown,touchstart,mousedown\", _pointerDownHandler);\n\n        _multiListener(_addListener, _doc, \"pointerup,touchend,mouseup\", _pointerUpHandler);\n\n        _transformProp = gsap.utils.checkPrefix(\"transform\");\n\n        _stateProps.push(_transformProp);\n\n        _coreInitted = _getTime();\n        _resizeDelay = gsap.delayedCall(0.2, _refreshAll).pause();\n        _autoRefresh = [_doc, \"visibilitychange\", function () {\n          var w = _win.innerWidth,\n              h = _win.innerHeight;\n\n          if (_doc.hidden) {\n            _prevWidth = w;\n            _prevHeight = h;\n          } else if (_prevWidth !== w || _prevHeight !== h) {\n            _onResize();\n          }\n        }, _doc, \"DOMContentLoaded\", _refreshAll, _win, \"load\", _refreshAll, _win, \"resize\", _onResize];\n\n        _iterateAutoRefresh(_addListener);\n\n        _triggers.forEach(function (trigger) {\n          return trigger.enable(0, 1);\n        });\n\n        for (i = 0; i < _scrollers.length; i += 3) {\n          _wheelListener(_removeListener, _scrollers[i], _scrollers[i + 1]);\n\n          _wheelListener(_removeListener, _scrollers[i], _scrollers[i + 2]);\n        }\n      }\n    }\n  };\n\n  ScrollTrigger.config = function config(vars) {\n    \"limitCallbacks\" in vars && (_limitCallbacks = !!vars.limitCallbacks);\n    var ms = vars.syncInterval;\n    ms && clearInterval(_syncInterval) || (_syncInterval = ms) && setInterval(_sync, ms);\n    \"ignoreMobileResize\" in vars && (_ignoreMobileResize = ScrollTrigger.isTouch === 1 && vars.ignoreMobileResize);\n\n    if (\"autoRefreshEvents\" in vars) {\n      _iterateAutoRefresh(_removeListener) || _iterateAutoRefresh(_addListener, vars.autoRefreshEvents || \"none\");\n      _ignoreResize = (vars.autoRefreshEvents + \"\").indexOf(\"resize\") === -1;\n    }\n  };\n\n  ScrollTrigger.scrollerProxy = function scrollerProxy(target, vars) {\n    var t = _getTarget(target),\n        i = _scrollers.indexOf(t),\n        isViewport = _isViewport(t);\n\n    if (~i) {\n      _scrollers.splice(i, isViewport ? 6 : 2);\n    }\n\n    if (vars) {\n      isViewport ? _proxies.unshift(_win, vars, _body, vars, _docEl, vars) : _proxies.unshift(t, vars);\n    }\n  };\n\n  ScrollTrigger.clearMatchMedia = function clearMatchMedia(query) {\n    _triggers.forEach(function (t) {\n      return t._ctx && t._ctx.query === query && t._ctx.kill(true, true);\n    });\n  };\n\n  ScrollTrigger.isInViewport = function isInViewport(element, ratio, horizontal) {\n    var bounds = (_isString(element) ? _getTarget(element) : element).getBoundingClientRect(),\n        offset = bounds[horizontal ? _width : _height] * ratio || 0;\n    return horizontal ? bounds.right - offset > 0 && bounds.left + offset < _win.innerWidth : bounds.bottom - offset > 0 && bounds.top + offset < _win.innerHeight;\n  };\n\n  ScrollTrigger.positionInViewport = function positionInViewport(element, referencePoint, horizontal) {\n    _isString(element) && (element = _getTarget(element));\n    var bounds = element.getBoundingClientRect(),\n        size = bounds[horizontal ? _width : _height],\n        offset = referencePoint == null ? size / 2 : referencePoint in _keywords ? _keywords[referencePoint] * size : ~referencePoint.indexOf(\"%\") ? parseFloat(referencePoint) * size / 100 : parseFloat(referencePoint) || 0;\n    return horizontal ? (bounds.left + offset) / _win.innerWidth : (bounds.top + offset) / _win.innerHeight;\n  };\n\n  ScrollTrigger.killAll = function killAll(allowListeners) {\n    _triggers.slice(0).forEach(function (t) {\n      return t.vars.id !== \"ScrollSmoother\" && t.kill();\n    });\n\n    if (allowListeners !== true) {\n      var listeners = _listeners.killAll || [];\n      _listeners = {};\n      listeners.forEach(function (f) {\n        return f();\n      });\n    }\n  };\n\n  return ScrollTrigger;\n}();\nScrollTrigger.version = \"3.12.5\";\n\nScrollTrigger.saveStyles = function (targets) {\n  return targets ? _toArray(targets).forEach(function (target) {\n    // saved styles are recorded in a consecutive alternating Array, like [element, cssText, transform attribute, cache, matchMedia, ...]\n    if (target && target.style) {\n      var i = _savedStyles.indexOf(target);\n\n      i >= 0 && _savedStyles.splice(i, 5);\n\n      _savedStyles.push(target, target.style.cssText, target.getBBox && target.getAttribute(\"transform\"), gsap.core.getCache(target), _context());\n    }\n  }) : _savedStyles;\n};\n\nScrollTrigger.revert = function (soft, media) {\n  return _revertAll(!soft, media);\n};\n\nScrollTrigger.create = function (vars, animation) {\n  return new ScrollTrigger(vars, animation);\n};\n\nScrollTrigger.refresh = function (safe) {\n  return safe ? _onResize() : (_coreInitted || ScrollTrigger.register()) && _refreshAll(true);\n};\n\nScrollTrigger.update = function (force) {\n  return ++_scrollers.cache && _updateAll(force === true ? 2 : 0);\n};\n\nScrollTrigger.clearScrollMemory = _clearScrollMemory;\n\nScrollTrigger.maxScroll = function (element, horizontal) {\n  return _maxScroll(element, horizontal ? _horizontal : _vertical);\n};\n\nScrollTrigger.getScrollFunc = function (element, horizontal) {\n  return _getScrollFunc(_getTarget(element), horizontal ? _horizontal : _vertical);\n};\n\nScrollTrigger.getById = function (id) {\n  return _ids[id];\n};\n\nScrollTrigger.getAll = function () {\n  return _triggers.filter(function (t) {\n    return t.vars.id !== \"ScrollSmoother\";\n  });\n}; // it's common for people to ScrollTrigger.getAll(t => t.kill()) on page routes, for example, and we don't want it to ruin smooth scrolling by killing the main ScrollSmoother one.\n\n\nScrollTrigger.isScrolling = function () {\n  return !!_lastScrollTime;\n};\n\nScrollTrigger.snapDirectional = _snapDirectional;\n\nScrollTrigger.addEventListener = function (type, callback) {\n  var a = _listeners[type] || (_listeners[type] = []);\n  ~a.indexOf(callback) || a.push(callback);\n};\n\nScrollTrigger.removeEventListener = function (type, callback) {\n  var a = _listeners[type],\n      i = a && a.indexOf(callback);\n  i >= 0 && a.splice(i, 1);\n};\n\nScrollTrigger.batch = function (targets, vars) {\n  var result = [],\n      varsCopy = {},\n      interval = vars.interval || 0.016,\n      batchMax = vars.batchMax || 1e9,\n      proxyCallback = function proxyCallback(type, callback) {\n    var elements = [],\n        triggers = [],\n        delay = gsap.delayedCall(interval, function () {\n      callback(elements, triggers);\n      elements = [];\n      triggers = [];\n    }).pause();\n    return function (self) {\n      elements.length || delay.restart(true);\n      elements.push(self.trigger);\n      triggers.push(self);\n      batchMax <= elements.length && delay.progress(1);\n    };\n  },\n      p;\n\n  for (p in vars) {\n    varsCopy[p] = p.substr(0, 2) === \"on\" && _isFunction(vars[p]) && p !== \"onRefreshInit\" ? proxyCallback(p, vars[p]) : vars[p];\n  }\n\n  if (_isFunction(batchMax)) {\n    batchMax = batchMax();\n\n    _addListener(ScrollTrigger, \"refresh\", function () {\n      return batchMax = vars.batchMax();\n    });\n  }\n\n  _toArray(targets).forEach(function (target) {\n    var config = {};\n\n    for (p in varsCopy) {\n      config[p] = varsCopy[p];\n    }\n\n    config.trigger = target;\n    result.push(ScrollTrigger.create(config));\n  });\n\n  return result;\n}; // to reduce file size. clamps the scroll and also returns a duration multiplier so that if the scroll gets chopped shorter, the duration gets curtailed as well (otherwise if you're very close to the top of the page, for example, and swipe up really fast, it'll suddenly slow down and take a long time to reach the top).\n\n\nvar _clampScrollAndGetDurationMultiplier = function _clampScrollAndGetDurationMultiplier(scrollFunc, current, end, max) {\n  current > max ? scrollFunc(max) : current < 0 && scrollFunc(0);\n  return end > max ? (max - current) / (end - current) : end < 0 ? current / (current - end) : 1;\n},\n    _allowNativePanning = function _allowNativePanning(target, direction) {\n  if (direction === true) {\n    target.style.removeProperty(\"touch-action\");\n  } else {\n    target.style.touchAction = direction === true ? \"auto\" : direction ? \"pan-\" + direction + (Observer.isTouch ? \" pinch-zoom\" : \"\") : \"none\"; // note: Firefox doesn't support it pinch-zoom properly, at least in addition to a pan-x or pan-y.\n  }\n\n  target === _docEl && _allowNativePanning(_body, direction);\n},\n    _overflow = {\n  auto: 1,\n  scroll: 1\n},\n    _nestedScroll = function _nestedScroll(_ref5) {\n  var event = _ref5.event,\n      target = _ref5.target,\n      axis = _ref5.axis;\n\n  var node = (event.changedTouches ? event.changedTouches[0] : event).target,\n      cache = node._gsap || gsap.core.getCache(node),\n      time = _getTime(),\n      cs;\n\n  if (!cache._isScrollT || time - cache._isScrollT > 2000) {\n    // cache for 2 seconds to improve performance.\n    while (node && node !== _body && (node.scrollHeight <= node.clientHeight && node.scrollWidth <= node.clientWidth || !(_overflow[(cs = _getComputedStyle(node)).overflowY] || _overflow[cs.overflowX]))) {\n      node = node.parentNode;\n    }\n\n    cache._isScroll = node && node !== target && !_isViewport(node) && (_overflow[(cs = _getComputedStyle(node)).overflowY] || _overflow[cs.overflowX]);\n    cache._isScrollT = time;\n  }\n\n  if (cache._isScroll || axis === \"x\") {\n    event.stopPropagation();\n    event._gsapAllow = true;\n  }\n},\n    // capture events on scrollable elements INSIDE the <body> and allow those by calling stopPropagation() when we find a scrollable ancestor\n_inputObserver = function _inputObserver(target, type, inputs, nested) {\n  return Observer.create({\n    target: target,\n    capture: true,\n    debounce: false,\n    lockAxis: true,\n    type: type,\n    onWheel: nested = nested && _nestedScroll,\n    onPress: nested,\n    onDrag: nested,\n    onScroll: nested,\n    onEnable: function onEnable() {\n      return inputs && _addListener(_doc, Observer.eventTypes[0], _captureInputs, false, true);\n    },\n    onDisable: function onDisable() {\n      return _removeListener(_doc, Observer.eventTypes[0], _captureInputs, true);\n    }\n  });\n},\n    _inputExp = /(input|label|select|textarea)/i,\n    _inputIsFocused,\n    _captureInputs = function _captureInputs(e) {\n  var isInput = _inputExp.test(e.target.tagName);\n\n  if (isInput || _inputIsFocused) {\n    e._gsapAllow = true;\n    _inputIsFocused = isInput;\n  }\n},\n    _getScrollNormalizer = function _getScrollNormalizer(vars) {\n  _isObject(vars) || (vars = {});\n  vars.preventDefault = vars.isNormalizer = vars.allowClicks = true;\n  vars.type || (vars.type = \"wheel,touch\");\n  vars.debounce = !!vars.debounce;\n  vars.id = vars.id || \"normalizer\";\n\n  var _vars2 = vars,\n      normalizeScrollX = _vars2.normalizeScrollX,\n      momentum = _vars2.momentum,\n      allowNestedScroll = _vars2.allowNestedScroll,\n      onRelease = _vars2.onRelease,\n      self,\n      maxY,\n      target = _getTarget(vars.target) || _docEl,\n      smoother = gsap.core.globals().ScrollSmoother,\n      smootherInstance = smoother && smoother.get(),\n      content = _fixIOSBug && (vars.content && _getTarget(vars.content) || smootherInstance && vars.content !== false && !smootherInstance.smooth() && smootherInstance.content()),\n      scrollFuncY = _getScrollFunc(target, _vertical),\n      scrollFuncX = _getScrollFunc(target, _horizontal),\n      scale = 1,\n      initialScale = (Observer.isTouch && _win.visualViewport ? _win.visualViewport.scale * _win.visualViewport.width : _win.outerWidth) / _win.innerWidth,\n      wheelRefresh = 0,\n      resolveMomentumDuration = _isFunction(momentum) ? function () {\n    return momentum(self);\n  } : function () {\n    return momentum || 2.8;\n  },\n      lastRefreshID,\n      skipTouchMove,\n      inputObserver = _inputObserver(target, vars.type, true, allowNestedScroll),\n      resumeTouchMove = function resumeTouchMove() {\n    return skipTouchMove = false;\n  },\n      scrollClampX = _passThrough,\n      scrollClampY = _passThrough,\n      updateClamps = function updateClamps() {\n    maxY = _maxScroll(target, _vertical);\n    scrollClampY = _clamp(_fixIOSBug ? 1 : 0, maxY);\n    normalizeScrollX && (scrollClampX = _clamp(0, _maxScroll(target, _horizontal)));\n    lastRefreshID = _refreshID;\n  },\n      removeContentOffset = function removeContentOffset() {\n    content._gsap.y = _round(parseFloat(content._gsap.y) + scrollFuncY.offset) + \"px\";\n    content.style.transform = \"matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, \" + parseFloat(content._gsap.y) + \", 0, 1)\";\n    scrollFuncY.offset = scrollFuncY.cacheID = 0;\n  },\n      ignoreDrag = function ignoreDrag() {\n    if (skipTouchMove) {\n      requestAnimationFrame(resumeTouchMove);\n\n      var offset = _round(self.deltaY / 2),\n          scroll = scrollClampY(scrollFuncY.v - offset);\n\n      if (content && scroll !== scrollFuncY.v + scrollFuncY.offset) {\n        scrollFuncY.offset = scroll - scrollFuncY.v;\n\n        var y = _round((parseFloat(content && content._gsap.y) || 0) - scrollFuncY.offset);\n\n        content.style.transform = \"matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, \" + y + \", 0, 1)\";\n        content._gsap.y = y + \"px\";\n        scrollFuncY.cacheID = _scrollers.cache;\n\n        _updateAll();\n      }\n\n      return true;\n    }\n\n    scrollFuncY.offset && removeContentOffset();\n    skipTouchMove = true;\n  },\n      tween,\n      startScrollX,\n      startScrollY,\n      onStopDelayedCall,\n      onResize = function onResize() {\n    // if the window resizes, like on an iPhone which Apple FORCES the address bar to show/hide even if we event.preventDefault(), it may be scrolling too far now that the address bar is showing, so we must dynamically adjust the momentum tween.\n    updateClamps();\n\n    if (tween.isActive() && tween.vars.scrollY > maxY) {\n      scrollFuncY() > maxY ? tween.progress(1) && scrollFuncY(maxY) : tween.resetTo(\"scrollY\", maxY);\n    }\n  };\n\n  content && gsap.set(content, {\n    y: \"+=0\"\n  }); // to ensure there's a cache (element._gsap)\n\n  vars.ignoreCheck = function (e) {\n    return _fixIOSBug && e.type === \"touchmove\" && ignoreDrag(e) || scale > 1.05 && e.type !== \"touchstart\" || self.isGesturing || e.touches && e.touches.length > 1;\n  };\n\n  vars.onPress = function () {\n    skipTouchMove = false;\n    var prevScale = scale;\n    scale = _round((_win.visualViewport && _win.visualViewport.scale || 1) / initialScale);\n    tween.pause();\n    prevScale !== scale && _allowNativePanning(target, scale > 1.01 ? true : normalizeScrollX ? false : \"x\");\n    startScrollX = scrollFuncX();\n    startScrollY = scrollFuncY();\n    updateClamps();\n    lastRefreshID = _refreshID;\n  };\n\n  vars.onRelease = vars.onGestureStart = function (self, wasDragging) {\n    scrollFuncY.offset && removeContentOffset();\n\n    if (!wasDragging) {\n      onStopDelayedCall.restart(true);\n    } else {\n      _scrollers.cache++; // make sure we're pulling the non-cached value\n      // alternate algorithm: durX = Math.min(6, Math.abs(self.velocityX / 800)),\tdur = Math.max(durX, Math.min(6, Math.abs(self.velocityY / 800))); dur = dur * (0.4 + (1 - _power4In(dur / 6)) * 0.6)) * (momentumSpeed || 1)\n\n      var dur = resolveMomentumDuration(),\n          currentScroll,\n          endScroll;\n\n      if (normalizeScrollX) {\n        currentScroll = scrollFuncX();\n        endScroll = currentScroll + dur * 0.05 * -self.velocityX / 0.227; // the constant .227 is from power4(0.05). velocity is inverted because scrolling goes in the opposite direction.\n\n        dur *= _clampScrollAndGetDurationMultiplier(scrollFuncX, currentScroll, endScroll, _maxScroll(target, _horizontal));\n        tween.vars.scrollX = scrollClampX(endScroll);\n      }\n\n      currentScroll = scrollFuncY();\n      endScroll = currentScroll + dur * 0.05 * -self.velocityY / 0.227; // the constant .227 is from power4(0.05)\n\n      dur *= _clampScrollAndGetDurationMultiplier(scrollFuncY, currentScroll, endScroll, _maxScroll(target, _vertical));\n      tween.vars.scrollY = scrollClampY(endScroll);\n      tween.invalidate().duration(dur).play(0.01);\n\n      if (_fixIOSBug && tween.vars.scrollY >= maxY || currentScroll >= maxY - 1) {\n        // iOS bug: it'll show the address bar but NOT fire the window \"resize\" event until the animation is done but we must protect against overshoot so we leverage an onUpdate to do so.\n        gsap.to({}, {\n          onUpdate: onResize,\n          duration: dur\n        });\n      }\n    }\n\n    onRelease && onRelease(self);\n  };\n\n  vars.onWheel = function () {\n    tween._ts && tween.pause();\n\n    if (_getTime() - wheelRefresh > 1000) {\n      // after 1 second, refresh the clamps otherwise that'll only happen when ScrollTrigger.refresh() is called or for touch-scrolling.\n      lastRefreshID = 0;\n      wheelRefresh = _getTime();\n    }\n  };\n\n  vars.onChange = function (self, dx, dy, xArray, yArray) {\n    _refreshID !== lastRefreshID && updateClamps();\n    dx && normalizeScrollX && scrollFuncX(scrollClampX(xArray[2] === dx ? startScrollX + (self.startX - self.x) : scrollFuncX() + dx - xArray[1])); // for more precision, we track pointer/touch movement from the start, otherwise it'll drift.\n\n    if (dy) {\n      scrollFuncY.offset && removeContentOffset();\n      var isTouch = yArray[2] === dy,\n          y = isTouch ? startScrollY + self.startY - self.y : scrollFuncY() + dy - yArray[1],\n          yClamped = scrollClampY(y);\n      isTouch && y !== yClamped && (startScrollY += yClamped - y);\n      scrollFuncY(yClamped);\n    }\n\n    (dy || dx) && _updateAll();\n  };\n\n  vars.onEnable = function () {\n    _allowNativePanning(target, normalizeScrollX ? false : \"x\");\n\n    ScrollTrigger.addEventListener(\"refresh\", onResize);\n\n    _addListener(_win, \"resize\", onResize);\n\n    if (scrollFuncY.smooth) {\n      scrollFuncY.target.style.scrollBehavior = \"auto\";\n      scrollFuncY.smooth = scrollFuncX.smooth = false;\n    }\n\n    inputObserver.enable();\n  };\n\n  vars.onDisable = function () {\n    _allowNativePanning(target, true);\n\n    _removeListener(_win, \"resize\", onResize);\n\n    ScrollTrigger.removeEventListener(\"refresh\", onResize);\n    inputObserver.kill();\n  };\n\n  vars.lockAxis = vars.lockAxis !== false;\n  self = new Observer(vars);\n  self.iOS = _fixIOSBug; // used in the Observer getCachedScroll() function to work around an iOS bug that wreaks havoc with TouchEvent.clientY if we allow scroll to go all the way back to 0.\n\n  _fixIOSBug && !scrollFuncY() && scrollFuncY(1); // iOS bug causes event.clientY values to freak out (wildly inaccurate) if the scroll position is exactly 0.\n\n  _fixIOSBug && gsap.ticker.add(_passThrough); // prevent the ticker from sleeping\n\n  onStopDelayedCall = self._dc;\n  tween = gsap.to(self, {\n    ease: \"power4\",\n    paused: true,\n    inherit: false,\n    scrollX: normalizeScrollX ? \"+=0.1\" : \"+=0\",\n    scrollY: \"+=0.1\",\n    modifiers: {\n      scrollY: _interruptionTracker(scrollFuncY, scrollFuncY(), function () {\n        return tween.pause();\n      })\n    },\n    onUpdate: _updateAll,\n    onComplete: onStopDelayedCall.vars.onComplete\n  }); // we need the modifier to sense if the scroll position is altered outside of the momentum tween (like with a scrollTo tween) so we can pause() it to prevent conflicts.\n\n  return self;\n};\n\nScrollTrigger.sort = function (func) {\n  return _triggers.sort(func || function (a, b) {\n    return (a.vars.refreshPriority || 0) * -1e6 + a.start - (b.start + (b.vars.refreshPriority || 0) * -1e6);\n  });\n};\n\nScrollTrigger.observe = function (vars) {\n  return new Observer(vars);\n};\n\nScrollTrigger.normalizeScroll = function (vars) {\n  if (typeof vars === \"undefined\") {\n    return _normalizer;\n  }\n\n  if (vars === true && _normalizer) {\n    return _normalizer.enable();\n  }\n\n  if (vars === false) {\n    _normalizer && _normalizer.kill();\n    _normalizer = vars;\n    return;\n  }\n\n  var normalizer = vars instanceof Observer ? vars : _getScrollNormalizer(vars);\n  _normalizer && _normalizer.target === normalizer.target && _normalizer.kill();\n  _isViewport(normalizer.target) && (_normalizer = normalizer);\n  return normalizer;\n};\n\nScrollTrigger.core = {\n  // smaller file size way to leverage in ScrollSmoother and Observer\n  _getVelocityProp: _getVelocityProp,\n  _inputObserver: _inputObserver,\n  _scrollers: _scrollers,\n  _proxies: _proxies,\n  bridge: {\n    // when normalizeScroll sets the scroll position (ss = setScroll)\n    ss: function ss() {\n      _lastScrollTime || _dispatch(\"scrollStart\");\n      _lastScrollTime = _getTime();\n    },\n    // a way to get the _refreshing value in Observer\n    ref: function ref() {\n      return _refreshing;\n    }\n  }\n};\n_getGSAP() && gsap.registerPlugin(ScrollTrigger);\nexport { ScrollTrigger as default };","export enum PlayState {\n  play = 'play',\n  restart = 'restart',\n  reverse = 'reverse',\n  restartReverse = 'restartReverse',\n  stop = 'stop',\n  stopEnd = 'stopEnd',\n  pause = 'pause',\n  resume = 'resume',\n}\n","import { gsap } from 'gsap';\nimport React from 'react';\nimport { PlayState } from './types';\nimport { TimelineProps } from 'Timeline';\nimport { TweenProps } from 'Tween';\nimport { ContextProps } from 'Provider';\n\nif (!String.prototype.startsWith) {\n  String.prototype.startsWith = function(searchString, position) {\n    position = position || 0;\n    return this.indexOf(searchString, position) === position;\n  };\n}\n\nconst setPlayState = (\n  playState?: PlayState,\n  prevPlayState?: PlayState | null,\n  tween: any = null\n) => {\n  if (tween && playState && playState !== prevPlayState) {\n    if (playState === PlayState.play) {\n      tween.play();\n    } else if (playState === PlayState.restart) {\n      tween.restart(true);\n    } else if (playState === PlayState.reverse) {\n      tween.reverse();\n    } else if (playState === PlayState.restartReverse) {\n      tween.reverse(0);\n    } else if (playState === PlayState.stop) {\n      tween.pause(0);\n    } else if (playState === PlayState.stopEnd) {\n      tween.reverse(0);\n      tween.pause();\n    } else if (playState === PlayState.pause) {\n      tween.pause();\n    } else if (playState === PlayState.resume) {\n      tween.resume();\n    }\n  }\n};\n\nconst setInitialPlayState = (tweenOrTimeline: any, props: TimelineProps | TweenProps) => {\n  const { playState } = props;\n  if (playState) {\n    setPlayState(playState, PlayState.play, tweenOrTimeline);\n  }\n};\n\nconst getInitialPaused = (playState?: PlayState) => {\n  return (\n    playState &&\n    (playState === PlayState.stop ||\n      playState === PlayState.stopEnd ||\n      playState === PlayState.pause)\n  );\n};\n\nconst getTweenFunction = (\n  targets: any,\n  props: TweenProps | TimelineProps,\n  context?: ContextProps\n): gsap.core.Tween | gsap.core.Timeline => {\n  const {\n    children,\n    wrapper,\n\n    duration = 1,\n    from,\n    to,\n\n    stagger,\n\n    progress,\n    totalProgress,\n    playState,\n    disabled,\n    onlyInvalidateTo,\n\n    onCompleteAll,\n    onCompleteAllParams,\n    onCompleteAllScope,\n    onStartAll,\n\n    position,\n    target,\n\n    ...vars\n  } = props;\n\n  let tweenFunction: gsap.core.Tween | gsap.core.Timeline;\n  const paused = getInitialPaused(playState);\n  const plugins = context?.getPlugins(context?.plugins, targets) ?? {};\n\n  if (from && to) {\n    // special props like paused always go in the toVars parameter\n    tweenFunction = gsap.fromTo(targets, from, {\n      stagger,\n      duration,\n      paused,\n      ...to,\n      ...vars,\n      ...plugins,\n    });\n  } else if (to) {\n    tweenFunction = gsap.to(targets, { stagger, duration, paused, ...to, ...vars, ...plugins });\n  } else {\n    tweenFunction = gsap.from(targets, { stagger, duration, paused, ...from, ...vars, ...plugins });\n  }\n\n  // if multiple tweens (stagger), wrap them in a timeline\n  // TODO: if it's already an timeline add event handlers\n  if (Array.isArray(tweenFunction)) {\n    tweenFunction.forEach(t => {\n      t.paused(false);\n    });\n    tweenFunction = gsap.timeline({\n      ...vars,\n      tweens: tweenFunction,\n      smoothChildTiming: true,\n      onComplete: onCompleteAll,\n      onCompleteParams: onCompleteAllParams,\n      onCompleteScope: onCompleteAllScope,\n      onStart: onStartAll,\n    });\n  }\n\n  return tweenFunction;\n};\n\nconst callTweenFunction = (\n  tweenFunction: any,\n  functionName: string,\n  params: Array<any> | undefined = undefined,\n  returnFunction: string | undefined = undefined\n): void => {\n  if (Array.isArray(tweenFunction)) {\n    tweenFunction.forEach(tween => {\n      if (!params && returnFunction) {\n        params = [tween[returnFunction].apply(tween)];\n      }\n      tween[functionName].apply(tween, params);\n    });\n  } else {\n    if (!params && returnFunction) {\n      params = [tweenFunction[returnFunction].apply(tweenFunction)];\n    }\n    tweenFunction[functionName].apply(tweenFunction, params);\n  }\n};\n\nconst isEqual = (obj1: any, obj2: any) => {\n  // very easy equal check\n  // attention: if the order of properties are different it returns false\n  return JSON.stringify(obj1) === JSON.stringify(obj2);\n};\n\nconst refOrInnerRef = (child: any) => {\n  if (child.type.$$typeof && child.type.$$typeof.toString() === 'Symbol(react.forward_ref)') {\n    return 'ref';\n  }\n\n  // styled-components < 4\n  if (child.type.styledComponentId) {\n    return 'innerRef';\n  }\n\n  return 'ref';\n};\n\nfunction isElement(element: any) {\n  return React.isValidElement(element);\n}\n\nfunction isDOMTypeElement(element: any) {\n  return isElement(element) && typeof element.type === 'string';\n}\n\n// https://stackoverflow.com/a/39165137\nfunction getReactNode(dom: any, traverseUp = 0) {\n  const key = Object.keys(dom ?? {}).find(\n    key => key.startsWith('__reactInternalInstance$') || key.startsWith('__reactFiber$')\n  );\n\n  const domFiber = key && dom[key];\n  if (!domFiber) return null;\n\n  // react <16\n  if (domFiber._currentElement) {\n    let compFiber = domFiber._currentElement._owner;\n    for (let i = 0; i < traverseUp; i++) {\n      compFiber = compFiber._currentElement._owner;\n    }\n    return compFiber._instance;\n  }\n\n  // react 16+\n  if (domFiber.stateNode) {\n    return domFiber.stateNode;\n  }\n\n  const getCompFiber = (fiber: any) => {\n    //return fiber._debugOwner; // this also works, but is __DEV__ only\n    let parentFiber = fiber.return;\n    while (typeof parentFiber.type == 'string') {\n      parentFiber = parentFiber.return;\n    }\n    return parentFiber;\n  };\n  let compFiber = getCompFiber(domFiber);\n  for (let i = 0; i < traverseUp; i++) {\n    compFiber = getCompFiber(compFiber);\n  }\n  return compFiber.stateNode;\n}\n\nconst getRefProp = (child: any, addTarget: (target: any) => void) => {\n  // has to be tested if it works, which lib does still use innerRef?\n  if (child.props.innerRef) {\n    return {\n      innerRef: (target: any) => {\n        addTarget(target);\n        const { innerRef } = child.props;\n        if (typeof innerRef === 'function') innerRef(target);\n        else if (innerRef) innerRef.current = target;\n      },\n    };\n  }\n\n  return {\n    ref: (target: any) => {\n      addTarget(target);\n      const { ref } = child;\n      if (typeof ref === 'function') ref(target);\n      else if (ref) ref.current = target;\n    },\n  };\n};\n\nconst setOrAddTarget = (\n  target: any,\n  setTarget: (key: string, target: any) => void,\n  addTarget: (target: any) => void\n) => {\n  const reactNode = getReactNode(target);\n\n  if (reactNode) {\n    addTarget(reactNode);\n  } else if (target) {\n    Object.keys(target).forEach(key => {\n      const elementRef = target[key];\n      if (typeof elementRef === 'object' && elementRef.current) {\n        if (Array.isArray(elementRef.current)) {\n          elementRef.current.forEach((singleRef: React.RefObject<any>) => {\n            setTarget(key, singleRef);\n          });\n        } else {\n          setTarget(key, elementRef.current);\n        }\n      }\n    });\n  }\n};\n\nconst getTargetRefProp = (\n  child: any,\n  setTarget: (key: string, target: any) => void,\n  addTarget: (target: any) => void\n) => {\n  // has to be tested if it works, which lib does still use innerRef?\n  if (child.props.innerRef) {\n    return {\n      innerRef: (target: any) => {\n        setOrAddTarget(target, setTarget, addTarget);\n        // merge refs\n        const { innerRef } = child.props;\n        if (typeof innerRef === 'function') innerRef(target);\n        else if (innerRef) innerRef.current = target;\n      },\n    };\n  }\n\n  return {\n    ref: (target: any) => {\n      setOrAddTarget(target, setTarget, addTarget);\n      // merge refs\n      const { ref } = child;\n      if (typeof ref === 'function') ref(target);\n      else if (ref) ref.current = target;\n    },\n  };\n};\n\nconst nullishCoalescing = <T, R>(value: T, ifNullish: R): T | R => {\n  if (value === null || typeof value === 'undefined') {\n    return ifNullish;\n  }\n  return value;\n};\n\nconst setProps = (\n  tweenOrTimeline: any,\n  props: TimelineProps | TweenProps,\n  prevProps?: TimelineProps | TweenProps\n) => {\n  if (props.progress !== undefined && props.progress !== prevProps?.progress) {\n    tweenOrTimeline.progress(props.progress);\n  }\n  if (props.totalProgress !== undefined && props.totalProgress !== prevProps?.totalProgress) {\n    tweenOrTimeline.totalProgress(props.totalProgress);\n  }\n  if (\n    tweenOrTimeline.duration !== undefined &&\n    props.duration &&\n    props.duration !== prevProps?.duration\n  ) {\n    tweenOrTimeline.duration(props.duration);\n  }\n};\n\nexport {\n  getTweenFunction,\n  callTweenFunction,\n  setPlayState,\n  isEqual,\n  refOrInnerRef,\n  getRefProp,\n  getTargetRefProp,\n  nullishCoalescing,\n  setProps,\n  setInitialPlayState,\n  getInitialPaused,\n};\n","import { nullishCoalescing } from '../helper';\n\nlet gsap: any;\nlet _interpolate: any;\nlet _getProp: any;\nconst _getGSAP = () =>\n  gsap || (typeof window !== 'undefined' && (gsap = window.gsap) && gsap.registerPlugin && gsap);\n\ntype Point = {\n  x: number;\n  y: number;\n};\n\nfunction getDistance(p1: DOMPoint | Point, p2: DOMPoint | Point) {\n  return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\n\nfunction getCircleLength(el: SVGCircleElement) {\n  return 2 * Math.PI * parseFloat(nullishCoalescing(el.getAttribute('r'), '1') || '0');\n}\n\nfunction getRectLength(el: SVGRectElement) {\n  return (\n    parseFloat(nullishCoalescing(el.getAttribute('width'), '1') || '0') * 2 +\n    parseFloat(nullishCoalescing(el.getAttribute('height'), '1') || '0') * 2\n  );\n}\n\nfunction getLineLength(el: SVGLineElement) {\n  return getDistance(\n    {\n      x: parseFloat(nullishCoalescing(el.getAttribute('x1'), '1') || '0'),\n      y: parseFloat(nullishCoalescing(el.getAttribute('y1'), '1') || '0'),\n    },\n    {\n      x: parseFloat(nullishCoalescing(el.getAttribute('x2'), '1') || '0'),\n      y: parseFloat(nullishCoalescing(el.getAttribute('y2'), '1') || '0'),\n    }\n  );\n}\n\nfunction getPolylineLength(el: SVGPolylineElement) {\n  const points = el.points;\n  let totalLength = 0;\n  let previousPos: DOMPoint | undefined = undefined;\n  for (let i = 0; i < points.numberOfItems; i++) {\n    const currentPos = points.getItem(i);\n    if (previousPos) totalLength += getDistance(previousPos, currentPos);\n    previousPos = currentPos;\n  }\n  return totalLength;\n}\n\nfunction getPolygonLength(el: SVGPolylineElement) {\n  const points = el.points;\n  return (\n    getPolylineLength(el) + getDistance(points.getItem(points.numberOfItems - 1), points.getItem(0))\n  );\n}\n\n// if path is splitted into multiple move commands then return longest path\nfunction getPathLength(el: SVGPathElement) {\n  if (!el.hasAttribute('d')) {\n    return el.getTotalLength();\n  }\n  const d = el.getAttribute('d');\n  const pathString = d ? d.replace(/m/gi, 'M') : null;\n\n  if (!pathString) {\n    return el.getTotalLength();\n  }\n\n  const paths = pathString\n    .split('M')\n    .filter(path => path !== '')\n    .map(path => `M${path}`);\n\n  if (paths.length === 1) {\n    return el.getTotalLength();\n  }\n\n  let maxLength = 0;\n\n  paths.forEach(path => {\n    const pathElement = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n    pathElement.setAttribute('d', path);\n    maxLength = Math.max(maxLength, pathElement.getTotalLength());\n  });\n\n  return maxLength;\n}\n\nfunction getTotalLength(el: any) {\n  if (el.getTotalLength) {\n    return getPathLength(el);\n  }\n  switch (el.tagName.toLowerCase()) {\n    case 'circle':\n      return getCircleLength(el);\n    case 'rect':\n      return getRectLength(el);\n    case 'line':\n      return getLineLength(el);\n    case 'polyline':\n      return getPolylineLength(el);\n    case 'polygon':\n      return getPolygonLength(el);\n    default:\n      return 0;\n  }\n}\n\nexport const SvgDrawPlugin = {\n  version: '2.0.0',\n  name: 'svgDraw',\n  register(core: any, Plugin: any, propTween: any) {\n    gsap = core;\n    _interpolate = gsap.utils.interpolate;\n    _getProp = gsap.getProperty;\n  },\n  init(target: any, value: number, _tween: any, index: number, targets: any) {\n    const length = getTotalLength(target);\n\n    let lengthParam = value;\n    let offsetParam = 0;\n\n    if (Array.isArray(value)) {\n      lengthParam = value[0];\n      if (value.length >= 2) {\n        offsetParam = value[1] * -1;\n      }\n    }\n\n    let data = this;\n    data.target = target;\n    data.strokeDashoffset = _interpolate(\n      _getProp(target, 'stroke-dashoffset'),\n      length * offsetParam\n    );\n    data.strokeDasharray = _interpolate(_getProp(target, 'stroke-dasharray'), [\n      lengthParam * length,\n      length,\n    ]);\n  },\n  render(progress: number, data: any) {\n    data.target.setAttribute('stroke-dashoffset', data.strokeDashoffset(progress));\n    data.target.setAttribute('stroke-dasharray', data.strokeDasharray(progress));\n  },\n};\n\n_getGSAP() && gsap.registerPlugin(SvgDrawPlugin);\n\nexport { SvgDrawPlugin as default };\n","import React from 'react';\n\ntype RegisteredPlugins = 'scrollTrigger';\ntype Plugin = (targets: any) => any;\ntype Plugins = { [key in RegisteredPlugins]: Plugin } | {};\n\nexport type ContextProps = {\n  registerConsumer: (consumer: any) => void;\n  plugins?: Plugins;\n  getPlugins: (plugins?: Plugins, targets?: any) => any;\n};\n\nexport const Context = React.createContext<ContextProps>({\n  registerConsumer: () => {},\n  getPlugins: () => {},\n  plugins: {},\n});\n\nabstract class Provider<T, S = {}> extends React.Component<T, S> {\n  static contextType = Context;\n\n  consumers: any[];\n  plugins?: Plugins;\n\n  constructor(props: T) {\n    super(props);\n    this.consumers = [];\n    this.plugins = {};\n\n    this.registerConsumer = this.registerConsumer.bind(this);\n    this.getContextValue = this.getContextValue.bind(this);\n    this.getPlugin = this.getPlugin.bind(this);\n    this.getPlugins = this.getPlugins.bind(this);\n    this.renderWithProvider = this.renderWithProvider.bind(this);\n  }\n\n  registerConsumer(consumer: any) {\n    this.consumers.push(consumer);\n  }\n\n  getContextValue(plugin: Plugins = {}) {\n    return {\n      registerConsumer: this.registerConsumer,\n      // plugins: { ...this.context.plugins, ...plugin },\n      plugins: plugin,\n      getPlugins: this.getPlugins,\n    };\n  }\n\n  getPlugin(props: any, targets: any) {\n    return {};\n  }\n\n  getPlugins(plugins?: Plugins, targets?: any) {\n    return Object.keys(plugins ?? {}).reduce((acc, plugin) => {\n      if (Object.prototype.hasOwnProperty.call(plugins, plugin)) {\n        // @ts-ignore\n        return { ...acc, [plugin]: this.getPlugin(plugins[plugin], targets) };\n      }\n      return acc;\n    }, {});\n  }\n\n  renderWithProvider(output: any, plugin?: Plugins) {\n    return <Context.Provider value={this.getContextValue(plugin)}>{output}</Context.Provider>;\n  }\n}\n\nexport default Provider;\n","import { nullishCoalescing } from '../helper';\n\nlet gsap: any;\nlet _interpolate: any;\nlet _format: any;\nconst _getGSAP = () =>\n  gsap || (typeof window !== 'undefined' && (gsap = window.gsap) && gsap.registerPlugin && gsap);\n\ntype Prop =\n  | {\n      value: string | number;\n      format: () => (value: string | number) => number | string;\n    }\n  | number\n  | string;\n\nexport const CountPlugin = {\n  version: '1.0.0',\n  name: 'count',\n  register(core: any, Plugin: any, propTween: any) {\n    gsap = core;\n    _interpolate = gsap.utils.interpolate;\n    _format = (value: string | number) => parseInt(value.toString(), 10);\n  },\n  init(target: any, value: Prop, _tween: any, index: number, targets: any) {\n    let inputValue = value;\n    let format = _format;\n    if (typeof value === 'object') {\n      inputValue = nullishCoalescing(value.value, 0);\n      if (value.format) {\n        format = value.format;\n      }\n    }\n\n    const initialCount = parseFloat(target.innerText);\n\n    let data = this;\n    data.target = target;\n    data.count = _interpolate(initialCount, parseFloat(inputValue.toString()));\n    data.format = format;\n  },\n  render(progress: number, data: any) {\n    data.target.innerText = data.format(data.count(progress));\n  },\n};\n\n_getGSAP() && gsap.registerPlugin(CountPlugin);\n\nexport { CountPlugin as default };\n","import React, { Fragment, ReactElement } from 'react';\nimport { gsap } from 'gsap';\nimport { PlayState } from './types';\nimport {\n  getTweenFunction,\n  setPlayState,\n  isEqual,\n  getRefProp,\n  setProps,\n  setInitialPlayState,\n} from './helper';\nimport { Context } from './Provider';\n\nimport SvgDrawPlugin from './plugins/PlugInSvgDraw';\nimport CountPlugin from './plugins/PlugInCount';\n\n// @ts-ignore\ngsap.registerPlugin(SvgDrawPlugin);\n\n// @ts-ignore\ngsap.registerPlugin(CountPlugin);\n\ntype StaggerFunction = (index: number, target: any, list: any) => number;\ntype StaggerFromValues = 'start' | 'center' | 'edges' | 'random' | 'end';\ntype EaseFunction = (value: number) => number;\n\nexport type Stagger =\n  | {\n      amount?: number;\n      each?: number;\n      from?: StaggerFromValues | number | [number, number];\n      grid?: [number, number] | 'auto';\n      axis?: 'x' | 'y';\n      ease?: string | EaseFunction;\n      repeat?: number;\n      yoyo?: boolean;\n      [prop: string]: any;\n    }\n  | number\n  | StaggerFunction;\n\nexport type TweenProps = {\n  /** One or multiple \"refable\" components  */\n  children?: React.ReactNode;\n  wrapper?: React.ReactElement;\n  target?: number | string;\n  position?: string | number;\n\n  from?: any;\n  to?: any;\n  stagger?: Stagger;\n\n  duration?: number;\n  progress?: number;\n  totalProgress?: number;\n  playState?: PlayState;\n\n  disabled?: boolean;\n  onlyInvalidateTo?: boolean;\n\n  [prop: string]: any;\n};\n\nclass Tween extends React.Component<TweenProps, {}> {\n  static displayName = 'Tween';\n  static contextType = Context;\n\n  tween: any;\n  targets: any[] = [];\n\n  constructor(props: TweenProps) {\n    super(props);\n\n    this.addTarget = this.addTarget.bind(this);\n  }\n\n  componentDidMount() {\n    this.createTween();\n\n    // props at mount\n    setProps(this.tween, this.props);\n    setInitialPlayState(this.tween, this.props);\n\n    this.context.registerConsumer(this);\n  }\n\n  componentWillUnmount() {\n    if (this.tween) {\n      this.tween.kill();\n    }\n  }\n\n  getSnapshotBeforeUpdate() {\n    this.targets = [];\n    return null;\n  }\n\n  componentDidUpdate(prevProps: TweenProps) {\n    const {\n      children,\n      wrapper,\n\n      duration,\n      from,\n      to,\n      stagger,\n\n      progress,\n      totalProgress,\n      playState,\n      disabled,\n      onlyInvalidateTo,\n\n      onCompleteAll,\n      onCompleteAllParams,\n      onCompleteAllScope,\n      onStartAll,\n\n      position,\n      target,\n\n      ...vars\n    } = this.props;\n\n    // if children change create a new tween\n    // TODO: replace easy length check with fast equal check\n    if (React.Children.count(prevProps.children) !== React.Children.count(children)) {\n      this.createTween();\n    }\n\n    if (disabled) {\n      return;\n    }\n\n    // execute function calls\n    setProps(this.tween, this.props, prevProps);\n\n    // if \"to\" props are changed: reinit and restart tween\n    if (!isEqual(to, prevProps.to)) {\n      // is Tween\n      if (!this.tween.getChildren) {\n        this.tween.vars = { ...to, ...vars };\n\n        if (onlyInvalidateTo) {\n          var progressTmp = this.tween.progress();\n          this.tween\n            .progress(0)\n            .invalidate()\n            .progress(progressTmp);\n        } else {\n          this.tween.invalidate();\n        }\n      }\n      // is Timeline\n      // TODO: not yet ready\n      else {\n        let delay = 0;\n        this.tween.getChildren(false, true, false).forEach((tween: any) => {\n          tween.vars = { ...to, ...vars, ...{ delay } };\n          tween.invalidate();\n          // delay += stagger || 0;\n        });\n      }\n\n      if (!this.tween.paused()) {\n        this.tween.restart();\n      }\n    }\n\n    setPlayState(playState, prevProps.playState, this.tween);\n  }\n\n  createTween() {\n    if (this.tween) {\n      this.tween.kill();\n    }\n\n    if (this.props.children) {\n      this.tween = getTweenFunction(this.targets, this.props, this.context);\n    } else {\n      // why this is needed?\n      this.tween = () => {};\n    }\n  }\n\n  getGSAP() {\n    return this.tween;\n  }\n\n  setGSAP(tween: any) {\n    this.tween = tween;\n  }\n\n  addTarget(target: any) {\n    // target is null at unmount\n    if (target !== null) {\n      this.targets.push(target);\n    }\n  }\n\n  getTargets() {\n    return this.targets;\n  }\n\n  render() {\n    let { children, wrapper } = this.props;\n\n    const output = (\n      <Fragment>\n        {React.Children.map(children, child => {\n          return React.cloneElement(child as ReactElement, getRefProp(child, this.addTarget));\n        })}\n      </Fragment>\n    );\n\n    if (wrapper) {\n      return React.cloneElement(wrapper, [], output);\n    }\n\n    return output;\n  }\n}\n\nexport default Tween;\n","import React from 'react';\nimport { gsap } from 'gsap';\nimport { nullishCoalescing } from '../helper';\nimport Provider from '../Provider';\n\nexport type RevealProps = {\n  children: React.ReactNode;\n  trigger: React.ReactElement | null;\n  repeat: boolean;\n  root: Element | null;\n  rootMargin: string;\n  threshold: number;\n};\n\nenum EntryState {\n  unknown,\n  entered,\n  exited,\n}\n\nclass Reveal extends Provider<RevealProps> {\n  static displayName = 'Reveal';\n\n  static defaultProps = {\n    trigger: null,\n    repeat: false,\n    root: null,\n    rootMargin: '0px',\n    threshold: 0.66,\n  };\n\n  timeline: any;\n  triggerRef: HTMLElement | null = null;\n  observer: IntersectionObserver | null = null;\n\n  init() {\n    this.createTimeline();\n    this.createIntersectionObserver();\n  }\n\n  kill() {\n    this.killTimeline();\n    this.killIntersectionObserver();\n  }\n\n  componentDidMount() {\n    this.init();\n  }\n\n  componentWillUnmount() {\n    this.kill();\n  }\n\n  componentDidUpdate(prevProps: RevealProps) {\n    const { children, trigger } = this.props;\n\n    // if children change create a new timeline\n    // TODO: replace easy length check with fast equal check\n    // TODO: same for props.target?\n    if (React.Children.count(prevProps.children) !== React.Children.count(children)) {\n      this.init();\n    }\n\n    if (prevProps.trigger !== trigger) {\n      this.init();\n    }\n  }\n\n  createTimeline() {\n    this.killTimeline();\n\n    // init timeline\n    this.timeline = gsap.timeline({\n      smoothChildTiming: true,\n      paused: true,\n    });\n\n    // add consumers\n    this.consumers.forEach(consumer => {\n      const { position } = consumer.props;\n      this.timeline.add(consumer.getGSAP().play(), nullishCoalescing(position, 0));\n    });\n  }\n\n  killTimeline() {\n    if (this.timeline) {\n      this.timeline.kill();\n    }\n  }\n\n  createIntersectionObserver() {\n    let { root, rootMargin, threshold } = this.props;\n\n    const options = {\n      root,\n      rootMargin,\n      threshold: [0, threshold],\n    };\n\n    this.observer = new IntersectionObserver(this.intersectionObserverCallback, options);\n\n    // It would be better if we wouldn't need an extra wrapper.\n    // But it can be problematic for example with a fadeInLeft animation\n    // were the element is out of the viewport in the initial state.\n    // In this case there wouldn't be an intersection..\n    if (!this.triggerRef) {\n      this.consumers.forEach(consumer => {\n        consumer.getTargets().forEach((target: any) => {\n          this.observer && this.observer.observe(target);\n        });\n      });\n    } else {\n      this.observer && this.observer.observe(this.triggerRef);\n    }\n  }\n\n  killIntersectionObserver() {\n    this.unobserveAll();\n    this.observer = null;\n  }\n\n  unobserveAll() {\n    if (this.observer) {\n      if (!this.triggerRef) {\n        this.consumers.forEach(consumer => {\n          consumer.getTargets().forEach((target: any) => {\n            this.observer && this.observer.unobserve(target);\n          });\n        });\n      } else {\n        this.observer && this.observer.unobserve(this.triggerRef);\n      }\n    }\n  }\n\n  intersectionObserverCallback = (entries: any) => {\n    let { repeat, threshold } = this.props;\n    let state: EntryState = EntryState.unknown;\n\n    for (const entry of entries) {\n      if (entry.isIntersecting && entry.intersectionRatio >= threshold) {\n        this.timeline.play();\n        state = EntryState.entered;\n        break;\n      } else if (!entry.isIntersecting) {\n        state = EntryState.exited;\n        break;\n      }\n    }\n\n    if (!repeat && state === EntryState.entered) {\n      this.killIntersectionObserver();\n    } else if (repeat && state === EntryState.exited) {\n      this.timeline.pause(0);\n    }\n  };\n\n  getGSAP() {\n    return this.timeline;\n  }\n\n  render() {\n    let { children, trigger } = this.props;\n\n    let output = trigger ? (\n      <trigger.type {...trigger.props} ref={(trigger: HTMLElement) => (this.triggerRef = trigger)}>\n        {children}\n      </trigger.type>\n    ) : (\n      children\n    );\n\n    return this.renderWithProvider(output);\n  }\n}\n\nexport default Reveal;\n","import React, { Fragment, ReactElement, ReactNode } from 'react';\nimport { gsap } from 'gsap';\nimport { isForwardRef, isFragment } from 'react-is';\nimport { PlayState } from './types';\nimport {\n  getInitialPaused,\n  getTargetRefProp,\n  getTweenFunction,\n  nullishCoalescing,\n  setInitialPlayState,\n  setPlayState,\n  setProps,\n} from './helper';\nimport Provider, { Context } from './Provider';\nimport { TweenProps } from './Tween';\n\ntype Label = {\n  label: string;\n  position: string | number;\n};\n\nexport type Targets = Map<string | number, ReactElement | ReactElement[]>;\nexport type TargetsRef = {\n  set: (key: string, target: any) => void;\n};\n\nexport type Target = ReactElement | null;\n\nexport type TimelineProps = {\n  children: ReactNode;\n  wrapper?: ReactElement;\n  target?: Target;\n  position?: string | number;\n  labels?: Label[];\n\n  duration?: number;\n  progress?: number;\n  totalProgress?: number;\n  playState?: PlayState;\n\n  [prop: string]: any;\n};\n\nclass Timeline extends Provider<TimelineProps> {\n  static displayName = 'Timeline';\n\n  timeline: any;\n  targets: Targets = new Map();\n\n  static defaultProps = {\n    playState: PlayState.play,\n  };\n\n  constructor(props: TimelineProps) {\n    super(props);\n\n    this.addTarget = this.addTarget.bind(this);\n    this.setTarget = this.setTarget.bind(this);\n  }\n\n  componentDidMount() {\n    this.createTimeline();\n\n    // props at mount\n    setProps(this.timeline, this.props);\n    setInitialPlayState(this.timeline, this.props);\n\n    this.context.registerConsumer(this);\n  }\n\n  componentWillUnmount() {\n    this.timeline.kill();\n  }\n\n  getSnapshotBeforeUpdate() {\n    this.targets = new Map();\n    return null;\n  }\n\n  componentDidUpdate(prevProps: TimelineProps) {\n    const { children, duration, progress, totalProgress, playState, target } = this.props;\n\n    // if children change create a new timeline\n    // TODO: replace easy length check with fast equal check\n    // TODO: same for props.target?\n    if (React.Children.count(prevProps.children) !== React.Children.count(children)) {\n      this.createTimeline();\n    }\n\n    // execute function calls\n    setProps(this.timeline, this.props, prevProps);\n\n    // TODO: need rerender or something if target change?\n    // if (target !== prevProps.target) {\n    //   this.forceUpdate();\n    // }\n\n    setPlayState(playState, prevProps.playState, this.timeline);\n  }\n\n  createTimeline() {\n    const {\n      children,\n      target,\n      duration,\n      progress,\n      totalProgress,\n      playState,\n      labels,\n      position,\n      ...vars\n    } = this.props;\n\n    if (this.timeline) {\n      this.timeline.kill();\n    }\n\n    const plugins = this.context?.getPlugins(this.context?.plugins, this.targets) ?? {};\n\n    // init timeline\n    this.timeline = gsap.timeline({\n      smoothChildTiming: true,\n      paused: getInitialPaused(playState),\n      ...vars,\n      ...plugins,\n    });\n\n    if (labels) {\n      labels.forEach(label => {\n        this.timeline.addLabel(label.label, label.position);\n      });\n    }\n\n    // add tweens or nested timelines to timeline\n    this.consumers.forEach(consumer => {\n      // Tween with no children -> control Timeline target\n      if (consumer.tween && !consumer.props.children) {\n        const { position, target, stagger, ...vars } = consumer.props as TweenProps;\n\n        // get target if not nullish\n        let targets = null;\n        if (target !== null && typeof target !== 'undefined') {\n          targets = this.targets.get(target);\n        }\n\n        // if no target found -> take all Timeline targets as target\n        const tween = getTweenFunction(\n          // @ts-ignore\n          nullishCoalescing(targets, Array.from(this.targets.values())),\n          {\n            stagger,\n            ...vars,\n          }\n        );\n        this.timeline.add(tween, nullishCoalescing(position, '+=0'));\n        consumer.setGSAP(tween);\n      } else {\n        const { position } = consumer.props;\n        this.timeline.add(consumer.getGSAP(), nullishCoalescing(position, '+=0'));\n      }\n    });\n  }\n\n  getGSAP() {\n    return this.timeline;\n  }\n\n  addTarget(target: any) {\n    if (target !== null) {\n      this.targets.set(this.targets.size, target);\n    }\n  }\n\n  setTarget(key: string, target: any) {\n    if (target !== null) {\n      if (this.targets.has(key)) {\n        const targets = this.targets.get(key);\n        if (Array.isArray(targets)) {\n          this.targets.set(key, [...targets, target]);\n        } else {\n          this.targets.set(key, [targets, target]);\n        }\n      } else {\n        this.targets.set(key, target);\n      }\n    }\n  }\n\n  setTargets(targets: Targets) {\n    this.targets = targets;\n  }\n\n  getTargets() {\n    return this.targets;\n  }\n\n  cloneElement(child: any) {\n    // @ts-ignore\n    return React.cloneElement(child, getTargetRefProp(child, this.setTarget, this.addTarget));\n  }\n\n  renderTarget(target?: Target): ReactNode {\n    if (!target) {\n      return null;\n    }\n\n    // if is forwardRef clone and pass targets as ref\n    if (isForwardRef(target)) {\n      return this.cloneElement(target);\n    }\n\n    // else iterate the first level of children and set targets\n    return (\n      <Fragment>\n        {/* First render the target */}\n        {React.Children.map<ReactElement, ReactElement>(target, child => {\n          if (isFragment(child)) {\n            return React.Children.map(child.props.children, fragmentChild => {\n              return this.cloneElement(fragmentChild);\n            });\n          }\n          return this.cloneElement(child);\n        })}\n      </Fragment>\n    );\n  }\n\n  render() {\n    let { target, children, wrapper } = this.props;\n\n    const renderedTarget = this.renderTarget(target);\n\n    let output = (\n      <Fragment>\n        {renderedTarget}\n        {children}\n      </Fragment>\n    );\n\n    if (wrapper) {\n      output = React.cloneElement(wrapper, [], output);\n    }\n\n    return this.renderWithProvider(output);\n  }\n}\n\nexport default Timeline;\n","import React from 'react';\nimport { gsap } from 'gsap';\nimport { ScrollTrigger as ScrollTriggerPlugin } from 'gsap/dist/ScrollTrigger';\nimport Provider, { Context } from '../Provider';\n\ngsap.registerPlugin(ScrollTriggerPlugin);\n\nexport type ScrollTriggerProps = {\n  children?: React.ReactNode;\n} & gsap.plugins.ScrollTriggerInstanceVars;\n\nclass ScrollTrigger extends Provider<ScrollTriggerProps> {\n  static displayName = 'ScrollTrigger';\n  static contextType = Context;\n\n  scrollTrigger: any | null = null;\n  targets: any = {};\n\n  constructor(props: ScrollTriggerProps) {\n    super(props);\n\n    this.getPlugin = this.getPlugin.bind(this);\n  }\n\n  // override and pass registerConsumer to next parent provider\n  registerConsumer(consumer: any) {\n    this.context.registerConsumer(consumer);\n  }\n\n  componentDidMount() {\n    const { children, ...scrollTrigger } = this.props;\n\n    if (!children) {\n      this.scrollTrigger = ScrollTriggerPlugin.create(scrollTrigger);\n    }\n  }\n\n  componentWillUnmount() {\n    if (this.scrollTrigger) {\n      this.scrollTrigger.kill();\n    }\n  }\n\n  // componentDidUpdate(prevProps: ScrollTriggerProps) {\n  //   const { trigger } = this.props;\n  //\n  //   if (trigger !== prevProps.trigger) {\n  //     console.log('prevProps.trigger', prevProps.trigger);\n  //     console.log('trigger', trigger);\n  //   }\n  // }\n\n  getGSAP() {\n    return this.scrollTrigger;\n  }\n\n  getPlugin(props: any, targets: any) {\n    let { children, trigger: triggerProp, ...scrollTrigger } = props;\n\n    let trigger = triggerProp;\n\n    if (targets instanceof Map) {\n      if (trigger) {\n        const target = targets.get(trigger);\n        if (target) {\n          trigger = target;\n        }\n      } else {\n        trigger = Array.from(targets.values());\n      }\n    } else if (!trigger) {\n      trigger = targets;\n    }\n\n    return {\n      trigger,\n      ...scrollTrigger,\n    };\n  }\n\n  render() {\n    const { children, ...scrollTrigger } = this.props;\n    if (!children) {\n      return null;\n    }\n    return this.renderWithProvider(children, {\n      scrollTrigger,\n    });\n  }\n}\n\nexport default ScrollTrigger;\n","import React from 'react';\n\ntype SplitWordsProps = {\n  children: React.ReactNode;\n  wrapper: React.ReactElement;\n  delimiter?: string;\n};\n\ntype SplitCharsProps = {\n  children: React.ReactNode;\n  wrapper: React.ReactElement;\n};\n\nconst escapeRegExp = (regExp: string) => {\n  var specialChars = ['$', '^', '*', '(', ')', '+', '[', ']', '{', '}', '\\\\', '|', '.', '?', '/'];\n  var regex = new RegExp('(\\\\' + specialChars.join('|\\\\') + ')', 'g');\n  return regExp.replace(regex, '\\\\$1');\n};\n\n// TODO: possible or better to output all the refs as one array?\nexport const SplitWords = React.forwardRef<any, SplitWordsProps>(\n  ({ children, wrapper, delimiter = ' ' }, ref) => {\n    if (typeof children !== 'string') {\n      throw new Error('SplitWords only accepts a string as child.');\n    }\n    const words = children.split(new RegExp(`(${escapeRegExp(delimiter)})`, 'g'));\n    return (\n      <>\n        {words.map((word: string, i: number) => {\n          if (delimiter === ' ' && word === delimiter) {\n            return <React.Fragment key={i}> </React.Fragment>;\n          }\n          return React.cloneElement(wrapper, { ref, key: i }, word);\n        })}\n      </>\n    );\n  }\n);\n\n// TODO: possible or better to output all the refs as one array?\nexport const SplitChars = React.forwardRef<any, SplitCharsProps>(({ children, wrapper }, ref) => {\n  if (typeof children !== 'string') {\n    throw new Error('SplitChars only accepts a string as child.');\n  }\n  return (\n    <>\n      {children\n        .split(\n          /(?=(?:[\\0-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]))/\n        )\n        .map((char: string, i: number) => {\n          // TODO: enhance check for space\n          if (char === ' ') {\n            return <React.Fragment key={i}> </React.Fragment>;\n          }\n          return React.cloneElement(wrapper, { ref, key: i }, char);\n        })}\n    </>\n  );\n});\n\nexport const SplitLetters = React.forwardRef((props: any, ref) => {\n  console.warn('Deprecation warning: Use SplitChars instead of SplitLetters');\n  return <SplitChars {...props} ref={ref} />;\n});\n","import \"./ScrollContainer.scss\";\n\nconst ScrollContainer = ({height = \"150vh\", children, id}) => <div className={\"scroll-container\"} id={id}\n                                                               style={{height: height}}>{children}</div>\nexport default ScrollContainer;","import \"./Button.css\";\nconst Button = ({ children, onClick }) => (\n  <button type=\"submit\" className=\"button\" onClick={onClick}>\n    {children}\n  </button>\n);\nexport default Button;\n","import{CardElement as me}from\"@stripe/react-stripe-js\";import D from\"react\";function T(e){let{prefix:t,field:s,errors:r,...i}=e;if(r==null)return null;let a=s?r.getFieldErrors(s):r.getFormErrors();return a.length===0?null:D.createElement(\"div\",{...i},t?`${t} `:null,a.map(l=>l.message).join(\", \"))}import{createClient as g,getDefaultClient as C}from\"@formspree/core\";import{Elements as V}from\"@stripe/react-stripe-js\";import{loadStripe as j}from\"@stripe/stripe-js/pure.js\";import b,{useContext as R,useEffect as E,useMemo as w,useState as M}from\"react\";var v=b.createContext(null);function _(e){let{children:t,project:s,stripePK:r}=e,[i,a]=M(g({project:s})),l=w(()=>r?j(r):null,[r]);return E(()=>{let n=!0;return n&&a(o=>o.project!==s?g({...o,project:s}):o),()=>{n=!1}},[s]),E(()=>{let n=!0;return l?.then(o=>{n&&o&&a(m=>g({...m,stripe:o}))}),()=>{n=!1}},[l]),b.createElement(v.Provider,{value:{client:i}},l?b.createElement(V,{stripe:l},t):t)}function F(){return R(v)??{client:C()}}import{useState as d}from\"react\";import{appendExtraData as A,isSubmissionError as H}from\"@formspree/core\";import{CardElement as B}from\"@stripe/react-stripe-js\";import{useMemo as K}from\"react\";var P=\"2.5.1\";var N=`@formspree/react@${P}`;function x(e,t={}){let s=F(),{client:r=s.client,extraData:i,onError:a,onSuccess:l,origin:n}=t,{stripe:o}=r,m=K(()=>o?.elements().getElement(B),[o]);return async function(p){let u=O(p)?U(p):p;if(typeof i==\"object\")for(let[h,y]of Object.entries(i)){let c;typeof y==\"function\"?c=await y():c=y,c!==void 0&&A(u,h,c)}let f=await r.submitForm(e,u,{endpoint:n,clientName:N,createPaymentMethod:o&&m?()=>o.createPaymentMethod({type:\"card\",card:m,billing_details:z(u)}):void 0});H(f)?a?.(f):l?.(f)}}function O(e){return\"preventDefault\"in e&&typeof e.preventDefault==\"function\"}function U(e){e.preventDefault();let t=e.currentTarget;if(t.tagName!=\"FORM\")throw new Error(\"submit was triggered for a non-form element\");return new FormData(t)}function z(e){let t={address:I(e)};for(let s of[\"name\",\"email\",\"phone\"]){let r=e instanceof FormData?e.get(s):e[s];r&&typeof r==\"string\"&&(t[s]=r)}return t}function I(e){let t={};for(let[s,r]of[[\"address_line1\",\"line1\"],[\"address_line2\",\"line2\"],[\"address_city\",\"city\"],[\"address_country\",\"country\"],[\"address_state\",\"state\"],[\"address_postal_code\",\"postal_code\"]]){let i=e instanceof FormData?e.get(s):e[s];i&&typeof i==\"string\"&&(t[r]=i)}return t}function W(e,t={}){let[s,r]=d(null),[i,a]=d(null),[l,n]=d(!1),[o,m]=d(!1);if(!e)throw new Error('You must provide a form key or hashid (e.g. useForm(\"myForm\") or useForm(\"123xyz\")');let S=x(e,{client:t.client,extraData:t.data,onError(p){r(p),n(!1),m(!1)},onSuccess(p){r(null),a(p),n(!1),m(!0)},origin:t.endpoint});return[{errors:s,result:i,submitting:l,succeeded:o},async function(u){n(!0),await S(u)},function(){r(null),a(null),n(!1),m(!1)}]}export{me as CardElement,_ as FormspreeProvider,T as ValidationError,W as useForm,F as useFormspree,x as useSubmit};\n","const { REACT_APP_FORMSPREE } = process.env || \"mleznwaw\";\n\nexport const FORMSPREE = `${REACT_APP_FORMSPREE}`;\n","import React, {Fragment} from \"react\";\nimport {Tween, Timeline} from 'react-gsap';\n\nimport \"./TopBanner.scss\";\nimport ScrollContainer from \"../../utils/ScrollContainer\";\nimport poster from \"../../../assets/images/home/top-banner-bg.jpg\";\nimport video from \"../../../assets/videos/poster.mp4\";\nimport Button from \"../../Button\";\n\nimport {useForm} from \"@formspree/react\";\nimport {FORMSPREE} from \"../../../utils\";\n\nconst TopBanner = (() => {\n    const [state, handleSubmit] = useForm(FORMSPREE);\n\n    return (\n        <ScrollContainer height={\"max-content\"} id={\"trigger-top-banner\"}>\n            <div id=\"top-banner\" className=\"top-banner\">\n                <Timeline\n                    target={\n                        <Fragment>\n                            <video\n                                id={\"top-banner__video\"}\n                                src={video}\n                                poster={poster}\n                                playsInline\n                                muted\n                                loop\n                                autoPlay\n                            />\n                            <div className=\"top-banner__container\">\n                                <div className=\"top-banner__text\">\n                                    <h1>Hubble Network</h1>\n                                    <h1 id=\"animation\">\n                                        powers{\" \"}\n                                        <div className=\"container-animation\">\n                                            <span className=\"word w1\">asset tracking.</span>\n                                            <span className=\"word w2\">wildfire detection.</span>\n                                            <span className=\"word w3\">fleet management.</span>\n                                            <span className=\"word w4\">environmental monitoring.</span>\n                                            <span className=\"word w5\">agriculture.</span>\n                                            <span className=\"word w6\">IoT.</span>\n                                        </div>\n                                    </h1>\n                                    <p>Connecting off-the-shelf bluetooth chips to space</p>\n                                    <div className=\"top-banner__form\">\n                                        {!state?.succeeded ? (\n                                            <form id=\"home\" onSubmit={handleSubmit}>\n                                                <div id=\"home-contact\" className=\"contact\">\n                                                    <input\n                                                        required\n                                                        id=\"email\"\n                                                        type=\"email\"\n                                                        name=\"email\"\n                                                        placeholder=\"Enter your email to stay informed\"\n                                                    />\n                                                    <Button type=\"submit\">Sign Up</Button>\n                                                </div>\n                                            </form>\n                                        ) : null}\n                                        {state.succeeded ? <p>Thank you for your interest.</p> : null}\n                                    </div>\n\n                                </div>\n                            </div>\n                        </Fragment>\n                    }\n                    scrollTrigger={\n                        {\n                            trigger: '#trigger-top-banner',\n                            start: 'top top',\n                            end: 'bottom top+=100',\n                            scrub: 2,\n                            markers: false,\n                        }\n                    }\n                >\n                    <Tween\n                        to={{\n                            autoAlpha: 0,\n                        }}\n                        ease=\"linear\"\n                        position={0}\n                    />\n                </Timeline>\n            </div>\n        </ScrollContainer>\n    );\n});\nexport default TopBanner;\n\n// - asset tracking\n// - wildfire detection\n// - fleet management\n// - environmental monitoring\n// - agriculture\n// - IoT\n","var _g, _defs;\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); }\nimport * as React from \"react\";\nfunction SvgChipset(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: 696,\n    height: 1462,\n    viewBox: \"0 0 696 1462\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n    clipPath: \"url(#clip0_25_18)\"\n  }, /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 339,\n    cy: 397,\n    rx: 97.1299,\n    ry: 97.035,\n    transform: \"rotate(-34.4805 339 397)\",\n    fill: \"url(#paint0_radial_25_18)\",\n    fillOpacity: 0.4\n  }), /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 339.357,\n    cy: 395.881,\n    rx: 78.6318,\n    ry: 76.9079,\n    transform: \"rotate(-34.4805 339.357 395.881)\",\n    fill: \"url(#paint1_radial_25_18)\",\n    fillOpacity: 0.3\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M300.902 231.631C300.145 232.436 300.185 233.702 300.99 234.458C301.796 235.214 303.061 235.174 303.817 234.369L300.902 231.631ZM389.186 234.369C389.942 235.174 391.207 235.214 392.013 234.458C392.818 233.702 392.858 232.436 392.101 231.631L389.186 234.369ZM273.215 209.613C272.456 210.415 272.49 211.681 273.291 212.44C274.093 213.2 275.359 213.166 276.119 212.364L273.215 209.613ZM416.882 212.364C417.642 213.166 418.907 213.2 419.709 212.44C420.511 211.681 420.545 210.415 419.785 209.613L416.882 212.364ZM247.551 189.208C246.79 190.008 246.821 191.274 247.621 192.035C248.422 192.797 249.688 192.765 250.449 191.965L247.551 189.208ZM442.551 191.965C443.312 192.765 444.578 192.797 445.378 192.035C446.179 191.274 446.21 190.008 445.449 189.208L442.551 191.965ZM303.817 234.369C309.076 228.769 315.612 224.262 322.982 221.168L321.434 217.48C313.565 220.783 306.559 225.607 300.902 231.631L303.817 234.369ZM322.982 221.168C330.353 218.073 338.377 216.469 346.501 216.469V212.469C337.853 212.469 329.302 214.176 321.434 217.48L322.982 221.168ZM346.501 216.469C354.626 216.469 362.65 218.073 370.021 221.168L371.569 217.48C363.701 214.176 355.15 212.469 346.501 212.469V216.469ZM370.021 221.168C377.391 224.262 383.927 228.769 389.186 234.369L392.101 231.631C386.444 225.607 379.438 220.783 371.569 217.48L370.021 221.168ZM276.119 212.364C284.836 203.166 295.632 195.776 307.778 190.707L306.238 187.016C293.595 192.292 282.331 199.995 273.215 209.613L276.119 212.364ZM307.778 190.707C319.925 185.638 333.132 183.012 346.5 183.012V179.012C332.611 179.012 318.88 181.74 306.238 187.016L307.778 190.707ZM346.5 183.012C359.868 183.012 373.075 185.638 385.222 190.707L386.763 187.016C374.12 181.74 360.389 179.012 346.5 179.012V183.012ZM385.222 190.707C397.369 195.776 408.164 203.166 416.882 212.364L419.785 209.613C410.67 199.995 399.405 192.292 386.763 187.016L385.222 190.707ZM250.449 191.965C262.372 179.432 277.115 169.371 293.689 162.472L292.151 158.779C275.083 165.884 259.871 176.257 247.551 189.208L250.449 191.965ZM293.689 162.472C310.262 155.573 328.272 152 346.5 152V148C327.753 148 309.219 151.674 292.151 158.779L293.689 162.472ZM346.5 152C364.728 152 382.738 155.573 399.311 162.472L400.849 158.779C383.781 151.674 365.247 148 346.5 148V152ZM399.311 162.472C415.885 169.371 430.628 179.432 442.551 191.965L445.449 189.208C433.129 176.257 417.917 165.884 400.849 158.779L399.311 162.472Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 277.887,\n    cy: 27.6133,\n    rx: 19.7681,\n    ry: 18.7091,\n    transform: \"rotate(-34.4805 277.887 27.6133)\",\n    fill: \"url(#paint2_radial_25_18)\",\n    fillOpacity: 0.6\n  }), /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 277.58,\n    cy: 27.8246,\n    rx: 11.9355,\n    ry: 10.9431,\n    transform: \"rotate(-34.4805 277.58 27.8246)\",\n    fill: \"url(#paint3_radial_25_18)\",\n    fillOpacity: 0.5\n  }), /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 379.305,\n    cy: 254.169,\n    rx: 9.78216,\n    ry: 9.25811,\n    transform: \"rotate(-34.4805 379.305 254.169)\",\n    fill: \"url(#paint4_radial_25_18)\",\n    fillOpacity: 0.6\n  }), /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 379.153,\n    cy: 254.274,\n    rx: 5.90621,\n    ry: 5.41512,\n    transform: \"rotate(-34.4805 379.153 254.274)\",\n    fill: \"url(#paint5_radial_25_18)\",\n    fillOpacity: 0.5\n  }), /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 392.305,\n    cy: 480.169,\n    rx: 9.78216,\n    ry: 9.25811,\n    transform: \"rotate(-34.4805 392.305 480.169)\",\n    fill: \"url(#paint6_radial_25_18)\",\n    fillOpacity: 0.6\n  }), /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 392.153,\n    cy: 480.274,\n    rx: 5.90621,\n    ry: 5.41512,\n    transform: \"rotate(-34.4805 392.153 480.274)\",\n    fill: \"url(#paint7_radial_25_18)\",\n    fillOpacity: 0.5\n  }), /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 400.97,\n    cy: 270.064,\n    rx: 7.47547,\n    ry: 7.075,\n    transform: \"rotate(-34.4805 400.97 270.064)\",\n    fill: \"url(#paint8_radial_25_18)\",\n    fillOpacity: 0.6\n  }), /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 400.854,\n    cy: 270.144,\n    rx: 4.51349,\n    ry: 4.13821,\n    transform: \"rotate(-34.4805 400.854 270.144)\",\n    fill: \"url(#paint9_radial_25_18)\",\n    fillOpacity: 0.5\n  }), /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 308.168,\n    cy: 294.064,\n    rx: 7.47547,\n    ry: 7.075,\n    transform: \"rotate(-34.4805 308.168 294.064)\",\n    fill: \"url(#paint10_radial_25_18)\",\n    fillOpacity: 0.6\n  }), /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 308.052,\n    cy: 294.144,\n    rx: 4.51349,\n    ry: 4.13821,\n    transform: \"rotate(-34.4805 308.052 294.144)\",\n    fill: \"url(#paint11_radial_25_18)\",\n    fillOpacity: 0.5\n  }), /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 344.575,\n    cy: 260.518,\n    rx: 4.09907,\n    ry: 3.87948,\n    transform: \"rotate(-34.4805 344.575 260.518)\",\n    fill: \"url(#paint12_radial_25_18)\",\n    fillOpacity: 0.6\n  }), /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 344.512,\n    cy: 260.562,\n    rx: 2.47491,\n    ry: 2.26913,\n    transform: \"rotate(-34.4805 344.512 260.562)\",\n    fill: \"url(#paint13_radial_25_18)\",\n    fillOpacity: 0.5\n  }), /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 363.575,\n    cy: 329.518,\n    rx: 4.09907,\n    ry: 3.87948,\n    transform: \"rotate(-34.4805 363.575 329.518)\",\n    fill: \"url(#paint14_radial_25_18)\",\n    fillOpacity: 0.6\n  }), /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 363.512,\n    cy: 329.562,\n    rx: 2.47491,\n    ry: 2.26913,\n    transform: \"rotate(-34.4805 363.512 329.562)\",\n    fill: \"url(#paint15_radial_25_18)\",\n    fillOpacity: 0.5\n  }), /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 336.602,\n    cy: 394.975,\n    rx: 7.05968,\n    ry: 6.68148,\n    transform: \"rotate(-34.4805 336.602 394.975)\",\n    fill: \"url(#paint16_radial_25_18)\",\n    fillOpacity: 0.6\n  }), /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 336.493,\n    cy: 395.051,\n    rx: 4.26245,\n    ry: 3.90804,\n    transform: \"rotate(-34.4805 336.493 395.051)\",\n    fill: \"url(#paint17_radial_25_18)\",\n    fillOpacity: 0.5\n  }), /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 396.852,\n    cy: 93.2033,\n    rx: 25.7912,\n    ry: 24.4095,\n    transform: \"rotate(-34.4805 396.852 93.2033)\",\n    fill: \"url(#paint18_radial_25_18)\",\n    fillOpacity: 0.6\n  }), /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 396.451,\n    cy: 93.4792,\n    rx: 15.572,\n    ry: 14.2773,\n    transform: \"rotate(-34.4805 396.451 93.4792)\",\n    fill: \"url(#paint19_radial_25_18)\",\n    fillOpacity: 0.5\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M341.472 380L341.583 379.512C341.505 379.495 341.424 379.496 341.347 379.516L341.472 380ZM298.001 391.226L297.876 390.741C297.66 390.797 297.507 390.989 297.501 391.211C297.495 391.434 297.636 391.634 297.848 391.702L298.001 391.226ZM344.501 406.121L344.348 406.597C344.447 406.629 344.554 406.629 344.653 406.597L344.501 406.121ZM391 391.226L391.153 391.702C391.367 391.633 391.509 391.429 391.5 391.204C391.49 390.979 391.33 390.788 391.111 390.738L391 391.226ZM344.501 414L344.347 414.475C344.447 414.508 344.556 414.508 344.656 414.475L344.501 414ZM342.395 413.315H341.895C341.895 413.532 342.035 413.724 342.241 413.791L342.395 413.315ZM342.395 411.315H342.895C342.895 411.096 342.753 410.903 342.544 410.837L342.395 411.315ZM340.55 410.738L340.699 410.26C340.547 410.213 340.382 410.24 340.253 410.335C340.125 410.429 340.05 410.578 340.05 410.738H340.55ZM340.55 412.715L340.394 413.19C340.546 413.24 340.713 413.214 340.843 413.12C340.973 413.026 341.05 412.875 341.05 412.715H340.55ZM338.68 412.103H338.18C338.18 412.32 338.319 412.511 338.525 412.578L338.68 412.103ZM338.68 410.153H339.18C339.18 409.934 339.039 409.741 338.831 409.676L338.68 410.153ZM336.835 409.572L336.985 409.095C336.833 409.047 336.667 409.074 336.539 409.169C336.411 409.263 336.335 409.413 336.335 409.572H336.835ZM336.835 411.503L336.68 411.979C336.832 412.028 336.999 412.002 337.129 411.908C337.258 411.814 337.335 411.663 337.335 411.503H336.835ZM334.966 410.895H334.466C334.466 411.112 334.605 411.304 334.811 411.371L334.966 410.895ZM334.966 408.987H335.466C335.466 408.768 335.324 408.575 335.115 408.51L334.966 408.987ZM333.12 408.41L333.269 407.933C333.117 407.885 332.952 407.913 332.824 408.007C332.696 408.101 332.62 408.251 332.62 408.41H333.12ZM333.12 410.295L332.964 410.77C333.117 410.82 333.284 410.794 333.413 410.7C333.543 410.606 333.62 410.455 333.62 410.295H333.12ZM331.251 409.683H330.751C330.751 409.9 330.89 410.091 331.095 410.159L331.251 409.683ZM331.251 407.825H331.751C331.751 407.606 331.609 407.413 331.4 407.348L331.251 407.825ZM329.401 407.248L329.55 406.771C329.398 406.723 329.233 406.751 329.105 406.845C328.977 406.939 328.901 407.089 328.901 407.248H329.401ZM329.401 409.083L329.246 409.559C329.398 409.608 329.565 409.582 329.695 409.488C329.824 409.394 329.901 409.243 329.901 409.083H329.401ZM327.536 408.475H327.036C327.036 408.692 327.175 408.884 327.381 408.951L327.536 408.475ZM327.536 406.663H328.036C328.036 406.445 327.894 406.252 327.686 406.186L327.536 406.663ZM325.686 406.082L325.836 405.605C325.684 405.558 325.519 405.585 325.39 405.679C325.262 405.773 325.186 405.923 325.186 406.082H325.686ZM325.686 407.871L325.532 408.347C325.684 408.396 325.851 408.37 325.98 408.276C326.11 408.182 326.186 408.031 326.186 407.871H325.686ZM323.821 407.267H323.321C323.321 407.484 323.461 407.676 323.667 407.743L323.821 407.267ZM323.821 405.498H324.321C324.321 405.279 324.179 405.085 323.97 405.02L323.821 405.498ZM321.971 404.92L322.12 404.443C321.969 404.396 321.803 404.423 321.675 404.518C321.547 404.612 321.471 404.761 321.471 404.92H321.971ZM321.971 406.663L321.817 407.139C321.969 407.188 322.136 407.162 322.265 407.068C322.395 406.974 322.471 406.823 322.471 406.663H321.971ZM320.106 406.055H319.606C319.606 406.272 319.746 406.464 319.951 406.531L320.106 406.055ZM320.106 404.336H320.606C320.606 404.117 320.464 403.923 320.255 403.858L320.106 404.336ZM318.257 403.759L318.406 403.281C318.254 403.234 318.089 403.262 317.96 403.356C317.832 403.45 317.757 403.6 317.757 403.759H318.257ZM318.257 405.455L318.101 405.93C318.253 405.98 318.42 405.954 318.55 405.86C318.68 405.766 318.757 405.615 318.757 405.455H318.257ZM316.388 404.843H315.888C315.888 405.06 316.027 405.251 316.232 405.319L316.388 404.843ZM316.388 403.174H316.888C316.888 402.955 316.746 402.762 316.538 402.697L316.388 403.174ZM314.542 402.593L314.692 402.116C314.54 402.068 314.374 402.095 314.246 402.19C314.118 402.284 314.042 402.434 314.042 402.593H314.542ZM314.542 404.243L314.387 404.719C314.539 404.768 314.706 404.742 314.836 404.648C314.965 404.554 315.042 404.403 315.042 404.243H314.542ZM312.673 403.635H312.173C312.173 403.852 312.312 404.044 312.518 404.111L312.673 403.635ZM312.673 402.008H313.173C313.173 401.789 313.031 401.596 312.822 401.531L312.673 402.008ZM310.827 401.431L310.976 400.954C310.824 400.906 310.659 400.934 310.531 401.028C310.403 401.122 310.327 401.272 310.327 401.431H310.827ZM310.827 403.035L310.672 403.511C310.825 403.56 310.991 403.534 311.121 403.44C311.25 403.346 311.327 403.195 311.327 403.035H310.827ZM308.958 402.427H308.458C308.458 402.644 308.597 402.836 308.803 402.903L308.958 402.427ZM308.958 400.846H309.458C309.458 400.627 309.316 400.434 309.107 400.369L308.958 400.846ZM307.112 400.269L307.261 399.792C307.11 399.744 306.944 399.772 306.816 399.866C306.688 399.96 306.612 400.11 306.612 400.269H307.112ZM307.112 401.823L306.958 402.299C307.11 402.348 307.277 402.322 307.406 402.228C307.536 402.134 307.612 401.983 307.612 401.823H307.112ZM305.243 401.215H304.743C304.743 401.432 304.883 401.624 305.088 401.691L305.243 401.215ZM305.243 399.684H305.743C305.743 399.466 305.601 399.273 305.393 399.207L305.243 399.684ZM303.397 399.103L303.547 398.626C303.396 398.579 303.23 398.606 303.102 398.7C302.973 398.794 302.897 398.944 302.897 399.103H303.397ZM303.397 400.615L303.243 401.091C303.395 401.14 303.562 401.114 303.691 401.02C303.821 400.926 303.897 400.775 303.897 400.615H303.397ZM301.528 400.007H301.028C301.028 400.224 301.168 400.416 301.374 400.483L301.528 400.007ZM301.528 398.519H302.028C302.028 398.3 301.886 398.107 301.678 398.041L301.528 398.519ZM299.683 397.941L299.832 397.464C299.68 397.417 299.515 397.444 299.386 397.539C299.258 397.633 299.183 397.782 299.183 397.941H299.683ZM299.683 399.403L299.528 399.879C299.68 399.928 299.847 399.902 299.976 399.808C300.106 399.714 300.183 399.563 300.183 399.403H299.683ZM298 398.857H297.5C297.5 399.074 297.64 399.266 297.846 399.333L298 398.857ZM298 391.224L298.153 390.748C298 390.699 297.834 390.726 297.705 390.82C297.576 390.914 297.5 391.064 297.5 391.224H298ZM390.999 391.224H391.499C391.499 391.064 391.423 390.914 391.294 390.82C391.165 390.726 390.998 390.699 390.846 390.748L390.999 391.224ZM390.999 398.857L391.154 399.333C391.359 399.266 391.499 399.074 391.499 398.857H390.999ZM389.32 399.403H388.82C388.82 399.563 388.897 399.714 389.026 399.808C389.156 399.902 389.323 399.928 389.475 399.879L389.32 399.403ZM389.32 397.941H389.82C389.82 397.782 389.744 397.633 389.616 397.539C389.488 397.444 389.323 397.417 389.171 397.464L389.32 397.941ZM387.474 398.519L387.325 398.041C387.117 398.107 386.974 398.3 386.974 398.519H387.474ZM387.474 400.004L387.63 400.479C387.835 400.412 387.974 400.22 387.974 400.004H387.474ZM385.605 400.615H385.105C385.105 400.776 385.182 400.926 385.312 401.02C385.442 401.114 385.609 401.14 385.761 401.09L385.605 400.615ZM385.605 399.103H386.105C386.105 398.944 386.03 398.794 385.901 398.7C385.773 398.606 385.607 398.579 385.456 398.626L385.605 399.103ZM383.756 399.684L383.606 399.207C383.397 399.273 383.256 399.466 383.256 399.684H383.756ZM383.756 401.215L383.911 401.691C384.116 401.624 384.256 401.432 384.256 401.215H383.756ZM381.891 401.823H381.391C381.391 401.983 381.467 402.134 381.597 402.228C381.726 402.322 381.893 402.348 382.045 402.299L381.891 401.823ZM381.891 400.269H382.391C382.391 400.11 382.315 399.96 382.187 399.866C382.059 399.772 381.893 399.744 381.742 399.792L381.891 400.269ZM380.041 400.846L379.892 400.369C379.683 400.434 379.541 400.627 379.541 400.846H380.041ZM380.041 402.427L380.195 402.903C380.401 402.836 380.541 402.644 380.541 402.427H380.041ZM378.176 403.031H377.676C377.676 403.191 377.752 403.342 377.882 403.436C378.011 403.53 378.178 403.556 378.33 403.507L378.176 403.031ZM378.176 401.431H378.676C378.676 401.272 378.6 401.122 378.472 401.028C378.344 400.934 378.179 400.906 378.027 400.954L378.176 401.431ZM376.326 402.008L376.177 401.531C375.968 401.596 375.826 401.789 375.826 402.008H376.326ZM376.326 403.635L376.481 404.111C376.687 404.044 376.826 403.852 376.826 403.635H376.326ZM374.457 404.243H373.957C373.957 404.403 374.034 404.554 374.163 404.648C374.293 404.742 374.459 404.768 374.612 404.719L374.457 404.243ZM374.457 402.593H374.957C374.957 402.434 374.881 402.284 374.753 402.19C374.624 402.095 374.459 402.068 374.307 402.116L374.457 402.593ZM372.611 403.174L372.461 402.697C372.253 402.762 372.111 402.955 372.111 403.174H372.611ZM372.611 404.847L372.766 405.323C372.972 405.256 373.111 405.064 373.111 404.847H372.611ZM370.742 405.455H370.242C370.242 405.615 370.319 405.766 370.448 405.86C370.578 405.954 370.745 405.98 370.897 405.931L370.742 405.455ZM370.742 403.759H371.242C371.242 403.599 371.166 403.45 371.038 403.356C370.91 403.261 370.745 403.234 370.593 403.281L370.742 403.759ZM368.896 404.336L368.747 403.858C368.538 403.924 368.396 404.117 368.396 404.336H368.896ZM368.896 406.055L369.051 406.531C369.257 406.464 369.396 406.272 369.396 406.055H368.896ZM367.027 406.663H366.527C366.527 406.823 366.604 406.974 366.734 407.068C366.863 407.162 367.03 407.188 367.182 407.139L367.027 406.663ZM367.027 404.92H367.527C367.527 404.761 367.452 404.612 367.323 404.518C367.195 404.423 367.03 404.396 366.878 404.443L367.027 404.92ZM365.182 405.498L365.032 405.02C364.824 405.086 364.682 405.279 364.682 405.498H365.182ZM365.182 407.263L365.337 407.739C365.543 407.671 365.682 407.48 365.682 407.263H365.182ZM363.313 407.875H362.813C362.813 408.035 362.889 408.186 363.019 408.28C363.149 408.374 363.316 408.4 363.468 408.35L363.313 407.875ZM363.313 406.082H363.813C363.813 405.923 363.737 405.773 363.608 405.679C363.48 405.585 363.314 405.558 363.162 405.605L363.313 406.082ZM361.467 406.663L361.317 406.186C361.108 406.252 360.967 406.445 360.967 406.663H361.467ZM361.467 408.475L361.621 408.951C361.827 408.884 361.967 408.692 361.967 408.475H361.467ZM359.598 409.083H359.098C359.098 409.243 359.174 409.394 359.304 409.488C359.433 409.582 359.6 409.608 359.752 409.559L359.598 409.083ZM359.598 407.248H360.098C360.098 407.089 360.022 406.939 359.894 406.845C359.766 406.751 359.6 406.723 359.448 406.771L359.598 407.248ZM357.752 407.825L357.603 407.348C357.394 407.413 357.252 407.606 357.252 407.825H357.752ZM357.752 409.683L357.907 410.159C358.113 410.091 358.252 409.9 358.252 409.683H357.752ZM355.883 410.295H355.383C355.383 410.455 355.46 410.606 355.589 410.7C355.719 410.794 355.886 410.82 356.038 410.77L355.883 410.295ZM355.883 408.41H356.383C356.383 408.251 356.307 408.101 356.179 408.007C356.051 407.913 355.885 407.885 355.734 407.933L355.883 408.41ZM354.037 408.987L353.888 408.51C353.679 408.575 353.537 408.768 353.537 408.987H354.037ZM354.037 410.895L354.192 411.371C354.398 411.304 354.537 411.112 354.537 410.895H354.037ZM352.168 411.503H351.668C351.668 411.663 351.745 411.814 351.874 411.908C352.004 412.002 352.17 412.028 352.323 411.979L352.168 411.503ZM352.168 409.572H352.668C352.668 409.413 352.592 409.263 352.464 409.169C352.336 409.075 352.17 409.047 352.018 409.095L352.168 409.572ZM350.318 410.153L350.169 409.676C349.96 409.741 349.818 409.934 349.818 410.153H350.318ZM350.318 412.107L350.472 412.583C350.679 412.516 350.818 412.324 350.818 412.107H350.318ZM348.453 412.711H347.953C347.953 412.871 348.03 413.021 348.159 413.116C348.288 413.21 348.455 413.236 348.607 413.187L348.453 412.711ZM348.453 410.738H348.953C348.953 410.578 348.878 410.429 348.749 410.335C348.621 410.241 348.456 410.213 348.304 410.26L348.453 410.738ZM346.604 411.315L346.455 410.837C346.246 410.902 346.104 411.096 346.104 411.315H346.604ZM346.604 413.315L346.758 413.791C346.964 413.724 347.104 413.532 347.104 413.315H346.604ZM341.347 379.516L297.876 390.741L298.126 391.71L341.597 380.484L341.347 379.516ZM297.848 391.702L344.348 406.597L344.653 405.645L298.153 390.749L297.848 391.702ZM344.653 406.597L391.153 391.702L390.847 390.749L344.348 405.645L344.653 406.597ZM391.111 390.738L341.583 379.512L341.362 380.488L390.889 391.713L391.111 390.738ZM344.001 406.121V414H345.001V406.121H344.001ZM344.656 413.525L342.55 412.84L342.241 413.791L344.347 414.475L344.656 413.525ZM342.895 413.315V411.315H341.895V413.315H342.895ZM342.544 410.837L340.699 410.26L340.4 411.215L342.246 411.792L342.544 410.837ZM340.05 410.738V412.715H341.05V410.738H340.05ZM340.705 412.24L338.836 411.628L338.525 412.578L340.394 413.19L340.705 412.24ZM339.18 412.103V410.153H338.18V412.103H339.18ZM338.831 409.676L336.985 409.095L336.685 410.049L338.53 410.63L338.831 409.676ZM336.335 409.572V411.503H337.335V409.572H336.335ZM336.989 411.028L335.12 410.42L334.811 411.371L336.68 411.979L336.989 411.028ZM335.466 410.895V408.987H334.466V410.895H335.466ZM335.115 408.51L333.269 407.933L332.971 408.887L334.816 409.464L335.115 408.51ZM332.62 408.41V410.295H333.62V408.41H332.62ZM333.275 409.82L331.406 409.208L331.095 410.159L332.964 410.77L333.275 409.82ZM331.751 409.683V407.825H330.751V409.683H331.751ZM331.4 407.348L329.55 406.771L329.252 407.725L331.102 408.302L331.4 407.348ZM328.901 407.248V409.083H329.901V407.248H328.901ZM329.556 408.608L327.691 408L327.381 408.951L329.246 409.559L329.556 408.608ZM328.036 408.475V406.663H327.036V408.475H328.036ZM327.686 406.186L325.836 405.605L325.536 406.559L327.386 407.14L327.686 406.186ZM325.186 406.082V407.871H326.186V406.082H325.186ZM325.84 407.396L323.975 406.792L323.667 407.743L325.532 408.347L325.84 407.396ZM324.321 407.267V405.498H323.321V407.267H324.321ZM323.97 405.02L322.12 404.443L321.823 405.398L323.672 405.975L323.97 405.02ZM321.471 404.92V406.663H322.471V404.92H321.471ZM322.126 406.188L320.261 405.58L319.951 406.531L321.817 407.139L322.126 406.188ZM320.606 406.055V404.336H319.606V406.055H320.606ZM320.255 403.858L318.406 403.281L318.108 404.236L319.957 404.813L320.255 403.858ZM317.757 403.759V405.455H318.757V403.759H317.757ZM318.412 404.98L316.543 404.368L316.232 405.319L318.101 405.93L318.412 404.98ZM316.888 404.843V403.174H315.888V404.843H316.888ZM316.538 402.697L314.692 402.116L314.392 403.07L316.237 403.651L316.538 402.697ZM314.042 402.593V404.243H315.042V402.593H314.042ZM314.696 403.768L312.827 403.16L312.518 404.111L314.387 404.719L314.696 403.768ZM313.173 403.635V402.008H312.173V403.635H313.173ZM312.822 401.531L310.976 400.954L310.678 401.908L312.524 402.485L312.822 401.531ZM310.327 401.431V403.035H311.327V401.431H310.327ZM310.982 402.56L309.113 401.952L308.803 402.903L310.672 403.511L310.982 402.56ZM309.458 402.427V400.846H308.458V402.427H309.458ZM309.107 400.369L307.261 399.792L306.963 400.746L308.809 401.323L309.107 400.369ZM306.612 400.269V401.823H307.612V400.269H306.612ZM307.267 401.348L305.398 400.74L305.088 401.691L306.958 402.299L307.267 401.348ZM305.743 401.215V399.684H304.743V401.215H305.743ZM305.393 399.207L303.547 398.626L303.247 399.58L305.093 400.161L305.393 399.207ZM302.897 399.103V400.615H303.897V399.103H302.897ZM303.552 400.14L301.683 399.532L301.374 400.483L303.243 401.091L303.552 400.14ZM302.028 400.007V398.519H301.028V400.007H302.028ZM301.678 398.041L299.832 397.464L299.533 398.419L301.379 398.996L301.678 398.041ZM299.183 397.941V399.403H300.183V397.941H299.183ZM299.837 398.928L298.154 398.382L297.846 399.333L299.528 399.879L299.837 398.928ZM298.5 398.857V391.224H297.5V398.857H298.5ZM297.847 391.7L344.349 406.597L344.654 405.645L298.153 390.748L297.847 391.7ZM390.499 391.224V398.857H391.499V391.224H390.499ZM390.844 398.382L389.165 398.928L389.475 399.879L391.154 399.333L390.844 398.382ZM389.82 399.403V397.941H388.82V399.403H389.82ZM389.171 397.464L387.325 398.041L387.624 398.996L389.469 398.419L389.171 397.464ZM386.974 398.519V400.004H387.974V398.519H386.974ZM387.319 399.528L385.45 400.14L385.761 401.09L387.63 400.479L387.319 399.528ZM386.105 400.615V399.103H385.105V400.615H386.105ZM385.456 398.626L383.606 399.207L383.906 400.161L385.755 399.58L385.456 398.626ZM383.256 399.684V401.215H384.256V399.684H383.256ZM383.601 400.74L381.736 401.348L382.045 402.299L383.911 401.691L383.601 400.74ZM382.391 401.823V400.269H381.391V401.823H382.391ZM381.742 399.792L379.892 400.369L380.19 401.323L382.039 400.746L381.742 399.792ZM379.541 400.846V402.427H380.541V400.846H379.541ZM379.887 401.952L378.022 402.556L378.33 403.507L380.195 402.903L379.887 401.952ZM378.676 403.031V401.431H377.676V403.031H378.676ZM378.027 400.954L376.177 401.531L376.475 402.485L378.325 401.908L378.027 400.954ZM375.826 402.008V403.635H376.826V402.008H375.826ZM376.171 403.16L374.302 403.768L374.612 404.719L376.481 404.111L376.171 403.16ZM374.957 404.243V402.593H373.957V404.243H374.957ZM374.307 402.116L372.461 402.697L372.761 403.651L374.607 403.07L374.307 402.116ZM372.111 403.174V404.847H373.111V403.174H372.111ZM372.457 404.372L370.588 404.98L370.897 405.931L372.766 405.323L372.457 404.372ZM371.242 405.455V403.759H370.242V405.455H371.242ZM370.593 403.281L368.747 403.858L369.046 404.813L370.891 404.236L370.593 403.281ZM368.396 404.336V406.055H369.396V404.336H368.396ZM368.742 405.58L366.873 406.188L367.182 407.139L369.051 406.531L368.742 405.58ZM367.527 406.663V404.92H366.527V406.663H367.527ZM366.878 404.443L365.032 405.02L365.331 405.975L367.177 405.398L366.878 404.443ZM364.682 405.498V407.263H365.682V405.498H364.682ZM365.026 406.788L363.157 407.4L363.468 408.35L365.337 407.739L365.026 406.788ZM363.813 407.875V406.082H362.813V407.875H363.813ZM363.162 405.605L361.317 406.186L361.617 407.14L363.463 406.559L363.162 405.605ZM360.967 406.663V408.475H361.967V406.663H360.967ZM361.312 408L359.443 408.608L359.752 409.559L361.621 408.951L361.312 408ZM360.098 409.083V407.248H359.098V409.083H360.098ZM359.448 406.771L357.603 407.348L357.901 408.302L359.747 407.725L359.448 406.771ZM357.252 407.825V409.683H358.252V407.825H357.252ZM357.596 409.208L355.727 409.82L356.038 410.77L357.907 410.159L357.596 409.208ZM356.383 410.295V408.41H355.383V410.295H356.383ZM355.734 407.933L353.888 408.51L354.186 409.464L356.032 408.887L355.734 407.933ZM353.537 408.987V410.895H354.537V408.987H353.537ZM353.882 410.42L352.013 411.028L352.323 411.979L354.192 411.371L353.882 410.42ZM352.668 411.503V409.572H351.668V411.503H352.668ZM352.018 409.095L350.169 409.676L350.468 410.63L352.318 410.049L352.018 409.095ZM349.818 410.153V412.107H350.818V410.153H349.818ZM350.164 411.631L348.299 412.235L348.607 413.187L350.472 412.583L350.164 411.631ZM348.953 412.711V410.738H347.953V412.711H348.953ZM348.304 410.26L346.455 410.837L346.753 411.792L348.602 411.215L348.304 410.26ZM346.104 411.315V413.315H347.104V411.315H346.104ZM346.449 412.84L344.346 413.525L344.656 414.475L346.758 413.791L346.449 412.84ZM344.654 406.597L391.151 391.7L390.846 390.748L344.349 405.645L344.654 406.597Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    opacity: 0.5,\n    d: \"M623.75 972.5C623.75 983.365 616.978 993.757 604.634 1003.25C592.293 1012.73 574.419 1021.29 552.31 1028.48C508.096 1042.85 446.998 1051.75 379.5 1051.75C312.002 1051.75 250.904 1042.85 206.69 1028.48C184.581 1021.29 166.707 1012.73 154.366 1003.25C142.022 993.757 135.25 983.365 135.25 972.5C135.25 961.635 142.022 951.243 154.366 941.753C166.707 932.266 184.581 923.711 206.69 916.523C250.904 902.146 312.002 893.25 379.5 893.25C446.998 893.25 508.096 902.146 552.31 916.523C574.419 923.711 592.293 932.266 604.634 941.753C616.978 951.243 623.75 961.635 623.75 972.5Z\",\n    stroke: \"url(#paint20_linear_25_18)\",\n    strokeWidth: 0.5\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M639.125 924.728L638.875 924.732L638.875 924.732L639.125 924.728ZM633.14 879.344L633.382 879.282L633.382 879.282L633.14 879.344ZM631.077 871.659L631.318 871.593L631.077 871.659ZM625.975 844.856L625.725 844.856L625.725 844.862L625.975 844.856ZM626.888 830.061L627.136 830.093L627.137 830.087L626.888 830.061ZM625.798 803.275L626.034 803.193L626.034 803.193L625.798 803.275ZM607.954 788.924L607.941 788.675L607.933 788.675L607.924 788.676L607.954 788.924ZM597.788 792.25L597.665 792.032L597.662 792.034L597.788 792.25ZM587.574 795.446L587.554 795.695L587.574 795.696L587.594 795.695L587.574 795.446ZM577.213 792.206L577.339 791.99L577.331 791.986L577.323 791.981L577.213 792.206ZM533.208 766.035L533.37 765.845L533.37 765.845L533.208 766.035ZM529.371 762.658L529.537 762.472L529.537 762.472L529.371 762.658ZM510.43 750.386L510.494 750.144L510.43 750.386ZM482.201 754.438L482.117 754.203L482.117 754.203L482.201 754.438ZM431.587 777.03L431.722 777.241L431.722 777.241L431.587 777.03ZM425.653 780.999L425.794 781.206L425.794 781.206L425.653 780.999ZM406.536 791.532L406.46 791.294L406.459 791.294L406.536 791.532ZM406.381 791.582L406.304 791.344L406.245 791.363L406.202 791.408L406.381 791.582ZM405.218 792.776L404.969 792.789L404.997 793.362L405.397 792.951L405.218 792.776ZM403.693 762.449L403.943 762.436L403.943 762.436L403.693 762.449ZM402.198 741.391L401.95 741.419L402.198 741.391ZM396.515 709.35L396.271 709.401L396.271 709.401L396.515 709.35ZM395.393 703.991L395.149 704.041L395.149 704.042L395.393 703.991ZM377.225 574.683L376.976 574.701L376.976 574.701L377.225 574.683ZM359.449 521.911L359.613 521.722L359.613 521.722L359.449 521.911ZM330.141 513.595L329.967 513.774L330.057 513.862L330.181 513.842L330.141 513.595ZM329.362 512.835L329.537 512.656L329.415 512.537L329.26 512.607L329.362 512.835ZM328.959 513.017L329.062 513.245L329.062 513.245L328.959 513.017ZM317.98 535.968L317.73 535.96L317.73 535.96L317.98 535.968ZM319.489 581.108L319.24 581.124L319.24 581.124L319.489 581.108ZM321.082 613.548L320.832 613.552L320.832 613.552L321.082 613.548ZM317.542 679.832L317.293 679.81L317.293 679.81L317.542 679.832ZM314.689 716.809L314.439 716.795L314.689 716.809ZM313.621 742.687L313.371 742.679L313.371 742.679L313.621 742.687ZM301.201 836.074L301.437 836.156L301.437 836.156L301.201 836.074ZM296.476 848.724L296.243 848.634L296.243 848.634L296.476 848.724ZM286.952 894.742L287.202 894.739L287.202 894.723L287.199 894.707L286.952 894.742ZM287.005 899.139L287.255 899.14L287.255 899.136L287.005 899.139ZM286.65 903.327L286.896 903.369L286.896 903.368L286.65 903.327ZM286.29 907.931L286.04 907.934L286.041 907.939L286.29 907.931ZM292.758 1128.53L292.508 1128.53L292.758 1128.53ZM300.984 1228.25L301.234 1228.25L301.234 1228.23L301.229 1228.21L300.984 1228.25ZM300.998 1230.04L300.748 1230.04L300.748 1230.04L300.998 1230.04ZM307.365 1325.95L307.116 1325.97L307.365 1325.95ZM312.005 1470.33L311.756 1470.31L311.755 1470.32L312.005 1470.33ZM311.496 1473.29L311.256 1473.22L311.256 1473.22L311.496 1473.29ZM310.938 1476.44L311.182 1476.5L311.186 1476.48L311.187 1476.46L310.938 1476.44ZM310.103 1480.2L309.859 1480.14L309.82 1480.32L309.97 1480.41L310.103 1480.2ZM310.491 1480.44L310.624 1480.23L310.623 1480.23L310.491 1480.44ZM335.043 1492.39L334.98 1492.63L334.985 1492.64L335.043 1492.39ZM361.579 1496.45L361.601 1496.2L361.596 1496.2L361.579 1496.45ZM471.199 1487.34L471.284 1487.57L471.284 1487.57L471.199 1487.34ZM523.913 1460.16L523.802 1459.94L523.793 1459.94L523.785 1459.95L523.913 1460.16ZM530.932 1454.21L531.134 1454.35L531.14 1454.34L531.145 1454.34L530.932 1454.21ZM530.508 1445.65L530.262 1445.7L530.278 1445.79L530.344 1445.84L530.508 1445.65ZM502.609 1292.84L502.363 1292.88L502.609 1292.84ZM499.862 1210.84L500.104 1210.9L500.104 1210.9L499.862 1210.84ZM505.8 1193.36L506.034 1193.45L506.034 1193.45L505.8 1193.36ZM513.917 1164.31L514.166 1164.33L513.917 1164.31ZM514.248 1159.55L514.498 1159.56L514.498 1159.55L514.248 1159.55ZM515.543 1149.18L515.301 1149.11L515.299 1149.12L515.543 1149.18ZM524.837 1132.75L525.038 1132.9L524.837 1132.75ZM527.966 1128.44L528.171 1128.58L528.171 1128.58L527.966 1128.44ZM553.212 1043.62L553.46 1043.66L553.212 1043.62ZM581.979 955.11L582.181 954.962L581.991 954.703L581.787 954.951L581.979 955.11ZM619.524 964.474L619.496 964.226L619.488 964.227L619.48 964.228L619.524 964.474ZM626.115 962.133L626.251 962.343L626.258 962.339L626.265 962.334L626.115 962.133ZM629.951 947.8L630.201 947.788L630.2 947.779L629.951 947.8ZM630.081 939.907L630.13 939.662L629.864 939.608L629.832 939.878L630.081 939.907ZM637.466 936.514L637.684 936.636L637.69 936.624L637.466 936.514ZM639.142 927.793L638.892 927.792L638.892 927.802L638.893 927.811L639.142 927.793ZM624.664 844.245L624.414 844.244L624.414 844.248L624.664 844.245ZM624.676 844.888L624.926 844.882L624.926 844.882L624.676 844.888ZM629.824 872.006L630.065 871.94L630.065 871.94L629.824 872.006ZM631.88 879.665L631.638 879.727L631.638 879.727L631.88 879.665ZM637.842 927.791L637.592 927.79L637.592 927.8L637.593 927.811L637.842 927.791ZM636.347 935.854L636.562 935.981L636.568 935.972L636.573 935.962L636.347 935.854ZM629.877 938.431L629.99 938.208L629.99 938.208L629.877 938.431ZM629.122 938.05L629.235 937.827L628.944 937.68L628.877 937.998L629.122 938.05ZM628.947 938.879L628.702 938.827L628.7 938.839L628.947 938.879ZM628.653 947.865L628.903 947.853L628.902 947.842L628.653 947.865ZM625.34 961.091L625.474 961.302L625.482 961.297L625.489 961.291L625.34 961.091ZM619.297 963.196L619.271 962.948L619.263 962.949L619.254 962.95L619.297 963.196ZM582.577 953.703L582.784 953.563L582.577 953.703ZM582.129 953.041L582.336 952.901L582.164 952.647L581.95 952.867L582.129 953.041ZM581.327 953.866L581.148 953.692L581.142 953.698L581.135 953.706L581.327 953.866ZM551.924 1043.45L552.172 1043.48L551.924 1043.45ZM526.9 1127.7L526.695 1127.55L526.695 1127.55L526.9 1127.7ZM523.793 1131.98L523.994 1132.13L523.994 1132.13L523.793 1131.98ZM514.287 1148.84L514.045 1148.78L514.043 1148.79L514.287 1148.84ZM512.949 1159.48L513.199 1159.49L513.199 1159.48L512.949 1159.48ZM512.623 1164.19L512.374 1164.16L512.374 1164.16L512.623 1164.19ZM504.583 1192.9L504.349 1192.82L504.349 1192.82L504.583 1192.9ZM498.606 1210.5L498.364 1210.44L498.364 1210.44L498.606 1210.5ZM501.329 1293.07L501.083 1293.12L501.329 1293.07ZM529.315 1446.36L529.069 1446.41L529.086 1446.5L529.161 1446.56L529.315 1446.36ZM529.509 1446.52L529.355 1446.71L529.355 1446.71L529.509 1446.52ZM529.819 1453.53L530.021 1453.68L530.027 1453.67L530.033 1453.66L529.819 1453.53ZM523.245 1459.05L523.134 1458.82L523.125 1458.83L523.116 1458.83L523.245 1459.05ZM470.755 1486.11L470.84 1486.35L470.84 1486.35L470.755 1486.11ZM361.694 1495.15L361.716 1494.91L361.711 1494.91L361.694 1495.15ZM335.372 1491.14L335.309 1491.38L335.314 1491.38L335.372 1491.14ZM311.569 1479.58L311.325 1479.53L311.287 1479.7L311.437 1479.79L311.569 1479.58ZM312.219 1476.65L312.463 1476.7L312.467 1476.68L312.468 1476.67L312.219 1476.65ZM312.747 1473.64L312.507 1473.57L312.506 1473.57L312.747 1473.64ZM313.3 1470.45L313.051 1470.43L313.05 1470.44L313.3 1470.45ZM308.658 1325.83L308.409 1325.85L308.658 1325.83ZM302.297 1230.02L302.547 1230.02L302.297 1230.02ZM302.271 1228.13L302.521 1228.12L302.521 1228.1L302.517 1228.08L302.271 1228.13ZM294.057 1128.49L294.307 1128.48L294.307 1128.48L294.057 1128.49ZM287.59 907.895L287.34 907.897L287.34 907.902L287.59 907.895ZM287.937 903.508L288.184 903.549L288.184 903.548L287.937 903.508ZM288.305 899.123L288.555 899.124L288.555 899.119L288.305 899.123ZM288.246 894.644L288.496 894.641L288.495 894.625L288.493 894.61L288.246 894.644ZM297.688 849.195L297.455 849.105L297.455 849.105L297.688 849.195ZM302.43 836.498L302.194 836.417L302.194 836.417L302.43 836.498ZM314.92 742.733L314.671 742.724L314.92 742.733ZM315.987 716.882L316.237 716.896L316.237 716.896L315.987 716.882ZM318.838 679.946L319.087 679.968L318.838 679.946ZM322.382 613.529L322.632 613.525L322.632 613.525L322.382 613.529ZM320.786 581.023L320.537 581.039L320.537 581.039L320.786 581.023ZM319.28 536.009L319.03 536.001L319.03 536.002L319.28 536.009ZM329.095 514.389L329.27 514.21L329.144 514.088L328.985 514.165L329.095 514.389ZM329.71 514.989L329.536 515.168L329.628 515.257L329.753 515.235L329.71 514.989ZM330.038 514.932L329.996 514.685L329.995 514.685L330.038 514.932ZM358.597 522.891L358.761 522.702L358.76 522.702L358.597 522.891ZM375.93 574.78L375.681 574.799L375.681 574.799L375.93 574.78ZM394.122 704.255L394.367 704.205L394.367 704.205L394.122 704.255ZM395.245 709.617L395.49 709.566L395.49 709.565L395.245 709.617ZM400.908 741.537L400.659 741.565L400.659 741.565L400.908 741.537ZM402.396 762.515L402.646 762.502L402.396 762.515ZM404.07 795.819L403.821 795.832L403.849 796.405L404.249 795.994L404.07 795.819ZM407.087 792.721L407.01 792.483L406.951 792.502L406.908 792.546L407.087 792.721ZM426.387 782.073L426.528 782.279L426.387 782.073ZM432.29 778.124L432.155 777.914L432.155 777.914L432.29 778.124ZM482.643 755.661L482.727 755.897L482.643 755.661ZM510.097 751.642L510.161 751.4L510.161 751.4L510.097 751.642ZM528.506 763.627L528.34 763.814L528.34 763.814L528.506 763.627ZM532.367 767.024L532.529 766.834L532.529 766.834L532.367 767.024ZM576.646 793.376L576.787 793.169L576.772 793.159L576.755 793.151L576.646 793.376ZM598.351 793.422L598.229 793.205L598.22 793.21L598.211 793.215L598.351 793.422ZM608.023 790.222L608.01 789.973L608.001 789.973L607.992 789.974L608.023 790.222ZM624.571 803.701L624.335 803.783L624.335 803.783L624.571 803.701ZM625.596 829.927L625.845 829.957L625.845 829.953L625.596 829.927ZM405.398 794.535L405.552 794.732L405.687 794.626L405.637 794.461L405.398 794.535ZM386.434 732.883L386.467 732.635L386.081 732.584L386.195 732.956L386.434 732.883ZM386.69 732.916L386.657 733.164L387.141 733.227L386.91 732.798L386.69 732.916ZM386.155 731.923L385.906 731.939L385.909 731.993L385.935 732.041L386.155 731.923ZM378.482 615.102L378.398 614.866L378.221 614.93L378.233 615.118L378.482 615.102ZM378.698 615.024L378.782 615.26L379.043 615.167L378.924 614.917L378.698 615.024ZM378.442 614.487L378.192 614.503L378.195 614.551L378.216 614.594L378.442 614.487ZM374.197 549.859L374.447 549.842L374.441 549.753L374.38 549.688L374.197 549.859ZM340.16 513.565L340.342 513.394L340.171 513.211L339.989 513.382L340.16 513.565ZM339.212 514.453L339.041 514.271L338.858 514.442L339.029 514.624L339.212 514.453ZM372.931 550.409L373.181 550.393L373.175 550.303L373.114 550.238L372.931 550.409ZM376.932 611.32L376.706 611.427L377.267 612.602L377.181 611.303L376.932 611.32ZM329.067 510.978L329.292 510.871L328.736 509.704L328.817 510.994L329.067 510.978ZM332.315 562.489L332.552 562.567L332.567 562.522L332.564 562.473L332.315 562.489ZM326.63 579.718L326.716 579.953L326.83 579.911L326.867 579.797L326.63 579.718ZM319.262 582.42L319.176 582.185L318.883 582.293L319.052 582.555L319.262 582.42ZM345.997 623.872L345.893 624.099L346.669 624.452L346.207 623.736L345.997 623.872ZM320.246 612.148L320.35 611.921L319.674 611.613L320.026 612.266L320.246 612.148ZM338.784 646.608L339.017 646.699L339.059 646.591L339.004 646.489L338.784 646.608ZM315.685 705.957L315.527 706.151L315.794 706.368L315.918 706.048L315.685 705.957ZM315.4 705.725L315.558 705.531L315.192 705.233L315.151 705.703L315.4 705.725ZM315.292 706.967L315.043 706.945L315.04 706.982L315.047 707.018L315.292 706.967ZM315.313 707.069L315.562 707.085L315.564 707.051L315.558 707.018L315.313 707.069ZM309.101 803.693L308.851 803.677L308.842 803.831L308.975 803.909L309.101 803.693ZM339.273 821.217L339.148 821.434L339.208 821.468L339.277 821.467L339.273 821.217ZM371.775 820.784L371.778 821.034L371.862 821.032L371.928 820.981L371.775 820.784ZM385.018 732.697L385.257 732.623L385.21 732.47L385.051 732.449L385.018 732.697ZM403.892 794.061L404.046 794.258L404.182 794.152L404.131 793.987L403.892 794.061ZM371.319 819.49L371.322 819.74L371.406 819.738L371.473 819.687L371.319 819.49ZM339.971 819.908L339.726 819.959L339.768 820.161L339.975 820.158L339.971 819.908ZM316.973 708.678L317.13 708.484L316.586 708.042L316.728 708.729L316.973 708.678ZM339.127 726.678L338.969 726.872L339.024 726.917L339.095 726.926L339.127 726.678ZM339.309 726.702L339.342 726.454L339.341 726.454L339.309 726.702ZM377.211 615.556L377.46 615.54L377.438 615.209L377.127 615.321L377.211 615.556ZM384.672 729.165L384.452 729.283L384.997 730.297L384.921 729.149L384.672 729.165ZM340.212 646.52L339.979 646.429L339.937 646.537L339.992 646.639L340.212 646.52ZM348.241 625.894L348.157 625.658L348.049 625.697L348.008 625.803L348.241 625.894ZM339.593 648.112L339.813 647.994L339.557 647.517L339.36 648.022L339.593 648.112ZM384.343 731.297L384.311 731.545L384.794 731.609L384.563 731.179L384.343 731.297ZM339.661 725.437L339.503 725.631L339.558 725.676L339.629 725.685L339.661 725.437ZM316.744 706.817L316.511 706.727L316.445 706.896L316.586 707.011L316.744 706.817ZM330.785 517.604L331.011 517.497L330.455 516.33L330.536 517.62L330.785 517.604ZM376.906 614.285L376.99 614.52L377.251 614.427L377.131 614.177L376.906 614.285ZM348.009 624.596L347.799 624.732L347.907 624.898L348.094 624.832L348.009 624.596ZM321.234 583.081L321.148 582.846L320.855 582.953L321.024 583.216L321.234 583.081ZM327.667 580.723L327.753 580.958L327.867 580.916L327.905 580.801L327.667 580.723ZM333.628 562.659L333.865 562.737L333.88 562.691L333.877 562.643L333.628 562.659ZM323.218 614.93L323.321 614.702L322.646 614.395L322.997 615.048L323.218 614.93ZM346.914 625.718L347.147 625.809L347.233 625.589L347.018 625.491L346.914 625.718ZM339.403 645.016L339.183 645.135L339.44 645.612L339.636 645.107L339.403 645.016ZM316.306 711.875L316.551 711.825L316.175 710.009L316.057 711.859L316.306 711.875ZM338.513 819.274L338.387 819.49L338.871 819.771L338.758 819.224L338.513 819.274ZM310.45 802.973L310.2 802.957L310.19 803.112L310.324 803.19L310.45 802.973ZM520.648 837.185L520.797 837.385L520.939 837.28L520.887 837.111L520.648 837.185ZM505.779 789.014L506.018 788.94L505.831 788.333L505.554 788.905L505.779 789.014ZM489.699 822.225L489.785 822.46L489.88 822.425L489.924 822.334L489.699 822.225ZM467.197 830.545L467.042 830.741L467.152 830.828L467.284 830.78L467.197 830.545ZM412.044 786.981L412.199 786.785L411.376 786.134L411.818 787.086L412.044 786.981ZM413.193 789.456L412.966 789.561L412.966 789.561L413.193 789.456ZM433.899 837.778L434.149 837.775L434.149 837.775L433.899 837.778ZM433.899 837.788L434.119 837.907L434.15 837.849L434.149 837.784L433.899 837.788ZM433.804 838.305L433.556 838.339L433.557 838.339L433.804 838.305ZM463.956 858.232L463.83 858.448L463.83 858.448L463.956 858.232ZM464.112 858.323L463.986 858.539L464.046 858.574L464.115 858.573L464.112 858.323ZM492.667 857.942L492.67 858.192L492.751 858.191L492.816 858.143L492.667 857.942ZM505.512 792.551L505.751 792.478L505.564 791.871L505.287 792.442L505.512 792.551ZM519.137 836.691L519.286 836.892L519.428 836.786L519.376 836.617L519.137 836.691ZM492.231 856.65L492.234 856.9L492.315 856.899L492.38 856.851L492.231 856.65ZM464.455 857.02L464.328 857.236L464.389 857.271L464.458 857.27L464.455 857.02ZM435.156 838.198L434.913 838.139L434.886 838.25L434.953 838.344L435.156 838.198ZM425.234 812.85L425.005 812.951L425.005 812.951L425.234 812.85ZM415.512 791.377L415.667 791.181L414.849 790.535L415.285 791.482L415.512 791.377ZM466.963 832.018L466.808 832.214L466.918 832.301L467.05 832.252L466.963 832.018ZM490.64 823.263L490.726 823.498L490.82 823.463L490.864 823.373L490.64 823.263ZM490.755 823.028L490.979 823.138L490.98 823.137L490.755 823.028ZM553.489 813.189L553.714 813.298L553.823 813.073L553.598 812.964L553.489 813.189ZM505.799 790.135L505.908 789.909L505.859 789.886L505.804 789.885L505.799 790.135ZM484.724 789.768L484.493 789.673L484.355 790.012L484.72 790.018L484.724 789.768ZM501.331 749.078L501.562 749.172L501.799 748.593L501.228 748.85L501.331 749.078ZM410.866 789.781L410.764 789.553L409.745 790.011L410.862 790.031L410.866 789.781ZM482.804 791.034L483.035 791.128L483.173 790.79L482.808 790.784L482.804 791.034ZM466.318 831.429L466.086 831.334L466.024 831.486L466.139 831.603L466.318 831.429ZM491.983 857.748L491.804 857.923L491.978 858.102L492.157 857.927L491.983 857.748ZM492.912 856.841L493.087 857.02L493.266 856.845L493.091 856.666L492.912 856.841ZM467.842 831.131L467.61 831.037L467.548 831.188L467.663 831.306L467.842 831.131ZM484.199 791.058L484.203 790.808L484.032 790.805L483.967 790.964L484.199 791.058ZM505.492 791.43L505.601 791.204L505.552 791.181L505.497 791.18L505.492 791.43ZM552.924 814.359L552.815 814.584L553.04 814.693L553.149 814.468L552.924 814.359ZM416.698 788.583L416.595 788.355L415.576 788.813L416.694 788.833L416.698 788.583ZM498.899 751.598L499.131 751.692L499.367 751.113L498.797 751.37L498.899 751.598ZM483.331 789.743L483.327 789.993L483.498 789.996L483.563 789.838L483.331 789.743ZM532.427 848.996L532.601 849.176L532.781 849.003L532.607 848.823L532.427 848.996ZM519.506 835.599L519.686 835.426L519.357 835.085L519.261 835.548L519.506 835.599ZM512.853 867.787L512.608 867.736L512.558 867.981L512.802 868.032L512.853 867.787ZM514.126 868.051L514.075 868.296L514.32 868.347L514.371 868.102L514.126 868.051ZM520.28 838.274L520.46 838.101L520.131 837.76L520.035 838.224L520.28 838.274ZM531.492 849.9L531.312 850.074L531.486 850.254L531.666 850.08L531.492 849.9ZM482.089 938.99L482.238 939.191L482.438 939.042L482.29 938.841L482.089 938.99ZM481.702 938.469L481.453 938.455L481.448 938.545L481.501 938.617L481.702 938.469ZM481.737 937.83L481.986 937.843L481.998 937.624L481.783 937.584L481.737 937.83ZM415.645 907.262L415.752 907.036L415.752 907.036L415.645 907.262ZM415.509 907.198L415.616 906.972L415.563 906.947L415.505 906.948L415.509 907.198ZM352.975 908.032L352.972 907.782L352.893 907.784L352.828 907.83L352.975 908.032ZM287.203 955.829L287.056 955.627L286.854 955.774L287.001 955.976L287.203 955.829ZM287.967 956.88L287.765 957.027L287.912 957.229L288.114 957.082L287.967 956.88ZM353.405 909.327L353.402 909.077L353.322 909.078L353.258 909.125L353.405 909.327ZM415.224 908.501L415.331 908.276L415.279 908.251L415.221 908.251L415.224 908.501ZM626.591 855.713L626.829 855.789L626.905 855.551L626.667 855.475L626.591 855.713ZM625.354 855.314L625.43 855.076L625.192 854.999L625.116 855.237L625.354 855.314ZM606.652 913.442L606.864 913.574L606.881 913.548L606.89 913.519L606.652 913.442ZM582.114 952.717L581.889 952.825L582.085 953.236L582.326 952.85L582.114 952.717ZM571.631 930.756L571.857 930.648L571.823 930.579L571.757 930.54L571.631 930.756ZM542.817 913.871L542.943 913.656L542.847 913.6L542.741 913.633L542.817 913.871ZM542.541 913.959L542.616 914.197L542.617 914.197L542.541 913.959ZM493.004 929.611L492.759 929.663L492.816 929.933L493.079 929.85L493.004 929.611ZM487.767 904.71L488.012 904.659L487.993 904.57L487.922 904.514L487.767 904.71ZM468.479 889.541L468.23 889.569L468.242 889.673L468.324 889.738L468.479 889.541ZM464.929 857.599L465.177 857.572L465.15 857.323L464.901 857.351L464.929 857.599ZM463.637 857.743L463.609 857.495L463.361 857.522L463.388 857.771L463.637 857.743ZM467.247 890.226L466.998 890.253L467.01 890.357L467.092 890.422L467.247 890.226ZM486.59 905.44L486.835 905.388L486.816 905.299L486.745 905.243L486.59 905.44ZM492.028 931.281L491.784 931.333L491.84 931.603L492.103 931.52L492.028 931.281ZM542.658 915.286L542.785 915.071L542.689 915.014L542.583 915.048L542.658 915.286ZM570.63 931.676L570.856 931.568L570.823 931.499L570.757 931.46L570.63 931.676ZM581.962 955.415L581.736 955.523L581.933 955.934L582.174 955.547L581.962 955.415ZM607.864 913.916L608.076 914.049L608.092 914.022L608.102 913.993L607.864 913.916ZM610.36 861.244L610.604 861.296L610.657 861.052L610.413 860.999L610.36 861.244ZM609.091 860.97L609.143 860.726L608.899 860.673L608.846 860.917L609.091 860.97ZM601.85 894.602L602.04 894.765L602.081 894.717L602.095 894.655L601.85 894.602ZM570.638 930.791L570.449 930.627L570.439 930.638L570.431 930.651L570.638 930.791ZM521.69 1003.31L521.483 1003.17L521.457 1003.2L521.447 1003.25L521.69 1003.31ZM521.662 1003.42L521.419 1003.37L521.418 1003.37L521.662 1003.42ZM494.005 1124.82L493.761 1124.76L493.755 1124.79L493.755 1124.82L494.005 1124.82ZM494.006 1124.89L493.756 1124.89L493.756 1124.89L494.006 1124.89ZM494.983 1240.93L495.162 1241.11L495.234 1241.04L495.233 1240.93L494.983 1240.93ZM460.921 1275.73L460.964 1275.97L461.043 1275.96L461.099 1275.9L460.921 1275.73ZM371.989 1291.37L371.82 1291.55L371.911 1291.64L372.032 1291.62L371.989 1291.37ZM302.061 1227.65L302.229 1227.47L302.044 1227.3L301.876 1227.48L302.061 1227.65ZM301.185 1228.61L301 1228.45L300.832 1228.63L301.017 1228.8L301.185 1228.61ZM371.586 1292.76L371.418 1292.95L371.509 1293.03L371.63 1293.01L371.586 1292.76ZM371.899 1292.71L371.856 1292.46L371.855 1292.46L371.899 1292.71ZM461.556 1276.93L461.6 1277.18L461.679 1277.17L461.735 1277.11L461.556 1276.93ZM496.287 1241.46L496.465 1241.64L496.538 1241.56L496.537 1241.46L496.287 1241.46ZM495.308 1124.95L495.064 1124.9L495.057 1124.93L495.058 1124.96L495.308 1124.95ZM522.901 1003.83L522.694 1003.69L522.668 1003.73L522.657 1003.77L522.901 1003.83ZM571.67 931.578L571.481 931.415L571.471 931.426L571.463 931.438L571.67 931.578ZM603.052 895.201L603.241 895.365L603.283 895.316L603.297 895.253L603.052 895.201ZM603.087 895.038L602.842 894.985L602.842 894.986L603.087 895.038ZM607.876 913.556L607.938 913.799L608.18 913.737L608.118 913.495L607.876 913.556ZM603.015 894.479L603.257 894.417L603.231 894.315L603.14 894.263L603.015 894.479ZM602.781 894.343L602.654 894.559L602.656 894.56L602.781 894.343ZM560.456 869.347L560.583 869.132L560.509 869.088L560.424 869.099L560.456 869.347ZM516.205 875.117L516.172 874.869L515.925 874.902L515.957 875.149L516.205 875.117ZM516.372 876.407L516.124 876.439L516.156 876.687L516.404 876.655L516.372 876.407ZM560.179 870.695L560.306 870.48L560.232 870.436L560.147 870.447L560.179 870.695ZM601.887 895.324L602.13 895.263L602.104 895.162L602.015 895.109L601.887 895.324ZM606.616 913.879L606.373 913.941L606.435 914.184L606.678 914.122L606.616 913.879ZM574.102 836.458L574.335 836.548L574.425 836.316L574.193 836.225L574.102 836.458ZM572.891 835.985L572.982 835.752L572.749 835.661L572.658 835.894L572.891 835.985ZM559.712 869.785L559.942 869.884L559.945 869.876L559.712 869.785ZM540.334 914.824L540.53 914.98L540.551 914.954L540.564 914.923L540.334 914.824ZM487.84 980.8L487.886 981.046L487.977 981.028L488.035 980.956L487.84 980.8ZM429.159 991.991L429.112 991.746L428.867 991.792L428.914 992.038L429.159 991.991ZM429.403 993.269L429.157 993.316L429.204 993.561L429.45 993.515L429.403 993.269ZM488.555 981.987L488.602 982.232L488.694 982.215L488.751 982.142L488.555 981.987ZM488.706 981.797L488.51 981.641L488.51 981.641L488.706 981.797ZM541.459 915.496L541.655 915.651L541.674 915.627L541.687 915.599L541.459 915.496ZM541.495 915.417L541.723 915.52L541.725 915.515L541.495 915.417ZM560.915 870.278L561.145 870.377L561.148 870.369L560.915 870.278ZM626.258 835.869L626.47 836.002L626.603 835.79L626.391 835.657L626.258 835.869ZM625.154 835.181L625.286 834.968L625.074 834.836L624.942 835.048L625.154 835.181ZM609.534 860.187L609.392 860.393L609.607 860.541L609.746 860.319L609.534 860.187ZM574.274 835.968L574.038 835.885L573.975 836.066L574.133 836.174L574.274 835.968ZM588.73 794.772L588.966 794.855L589.173 794.262L588.615 794.55L588.73 794.772ZM552.744 813.282L552.63 813.06L552.567 813.092L552.53 813.152L552.744 813.282ZM552.647 813.441L552.434 813.312L552.432 813.313L552.647 813.441ZM513.096 879.853L512.881 879.725L512.872 879.74L512.865 879.756L513.096 879.853ZM491.986 930.032L492.135 930.233L492.19 930.192L492.216 930.129L491.986 930.032ZM464.577 950.382L464.428 950.181L464.406 950.198L464.387 950.22L464.577 950.382ZM428.697 992.313L428.507 992.151L428.472 992.191L428.457 992.243L428.697 992.313ZM428.658 992.446L428.898 992.516L428.898 992.516L428.658 992.446ZM416.328 1034.29L416.089 1034.22L416.05 1034.35L416.139 1034.46L416.328 1034.29ZM416.559 1034.56L416.749 1034.4L416.748 1034.4L416.559 1034.56ZM494.162 1125.31L494.353 1125.15L494.352 1125.15L494.162 1125.31ZM515.121 1150.27L514.929 1150.43L515.2 1150.75L515.353 1150.36L515.121 1150.27ZM551.268 1057.84L551.501 1057.93L551.543 1057.82L551.49 1057.72L551.268 1057.84ZM522.794 1003.12L523.016 1003L522.985 1002.94L522.928 1002.91L522.794 1003.12ZM522.649 1003.02L522.513 1003.23L522.515 1003.23L522.649 1003.02ZM488.552 980.849L488.688 980.639L488.479 980.503L488.343 980.712L488.552 980.849ZM487.843 981.938L487.633 981.802L487.497 982.011L487.706 982.148L487.843 981.938ZM521.797 1004.02L522.019 1003.9L521.988 1003.85L521.933 1003.81L521.797 1004.02ZM549.843 1057.91L550.076 1058.01L550.117 1057.9L550.065 1057.8L549.843 1057.91ZM514.709 1147.75L514.518 1147.91L514.789 1148.24L514.942 1147.84L514.709 1147.75ZM495.155 1124.47L495.346 1124.31L495.345 1124.3L495.155 1124.47ZM417.774 1033.99L417.534 1033.92L417.496 1034.05L417.584 1034.15L417.774 1033.99ZM429.865 992.947L429.675 992.784L429.641 992.825L429.626 992.876L429.865 992.947ZM465.517 951.283L465.368 951.083L465.345 951.099L465.327 951.121L465.517 951.283ZM493.045 930.863L493.194 931.064L493.249 931.023L493.276 930.96L493.045 930.863ZM514.253 880.437L514.038 880.309L514.029 880.324L514.022 880.34L514.253 880.437ZM553.67 814.267L553.556 814.045L553.492 814.077L553.456 814.139L553.67 814.267ZM586.423 797.421L586.659 797.504L586.867 796.912L586.309 797.199L586.423 797.421ZM572.72 836.476L572.484 836.393L572.42 836.573L572.578 836.682L572.72 836.476ZM609.917 862.027L609.775 862.233L609.991 862.381L610.129 862.159L609.917 862.027ZM417.061 1034.79L417.064 1035.04L417.314 1035.04L417.311 1034.79L417.061 1034.79ZM417.043 1033.49L417.293 1033.49L417.29 1033.24L417.04 1033.24L417.043 1033.49ZM351.71 1034.36L351.706 1034.11L351.598 1034.11L351.525 1034.19L351.71 1034.36ZM292.088 1099.44L291.904 1099.27L291.735 1099.46L291.919 1099.63L292.088 1099.44ZM293.047 1100.32L292.878 1100.51L293.062 1100.67L293.231 1100.49L293.047 1100.32ZM352.288 1035.65L352.285 1035.4L352.177 1035.41L352.104 1035.49L352.288 1035.65ZM515.152 1149.61L515.243 1149.85L515.476 1149.76L515.385 1149.52L515.152 1149.61ZM514.676 1148.4L514.909 1148.31L514.818 1148.08L514.585 1148.17L514.676 1148.4ZM431.675 1180.96L431.679 1181.21L431.724 1181.21L431.767 1181.2L431.675 1180.96ZM342.075 1182.16L341.92 1182.36L341.99 1182.41L342.078 1182.41L342.075 1182.16ZM294.328 1144.79L294.482 1144.59L294.285 1144.44L294.131 1144.64L294.328 1144.79ZM293.527 1145.81L293.33 1145.66L293.176 1145.85L293.373 1146.01L293.527 1145.81ZM341.635 1183.47L341.48 1183.66L341.55 1183.72L341.638 1183.72L341.635 1183.47ZM432.04 1182.21L432.043 1182.46L432.089 1182.46L432.131 1182.45L432.04 1182.21ZM523.715 864.316L523.812 864.546L524.042 864.449L523.945 864.219L523.715 864.316ZM523.21 863.118L523.44 863.021L523.343 862.789L523.112 862.888L523.21 863.118ZM513.031 867.46L512.932 867.23L512.888 867.249L512.854 867.283L513.031 867.46ZM495.249 885.266L495.285 885.514L495.367 885.502L495.426 885.443L495.249 885.266ZM467.769 889.24L467.733 888.993L467.71 888.996L467.688 889.004L467.769 889.24ZM415.695 907.05L415.471 907.162L415.569 907.357L415.775 907.287L415.695 907.05ZM371.291 818.17L371.514 818.058L371.192 817.413L371.046 818.119L371.291 818.17ZM352.554 908.546L352.309 908.496L352.304 908.519L352.304 908.544L352.554 908.546ZM351.349 1035L351.598 1035.02L351.599 1035.01L351.599 1035L351.349 1035ZM341.199 1182.88L340.949 1182.86L340.946 1182.9L340.958 1182.94L341.199 1182.88ZM371.106 1292.04L371.341 1292.12L371.368 1292.05L371.347 1291.97L371.106 1292.04ZM313.176 1451.1L312.941 1451.02L312.884 1451.17L313.004 1451.28L313.176 1451.1ZM360.972 1496.07L361.221 1496.08L361.227 1495.96L361.143 1495.89L360.972 1496.07ZM360.95 1496.51L360.7 1496.5L360.686 1496.78L360.97 1496.76L360.95 1496.51ZM361.401 1496.47L361.572 1496.29L361.492 1496.21L361.381 1496.22L361.401 1496.47ZM361.698 1496.75L361.527 1496.93L361.722 1497.11L361.891 1496.91L361.698 1496.75ZM361.964 1496.42L361.944 1496.18L361.838 1496.18L361.771 1496.27L361.964 1496.42ZM471.301 1487.35L471.322 1487.6L471.426 1487.59L471.493 1487.51L471.301 1487.35ZM526.352 1421.54L526.544 1421.7L526.698 1421.51L526.521 1421.35L526.352 1421.54ZM525.892 1421.12L525.723 1421.3L525.724 1421.3L525.892 1421.12ZM467.193 1367.52L466.949 1367.46L466.916 1367.6L467.024 1367.7L467.193 1367.52ZM496.268 1241.34L496.512 1241.4L496.568 1241.16L496.325 1241.1L496.268 1241.34ZM495.002 1241.05L495.059 1240.81L494.815 1240.75L494.759 1241L495.002 1241.05ZM466.073 1366.59L465.917 1366.78L466.227 1367.03L466.316 1366.64L466.073 1366.59ZM372.358 1291.69L372.117 1291.75L372.139 1291.83L372.202 1291.88L372.358 1291.69ZM342.511 1182.74L342.262 1182.73L342.259 1182.77L342.27 1182.81L342.511 1182.74ZM352.648 1035.05L352.897 1035.07L352.898 1035.06L352.898 1035.05L352.648 1035.05ZM353.841 908.685L353.596 908.635L353.591 908.659L353.591 908.683L353.841 908.685ZM371.802 822.103L372.025 821.991L371.703 821.346L371.557 822.052L371.802 822.103ZM415.038 908.648L414.814 908.759L414.912 908.955L415.119 908.884L415.038 908.648ZM468.072 890.497L468.036 890.25L468.013 890.253L467.991 890.261L468.072 890.497ZM495.861 886.49L495.897 886.737L495.979 886.725L496.038 886.666L495.861 886.49ZM513.859 868.469L513.762 868.238L513.717 868.257L513.682 868.292L513.859 868.469ZM466.543 1368.68L466.712 1368.5L466.517 1368.32L466.35 1368.52L466.543 1368.68ZM524.556 1421.66L524.748 1421.82L524.902 1421.64L524.725 1421.47L524.556 1421.66ZM470.652 1486.1L470.673 1486.35L470.777 1486.34L470.844 1486.26L470.652 1486.1ZM363.11 1495.03L362.917 1494.87L362.543 1495.32L363.131 1495.27L363.11 1495.03ZM372.374 1293.36L372.53 1293.17L372.149 1292.86L372.124 1293.35L372.374 1293.36ZM465.555 1367.84L465.749 1368L465.909 1367.8L465.711 1367.64L465.555 1367.84ZM362.384 1493.86L362.135 1493.85L362.097 1494.61L362.578 1494.02L362.384 1493.86ZM314.691 1450.74L314.456 1450.65L314.4 1450.81L314.52 1450.92L314.691 1450.74ZM370.924 1296.34L371.174 1296.35L371.257 1294.69L370.69 1296.25L370.924 1296.34ZM361.058 1494.36L360.887 1494.55L361.281 1494.92L361.308 1494.38L361.058 1494.36ZM639.375 924.725C639.169 909.395 637.158 894.142 633.382 879.282L632.898 879.406C636.664 894.227 638.67 909.441 638.875 924.732L639.375 924.725ZM633.382 879.282C632.729 876.715 632.024 874.154 631.318 871.593L630.836 871.726C631.542 874.287 632.246 876.844 632.898 879.406L633.382 879.282ZM631.318 871.593C628.916 862.881 626.446 853.91 626.225 844.849L625.725 844.862C625.948 853.994 628.437 863.025 630.836 871.726L631.318 871.593ZM626.225 844.855C626.206 839.919 626.511 834.988 627.136 830.093L626.64 830.029C626.012 834.946 625.706 839.899 625.725 844.856L626.225 844.855ZM627.137 830.087C628.067 821.162 629.039 811.862 626.034 803.193L625.562 803.357C628.524 811.903 627.572 821.088 626.64 830.035L627.137 830.087ZM626.034 803.193C624.769 799.541 622.456 795.802 619.359 793.03C616.26 790.256 612.363 788.442 607.941 788.675L607.967 789.174C612.227 788.95 616 790.695 619.025 793.403C622.053 796.112 624.321 799.776 625.562 803.357L626.034 803.193ZM607.924 788.676C604.317 789.108 600.83 790.248 597.665 792.032L597.911 792.468C601.019 790.716 604.442 789.597 607.984 789.173L607.924 788.676ZM597.662 792.034C594.572 793.83 591.118 794.911 587.554 795.196L587.594 795.695C591.232 795.404 594.758 794.3 597.914 792.466L597.662 792.034ZM587.594 795.196C583.979 794.906 580.475 793.811 577.339 791.99L577.088 792.423C580.289 794.281 583.865 795.399 587.554 795.695L587.594 795.196ZM577.323 791.981C562.114 784.6 546.425 776.983 533.37 765.845L533.046 766.226C546.157 777.411 561.906 785.055 577.104 792.431L577.323 791.981ZM533.37 765.845C532.086 764.75 530.815 763.614 529.537 762.472L529.204 762.844C530.481 763.986 531.756 765.126 533.046 766.226L533.37 765.845ZM529.537 762.472C523.876 757.413 517.97 752.127 510.494 750.144L510.366 750.627C517.706 752.575 523.525 757.769 529.204 762.844L529.537 762.472ZM510.494 750.144C500.665 747.536 490.338 751.252 482.117 754.203L482.286 754.674C490.539 751.711 500.713 748.067 510.366 750.627L510.494 750.144ZM482.117 754.203C464.951 760.365 447.168 766.748 431.452 776.82L431.722 777.241C447.382 767.205 465.111 760.839 482.286 754.674L482.117 754.203ZM431.452 776.82C429.449 778.103 427.445 779.472 425.512 780.793L425.794 781.206C427.728 779.884 429.726 778.52 431.722 777.241L431.452 776.82ZM425.512 780.793C419.521 784.886 413.36 789.092 406.46 791.294L406.612 791.77C413.594 789.542 419.814 785.291 425.794 781.206L425.512 780.793ZM406.459 791.294L406.304 791.344L406.458 791.82L406.612 791.77L406.459 791.294ZM406.202 791.408L405.039 792.602L405.397 792.951L406.56 791.756L406.202 791.408ZM405.468 792.764L403.943 762.436L403.443 762.461L404.969 792.789L405.468 792.764ZM403.943 762.436C403.595 755.53 403.236 748.379 402.447 741.363L401.95 741.419C402.738 748.417 403.096 755.553 403.443 762.461L403.943 762.436ZM402.447 741.363C401.231 730.555 398.956 719.742 396.76 709.299L396.271 709.401C398.468 719.849 400.737 730.639 401.95 741.419L402.447 741.363ZM396.76 709.299C396.385 707.512 396.011 705.726 395.638 703.94L395.149 704.042C395.521 705.828 395.895 707.614 396.271 709.401L396.76 709.299ZM395.638 703.94C386.8 661.285 380.733 618.103 377.475 574.664L376.976 574.701C380.236 618.162 386.306 661.365 395.149 704.041L395.638 703.94ZM377.475 574.664C376.811 565.783 376.064 555.788 373.629 546.402C371.193 537.013 367.063 528.209 359.613 521.722L359.285 522.099C366.631 528.496 370.724 537.194 373.145 546.527C375.567 555.863 376.312 565.812 376.976 574.701L377.475 574.664ZM359.613 521.722C355.601 518.259 350.881 515.716 345.784 514.269L345.647 514.75C350.675 516.177 355.33 518.685 359.286 522.1L359.613 521.722ZM345.784 514.269C340.686 512.823 335.334 512.509 330.102 513.348L330.181 513.842C335.341 513.014 340.62 513.324 345.647 514.75L345.784 514.269ZM330.316 513.416L329.537 512.656L329.188 513.014L329.967 513.774L330.316 513.416ZM329.26 512.607L328.857 512.789L329.062 513.245L329.465 513.063L329.26 512.607ZM328.857 512.789C321.82 515.951 318.113 523.8 317.73 535.96L318.23 535.975C318.61 523.881 322.291 516.288 329.062 513.245L328.857 512.789ZM317.73 535.96C317.256 551.044 318.266 566.342 319.24 581.124L319.739 581.091C318.764 566.305 317.757 551.032 318.23 535.975L317.73 535.96ZM319.24 581.124C319.941 591.756 320.665 602.743 320.832 613.552L321.332 613.544C321.165 602.72 320.44 591.721 319.739 581.091L319.24 581.124ZM320.832 613.552C321.2 635.63 319.202 658.1 317.293 679.81L317.791 679.854C319.7 658.149 321.7 635.652 321.332 613.544L320.832 613.552ZM317.293 679.81C316.229 691.921 315.128 704.449 314.439 716.795L314.938 716.823C315.626 704.487 316.727 691.966 317.791 679.854L317.293 679.81ZM314.439 716.795C313.96 725.39 313.661 734.181 313.371 742.679L313.871 742.696C314.161 734.197 314.46 725.412 314.938 716.823L314.439 716.795ZM313.371 742.679C312.307 773.942 311.206 806.225 300.965 835.993L301.437 836.156C311.707 806.305 312.808 773.945 313.871 742.696L313.371 742.679ZM300.965 835.993C299.519 840.196 297.855 844.483 296.243 848.634L296.709 848.815C298.32 844.666 299.988 840.369 301.437 836.156L300.965 835.993ZM296.243 848.634C290.481 863.476 284.487 878.898 286.704 894.776L287.199 894.707C285.003 878.98 290.937 863.682 296.709 848.815L296.243 848.634ZM286.702 894.745L286.755 899.142L287.255 899.136L287.202 894.739L286.702 894.745ZM286.755 899.138C286.748 900.528 286.63 901.915 286.403 903.286L286.896 903.368C287.128 901.97 287.248 900.557 287.255 899.14L286.755 899.138ZM286.403 903.285C286.144 904.821 286.022 906.377 286.041 907.934L286.54 907.928C286.522 906.401 286.642 904.875 286.896 903.369L286.403 903.285ZM286.041 907.939L292.508 1128.53L293.007 1128.52L286.54 907.924L286.041 907.939ZM292.508 1128.53C293.471 1161.39 294.467 1195.38 300.738 1228.3L301.229 1228.21C294.967 1195.33 293.971 1161.38 293.007 1128.52L292.508 1128.53ZM300.734 1228.26L300.748 1230.04L301.248 1230.04L301.234 1228.25L300.734 1228.26ZM300.748 1230.04C301.176 1262.1 304.196 1294.58 307.116 1325.97L307.614 1325.92C304.693 1294.53 301.675 1262.07 301.248 1230.04L300.748 1230.04ZM307.116 1325.97C311.518 1373.29 316.067 1422.2 311.756 1470.31L312.254 1470.36C316.57 1422.19 312.015 1373.24 307.614 1325.92L307.116 1325.97ZM311.755 1470.32C311.696 1471.3 311.529 1472.28 311.256 1473.22L311.736 1473.36C312.019 1472.38 312.193 1471.37 312.254 1470.35L311.755 1470.32ZM311.256 1473.22C310.955 1474.27 310.765 1475.34 310.689 1476.43L311.187 1476.46C311.261 1475.41 311.445 1474.37 311.736 1473.36L311.256 1473.22ZM310.694 1476.39L309.859 1480.14L310.347 1480.25L311.182 1476.5L310.694 1476.39ZM309.97 1480.41L310.359 1480.65L310.623 1480.23L310.235 1479.99L309.97 1480.41ZM310.358 1480.65C318.656 1485.85 326.261 1490.35 334.98 1492.63L335.107 1492.15C326.471 1489.89 318.924 1485.42 310.624 1480.23L310.358 1480.65ZM334.985 1492.64C343.717 1494.72 352.606 1496.08 361.562 1496.7L361.596 1496.2C352.668 1495.58 343.806 1494.23 335.101 1492.15L334.985 1492.64ZM361.557 1496.7C393.114 1499.53 434.135 1501.05 471.284 1487.57L471.114 1487.1C434.075 1500.54 393.149 1499.03 361.601 1496.2L361.557 1496.7ZM471.284 1487.57C490.008 1480.77 507.321 1470.4 524.042 1460.38L523.785 1459.95C507.057 1469.97 489.784 1480.32 471.114 1487.1L471.284 1487.57ZM524.025 1460.39C526.848 1458.98 529.288 1456.91 531.134 1454.35L530.729 1454.06C528.93 1456.55 526.553 1458.57 523.802 1459.94L524.025 1460.39ZM531.145 1454.34C531.961 1452.99 532.506 1451.36 532.518 1449.77C532.53 1448.17 532.005 1446.62 530.671 1445.46L530.344 1445.84C531.545 1446.88 532.029 1448.29 532.018 1449.77C532.007 1451.25 531.496 1452.8 530.718 1454.08L531.145 1454.34ZM530.754 1445.61L502.855 1292.79L502.363 1292.88L530.262 1445.7L530.754 1445.61ZM502.855 1292.79C498.156 1267.05 492.847 1237.95 500.104 1210.9L499.621 1210.77C492.33 1237.95 497.668 1267.16 502.363 1292.88L502.855 1292.79ZM500.104 1210.9C501.686 1205 503.895 1199.14 506.034 1193.45L505.566 1193.27C503.428 1198.95 501.211 1204.84 499.621 1210.77L500.104 1210.9ZM506.034 1193.45C509.54 1184.13 513.181 1174.46 514.166 1164.33L513.668 1164.28C512.691 1174.33 509.076 1183.94 505.566 1193.27L506.034 1193.45ZM514.166 1164.33C514.32 1162.74 514.411 1161.12 514.498 1159.56L513.998 1159.53C513.911 1161.1 513.822 1162.71 513.668 1164.28L514.166 1164.33ZM514.498 1159.55C514.572 1156.08 515.004 1152.62 515.786 1149.24L515.299 1149.12C514.509 1152.54 514.073 1156.03 513.998 1159.54L514.498 1159.55ZM515.784 1149.24C517.407 1143.21 521.267 1137.99 525.038 1132.9L524.636 1132.6C520.877 1137.68 516.953 1142.98 515.301 1149.11L515.784 1149.24ZM525.038 1132.9C526.098 1131.47 527.157 1130.03 528.171 1128.58L527.761 1128.3C526.752 1129.74 525.696 1131.17 524.636 1132.6L525.038 1132.9ZM528.171 1128.58C545.205 1104.19 549.403 1073.38 553.46 1043.66L552.964 1043.59C548.904 1073.34 544.714 1104.02 527.761 1128.3L528.171 1128.58ZM553.46 1043.66C557.77 1012.05 562.221 979.47 582.172 955.269L581.787 954.951C561.728 979.281 557.27 1012.01 552.964 1043.59L553.46 1043.66ZM581.778 955.258C586.522 961.726 593.927 964.45 601.145 965.381C608.365 966.311 615.436 965.453 619.567 964.721L619.48 964.228C615.372 964.956 608.358 965.806 601.209 964.885C594.059 963.963 586.811 961.275 582.181 954.962L581.778 955.258ZM619.551 964.723C621.939 964.46 624.232 963.645 626.251 962.343L625.98 961.923C624.026 963.183 621.807 963.971 619.496 964.226L619.551 964.723ZM626.265 962.334C628.519 960.654 629.569 958.367 630.022 955.83C630.473 953.302 630.335 950.504 630.201 947.788L629.701 947.812C629.836 950.542 629.969 953.28 629.529 955.742C629.092 958.194 628.09 960.351 625.966 961.933L626.265 962.334ZM630.2 947.779C629.981 945.167 630.024 942.539 630.329 939.936L629.832 939.878C629.524 942.514 629.48 945.175 629.702 947.821L630.2 947.779ZM630.031 940.152C631.515 940.451 633.055 940.272 634.43 939.64L634.221 939.186C632.942 939.773 631.51 939.94 630.13 939.662L630.031 940.152ZM634.43 939.64C635.805 939.008 636.945 937.956 637.684 936.636L637.248 936.392C636.56 937.62 635.5 938.598 634.221 939.186L634.43 939.64ZM637.69 936.624C639.032 933.877 639.619 930.823 639.391 927.774L638.893 927.811C639.114 930.771 638.544 933.737 637.241 936.404L637.69 936.624ZM639.392 927.793C639.395 926.771 639.389 925.748 639.375 924.725L638.875 924.732C638.889 925.752 638.895 926.772 638.892 927.792L639.392 927.793ZM624.414 844.248C624.417 844.465 624.421 844.68 624.426 844.895L624.926 844.882C624.92 844.669 624.916 844.456 624.914 844.242L624.414 844.248ZM624.426 844.894C624.652 854.186 627.164 863.296 629.583 872.072L630.065 871.94C627.644 863.153 625.15 854.102 624.926 844.882L624.426 844.894ZM629.583 872.072C630.286 874.625 630.989 877.174 631.638 879.727L632.122 879.603C631.472 877.045 630.768 874.491 630.065 871.94L629.583 872.072ZM631.638 879.727C635.636 895.434 637.636 911.582 637.592 927.79L638.092 927.791C638.136 911.542 636.131 895.351 632.122 879.603L631.638 879.727ZM637.593 927.811C637.812 930.539 637.305 933.278 636.122 935.746L636.573 935.962C637.794 933.414 638.318 930.587 638.091 927.771L637.593 927.811ZM636.132 935.727C635.516 936.77 634.508 937.667 633.383 938.163C632.26 938.658 631.045 938.743 629.99 938.208L629.764 938.654C630.987 939.274 632.364 939.158 633.585 938.62C634.805 938.082 635.893 937.114 636.562 935.981L636.132 935.727ZM629.99 938.208L629.235 937.827L629.009 938.273L629.764 938.654L629.99 938.208ZM628.877 937.998L628.703 938.827L629.192 938.93L629.366 938.101L628.877 937.998ZM628.7 938.839C628.226 941.832 628.126 944.871 628.404 947.888L628.902 947.842C628.628 944.867 628.726 941.869 629.194 938.918L628.7 938.839ZM628.404 947.878C628.534 950.552 628.659 953.117 628.281 955.368C627.905 957.61 627.034 959.516 625.191 960.89L625.489 961.291C627.468 959.816 628.384 957.776 628.774 955.451C629.163 953.136 629.033 950.513 628.903 947.853L628.404 947.878ZM625.206 960.88C623.415 962.019 621.383 962.727 619.271 962.948L619.323 963.445C621.512 963.216 623.618 962.483 625.474 961.302L625.206 960.88ZM619.254 962.95C615.199 963.669 608.23 964.516 601.194 963.579C594.156 962.642 587.092 959.928 582.784 953.563L582.37 953.843C586.791 960.375 594.021 963.129 601.128 964.075C608.237 965.021 615.263 964.165 619.341 963.443L619.254 962.95ZM582.784 953.563L582.336 952.901L581.922 953.182L582.37 953.843L582.784 953.563ZM581.95 952.867L581.148 953.692L581.507 954.04L582.308 953.216L581.95 952.867ZM581.135 953.706C560.539 978.397 556.03 1011.49 551.676 1043.41L552.172 1043.48C556.529 1011.53 561.031 978.587 581.519 954.026L581.135 953.706ZM551.676 1043.41C547.638 1073.01 543.469 1103.54 526.695 1127.55L527.105 1127.84C543.961 1103.71 548.137 1073.05 552.172 1043.48L551.676 1043.41ZM526.695 1127.55C525.694 1128.99 524.644 1130.41 523.592 1131.83L523.994 1132.13C525.046 1130.7 526.099 1129.28 527.105 1127.84L526.695 1127.55ZM523.592 1131.83C519.761 1137.01 515.763 1142.4 514.045 1148.78L514.528 1148.91C516.217 1142.64 520.153 1137.32 523.994 1132.13L523.592 1131.83ZM514.043 1148.79C513.228 1152.29 512.778 1155.87 512.7 1159.47L513.199 1159.48C513.277 1155.92 513.723 1152.37 514.53 1148.9L514.043 1148.79ZM512.7 1159.46C512.614 1161.01 512.525 1162.61 512.374 1164.16L512.871 1164.21C513.024 1162.65 513.113 1161.04 513.199 1159.49L512.7 1159.46ZM512.374 1164.16C511.413 1174.04 507.829 1183.57 504.349 1192.82L504.817 1192.99C508.293 1183.75 511.903 1174.17 512.871 1164.21L512.374 1164.16ZM504.349 1192.82C502.2 1198.53 499.973 1204.45 498.364 1210.44L498.847 1210.57C500.449 1204.61 502.667 1198.71 504.817 1192.99L504.349 1192.82ZM498.364 1210.44C490.998 1237.89 496.364 1267.26 501.083 1293.12L501.575 1293.03C496.852 1267.15 491.515 1237.89 498.847 1210.57L498.364 1210.44ZM501.083 1293.12L529.069 1446.41L529.561 1446.32L501.575 1293.03L501.083 1293.12ZM529.161 1446.56L529.355 1446.71L529.663 1446.32L529.469 1446.17L529.161 1446.56ZM529.355 1446.71C530.344 1447.49 530.737 1448.61 530.717 1449.82C530.697 1451.03 530.26 1452.33 529.606 1453.4L530.033 1453.66C530.723 1452.53 531.196 1451.15 531.217 1449.82C531.239 1448.5 530.804 1447.21 529.663 1446.32L529.355 1446.71ZM529.618 1453.38C527.92 1455.69 525.697 1457.55 523.134 1458.82L523.356 1459.27C525.991 1457.96 528.276 1456.05 530.021 1453.68L529.618 1453.38ZM523.116 1458.83C506.44 1468.83 489.221 1479.14 470.67 1485.88L470.84 1486.35C489.445 1479.6 506.704 1469.25 523.373 1459.26L523.116 1458.83ZM470.67 1485.88C433.871 1499.23 393.13 1497.72 361.716 1494.91L361.672 1495.4C393.095 1498.22 433.931 1499.74 470.84 1486.35L470.67 1485.88ZM361.711 1494.91C352.855 1494.29 344.065 1492.95 335.43 1490.89L335.314 1491.38C343.976 1493.44 352.793 1494.79 361.677 1495.4L361.711 1494.91ZM335.436 1490.9C327.111 1488.71 319.757 1484.4 311.702 1479.37L311.437 1479.79C319.491 1484.83 326.902 1489.17 335.309 1491.38L335.436 1490.9ZM311.813 1479.64L312.463 1476.7L311.975 1476.59L311.325 1479.53L311.813 1479.64ZM312.468 1476.67C312.538 1475.67 312.712 1474.68 312.987 1473.71L312.506 1473.57C312.221 1474.57 312.041 1475.6 311.97 1476.63L312.468 1476.67ZM312.987 1473.71C313.292 1472.65 313.48 1471.57 313.549 1470.47L313.05 1470.44C312.984 1471.5 312.801 1472.55 312.507 1473.57L312.987 1473.71ZM313.549 1470.47C317.873 1422.2 313.314 1373.18 308.907 1325.8L308.409 1325.85C312.817 1373.23 317.37 1422.21 313.051 1470.43L313.549 1470.47ZM308.907 1325.8C305.989 1294.43 302.974 1262 302.547 1230.02L302.047 1230.03C302.474 1262.03 305.492 1294.48 308.409 1325.85L308.907 1325.8ZM302.547 1230.02L302.521 1228.12L302.022 1228.13L302.047 1230.03L302.547 1230.02ZM302.517 1228.08C296.263 1195.19 295.268 1161.29 294.307 1128.48L293.807 1128.5C294.768 1161.3 295.763 1195.24 302.026 1228.17L302.517 1228.08ZM294.307 1128.48L287.84 907.887L287.34 907.902L293.807 1128.5L294.307 1128.48ZM287.84 907.893C287.828 906.438 287.943 904.984 288.184 903.549L287.691 903.466C287.445 904.93 287.328 906.413 287.34 907.897L287.84 907.893ZM288.184 903.548C288.424 902.085 288.548 900.606 288.555 899.124L288.055 899.121C288.048 900.577 287.926 902.03 287.691 903.467L288.184 903.548ZM288.555 899.119L288.496 894.641L287.996 894.648L288.055 899.126L288.555 899.119ZM288.493 894.61C286.341 879.139 292.21 863.999 297.921 849.286L297.455 849.105C291.754 863.792 285.825 879.057 287.998 894.679L288.493 894.61ZM297.921 849.286C299.536 845.125 301.209 840.817 302.667 836.579L302.194 836.417C300.74 840.644 299.071 844.942 297.455 849.105L297.921 849.286ZM302.667 836.579C313 806.544 314.103 774.086 315.17 742.741L314.671 742.724C313.603 774.083 312.498 806.464 302.194 836.417L302.667 836.579ZM315.17 742.741C315.46 734.249 315.758 725.472 316.237 716.896L315.738 716.868C315.259 725.45 314.96 734.233 314.671 742.724L315.17 742.741ZM316.237 716.896C316.923 704.58 318.023 692.071 319.087 679.968L318.589 679.924C317.525 692.026 316.424 704.543 315.738 716.868L316.237 716.896ZM319.087 679.968C320.998 658.23 322.96 635.744 322.632 613.525L322.132 613.533C322.46 635.722 320.5 658.182 318.589 679.924L319.087 679.968ZM322.632 613.525C322.463 602.668 321.738 591.652 321.036 581.006L320.537 581.039C321.239 591.687 321.964 602.69 322.132 613.533L322.632 613.525ZM321.036 581.006C320.064 566.252 319.062 551.008 319.529 536.017L319.03 536.002C318.561 551.021 319.566 566.289 320.537 581.039L321.036 581.006ZM319.529 536.017C319.886 524.699 323.176 517.555 329.205 514.614L328.985 514.165C322.7 517.231 319.388 524.626 319.03 536.001L319.529 536.017ZM328.921 514.568L329.536 515.168L329.885 514.81L329.27 514.21L328.921 514.568ZM329.753 515.235L330.081 515.178L329.995 514.685L329.667 514.742L329.753 515.235ZM330.08 515.178C335.096 514.325 340.239 514.591 345.141 515.957L345.275 515.475C340.302 514.089 335.085 513.819 329.996 514.685L330.08 515.178ZM345.141 515.957C350.042 517.323 354.581 519.755 358.433 523.08L358.76 522.702C354.852 519.329 350.247 516.861 345.275 515.475L345.141 515.957ZM358.432 523.079C365.576 529.301 369.563 537.836 371.927 547.023C374.291 556.211 375.026 566.028 375.681 574.799L376.18 574.762C375.525 565.998 374.788 556.137 372.411 546.898C370.034 537.657 366.009 529.015 358.761 522.702L358.432 523.079ZM375.681 574.799C378.945 618.315 385.023 661.575 393.877 704.306L394.367 704.205C385.517 661.495 379.442 618.256 376.18 574.761L375.681 574.799ZM393.877 704.306C394.248 706.093 394.622 707.881 395.001 709.669L395.49 709.565C395.111 707.778 394.737 705.991 394.367 704.205L393.877 704.306ZM395 709.669C397.191 720.087 399.454 730.845 400.659 741.565L401.156 741.509C399.947 730.762 397.679 719.98 395.49 709.566L395 709.669ZM400.659 741.565C401.443 748.523 401.8 755.637 402.147 762.527L402.646 762.502C402.3 755.615 401.941 748.485 401.156 741.509L400.659 741.565ZM402.147 762.527L403.821 795.832L404.32 795.807L402.646 762.502L402.147 762.527ZM404.249 795.994L407.266 792.895L406.908 792.546L403.891 795.645L404.249 795.994ZM407.164 792.959C414.263 790.66 420.514 786.387 426.528 782.279L426.246 781.867C420.222 785.982 414.029 790.211 407.01 792.483L407.164 792.959ZM426.528 782.279C428.455 780.963 430.444 779.604 432.425 778.335L432.155 777.914C430.167 779.188 428.172 780.551 426.246 781.867L426.528 782.279ZM432.425 778.335C447.961 768.378 465.619 762.038 482.727 755.897L482.558 755.426C465.46 761.564 447.746 767.922 432.155 777.914L432.425 778.335ZM482.727 755.897C492.642 752.338 501.473 749.613 510.033 751.883L510.161 751.4C501.43 749.084 492.454 751.874 482.558 755.426L482.727 755.897ZM510.033 751.883C517.073 753.751 522.774 758.84 528.34 763.814L528.673 763.441C523.127 758.484 517.337 753.304 510.161 751.4L510.033 751.883ZM528.34 763.814C529.624 764.961 530.907 766.109 532.204 767.214L532.529 766.834C531.237 765.733 529.958 764.589 528.673 763.441L528.34 763.814ZM532.204 767.214C545.44 778.508 561.266 786.189 576.537 793.6L576.755 793.151C561.474 785.734 545.708 778.08 532.529 766.834L532.204 767.214ZM576.505 793.582C579.741 795.797 583.569 796.987 587.491 796.996L587.492 796.496C583.671 796.487 579.941 795.328 576.787 793.169L576.505 793.582ZM587.491 796.996C591.413 797.004 595.246 795.831 598.492 793.629L598.211 793.215C595.049 795.361 591.314 796.504 587.492 796.496L587.491 796.996ZM598.474 793.64C601.431 791.97 604.685 790.894 608.054 790.47L607.992 789.974C604.558 790.406 601.242 791.503 598.229 793.205L598.474 793.64ZM608.036 790.472C611.782 790.275 615.251 791.858 618.092 794.372C620.934 796.886 623.134 800.319 624.335 803.783L624.807 803.619C623.58 800.08 621.334 796.573 618.423 793.997C615.512 791.422 611.92 789.767 608.01 789.973L608.036 790.472ZM624.335 803.783C627.204 812.057 626.309 820.69 625.348 829.901L625.845 829.953C626.804 820.764 627.719 812.016 624.807 803.619L624.335 803.783ZM625.348 829.896C624.759 834.656 624.447 839.447 624.414 844.244L624.914 844.247C624.947 839.47 625.258 834.698 625.845 829.957L625.348 829.896ZM405.637 794.461L386.673 732.809L386.195 732.956L405.159 794.608L405.637 794.461ZM386.402 733.131L386.657 733.164L386.722 732.668L386.467 732.635L386.402 733.131ZM386.91 732.798L386.375 731.804L385.935 732.041L386.469 733.035L386.91 732.798ZM386.404 731.906L378.732 615.085L378.233 615.118L385.906 731.939L386.404 731.906ZM378.567 615.337L378.782 615.26L378.614 614.789L378.398 614.866L378.567 615.337ZM378.924 614.917L378.667 614.379L378.216 614.594L378.473 615.132L378.924 614.917ZM378.691 614.47L374.447 549.842L373.948 549.875L378.192 614.503L378.691 614.47ZM374.38 549.688L340.342 513.394L339.977 513.736L374.015 550.03L374.38 549.688ZM339.989 513.382L339.041 514.271L339.383 514.635L340.331 513.747L339.989 513.382ZM339.029 514.624L372.749 550.58L373.114 550.238L339.394 514.282L339.029 514.624ZM372.682 550.425L376.683 611.336L377.181 611.303L373.181 550.393L372.682 550.425ZM377.158 611.212L329.292 510.871L328.841 511.086L376.706 611.427L377.158 611.212ZM328.817 510.994L332.065 562.505L332.564 562.473L329.316 510.962L328.817 510.994ZM332.077 562.411L326.393 579.64L326.867 579.797L332.552 562.567L332.077 562.411ZM326.544 579.484L319.176 582.185L319.348 582.654L326.716 579.953L326.544 579.484ZM319.052 582.555L345.786 624.007L346.207 623.736L319.472 582.284L319.052 582.555ZM346.1 623.644L320.35 611.921L320.142 612.376L345.893 624.099L346.1 623.644ZM320.026 612.266L338.564 646.726L339.004 646.489L320.466 612.03L320.026 612.266ZM338.551 646.517L315.452 705.866L315.918 706.048L339.017 646.699L338.551 646.517ZM315.843 705.763L315.558 705.531L315.242 705.919L315.527 706.151L315.843 705.763ZM315.151 705.703L315.043 706.945L315.541 706.989L315.649 705.746L315.151 705.703ZM315.047 707.018L315.068 707.119L315.558 707.018L315.537 706.917L315.047 707.018ZM315.063 707.053L308.851 803.677L309.35 803.709L315.562 707.085L315.063 707.053ZM308.975 803.909L339.148 821.434L339.399 821.001L309.227 803.477L308.975 803.909ZM339.277 821.467L371.778 821.034L371.771 820.534L339.27 820.967L339.277 821.467ZM371.928 820.981L405.552 794.732L405.244 794.338L371.621 820.587L371.928 820.981ZM384.779 732.77L403.653 794.134L404.131 793.987L385.257 732.623L384.779 732.77ZM403.738 793.863L371.165 819.293L371.473 819.687L404.046 794.258L403.738 793.863ZM371.316 819.24L339.968 819.658L339.975 820.158L371.322 819.74L371.316 819.24ZM340.216 819.857L317.218 708.627L316.728 708.729L339.726 819.959L340.216 819.857ZM316.815 708.872L338.969 726.872L339.284 726.484L317.13 708.484L316.815 708.872ZM339.095 726.926L339.277 726.95L339.341 726.454L339.159 726.431L339.095 726.926ZM339.277 726.95L384.986 732.944L385.051 732.449L339.342 726.454L339.277 726.95ZM376.961 615.572L384.423 729.181L384.921 729.149L377.46 615.54L376.961 615.572ZM384.892 729.047L340.432 646.402L339.992 646.639L384.452 729.283L384.892 729.047ZM340.445 646.611L348.474 625.984L348.008 625.803L339.979 646.429L340.445 646.611ZM348.325 626.129L377.295 615.792L377.127 615.321L348.157 625.658L348.325 626.129ZM339.373 648.231L384.123 731.416L384.563 731.179L339.813 647.994L339.373 648.231ZM384.376 731.049L339.694 725.19L339.629 725.685L384.311 731.545L384.376 731.049ZM339.819 725.243L316.902 706.623L316.586 707.011L339.503 725.631L339.819 725.243ZM316.977 706.908L339.826 648.203L339.36 648.022L316.511 706.727L316.977 706.908ZM330.56 517.712L376.68 614.393L377.131 614.177L331.011 517.497L330.56 517.712ZM376.822 614.049L347.925 624.361L348.094 624.832L376.99 614.52L376.822 614.049ZM348.22 624.461L321.444 582.945L321.024 583.216L347.799 624.732L348.22 624.461ZM321.32 583.315L327.753 580.958L327.581 580.488L321.148 582.846L321.32 583.315ZM327.905 580.801L333.865 562.737L333.39 562.581L327.43 580.644L327.905 580.801ZM333.877 562.643L331.035 517.589L330.536 517.62L333.378 562.675L333.877 562.643ZM323.114 615.157L346.811 625.946L347.018 625.491L323.321 614.702L323.114 615.157ZM346.681 625.628L339.17 644.926L339.636 645.107L347.147 625.809L346.681 625.628ZM339.623 644.898L323.438 614.811L322.997 615.048L339.183 645.135L339.623 644.898ZM316.061 711.926L338.268 819.325L338.758 819.224L316.551 711.825L316.061 711.926ZM338.638 819.058L310.575 802.757L310.324 803.19L338.387 819.49L338.638 819.058ZM310.699 802.99L316.556 711.891L316.057 711.859L310.2 802.957L310.699 802.99ZM520.887 837.111L506.018 788.94L505.541 789.087L520.409 837.258L520.887 837.111ZM505.554 788.905L489.474 822.116L489.924 822.334L506.005 789.123L505.554 788.905ZM489.612 821.991L467.11 830.311L467.284 830.78L489.785 822.46L489.612 821.991ZM467.352 830.349L412.199 786.785L411.889 787.177L467.042 830.741L467.352 830.349ZM411.818 787.086L412.966 789.561L413.419 789.35L412.271 786.876L411.818 787.086ZM412.966 789.561C416.986 798.223 422.152 809.607 426.318 819.172C428.401 823.955 430.233 828.281 431.547 831.584C432.203 833.236 432.729 834.629 433.092 835.695C433.273 836.228 433.413 836.676 433.507 837.032C433.603 837.394 433.647 837.641 433.649 837.781L434.149 837.775C434.146 837.568 434.087 837.269 433.991 836.904C433.892 836.532 433.749 836.072 433.565 835.534C433.199 834.457 432.669 833.054 432.011 831.399C430.695 828.089 428.86 823.757 426.776 818.972C422.609 809.402 417.44 798.015 413.419 789.35L412.966 789.561ZM433.649 837.781L433.649 837.791L434.149 837.784L434.149 837.775L433.649 837.781ZM433.68 837.669C433.569 837.873 433.526 838.108 433.556 838.339L434.052 838.272C434.035 838.146 434.059 838.018 434.119 837.907L433.68 837.669ZM433.557 838.339C433.585 838.551 433.723 838.776 433.899 838.998C434.082 839.228 434.337 839.489 434.651 839.776C435.279 840.351 436.163 841.047 437.236 841.831C439.383 843.4 442.308 845.333 445.499 847.356C451.882 851.404 459.347 855.826 463.83 858.448L464.082 858.017C459.6 855.396 452.142 850.977 445.767 846.934C442.578 844.912 439.665 842.987 437.531 841.428C436.463 840.648 435.596 839.963 434.988 839.407C434.684 839.129 434.451 838.887 434.29 838.686C434.123 838.476 434.061 838.341 434.052 838.272L433.557 838.339ZM463.83 858.448L463.986 858.539L464.238 858.107L464.082 858.016L463.83 858.448ZM464.115 858.573L492.67 858.192L492.664 857.692L464.108 858.073L464.115 858.573ZM492.816 858.143L520.797 837.385L520.499 836.984L492.518 857.741L492.816 858.143ZM505.273 792.625L518.898 836.765L519.376 836.617L505.751 792.478L505.273 792.625ZM518.988 836.49L492.082 856.449L492.38 856.851L519.286 836.892L518.988 836.49ZM492.227 856.4L464.451 856.771L464.458 857.27L492.234 856.9L492.227 856.4ZM464.581 856.805C459.207 853.659 452.264 849.482 446.476 845.828C443.582 844.001 440.978 842.307 439.005 840.938C438.018 840.253 437.191 839.652 436.564 839.157C435.93 838.656 435.525 838.283 435.359 838.052L434.953 838.344C435.166 838.64 435.625 839.053 436.255 839.55C436.892 840.053 437.729 840.661 438.72 841.349C440.702 842.723 443.312 844.423 446.209 846.251C452.003 849.909 458.951 854.089 464.328 857.236L464.581 856.805ZM435.399 838.256C435.472 837.955 435.441 837.498 435.24 836.696C435.036 835.883 434.648 834.68 433.968 832.866C432.607 829.235 430.066 823.129 425.462 812.748L425.005 812.951C429.609 823.331 432.144 829.425 433.5 833.041C434.178 834.85 434.558 836.032 434.755 836.817C434.954 837.612 434.955 837.965 434.913 838.139L435.399 838.256ZM425.462 812.748C421.611 804.065 417.636 795.389 415.739 791.273L415.285 791.482C417.181 795.598 421.156 804.27 425.005 812.951L425.462 812.748ZM415.357 791.573L466.808 832.214L467.118 831.822L415.667 791.181L415.357 791.573ZM467.05 832.252L490.726 823.498L490.553 823.029L466.877 831.783L467.05 832.252ZM490.864 823.373L490.979 823.138L490.53 822.919L490.415 823.154L490.864 823.373ZM490.98 823.137L505.737 792.66L505.287 792.442L490.53 822.919L490.98 823.137ZM553.598 812.964L505.908 789.909L505.69 790.36L553.381 813.414L553.598 812.964ZM505.804 789.885L484.729 789.518L484.72 790.018L505.795 790.385L505.804 789.885ZM484.956 789.862L501.562 749.172L501.099 748.983L484.493 789.673L484.956 789.862ZM501.228 748.85L410.764 789.553L410.969 790.009L501.433 749.306L501.228 748.85ZM410.862 790.031L482.799 791.284L482.808 790.784L410.871 789.531L410.862 790.031ZM482.572 790.939L466.086 831.334L466.549 831.523L483.035 791.128L482.572 790.939ZM466.139 831.603L491.804 857.923L492.162 857.574L466.496 831.254L466.139 831.603ZM492.157 857.927L493.087 857.02L492.738 856.662L491.808 857.569L492.157 857.927ZM493.091 856.666L468.021 830.956L467.663 831.306L492.734 857.015L493.091 856.666ZM468.073 831.225L484.43 791.152L483.967 790.964L467.61 831.037L468.073 831.225ZM484.195 791.308L505.488 791.679L505.497 791.18L484.203 790.808L484.195 791.308ZM505.384 791.655L552.815 814.584L553.033 814.134L505.601 791.204L505.384 791.655ZM553.149 814.468L553.714 813.298L553.264 813.08L552.699 814.251L553.149 814.468ZM416.801 788.811L499.002 751.826L498.797 751.37L416.595 788.355L416.801 788.811ZM498.668 751.503L483.1 789.649L483.563 789.838L499.131 751.692L498.668 751.503ZM483.336 789.494L416.702 788.333L416.694 788.833L483.327 789.993L483.336 789.494ZM532.607 848.823L519.686 835.426L519.326 835.773L532.247 849.17L532.607 848.823ZM519.261 835.548L512.608 867.736L513.098 867.838L519.751 835.65L519.261 835.548ZM512.802 868.032L514.075 868.296L514.177 867.806L512.904 867.542L512.802 868.032ZM514.371 868.102L520.525 838.325L520.035 838.224L513.881 868L514.371 868.102ZM520.1 838.448L531.312 850.074L531.672 849.727L520.46 838.101L520.1 838.448ZM531.666 850.08L532.601 849.176L532.254 848.817L531.319 849.72L531.666 850.08ZM482.29 938.841L481.903 938.32L481.501 938.617L481.888 939.139L482.29 938.841ZM481.952 938.482L481.986 937.843L481.487 937.816L481.453 938.455L481.952 938.482ZM481.783 937.584C481.69 937.566 481.449 937.484 481.046 937.326C480.653 937.172 480.129 936.954 479.483 936.677C478.193 936.124 476.426 935.34 474.279 934.371C469.986 932.433 464.177 929.757 457.631 926.714C444.539 920.629 428.503 913.079 415.752 907.036L415.538 907.488C428.289 913.532 444.327 921.082 457.42 927.168C463.966 930.211 469.777 932.887 474.074 934.827C476.221 935.796 477.992 936.582 479.287 937.137C479.934 937.414 480.464 937.634 480.863 937.791C481.252 937.945 481.541 938.047 481.691 938.075L481.783 937.584ZM415.752 907.036L415.616 906.972L415.402 907.424L415.538 907.488L415.752 907.036ZM415.505 906.948L352.972 907.782L352.979 908.282L415.512 907.448L415.505 906.948ZM352.828 907.83L287.056 955.627L287.35 956.031L353.122 908.235L352.828 907.83ZM287.001 955.976L287.765 957.027L288.169 956.733L287.405 955.682L287.001 955.976ZM288.114 957.082L353.552 909.529L353.258 909.125L287.82 956.678L288.114 957.082ZM353.408 909.577L415.227 908.751L415.221 908.251L353.402 909.077L353.408 909.577ZM415.117 908.727C448.058 924.339 464.672 932.039 473.104 935.798C477.318 937.677 479.495 938.574 480.647 938.983C481.218 939.185 481.556 939.275 481.771 939.298C481.882 939.31 481.977 939.306 482.062 939.282C482.152 939.256 482.209 939.212 482.238 939.191L481.94 938.789C481.926 938.8 481.923 938.801 481.922 938.802C481.921 938.802 481.922 938.802 481.923 938.802C481.924 938.801 481.924 938.801 481.924 938.801C481.923 938.802 481.898 938.809 481.825 938.801C481.673 938.784 481.383 938.713 480.814 938.511C479.683 938.111 477.523 937.221 473.308 935.342C464.882 931.585 448.272 923.887 415.331 908.276L415.117 908.727ZM626.667 855.475L625.43 855.076L625.277 855.552L626.514 855.951L626.667 855.475ZM625.116 855.237L606.414 913.365L606.89 913.519L625.592 855.391L625.116 855.237ZM606.44 913.31L581.902 952.585L582.326 952.85L606.864 913.574L606.44 913.31ZM582.34 952.61L571.857 930.648L571.405 930.863L581.889 952.825L582.34 952.61ZM571.757 930.54L542.943 913.656L542.69 914.087L571.504 930.971L571.757 930.54ZM542.741 913.633L542.465 913.721L542.617 914.197L542.893 914.11L542.741 913.633ZM542.466 913.721L492.928 929.373L493.079 929.85L542.616 914.197L542.466 913.721ZM493.248 929.56L488.012 904.659L487.523 904.762L492.759 929.663L493.248 929.56ZM487.922 904.514L468.633 889.345L468.324 889.738L487.613 904.907L487.922 904.514ZM468.727 889.514L465.177 857.572L464.68 857.627L468.23 889.569L468.727 889.514ZM464.901 857.351L463.609 857.495L463.664 857.991L464.956 857.848L464.901 857.351ZM463.388 857.771L466.998 890.253L467.495 890.198L463.885 857.715L463.388 857.771ZM467.092 890.422L486.436 905.636L486.745 905.243L467.401 890.029L467.092 890.422ZM486.346 905.491L491.784 931.333L492.273 931.23L486.835 905.388L486.346 905.491ZM492.103 931.52L542.733 915.525L542.583 915.048L491.953 931.043L492.103 931.52ZM542.532 915.502L570.504 931.892L570.757 931.46L542.785 915.071L542.532 915.502ZM570.405 931.784L581.736 955.523L582.187 955.307L570.856 931.568L570.405 931.784ZM582.174 955.547L608.076 914.049L607.652 913.784L581.75 955.282L582.174 955.547ZM608.102 913.993L626.829 855.789L626.353 855.636L607.626 913.84L608.102 913.993ZM610.413 860.999L609.143 860.726L609.038 861.214L610.307 861.488L610.413 860.999ZM608.846 860.917L601.606 894.549L602.095 894.655L609.335 861.023L608.846 860.917ZM601.661 894.439L570.449 930.627L570.828 930.954L602.04 894.765L601.661 894.439ZM570.431 930.651L521.483 1003.17L521.897 1003.45L570.846 930.93L570.431 930.651ZM521.447 1003.25L521.419 1003.37L521.906 1003.48L521.933 1003.36L521.447 1003.25ZM521.418 1003.37L493.761 1124.76L494.249 1124.87L521.906 1003.48L521.418 1003.37ZM493.755 1124.82L493.756 1124.89L494.256 1124.89L494.255 1124.81L493.755 1124.82ZM493.756 1124.89L494.733 1240.94L495.233 1240.93L494.256 1124.89L493.756 1124.89ZM494.805 1240.76L460.742 1275.55L461.099 1275.9L495.162 1241.11L494.805 1240.76ZM460.877 1275.48L371.945 1291.12L372.032 1291.62L460.964 1275.97L460.877 1275.48ZM372.157 1291.18L302.229 1227.47L301.892 1227.84L371.82 1291.55L372.157 1291.18ZM301.876 1227.48L301 1228.45L301.37 1228.78L302.245 1227.82L301.876 1227.48ZM301.017 1228.8L371.418 1292.95L371.754 1292.58L301.354 1228.43L301.017 1228.8ZM371.63 1293.01L371.943 1292.95L371.855 1292.46L371.542 1292.51L371.63 1293.01ZM371.943 1292.95L461.6 1277.18L461.513 1276.69L371.856 1292.46L371.943 1292.95ZM461.735 1277.11L496.465 1241.64L496.108 1241.29L461.378 1276.76L461.735 1277.11ZM496.537 1241.46L495.558 1124.95L495.058 1124.96L496.037 1241.46L496.537 1241.46ZM495.551 1125.01L523.145 1003.89L522.657 1003.77L495.064 1124.9L495.551 1125.01ZM523.108 1003.97L571.877 931.718L571.463 931.438L522.694 1003.69L523.108 1003.97ZM571.859 931.742L603.241 895.365L602.863 895.038L571.481 931.415L571.859 931.742ZM603.297 895.253L603.331 895.09L602.842 894.986L602.808 895.149L603.297 895.253ZM603.331 895.091L610.604 861.296L610.116 861.191L602.842 894.985L603.331 895.091ZM608.118 913.495L603.257 894.417L602.773 894.541L607.634 913.618L608.118 913.495ZM603.14 894.263L602.906 894.127L602.656 894.56L602.89 894.695L603.14 894.263ZM602.908 894.128L560.583 869.132L560.329 869.562L602.654 894.559L602.908 894.128ZM560.424 869.099L516.172 874.869L516.237 875.365L560.489 869.595L560.424 869.099ZM515.957 875.149L516.124 876.439L516.62 876.375L516.453 875.085L515.957 875.149ZM516.404 876.655L560.211 870.943L560.147 870.447L516.34 876.159L516.404 876.655ZM560.052 870.91L601.76 895.54L602.015 895.109L560.306 870.48L560.052 870.91ZM601.645 895.386L606.373 913.941L606.858 913.818L602.13 895.263L601.645 895.386ZM606.678 914.122L607.938 913.799L607.814 913.314L606.553 913.637L606.678 914.122ZM574.193 836.225L572.982 835.752L572.8 836.218L574.011 836.69L574.193 836.225ZM572.658 835.894L559.479 869.694L559.945 869.876L573.124 836.076L572.658 835.894ZM559.483 869.686L540.105 914.725L540.564 914.923L559.942 869.884L559.483 869.686ZM540.139 914.668L487.644 980.645L488.035 980.956L540.53 914.98L540.139 914.668ZM487.793 980.555L429.112 991.746L429.206 992.237L487.886 981.046L487.793 980.555ZM428.914 992.038L429.157 993.316L429.648 993.222L429.405 991.944L428.914 992.038ZM429.45 993.515L488.602 982.232L488.509 981.741L429.356 993.023L429.45 993.515ZM488.751 982.142L488.902 981.952L488.51 981.641L488.359 981.832L488.751 982.142ZM488.901 981.952L541.655 915.651L541.264 915.34L488.51 981.641L488.901 981.952ZM541.687 915.599L541.723 915.52L541.268 915.313L541.232 915.392L541.687 915.599ZM541.725 915.515L561.145 870.377L560.686 870.179L541.266 915.318L541.725 915.515ZM561.148 870.369L574.335 836.548L573.869 836.367L560.682 870.187L561.148 870.369ZM626.391 835.657L625.286 834.968L625.021 835.393L626.126 836.081L626.391 835.657ZM624.942 835.048L609.322 860.054L609.746 860.319L625.366 835.313L624.942 835.048ZM609.675 859.981L574.416 835.762L574.133 836.174L609.392 860.393L609.675 859.981ZM574.51 836.051L588.966 794.855L588.494 794.689L574.038 835.885L574.51 836.051ZM588.615 794.55L552.63 813.06L552.858 813.504L588.844 794.994L588.615 794.55ZM552.53 813.152L552.434 813.312L552.861 813.571L552.958 813.412L552.53 813.152ZM552.432 813.313L512.881 879.725L513.311 879.981L552.862 813.569L552.432 813.313ZM512.865 879.756L491.756 929.935L492.216 930.129L513.326 879.95L512.865 879.756ZM491.837 929.831L464.428 950.181L464.726 950.583L492.135 930.233L491.837 929.831ZM464.387 950.22L428.507 992.151L428.887 992.476L464.767 950.545L464.387 950.22ZM428.457 992.243L428.418 992.375L428.898 992.516L428.937 992.383L428.457 992.243ZM428.418 992.375L416.089 1034.22L416.568 1034.37L428.898 992.516L428.418 992.375ZM416.139 1034.46L416.369 1034.73L416.748 1034.4L416.518 1034.13L416.139 1034.46ZM416.369 1034.72L493.972 1125.47L494.352 1125.15L416.749 1034.4L416.369 1034.72ZM493.97 1125.47L514.929 1150.43L515.312 1150.11L494.353 1125.15L493.97 1125.47ZM515.353 1150.36L551.501 1057.93L551.036 1057.75L514.888 1150.17L515.353 1150.36ZM522.928 1002.91L522.784 1002.81L522.515 1003.23L522.66 1003.33L522.928 1002.91ZM522.786 1002.81L488.688 980.639L488.416 981.059L522.513 1003.23L522.786 1002.81ZM488.343 980.712L487.633 981.802L488.052 982.075L488.762 980.985L488.343 980.712ZM487.706 982.148L521.661 1004.23L521.933 1003.81L487.979 981.729L487.706 982.148ZM521.575 1004.14L549.621 1058.03L550.065 1057.8L522.019 1003.9L521.575 1004.14ZM549.61 1057.82L514.477 1147.66L514.942 1147.84L550.076 1058.01L549.61 1057.82ZM514.901 1147.59L495.346 1124.31L494.963 1124.63L514.518 1147.91L514.901 1147.59ZM495.345 1124.3L417.964 1033.82L417.584 1034.15L494.965 1124.63L495.345 1124.3ZM418.014 1034.06L430.105 993.018L429.626 992.876L417.534 1033.92L418.014 1034.06ZM430.055 993.11L465.707 951.446L465.327 951.121L429.675 992.784L430.055 993.11ZM465.666 951.484L493.194 931.064L492.896 930.662L465.368 951.083L465.666 951.484ZM493.276 930.96L514.483 880.534L514.022 880.34L492.815 930.766L493.276 930.96ZM514.467 880.565L553.885 814.395L553.456 814.139L514.038 880.309L514.467 880.565ZM553.785 814.489L586.538 797.643L586.309 797.199L553.556 814.045L553.785 814.489ZM586.187 797.338L572.484 836.393L572.956 836.558L586.659 797.504L586.187 797.338ZM572.578 836.682L609.775 862.233L610.058 861.821L572.861 836.27L572.578 836.682ZM610.129 862.159L626.47 836.002L626.046 835.737L609.705 861.895L610.129 862.159ZM417.311 1034.79L417.293 1033.49L416.793 1033.49L416.811 1034.79L417.311 1034.79ZM417.04 1033.24L351.706 1034.11L351.713 1034.61L417.047 1033.74L417.04 1033.24ZM291.919 1099.63L292.878 1100.51L293.216 1100.14L292.257 1099.26L291.919 1099.63ZM293.231 1100.49L352.472 1035.82L352.104 1035.49L292.862 1100.15L293.231 1100.49ZM352.291 1035.9L417.064 1035.04L417.058 1034.54L352.285 1035.4L352.291 1035.9ZM515.385 1149.52L514.909 1148.31L514.444 1148.5L514.919 1149.71L515.385 1149.52ZM514.585 1148.17L431.584 1180.73L431.767 1181.2L514.768 1148.64L514.585 1148.17ZM431.672 1180.71L342.071 1181.91L342.078 1182.41L431.679 1181.21L431.672 1180.71ZM342.229 1181.96L294.482 1144.59L294.174 1144.99L341.92 1182.36L342.229 1181.96ZM294.131 1144.64L293.33 1145.66L293.723 1145.97L294.524 1144.94L294.131 1144.64ZM293.373 1146.01L341.48 1183.66L341.789 1183.27L293.681 1145.62L293.373 1146.01ZM341.638 1183.72L432.043 1182.46L432.036 1181.96L341.631 1183.22L341.638 1183.72ZM432.131 1182.45L515.243 1149.85L515.061 1149.38L431.949 1181.98L432.131 1182.45ZM523.945 864.219L523.44 863.021L522.98 863.215L523.484 864.413L523.945 864.219ZM523.112 862.888L512.932 867.23L513.129 867.69L523.308 863.348L523.112 862.888ZM512.854 867.283L495.072 885.09L495.426 885.443L513.207 867.637L512.854 867.283ZM495.213 885.019L467.733 888.993L467.804 889.488L495.285 885.514L495.213 885.019ZM467.688 889.004L415.614 906.814L415.775 907.287L467.849 889.477L467.688 889.004ZM415.918 906.938L371.514 818.058L371.067 818.282L415.471 907.162L415.918 906.938ZM371.046 818.119L352.309 908.496L352.799 908.597L371.535 818.221L371.046 818.119ZM352.304 908.544L351.099 1035L351.599 1035L352.804 908.549L352.304 908.544ZM351.099 1034.98L340.949 1182.86L341.448 1182.89L351.598 1035.02L351.099 1034.98ZM370.871 1291.95L312.941 1451.02L313.411 1451.19L371.341 1292.12L370.871 1291.95ZM313.004 1451.28L360.8 1496.25L361.143 1495.89L313.347 1450.92L313.004 1451.28ZM360.722 1496.06L360.7 1496.5L361.199 1496.52L361.221 1496.08L360.722 1496.06ZM360.97 1496.76L361.421 1496.72L361.381 1496.22L360.93 1496.26L360.97 1496.76ZM361.23 1496.65L361.527 1496.93L361.869 1496.57L361.572 1496.29L361.23 1496.65ZM361.891 1496.91L362.158 1496.58L361.771 1496.27L361.504 1496.59L361.891 1496.91ZM361.985 1496.67L471.322 1487.6L471.28 1487.1L361.944 1496.18L361.985 1496.67ZM526.521 1421.35L526.06 1420.93L525.724 1421.3L526.184 1421.72L526.521 1421.35ZM526.061 1420.93L467.361 1367.33L467.024 1367.7L525.723 1421.3L526.061 1420.93ZM467.436 1367.57L496.512 1241.4L496.025 1241.29L466.949 1367.46L467.436 1367.57ZM496.325 1241.1L495.059 1240.81L494.946 1241.3L496.212 1241.59L496.325 1241.1ZM494.759 1241L465.829 1366.53L466.316 1366.64L495.246 1241.11L494.759 1241ZM466.229 1366.39L372.514 1291.49L372.202 1291.88L465.917 1366.78L466.229 1366.39ZM372.599 1291.62L342.752 1182.68L342.27 1182.81L372.117 1291.75L372.599 1291.62ZM342.761 1182.76L352.897 1035.07L352.399 1035.04L342.262 1182.73L342.761 1182.76ZM352.898 1035.05L354.091 908.688L353.591 908.683L352.398 1035.05L352.898 1035.05ZM354.085 908.736L372.047 822.153L371.557 822.052L353.596 908.635L354.085 908.736ZM371.578 822.214L414.814 908.759L415.262 908.536L372.025 821.991L371.578 822.214ZM415.119 908.884L468.153 890.734L467.991 890.261L414.957 908.411L415.119 908.884ZM468.107 890.745L495.897 886.737L495.825 886.242L468.036 890.25L468.107 890.745ZM496.038 886.666L514.036 868.645L513.682 868.292L495.684 886.313L496.038 886.666ZM513.956 868.699L523.812 864.546L523.618 864.085L513.762 868.238L513.956 868.699ZM466.375 1368.87L524.388 1421.84L524.725 1421.47L466.712 1368.5L466.375 1368.87ZM524.365 1421.5L470.46 1485.94L470.844 1486.26L524.748 1421.82L524.365 1421.5ZM470.631 1485.85L363.089 1494.78L363.131 1495.27L470.673 1486.35L470.631 1485.85ZM363.304 1495.18L466.737 1368.84L466.35 1368.52L362.917 1494.87L363.304 1495.18ZM372.218 1293.56L465.399 1368.03L465.711 1367.64L372.53 1293.17L372.218 1293.56ZM465.362 1367.68L362.191 1493.7L362.578 1494.02L465.749 1368L465.362 1367.68ZM362.634 1493.87L372.624 1293.38L372.124 1293.35L362.135 1493.85L362.634 1493.87ZM314.926 1450.83L371.159 1296.42L370.69 1296.25L314.456 1450.65L314.926 1450.83ZM370.675 1296.32L360.809 1494.35L361.308 1494.38L371.174 1296.35L370.675 1296.32ZM361.23 1494.18L314.863 1450.56L314.52 1450.92L360.887 1494.55L361.23 1494.18ZM551.49 1057.72L523.016 1003L522.572 1003.23L551.047 1057.95L551.49 1057.72ZM351.525 1034.19L291.904 1099.27L292.273 1099.61L351.894 1034.53L351.525 1034.19ZM340.958 1182.94L370.865 1292.1L371.347 1291.97L341.44 1182.81L340.958 1182.94ZM471.493 1487.51L526.544 1421.7L526.161 1421.38L471.109 1487.19L471.493 1487.51Z\",\n    fill: \"url(#paint21_linear_25_18)\"\n  }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"radialGradient\", {\n    id: \"paint0_radial_25_18\",\n    cx: 0,\n    cy: 0,\n    r: 1,\n    gradientUnits: \"userSpaceOnUse\",\n    gradientTransform: \"translate(339 397) rotate(90) scale(97.035 97.1299)\"\n  }, /*#__PURE__*/React.createElement(\"stop\", {\n    stopColor: \"#F7F7F7\"\n  }), /*#__PURE__*/React.createElement(\"stop\", {\n    offset: 1,\n    stopColor: \"#C4C4C4\",\n    stopOpacity: 0\n  })), /*#__PURE__*/React.createElement(\"radialGradient\", {\n    id: \"paint1_radial_25_18\",\n    cx: 0,\n    cy: 0,\n    r: 1,\n    gradientUnits: \"userSpaceOnUse\",\n    gradientTransform: \"translate(339.357 395.881) rotate(90) scale(76.9079 78.6318)\"\n  }, /*#__PURE__*/React.createElement(\"stop\", {\n    offset: 0.130208,\n    stopColor: \"#F7F7F7\"\n  }), /*#__PURE__*/React.createElement(\"stop\", {\n    offset: 1,\n    stopColor: \"#C4C4C4\",\n    stopOpacity: 0\n  })), /*#__PURE__*/React.createElement(\"radialGradient\", {\n    id: \"paint2_radial_25_18\",\n    cx: 0,\n    cy: 0,\n    r: 1,\n    gradientUnits: \"userSpaceOnUse\",\n    gradientTransform: \"translate(277.887 27.6133) rotate(90) scale(18.7091 19.7681)\"\n  }, /*#__PURE__*/React.createElement(\"stop\", {\n    stopColor: \"#F7F7F7\"\n  }), /*#__PURE__*/React.createElement(\"stop\", {\n    offset: 1,\n    stopColor: \"#C4C4C4\",\n    stopOpacity: 0\n  })), /*#__PURE__*/React.createElement(\"radialGradient\", {\n    id: \"paint3_radial_25_18\",\n    cx: 0,\n    cy: 0,\n    r: 1,\n    gradientUnits: \"userSpaceOnUse\",\n    gradientTransform: \"translate(277.58 27.8246) rotate(90) scale(10.9431 11.9355)\"\n  }, /*#__PURE__*/React.createElement(\"stop\", {\n    stopColor: \"#F7F7F7\"\n  }), /*#__PURE__*/React.createElement(\"stop\", {\n    offset: 1,\n    stopColor: \"#C4C4C4\",\n    stopOpacity: 0\n  })), /*#__PURE__*/React.createElement(\"radialGradient\", {\n    id: \"paint4_radial_25_18\",\n    cx: 0,\n    cy: 0,\n    r: 1,\n    gradientUnits: \"userSpaceOnUse\",\n    gradientTransform: \"translate(379.305 254.169) rotate(90) scale(9.25811 9.78216)\"\n  }, /*#__PURE__*/React.createElement(\"stop\", {\n    stopColor: \"#F7F7F7\"\n  }), /*#__PURE__*/React.createElement(\"stop\", {\n    offset: 1,\n    stopColor: \"#C4C4C4\",\n    stopOpacity: 0\n  })), /*#__PURE__*/React.createElement(\"radialGradient\", {\n    id: \"paint5_radial_25_18\",\n    cx: 0,\n    cy: 0,\n    r: 1,\n    gradientUnits: \"userSpaceOnUse\",\n    gradientTransform: \"translate(379.153 254.274) rotate(90) scale(5.41512 5.90621)\"\n  }, /*#__PURE__*/React.createElement(\"stop\", {\n    stopColor: \"#F7F7F7\"\n  }), /*#__PURE__*/React.createElement(\"stop\", {\n    offset: 1,\n    stopColor: \"#C4C4C4\",\n    stopOpacity: 0\n  })), /*#__PURE__*/React.createElement(\"radialGradient\", {\n    id: \"paint6_radial_25_18\",\n    cx: 0,\n    cy: 0,\n    r: 1,\n    gradientUnits: \"userSpaceOnUse\",\n    gradientTransform: \"translate(392.305 480.169) rotate(90) scale(9.25811 9.78216)\"\n  }, /*#__PURE__*/React.createElement(\"stop\", {\n    stopColor: \"#F7F7F7\"\n  }), /*#__PURE__*/React.createElement(\"stop\", {\n    offset: 1,\n    stopColor: \"#C4C4C4\",\n    stopOpacity: 0\n  })), /*#__PURE__*/React.createElement(\"radialGradient\", {\n    id: \"paint7_radial_25_18\",\n    cx: 0,\n    cy: 0,\n    r: 1,\n    gradientUnits: \"userSpaceOnUse\",\n    gradientTransform: \"translate(392.153 480.274) rotate(90) scale(5.41512 5.90621)\"\n  }, /*#__PURE__*/React.createElement(\"stop\", {\n    stopColor: \"#F7F7F7\"\n  }), /*#__PURE__*/React.createElement(\"stop\", {\n    offset: 1,\n    stopColor: \"#C4C4C4\",\n    stopOpacity: 0\n  })), /*#__PURE__*/React.createElement(\"radialGradient\", {\n    id: \"paint8_radial_25_18\",\n    cx: 0,\n    cy: 0,\n    r: 1,\n    gradientUnits: \"userSpaceOnUse\",\n    gradientTransform: \"translate(400.97 270.064) rotate(90) scale(7.075 7.47547)\"\n  }, /*#__PURE__*/React.createElement(\"stop\", {\n    stopColor: \"#F7F7F7\"\n  }), /*#__PURE__*/React.createElement(\"stop\", {\n    offset: 1,\n    stopColor: \"#C4C4C4\",\n    stopOpacity: 0\n  })), /*#__PURE__*/React.createElement(\"radialGradient\", {\n    id: \"paint9_radial_25_18\",\n    cx: 0,\n    cy: 0,\n    r: 1,\n    gradientUnits: \"userSpaceOnUse\",\n    gradientTransform: \"translate(400.854 270.144) rotate(90) scale(4.13821 4.51349)\"\n  }, /*#__PURE__*/React.createElement(\"stop\", {\n    stopColor: \"#F7F7F7\"\n  }), /*#__PURE__*/React.createElement(\"stop\", {\n    offset: 1,\n    stopColor: \"#C4C4C4\",\n    stopOpacity: 0\n  })), /*#__PURE__*/React.createElement(\"radialGradient\", {\n    id: \"paint10_radial_25_18\",\n    cx: 0,\n    cy: 0,\n    r: 1,\n    gradientUnits: \"userSpaceOnUse\",\n    gradientTransform: \"translate(308.168 294.064) rotate(90) scale(7.075 7.47547)\"\n  }, /*#__PURE__*/React.createElement(\"stop\", {\n    stopColor: \"#F7F7F7\"\n  }), /*#__PURE__*/React.createElement(\"stop\", {\n    offset: 1,\n    stopColor: \"#C4C4C4\",\n    stopOpacity: 0\n  })), /*#__PURE__*/React.createElement(\"radialGradient\", {\n    id: \"paint11_radial_25_18\",\n    cx: 0,\n    cy: 0,\n    r: 1,\n    gradientUnits: \"userSpaceOnUse\",\n    gradientTransform: \"translate(308.052 294.144) rotate(90) scale(4.13821 4.51349)\"\n  }, /*#__PURE__*/React.createElement(\"stop\", {\n    stopColor: \"#F7F7F7\"\n  }), /*#__PURE__*/React.createElement(\"stop\", {\n    offset: 1,\n    stopColor: \"#C4C4C4\",\n    stopOpacity: 0\n  })), /*#__PURE__*/React.createElement(\"radialGradient\", {\n    id: \"paint12_radial_25_18\",\n    cx: 0,\n    cy: 0,\n    r: 1,\n    gradientUnits: \"userSpaceOnUse\",\n    gradientTransform: \"translate(344.575 260.518) rotate(90) scale(3.87948 4.09907)\"\n  }, /*#__PURE__*/React.createElement(\"stop\", {\n    stopColor: \"#F7F7F7\"\n  }), /*#__PURE__*/React.createElement(\"stop\", {\n    offset: 1,\n    stopColor: \"#C4C4C4\",\n    stopOpacity: 0\n  })), /*#__PURE__*/React.createElement(\"radialGradient\", {\n    id: \"paint13_radial_25_18\",\n    cx: 0,\n    cy: 0,\n    r: 1,\n    gradientUnits: \"userSpaceOnUse\",\n    gradientTransform: \"translate(344.512 260.562) rotate(90) scale(2.26913 2.47491)\"\n  }, /*#__PURE__*/React.createElement(\"stop\", {\n    stopColor: \"#F7F7F7\"\n  }), /*#__PURE__*/React.createElement(\"stop\", {\n    offset: 1,\n    stopColor: \"#C4C4C4\",\n    stopOpacity: 0\n  })), /*#__PURE__*/React.createElement(\"radialGradient\", {\n    id: \"paint14_radial_25_18\",\n    cx: 0,\n    cy: 0,\n    r: 1,\n    gradientUnits: \"userSpaceOnUse\",\n    gradientTransform: \"translate(363.575 329.518) rotate(90) scale(3.87948 4.09907)\"\n  }, /*#__PURE__*/React.createElement(\"stop\", {\n    stopColor: \"#F7F7F7\"\n  }), /*#__PURE__*/React.createElement(\"stop\", {\n    offset: 1,\n    stopColor: \"#C4C4C4\",\n    stopOpacity: 0\n  })), /*#__PURE__*/React.createElement(\"radialGradient\", {\n    id: \"paint15_radial_25_18\",\n    cx: 0,\n    cy: 0,\n    r: 1,\n    gradientUnits: \"userSpaceOnUse\",\n    gradientTransform: \"translate(363.512 329.562) rotate(90) scale(2.26913 2.47491)\"\n  }, /*#__PURE__*/React.createElement(\"stop\", {\n    stopColor: \"#F7F7F7\"\n  }), /*#__PURE__*/React.createElement(\"stop\", {\n    offset: 1,\n    stopColor: \"#C4C4C4\",\n    stopOpacity: 0\n  })), /*#__PURE__*/React.createElement(\"radialGradient\", {\n    id: \"paint16_radial_25_18\",\n    cx: 0,\n    cy: 0,\n    r: 1,\n    gradientUnits: \"userSpaceOnUse\",\n    gradientTransform: \"translate(336.602 394.975) rotate(90) scale(6.68148 7.05968)\"\n  }, /*#__PURE__*/React.createElement(\"stop\", {\n    stopColor: \"#F7F7F7\"\n  }), /*#__PURE__*/React.createElement(\"stop\", {\n    offset: 1,\n    stopColor: \"#C4C4C4\",\n    stopOpacity: 0\n  })), /*#__PURE__*/React.createElement(\"radialGradient\", {\n    id: \"paint17_radial_25_18\",\n    cx: 0,\n    cy: 0,\n    r: 1,\n    gradientUnits: \"userSpaceOnUse\",\n    gradientTransform: \"translate(336.493 395.051) rotate(90) scale(3.90804 4.26245)\"\n  }, /*#__PURE__*/React.createElement(\"stop\", {\n    stopColor: \"#F7F7F7\"\n  }), /*#__PURE__*/React.createElement(\"stop\", {\n    offset: 1,\n    stopColor: \"#C4C4C4\",\n    stopOpacity: 0\n  })), /*#__PURE__*/React.createElement(\"radialGradient\", {\n    id: \"paint18_radial_25_18\",\n    cx: 0,\n    cy: 0,\n    r: 1,\n    gradientUnits: \"userSpaceOnUse\",\n    gradientTransform: \"translate(396.852 93.2033) rotate(90) scale(24.4095 25.7912)\"\n  }, /*#__PURE__*/React.createElement(\"stop\", {\n    stopColor: \"#F7F7F7\"\n  }), /*#__PURE__*/React.createElement(\"stop\", {\n    offset: 1,\n    stopColor: \"#C4C4C4\",\n    stopOpacity: 0\n  })), /*#__PURE__*/React.createElement(\"radialGradient\", {\n    id: \"paint19_radial_25_18\",\n    cx: 0,\n    cy: 0,\n    r: 1,\n    gradientUnits: \"userSpaceOnUse\",\n    gradientTransform: \"translate(396.451 93.4792) rotate(90) scale(14.2773 15.572)\"\n  }, /*#__PURE__*/React.createElement(\"stop\", {\n    stopColor: \"#F7F7F7\"\n  }), /*#__PURE__*/React.createElement(\"stop\", {\n    offset: 1,\n    stopColor: \"#C4C4C4\",\n    stopOpacity: 0\n  })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n    id: \"paint20_linear_25_18\",\n    x1: 519.461,\n    y1: 1038.9,\n    x2: 519.461,\n    y2: 908.725,\n    gradientUnits: \"userSpaceOnUse\"\n  }, /*#__PURE__*/React.createElement(\"stop\", {\n    stopColor: \"white\"\n  }), /*#__PURE__*/React.createElement(\"stop\", {\n    offset: 1,\n    stopColor: \"white\",\n    stopOpacity: 0\n  })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n    id: \"paint21_linear_25_18\",\n    x1: 475.427,\n    y1: 852.635,\n    x2: 475.427,\n    y2: 1195.27,\n    gradientUnits: \"userSpaceOnUse\"\n  }, /*#__PURE__*/React.createElement(\"stop\", {\n    stopColor: \"white\"\n  }), /*#__PURE__*/React.createElement(\"stop\", {\n    offset: 1,\n    stopColor: \"white\",\n    stopOpacity: 0\n  })), /*#__PURE__*/React.createElement(\"clipPath\", {\n    id: \"clip0_25_18\"\n  }, /*#__PURE__*/React.createElement(\"rect\", {\n    width: 696,\n    height: 1462,\n    fill: \"white\"\n  })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgChipset);\nexport default __webpack_public_path__ + \"static/media/chipset.1439b32b19da4a1b201784b86435b4c3.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\nimport {Timeline, Tween} from 'react-gsap';\n\nimport \"./Chipset.scss\";\n\nimport chip from \"../../../assets/images/chipset/chipset.svg\";\nimport ScrollContainer from '../../utils/ScrollContainer';\n\nconst Chipset = () => {\n\n    return <ScrollContainer height={\"max-content\"} id={\"trigger-chipset-section\"}>\n        <Timeline\n            target={\n                <div className=\"chipset-section\">\n                    <div className=\"chipset-section__chip\">\n                        <img src={chip} alt=\"chipset section\"/>\n                    </div>\n                    <div className=\"chipset-section__container\">\n                        <div className='chipset-section__text'>\n                            <h2>No proprietary modems or custom chipsets needed.</h2>\n                            <p>Just upload our firmware to your existing chipstack and you're globally\n                                connected.</p>\n                        </div>\n                    </div>\n                </div>\n            }\n            scrollTrigger={\n                {\n                    trigger: '#trigger-chipset-section',\n                    start: 'top center',\n                    end: 'bottom center',\n                    scrub: true,\n                    markers: false,\n                }\n            }\n        >\n            <Tween from={{autoAlpha: 0}} to={{autoAlpha: 1}} immediateRender={false}/>\n            <Tween from={{autoAlpha: 1}} to={{autoAlpha: 0}} immediateRender={false}/>\n        < /Timeline>\n    </ScrollContainer>\n}\nexport default Chipset;","import React, {Fragment} from \"react\";\nimport {Tween, Timeline} from 'react-gsap';\n\nimport \"./Bluetooth.scss\";\n\nimport device from \"../../../assets/images/bluetooth/admin.png\";\nimport ScrollContainer from '../../utils/ScrollContainer';\n\nconst Bluetooth = () => {\n    return <ScrollContainer height={\"100vh\"} id={\"trigger-bluetooth-section\"}>\n        <div className=\"bluetooth-section\">\n            <Timeline\n                target={\n                    <Fragment>\n                        <div className=\"bluetooth-section__device\">\n                            <img src={device} alt=\"Bluetooth section\"/>\n                        </div>\n                        <div className=\"bluetooth-section__container\">\n                            <div className=\"bluetooth-section__text\">\n                                <h2>Connect to space directly with Bluetooth</h2>\n                                <p>\n                                    Our constellation captures data directly from your Bluetooth device.{\" \"}\n                                </p>\n                            </div>\n                        </div>\n                    </Fragment>\n                }\n                scrollTrigger={\n                    {\n                        trigger: '#trigger-bluetooth-section',\n                        start: 'top center+=200',\n                        end: 'bottom center-=200',\n                        scrub: true,\n                        markers: false,\n                    }\n                }\n            >\n                <Tween from={{autoAlpha: 0}} to={{autoAlpha: 1}}\n                       target={0} position={0}\n                       immediateRender={false}\n                />\n                <Tween from={{autoAlpha: 1}} to={{autoAlpha: 0}}\n                       target={0} position={1}\n                       immediateRender={false}\n                />\n                <Tween\n                    from={{autoAlpha: 0}} to={{autoAlpha: 1}}\n                    target={1} position={0}\n                    immediateRender={false}\n                />\n                <Tween from={{autoAlpha: 1}} to={{autoAlpha: 0}}\n                       target={1} position={1}\n                       immediateRender={false}\n                />\n            < /Timeline>\n        </div>\n    </ScrollContainer>\n}\n\nexport default Bluetooth;\n","var _path;\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); }\nimport * as React from \"react\";\nfunction SvgArrow(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    viewBox: \"0 0 19 11\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1.02566 1.41984L8.94491 9.49978L17.0248 1.58053\",\n    stroke: \"white\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrow);\nexport default __webpack_public_path__ + \"static/media/arrow.f7a47af86c65e44436985cec8924ba0a.svg\";\nexport { ForwardRef as ReactComponent };","import React, {useState, useRef, forwardRef, createRef, useEffect} from \"react\";\nimport \"./Cardlist.scss\";\nimport arrow from \"../../../assets/images/cards/arrow.svg\";\n\n\nconst CardItem = forwardRef(({\n                                 icon = null,\n                                 name = \"\",\n                                 text = \"\",\n                                 active = false,\n                                 resetItem = () => {\n                                 }\n                             }, ref) => {\n\n    const _onclick = () => {\n        const c = !ref.current.classList.contains(\"card-list__item--active\");\n        resetItem();\n        if (c)\n            ref.current.classList.add(\"card-list__item--active\")\n    }\n    return <div\n        className={`card-list__item${active === true ? ' card-list__item--active' : ''}`}\n        onClick={() => _onclick()}\n        ref={ref}>\n        <div className=\"card-list__item--inner\">\n            <div className=\"card-list__item--header\">\n                <span>{icon ? <img src={icon} alt={name}/> : \"\"}</span>\n                <span>{name}</span>\n                <span className=\"arrow\">\n                    <img src={arrow} alt={name}/>\n                </span>\n            </div>\n            <div className=\"card-list__item--content\">\n                <p>{text}</p>\n            </div>\n        </div>\n    </div>\n});\n\nconst CardList = ({\n                      cards = []\n                  }) => {\n    const [activeItem] = useState(null);\n    const refs = useRef(cards.map(_ => createRef()));\n    const cont = useRef(null);\n\n    const _resetItems = () => {\n        refs.current.forEach(e => e.current.classList.remove(\"card-list__item--active\"));\n    }\n\n    useEffect(() => {\n        function handleClickOutside(event) {\n            if (cont.current && !cont.current.contains(event.target)) {\n                _resetItems();\n            }\n        }\n\n        document.addEventListener(\"mousedown\", handleClickOutside);\n        return () => {\n            document.removeEventListener(\"mousedown\", handleClickOutside);\n        };\n    }, [cont])\n\n    return <div className=\"card-list\" ref={cont}>\n        {cards.map((e, i) => <CardItem {...e}\n                                       active={activeItem === i}\n                                       resetItem={() => _resetItems()}\n                                       key={`cards-item-${i}`}\n                                       ref={refs.current[i]}\n            />\n        )}\n    </div>\n}\n\nexport default CardList;","var _path, _path2, _path3, _path4;\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); }\nimport * as React from \"react\";\nfunction SvgI10(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    viewBox: \"0 0 31 31\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M27.2176 23.8225C29.1462 23.3827 30.2618 22.0966 30.8102 20.2573C30.8905 19.9878 30.9378 19.7089 30.9993 19.4393V18.1674C30.9851 18.1201 30.9567 18.0729 30.9473 18.0256C30.5691 15.7655 29.3401 14.2666 27.0474 13.6945C27.1076 13.618 27.1598 13.5356 27.2034 13.4486C27.4256 12.9238 27.6667 12.4084 27.8416 11.8646C27.8718 11.7997 27.8863 11.7287 27.8839 11.6571C27.8815 11.5856 27.8622 11.5157 27.8277 11.453C27.7931 11.3903 27.7443 11.3367 27.6851 11.2965C27.6259 11.2562 27.558 11.2306 27.487 11.2216C27.2271 11.179 27.0238 11.3682 26.9482 11.7133C26.8532 12.2468 26.6254 12.7478 26.2859 13.1701C25.9463 13.5924 25.5059 13.9223 25.0053 14.1295C24.8049 14.2039 24.627 14.3287 24.4887 14.4919C24.3505 14.655 24.2565 14.851 24.2159 15.0609C23.6439 17.2312 21.5451 17.5102 20.179 16.5409C19.9786 16.4453 19.8148 16.287 19.7124 16.0899C19.61 15.8928 19.5747 15.6677 19.6117 15.4487C19.6283 15.358 19.6283 15.2651 19.6117 15.1744C19.5346 14.8014 19.5708 14.4139 19.7157 14.0617C19.8606 13.7095 20.1076 13.4087 20.4248 13.198C20.7981 12.8742 21.1502 12.5268 21.4789 12.1578C21.772 11.8646 21.8004 11.614 21.5829 11.3965C21.3702 11.1932 21.1055 11.2358 20.8219 11.5195C20.5051 11.8315 20.1932 12.1436 19.8812 12.4604C19.8103 12.5266 19.7394 12.588 19.6306 12.6873C19.6212 12.5408 19.6165 12.4462 19.6165 12.3469C19.6165 11.5195 19.6165 10.6967 19.6117 9.86927C19.6117 9.50047 19.4321 9.27824 19.1485 9.27824C18.8649 9.27824 18.69 9.50047 18.6852 9.86927C18.6805 10.4272 18.6852 10.9804 18.6852 11.5336C18.6852 11.614 18.6663 11.6944 18.6521 11.8315C18.222 11.3965 17.8391 11.0135 17.4515 10.6305C17.1915 10.3658 16.9173 10.3327 16.714 10.5265C16.5108 10.7298 16.5391 11.0041 16.7991 11.2689C17.3711 11.841 17.9478 12.4036 18.5103 12.9852C18.6042 13.0811 18.6626 13.2062 18.6758 13.3399C18.69 14.1673 18.69 14.9948 18.6805 15.8222C18.6804 15.9208 18.649 16.0169 18.5907 16.0964C17.6358 17.2596 15.6079 17.5244 14.5727 16.1059C14.4839 15.9649 14.4319 15.804 14.4214 15.6378C14.2985 14.5266 14.2607 13.406 14.0574 12.3091C13.8163 10.9899 13.4429 9.6896 13.1167 8.37986C13.0789 8.2191 13.0364 8.09617 13.2444 8.02524C13.5025 7.94885 13.7232 7.77945 13.8638 7.54977C14.0044 7.32009 14.0548 7.04643 14.0054 6.7817C13.9803 6.34433 14.1039 5.91133 14.3563 5.55328C14.6087 5.19522 14.9749 4.93324 15.3952 4.81001C15.6532 4.77058 15.8857 4.63181 16.0429 4.42333C16.2001 4.21484 16.2696 3.95316 16.2366 3.69413C16.2591 3.26254 16.3773 2.84137 16.5825 2.46107C16.7878 2.08077 17.075 1.75085 17.4233 1.49518C17.7716 1.23952 18.1724 1.06448 18.5967 0.98276C19.021 0.901037 19.4581 0.914661 19.8764 1.02264C20.4857 1.17837 21.0275 1.52848 21.4199 2.01995C21.8123 2.51141 22.0338 3.11743 22.0509 3.74614C22.0357 3.97596 22.0997 4.20403 22.2321 4.39243C22.3646 4.58083 22.5575 4.71819 22.7789 4.78164C23.2518 4.88837 23.6681 5.16724 23.9468 5.56401C24.2255 5.96079 24.3467 6.44707 24.2868 6.92827C24.2611 7.14567 24.3085 7.36544 24.4215 7.55293C24.5345 7.74042 24.7066 7.88496 24.9108 7.96377C25.7314 8.30049 26.3891 8.94308 26.7449 9.7558C26.7879 9.84487 26.8472 9.92507 26.9198 9.99221C26.9914 10.0582 27.0845 10.096 27.1819 10.0986C27.2792 10.1012 27.3742 10.0685 27.4492 10.0064C27.5439 9.94588 27.6121 9.85178 27.6401 9.743C27.6682 9.63422 27.654 9.51885 27.6005 9.42009C27.1836 8.43244 26.4108 7.63757 25.4355 7.19307C25.2937 7.12688 25.1991 7.08432 25.2086 6.87627C25.2491 6.33377 25.1319 5.79113 24.871 5.31376C24.6102 4.8364 24.2169 4.44469 23.7385 4.18587C23.5116 4.04875 23.1618 4.02511 23.0247 3.83598C22.8829 3.63267 22.9396 3.29222 22.8876 3.01798C22.6851 2.10375 22.1561 1.29481 21.3998 0.742912C20.6436 0.191009 19.712 -0.0659393 18.7798 0.0202485C17.8697 0.111937 17.0223 0.525856 16.3905 1.18736C15.7586 1.84886 15.3838 2.71441 15.3337 3.62794C15.3434 3.70097 15.3248 3.77495 15.2818 3.83473C15.2387 3.8945 15.1744 3.93555 15.1021 3.94946C14.4888 4.13451 13.956 4.52158 13.5904 5.04778C13.2249 5.57398 13.0479 6.20839 13.0884 6.8479C13.0978 7.10323 12.9985 7.19307 12.7575 7.20726C12.7244 7.11742 12.6913 7.02284 12.6535 6.92827C12.2328 5.92115 11.8451 4.89038 11.3772 3.90217C10.8576 2.70343 10.0815 1.63331 9.10343 0.767312C7.88858 -0.235086 6.57445 -0.268178 5.36904 0.743676C3.7382 2.11488 2.92987 4.01565 2.15935 5.92588C2.14171 5.97675 2.13447 6.03066 2.13806 6.08439C2.14165 6.13811 2.156 6.19057 2.18025 6.23864C2.2045 6.28671 2.23816 6.32943 2.27923 6.36424C2.32031 6.39904 2.36795 6.42523 2.41935 6.44126C2.51026 6.48894 2.61558 6.50132 2.71506 6.47601C2.81454 6.4507 2.90115 6.38948 2.95823 6.30415C3.01737 6.21026 3.06648 6.11042 3.10477 6.00627C3.4073 5.34903 3.6862 4.67761 4.0171 4.03456C4.46419 3.09437 5.08303 2.24606 5.84175 1.53331C6.73989 0.748411 7.5435 0.72003 8.47946 1.44819C8.64613 1.57783 8.80114 1.7218 8.94272 1.87846C9.86395 2.93618 10.592 4.14775 11.0935 5.45778C12.2289 8.1401 12.9984 10.963 13.3814 13.8505C13.6068 15.1667 13.5292 16.5169 13.1545 17.7986C12.4502 19.9642 11.1266 21.5529 8.92381 22.3094C8.51489 22.4254 8.09984 22.5185 7.68058 22.5884C7.68058 20.7585 7.67586 19.0138 7.68531 17.2738C7.70289 17.1664 7.75619 17.0681 7.83658 16.9948C8.17693 16.6402 8.53146 16.295 8.88126 15.9451C9.10343 15.7229 9.33033 15.5054 9.54305 15.2784C9.59131 15.2373 9.63031 15.1864 9.65749 15.1291C9.68467 15.0718 9.69942 15.0093 9.70076 14.9459C9.7021 14.8825 9.69 14.8195 9.66526 14.7611C9.64053 14.7027 9.60371 14.6502 9.55723 14.607C9.51436 14.5641 9.46316 14.5303 9.40677 14.5079C9.35038 14.4855 9.29 14.4748 9.22935 14.4766C9.16869 14.4784 9.10903 14.4925 9.05405 14.5182C8.99907 14.5439 8.94992 14.5805 8.90963 14.6259C8.81981 14.7063 8.73472 14.7962 8.64964 14.8813C8.35183 15.1886 8.0493 15.4912 7.75149 15.7986L7.68058 15.756V15.4628C7.68058 14.9995 7.68531 14.5361 7.67586 14.0727C7.67113 13.7181 7.49623 13.5101 7.21733 13.5101C6.93371 13.5101 6.75881 13.7181 6.74935 14.068V17.3967C6.74935 17.496 6.7399 17.6 6.73044 17.7797C6.3381 17.3778 6.0072 17.0374 5.6763 16.7017C5.35013 16.3707 5.09487 16.3234 4.8727 16.5362C4.65053 16.7489 4.6978 17.0137 5.01924 17.3352C5.52976 17.8506 6.04974 18.3566 6.55081 18.8814C6.66349 19.0012 6.73042 19.1569 6.7399 19.3211C6.7588 20.3093 6.74935 21.2976 6.74935 22.2858C6.74935 22.3709 6.73517 22.456 6.72571 22.5695C6.43736 22.5222 6.17737 22.4938 5.92684 22.4276C3.72402 21.8555 2.31535 20.4086 1.4692 18.3518C0.788502 16.6969 0.859409 14.9853 1.13358 13.2642C1.39852 11.5849 1.7856 9.92716 2.29172 8.30421C2.33312 8.19236 2.35238 8.07353 2.34844 7.95432C2.34079 7.8516 2.2956 7.75529 2.22149 7.68378C2.14738 7.61227 2.04954 7.57055 1.94664 7.5666C1.88599 7.55864 1.82436 7.56293 1.76539 7.57918C1.70641 7.59543 1.65129 7.62333 1.60327 7.66123C1.55525 7.69912 1.5153 7.74625 1.48578 7.79984C1.45626 7.85342 1.43777 7.91239 1.43139 7.97324C1.04377 9.56667 0.613601 11.1506 0.29216 12.7535C-0.0628743 14.2605 -0.0902778 15.8262 0.2118 17.3447C0.807412 19.9216 2.20663 21.8839 4.66471 22.9666C5.33917 23.2151 6.02924 23.4188 6.73044 23.5766V30.0922H6.38536C4.46617 30.0922 2.55013 30.0906 0.637238 30.0875C0.372522 30.0875 0.140895 30.1205 0.0463531 30.3948C-0.0529156 30.6738 0.103076 30.8534 0.325249 31C10.5499 31 20.7746 30.9984 30.9993 30.9953V30.3948C30.9406 30.289 30.8516 30.2032 30.7438 30.1485C30.636 30.0937 30.5142 30.0724 30.3942 30.0875C29.2361 30.0969 28.0827 30.0922 26.8867 30.0922V29.7517C26.8867 27.9172 26.8914 26.0826 26.8773 24.248C26.8773 23.9832 26.9293 23.8887 27.2176 23.8225ZM18.6663 30.0733H7.69949V23.5246C11.3913 22.9619 13.3909 20.6687 14.2843 17.1887C15.6883 18.2762 17.1584 18.21 18.6663 17.3116V30.0733ZM25.9791 24.1582V30.0685H19.6306V17.288C19.711 17.3447 19.7961 17.3967 19.8812 17.4487C19.9438 17.487 20.0085 17.5218 20.075 17.5527C20.1412 17.5858 20.2073 17.6189 20.2688 17.6473C20.335 17.6757 20.4012 17.7041 20.4626 17.7324C20.5335 17.7561 20.5997 17.7797 20.6706 17.8033C20.8543 17.8635 21.0424 17.9093 21.2331 17.9405C21.4304 17.9703 21.6293 17.9877 21.8287 17.9925C21.8429 18.3046 21.8571 18.6072 21.8618 18.9145C21.8681 19.9382 22.1701 20.9382 22.7316 21.794C23.063 22.3381 23.5085 22.8038 24.0374 23.1589C24.5662 23.514 25.1658 23.7501 25.7948 23.8508C25.8295 23.8532 25.8633 23.8629 25.894 23.8792C25.9058 23.8859 25.9169 23.8939 25.9271 23.9029C25.9356 23.9066 25.9423 23.9133 25.946 23.9218L25.9507 23.9265C25.9825 23.9993 25.9923 24.0798 25.9791 24.1582ZM26.8914 21.7515C26.911 21.6451 26.966 21.5484 27.0474 21.4772C27.4303 21.0801 27.8274 20.6923 28.2197 20.2952C28.4986 20.0162 28.5317 19.7467 28.3143 19.5386C28.1063 19.3306 27.851 19.3684 27.5769 19.6379C27.3736 19.8365 27.1751 20.0351 26.9765 20.2337C26.9474 20.2481 26.9174 20.2607 26.8867 20.2715V19.0327C26.882 18.6875 26.7071 18.4748 26.4282 18.4748C26.1493 18.4795 25.9791 18.6923 25.9791 19.0422V22.9525C25.0904 22.8215 24.2889 22.3459 23.7479 21.6285C23.3488 21.1255 23.0618 20.543 22.9061 19.92C22.7504 19.2969 22.7296 18.6478 22.8451 18.0161C22.8583 17.9614 22.8828 17.91 22.917 17.8652C22.9512 17.8205 22.9943 17.7833 23.0436 17.7561C23.5409 17.508 23.982 17.1605 24.3397 16.7352C24.6975 16.3099 24.9642 15.8157 25.1235 15.2832C25.1744 15.1617 25.262 15.0592 25.374 14.99C25.7838 14.693 26.289 14.5582 26.7922 14.6117C27.5034 14.7162 28.1679 15.0288 28.7019 15.5101C30.7345 17.3684 30.4935 20.9713 28.2103 22.4418C27.7844 22.6755 27.342 22.8778 26.8867 23.047C26.8867 22.5364 26.8773 22.1392 26.8914 21.7515Z\",\n    fill: \"white\",\n    stroke: \"white\",\n    strokeWidth: 0.5\n  })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M18.666 30.0732H7.69922V30.078H18.666V30.0732Z\",\n    fill: \"white\",\n    stroke: \"white\",\n    strokeWidth: 0.5\n  })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M21.2344 17.9403C21.0436 17.9092 20.8556 17.8633 20.6719 17.8032C20.8562 17.8611 21.0441 17.9069 21.2344 17.9403Z\",\n    fill: \"white\",\n    stroke: \"white\",\n    strokeWidth: 0.5\n  })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M25.9793 30.0684H19.6309V30.0731H25.9793V30.0684Z\",\n    fill: \"white\",\n    stroke: \"white\",\n    strokeWidth: 0.5\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgI10);\nexport default __webpack_public_path__ + \"static/media/i10.0d1924e8ba9ea48016438a790205da98.svg\";\nexport { ForwardRef as ReactComponent };","import React from \"react\";\nimport CardList from \"../../utils/Cardlist\";\nimport \"./Cards.scss\";\nimport {Timeline, Tween} from \"react-gsap\";\n\nimport ScrollContainer from \"../../utils/ScrollContainer\";\n\nimport i01 from \"../../../assets/images/cards/i01.svg\";\nimport i02 from \"../../../assets/images/cards/i02.svg\";\nimport i03 from \"../../../assets/images/cards/i03.svg\";\nimport i04 from \"../../../assets/images/cards/i04.svg\";\nimport i05 from \"../../../assets/images/cards/i05.svg\";\nimport i06 from \"../../../assets/images/cards/i06.svg\";\nimport i07 from \"../../../assets/images/cards/i07.svg\";\nimport i08 from \"../../../assets/images/cards/i08.svg\";\nimport i09 from \"../../../assets/images/cards/i09.svg\";\nimport i10 from \"../../../assets/images/cards/i10.svg\";\n\n\nconst cards = [\n    {\n        name: \"Container and Pallet Tracking\",\n        icon: i01,\n        text: \"Affix a BLE chip on a weatherized sticker, slap it on the side of any container or pallet, and track your assets easily, globally, affordably.\",\n    },\n    {\n        name: \"Wildfire Detection\",\n        icon: i02,\n        text: \"Integrate a temperature sensor with a BLE chip for a dime-sized unit that can send alerts from tree-lines to satellites in real-time.\",\n    },\n    {\n        name: \"Energy Grid Monitoring\",\n        icon: i03,\n        text: \"Upload our firmware to your voltage and current monitor's BLE chip and receive real-time alerts when anomalies are detected.\",\n    },\n    {\n        name: \"Pet, Child, and Elderly Safety\",\n        icon: i04,\n        text: \"Upload our firmware to your existing BLE location tracking device and expand your coverage globally.\",\n    },\n    {\n        name: \"Heavy Equipment and Tool Tracking for Construction Sites\",\n        icon: i05,\n        text: \"Enable Hubble on your fleet of dozers to keep track of them beyond your construction site.\",\n    },\n    {\n        name: \"Fleet Management and Logistics\",\n        icon: i06,\n        text: \"Replace your LoJack with a simpler, more cost-effective solution in Hubble.\",\n    },\n    {\n        name: \"Predictive Maintenance\",\n        icon: i07,\n        text: \"Couple any sensor with a Hubble-enabled BLE chip and retrieve readings no matter how far from cellular coverage your assets may be.\",\n    },\n    {\n        name: \"Smart Buildings\",\n        icon: i08,\n        text: \"Capturing data for water leaks, carbon monoxide buildup, and energy usage is much easier when you're not limited to your router's coverage zones.\",\n    },\n    {\n        name: \"Agriculture Technology\",\n        icon: i09,\n        text: \"The proliferation of sensors across hundreds of acres without having to install costly infrastructure becomes a reality from the economies of scale made possible by Hubble.\",\n    },\n    {\n        name: \"Environmental Monitoring\",\n        icon: i10,\n        text: \"Whether you're in the middle of the ocean or in the middle of a rain forest, high-fidelity environmental data can now be collected in a cost-efficient, reliable manner without the barrier-to-entry of existing infrastructure costs.\",\n    },\n];\n\nconst Cards = () => {\n    return (\n        <ScrollContainer height={\"max-content\"} id={\"trigger-cards-section\"}>\n            <Timeline\n                target={\n                    <div className=\"cards-section\" id=\"use-cases\">\n                        <div className=\"cards-section__container\">\n                            <h2>\n                                Using off-the-shelf Bluetooth chipsets, we enable IoT\n                                use-cases previously impractical at global scale\n                            </h2>\n                            <CardList cards={cards}/>\n                        </div>\n                    </div>\n                }\n                scrollTrigger={\n                    {\n                        trigger: '#trigger-cards-section',\n                        start: 'top center+=200',\n                        endTrigger: '#trigger-cta-section',\n                        end: 'bottom bottom',\n                        scrub: true,\n                        markers: false,\n                    }\n                }\n            >\n                <Tween\n                    from={{autoAlpha: 0, y: \"0rem\"}}\n                    to={{autoAlpha: 1, y: \"10rem\"}}\n                    immediateRender={false}\n                    ease=\"power1.easeIn\"\n                />\n                <Tween\n                    from={{autoAlpha: 1, y: \"10rem\"}}\n                    to={{autoAlpha: 0, y: \"-5rem\"}}\n                    immediateRender={false}\n                    ease=\"power1.easeIn\"\n                />\n            </Timeline>\n        </ScrollContainer>\n    );\n};\n\nexport default Cards;\n","var _path;\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); }\nimport * as React from \"react\";\nfunction SvgI01(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    viewBox: \"0 0 29 29\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M28.875 13.4062H22.6153C22.3838 11.5918 21.5564 9.90549 20.2629 8.61205C18.9695 7.31862 17.2832 6.49121 15.4688 6.25969V0H13.4063V6.25969C11.5918 6.49121 9.90549 7.31862 8.61205 8.61205C7.31862 9.90549 6.49121 11.5918 6.25969 13.4062H0V15.4688H6.25969C6.49121 17.2832 7.31862 18.9695 8.61205 20.2629C9.90549 21.5564 11.5918 22.3838 13.4063 22.6153V28.875H15.4688V22.6153C17.2832 22.3838 18.9695 21.5564 20.2629 20.2629C21.5564 18.9695 22.3838 17.2832 22.6153 15.4688H28.875V13.4062ZM14.4375 20.625C13.2137 20.625 12.0174 20.2621 10.9999 19.5822C9.98238 18.9023 9.18931 17.936 8.721 16.8054C8.25268 15.6747 8.13015 14.4306 8.36889 13.2304C8.60764 12.0301 9.19694 10.9276 10.0623 10.0623C10.9276 9.19694 12.0301 8.60764 13.2304 8.36889C14.4306 8.13015 15.6747 8.25268 16.8054 8.721C17.936 9.18931 18.9023 9.98238 19.5822 10.9999C20.2621 12.0174 20.625 13.2137 20.625 14.4375C20.6231 16.0779 19.9706 17.6506 18.8106 18.8106C17.6506 19.9706 16.0779 20.6231 14.4375 20.625Z\",\n    fill: \"white\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgI01);\nexport default __webpack_public_path__ + \"static/media/i01.f771d964c4d3891d149d113cf8307b16.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\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); }\nimport * as React from \"react\";\nfunction SvgI02(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    viewBox: \"0 0 24 31\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M22.8327 17.0262C22.562 14.97 21.8207 13.002 20.6653 11.2717C19.7561 9.88345 18.7524 8.55272 17.7851 7.19324C16.8293 5.97513 16.1586 4.56254 15.8213 3.05723C15.7378 2.65233 15.6939 2.24043 15.6904 1.82722C15.7038 1.6643 15.6715 1.50086 15.5971 1.35491C15.5227 1.20896 15.409 1.08615 15.2685 1H14.8685C13.6742 1.82892 12.6146 2.83312 11.7264 3.97794C10.3563 5.647 9.38205 7.59863 8.8753 9.68923C8.50972 11.4644 8.33179 13.2724 8.34437 15.084V15.4437C8.12617 15.3646 7.9516 15.3214 7.78431 15.2423C6.8647 14.7782 6.16701 13.9745 5.84236 13.0052C5.63009 12.4305 5.45039 11.8446 5.30413 11.2501C5.29431 11.1339 5.25233 11.0226 5.18278 10.9285C5.11323 10.8343 5.01882 10.7609 4.90988 10.7163C4.80093 10.6718 4.68168 10.6577 4.56519 10.6757C4.4487 10.6938 4.33948 10.7432 4.24952 10.8185C4.05685 10.9432 3.87444 11.0827 3.70402 11.2357C2.67589 12.2019 1.94043 13.4325 1.58022 14.7891C1.24887 15.9517 1.06083 17.1496 1.02018 18.3569C0.933135 19.802 1.12822 21.2502 1.59478 22.6224C2.41695 25.0192 4.05907 27.0571 6.23794 28.3846C8.41682 29.7122 10.9958 30.2462 13.5302 29.8945C15.5567 29.6345 17.4638 28.8001 19.0215 27.4921C21.077 25.8363 22.4398 23.4866 22.8473 20.896C22.8982 20.5867 22.9491 20.2846 23 19.9825V18.3928C22.9491 17.9397 22.8909 17.4793 22.8327 17.0262ZM10.6936 28.5351C9.93785 28.2064 9.30573 27.651 8.88673 26.9475C8.46774 26.2439 8.28308 25.4279 8.35891 24.6148C8.41709 24.025 8.53346 23.4496 8.62802 22.8669C8.65711 22.8741 8.69348 22.8813 8.72257 22.8885C8.94804 23.1618 9.15169 23.4567 9.39898 23.7085C9.71413 24.0173 10.134 24.1993 10.5772 24.2192C11.0936 24.2624 11.3409 24.0106 11.3773 23.4927C11.4355 22.6295 11.4719 21.7592 11.6101 20.9104C11.7986 20.045 12.218 19.2452 12.8247 18.5942C12.9117 18.8433 13.0162 19.0861 13.1375 19.3207C13.5375 19.9753 13.9302 20.6299 14.3739 21.2557C15.1114 22.2477 15.5546 23.4234 15.654 24.6508C15.8431 27.3913 13.312 29.5493 10.6936 28.5351ZM15.9449 27.9596C15.9744 27.8903 16.0084 27.8231 16.0468 27.7582C16.7467 26.6741 17.0282 25.3768 16.8395 24.1041C16.6721 22.8867 16.2106 21.727 15.494 20.7234C15.094 20.1407 14.7085 19.5581 14.3375 18.9683C14.0531 18.5063 13.8998 17.977 13.8939 17.4361C13.9073 17.2989 13.8774 17.161 13.8084 17.0412C13.7394 16.9214 13.6346 16.8257 13.5084 16.7672C13.3792 16.7148 13.2366 16.7039 13.1008 16.7362C12.965 16.7685 12.843 16.8423 12.752 16.947C11.9648 17.588 11.3272 18.3898 10.8827 19.2974C10.4383 20.205 10.1976 21.1969 10.1772 22.2051C10.17 22.3274 10.17 22.4497 10.1554 22.572C10.1554 22.5936 10.1336 22.6152 10.1045 22.6727C9.85214 22.3239 9.68305 21.923 9.60991 21.5002C9.6026 21.3775 9.55894 21.2596 9.48439 21.1612C9.40984 21.0628 9.30768 20.9883 9.19062 20.9469C9.07357 20.9055 8.9468 20.8991 8.82607 20.9284C8.70534 20.9577 8.59599 21.0215 8.51164 21.1118C7.93016 21.5822 7.52752 22.234 7.36973 22.9604C7.10341 23.7859 7.02854 24.6601 7.15068 25.518C7.27281 26.376 7.58882 27.1958 8.07524 27.9164C8.05526 27.942 8.03338 27.966 8.00978 27.9884C7.44247 27.6503 6.83879 27.3482 6.30784 26.9598C4.34092 25.5772 2.96838 23.5167 2.46027 21.1837C2.25075 20.1739 2.18951 19.1394 2.27844 18.1123C2.32356 16.9052 2.55409 15.7119 2.96213 14.5733C3.22836 13.8245 3.63008 13.1299 4.14768 12.5233C4.18272 12.4588 4.21192 12.3914 4.23495 12.3219C4.44588 12.847 4.59862 13.2714 4.78773 13.6742C5.18458 14.6109 5.83364 15.4219 6.66425 16.0191C7.32115 16.4666 8.09946 16.7073 8.89712 16.7097C8.98093 16.7197 9.06596 16.7119 9.14645 16.6867C9.22695 16.6615 9.30106 16.6196 9.36378 16.5637C9.42649 16.5078 9.47637 16.4392 9.51005 16.3627C9.54373 16.2861 9.56041 16.2033 9.55899 16.1198C9.58809 15.6451 9.58082 15.1775 9.58809 14.7028C9.59037 13.0881 9.76097 11.4779 10.0972 9.89783C10.4458 8.46622 11.0439 7.10558 11.8646 5.87692C12.6003 4.74197 13.4912 3.7132 14.5121 2.81987C14.5921 3.1939 14.6576 3.53197 14.7448 3.87005C15.1636 5.32528 15.8517 6.69109 16.7741 7.89816C17.6687 9.14256 18.5924 10.3654 19.4506 11.6385C20.9461 13.8469 21.7552 16.44 21.7781 19.0977C21.772 20.9735 21.2182 22.8077 20.1835 24.3797C19.1487 25.9518 17.6769 27.1949 15.9449 27.9596Z\",\n    fill: \"white\"\n  })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M22.8327 17.0262L22.9567 17.0102L22.9566 17.0098L22.8327 17.0262ZM20.6653 11.2717L20.5607 11.3402L20.5613 11.3411L20.6653 11.2717ZM17.7851 7.19324L17.887 7.12069L17.8834 7.11607L17.7851 7.19324ZM15.8213 3.05723L15.6988 3.08247L15.6993 3.08456L15.8213 3.05723ZM15.6904 1.82722L15.5653 1.8169L15.5654 1.82831L15.6904 1.82722ZM15.2685 1L15.3339 0.893446L15.3038 0.875H15.2685V1ZM14.8685 1V0.875H14.8294L14.7972 0.89731L14.8685 1ZM11.7264 3.97794L11.8231 4.05728L11.8252 4.05456L11.7264 3.97794ZM8.8753 9.68923L8.75375 9.65977L8.75287 9.66402L8.8753 9.68923ZM8.34437 15.084H8.46937L8.46937 15.0832L8.34437 15.084ZM8.34437 15.4437L8.30176 15.5612L8.46937 15.622V15.4437H8.34437ZM7.78431 15.2423L7.72798 15.3539L7.73087 15.3553L7.78431 15.2423ZM5.84236 13.0052L5.96095 12.9655L5.95962 12.9619L5.84236 13.0052ZM5.30413 11.2501L5.17957 11.2606L5.1804 11.2704L5.18275 11.28L5.30413 11.2501ZM4.24952 10.8185L4.3174 10.9235L4.32388 10.9193L4.32979 10.9144L4.24952 10.8185ZM3.70402 11.2357L3.62047 11.1427L3.61842 11.1446L3.70402 11.2357ZM1.58022 14.7891L1.70045 14.8234L1.70103 14.8212L1.58022 14.7891ZM1.02018 18.3569L1.145 18.3644L1.14511 18.3611L1.02018 18.3569ZM1.59478 22.6224L1.47643 22.6626L1.47654 22.6629L1.59478 22.6224ZM13.5302 29.8945L13.5143 29.7705L13.513 29.7707L13.5302 29.8945ZM19.0215 27.4921L18.9431 27.3947L18.9411 27.3963L19.0215 27.4921ZM22.8473 20.896L22.7239 20.8757L22.7238 20.8766L22.8473 20.896ZM23 19.9825L23.1233 20.0033L23.125 19.993V19.9825H23ZM23 18.3928H23.1258L23.1242 18.3789L23 18.3928ZM10.6936 28.5351L10.6437 28.6498L10.6485 28.6516L10.6936 28.5351ZM8.35891 24.6148L8.23451 24.6026L8.23445 24.6032L8.35891 24.6148ZM8.62802 22.8669L8.65802 22.7456L8.52636 22.713L8.50463 22.8469L8.62802 22.8669ZM8.72257 22.8885L8.819 22.809L8.7927 22.7771L8.75257 22.7672L8.72257 22.8885ZM9.39898 23.7085L9.30979 23.7961L9.31149 23.7978L9.39898 23.7085ZM10.5772 24.2192L10.5877 24.0946L10.5828 24.0943L10.5772 24.2192ZM11.3773 23.4927L11.502 23.5015L11.502 23.5011L11.3773 23.4927ZM11.6101 20.9104L11.4878 20.8838L11.4867 20.8903L11.6101 20.9104ZM12.8247 18.5942L12.9427 18.553L12.8744 18.3575L12.7332 18.509L12.8247 18.5942ZM13.1375 19.3207L13.0261 19.3783L13.0308 19.3859L13.1375 19.3207ZM14.3739 21.2557L14.2719 21.328L14.2736 21.3302L14.3739 21.2557ZM15.654 24.6508L15.7787 24.6422L15.7786 24.6407L15.654 24.6508ZM15.9449 27.9596L15.8299 27.9106L15.706 28.2017L15.9954 28.0739L15.9449 27.9596ZM16.0468 27.7582L15.9417 27.6903L15.9391 27.6946L16.0468 27.7582ZM16.8395 24.1041L16.7157 24.1212L16.7159 24.1225L16.8395 24.1041ZM15.494 20.7234L15.3909 20.7941L15.3923 20.796L15.494 20.7234ZM14.3375 18.9683L14.2311 19.0338L14.2317 19.0348L14.3375 18.9683ZM13.8939 17.4361L13.7687 17.4239L13.7689 17.4375L13.8939 17.4361ZM13.5084 16.7672L13.561 16.6537L13.5554 16.6514L13.5084 16.7672ZM12.752 16.947L12.8309 17.044L12.8393 17.0371L12.8463 17.029L12.752 16.947ZM10.1772 22.2051L10.3021 22.2126L10.3022 22.2077L10.1772 22.2051ZM10.1554 22.572L10.0313 22.5572L10.0304 22.5646V22.572H10.1554ZM10.1045 22.6727L10.0032 22.746L10.1235 22.9122L10.216 22.7291L10.1045 22.6727ZM9.60991 21.5002L9.48435 21.5077L9.48674 21.5215L9.60991 21.5002ZM8.51164 21.1118L8.59026 21.209L8.59704 21.2035L8.60299 21.1971L8.51164 21.1118ZM7.36973 22.9604L7.48927 22.999L7.49188 22.987L7.36973 22.9604ZM8.07524 27.9164L8.17372 27.9934L8.22969 27.9218L8.17885 27.8465L8.07524 27.9164ZM8.00978 27.9884L7.94579 28.0958L8.02702 28.1442L8.0957 28.0792L8.00978 27.9884ZM6.30784 26.9598L6.38166 26.8589L6.37972 26.8575L6.30784 26.9598ZM2.46027 21.1837L2.33788 21.2091L2.33814 21.2103L2.46027 21.1837ZM2.27844 18.1123L2.40313 18.1231L2.40336 18.117L2.27844 18.1123ZM2.96213 14.5733L3.0798 14.6155L3.07991 14.6152L2.96213 14.5733ZM4.14768 12.5233L4.24277 12.6044L4.25126 12.5945L4.2575 12.583L4.14768 12.5233ZM4.23495 12.3219L4.35095 12.2753L4.22365 11.9584L4.11629 12.2826L4.23495 12.3219ZM4.78773 13.6742L4.90291 13.6254L4.90088 13.6211L4.78773 13.6742ZM6.66425 16.0191L6.59125 16.1206L6.59387 16.1224L6.66425 16.0191ZM8.89712 16.7097L8.91201 16.5856L8.90477 16.5847L8.89749 16.5847L8.89712 16.7097ZM9.55899 16.1198L9.43384 16.1122L9.43401 16.1219L9.55899 16.1198ZM9.58809 14.7028L9.71309 14.7047L9.71309 14.703L9.58809 14.7028ZM10.0972 9.89783L9.9757 9.86825L9.97494 9.87182L10.0972 9.89783ZM11.8646 5.87692L11.9686 5.94635L11.9695 5.9449L11.8646 5.87692ZM14.5121 2.81987L14.6343 2.79372L14.5898 2.58573L14.4298 2.7258L14.5121 2.81987ZM14.7448 3.87005L14.6238 3.9013L14.6247 3.90461L14.7448 3.87005ZM16.7741 7.89816L16.8756 7.82517L16.8734 7.82227L16.7741 7.89816ZM19.4506 11.6385L19.347 11.7084L19.3471 11.7086L19.4506 11.6385ZM21.7781 19.0977L21.9031 19.0982L21.9031 19.0967L21.7781 19.0977ZM22.9566 17.0098C22.6834 14.9346 21.9353 12.9484 20.7692 11.2023L20.5613 11.3411C21.7061 13.0555 22.4405 15.0054 22.7088 17.0425L22.9566 17.0098ZM20.7699 11.2032C19.859 9.81234 18.8515 8.4764 17.8869 7.12077L17.6832 7.26571C18.6533 8.62905 19.6533 9.95456 20.5607 11.3402L20.7699 11.2032ZM17.8834 7.11607C16.9391 5.91256 16.2765 4.51698 15.9433 3.02989L15.6993 3.08456C16.0407 4.6081 16.7195 6.03771 17.6867 7.2704L17.8834 7.11607ZM15.9437 3.03199C15.8619 2.63503 15.8189 2.23122 15.8153 1.82613L15.5654 1.82831C15.569 2.24964 15.6137 2.66963 15.6989 3.08247L15.9437 3.03199ZM15.8149 1.8375C15.8303 1.65138 15.7934 1.46472 15.7085 1.29812L15.4858 1.4117C15.5496 1.537 15.5773 1.67722 15.5658 1.81694L15.8149 1.8375ZM15.7085 1.29812C15.6235 1.13154 15.4938 0.991561 15.3339 0.893446L15.2032 1.10655C15.3241 1.18074 15.4218 1.28638 15.4858 1.4117L15.7085 1.29812ZM15.2685 0.875H14.8685V1.125H15.2685V0.875ZM14.7972 0.89731C13.5925 1.73345 12.5237 2.74643 11.6277 3.90131L11.8252 4.05456C12.7056 2.91981 13.7558 1.9244 14.9398 1.10269L14.7972 0.89731ZM11.6298 3.89863C10.2478 5.58217 9.26502 7.55083 8.75382 9.65978L8.99679 9.71868C9.49909 7.64643 10.4648 5.71183 11.8231 4.05725L11.6298 3.89863ZM8.75287 9.66402C8.38552 11.4478 8.20673 13.2645 8.21937 15.0849L8.46937 15.0832C8.45685 13.2803 8.63391 11.4811 8.99773 9.71444L8.75287 9.66402ZM8.21937 15.084V15.4437H8.46937V15.084H8.21937ZM8.38698 15.3262C8.27584 15.2859 8.17372 15.254 8.08473 15.2244C7.99411 15.1942 7.91441 15.1655 7.83776 15.1293L7.73087 15.3553C7.8215 15.3981 7.91273 15.4306 8.00577 15.4616C8.10043 15.4931 8.1947 15.5224 8.30176 15.5612L8.38698 15.3262ZM7.84063 15.1307C6.95016 14.6813 6.27499 13.9033 5.96089 12.9655L5.72383 13.0449C6.05903 14.0457 6.77924 14.8751 7.728 15.3539L7.84063 15.1307ZM5.95962 12.9619C5.74897 12.3916 5.57065 11.8102 5.42551 11.2202L5.18275 11.28C5.33013 11.879 5.51121 12.4695 5.72511 13.0485L5.95962 12.9619ZM5.42868 11.2396C5.41691 11.1002 5.36657 10.9669 5.28332 10.8542L5.08223 11.0027C5.13809 11.0784 5.17171 11.1676 5.17957 11.2606L5.42868 11.2396ZM5.28332 10.8542C5.2001 10.7415 5.08724 10.6539 4.95722 10.6007L4.86253 10.832C4.9504 10.868 5.02637 10.9271 5.08223 11.0027L5.28332 10.8542ZM4.95722 10.6007C4.82722 10.5475 4.68499 10.5307 4.54607 10.5522L4.58431 10.7993C4.67837 10.7847 4.77464 10.7961 4.86253 10.832L4.95722 10.6007ZM4.54607 10.5522C4.40715 10.5737 4.27676 10.6327 4.16924 10.7227L4.32979 10.9144C4.4022 10.8537 4.49026 10.8138 4.58431 10.7993L4.54607 10.5522ZM4.18163 10.7136C3.98345 10.8418 3.79582 10.9853 3.62049 11.1427L3.78755 11.3287C3.95307 11.1801 4.13024 11.0446 4.3174 10.9235L4.18163 10.7136ZM3.61842 11.1446C2.57337 12.1268 1.82565 13.3777 1.4594 14.757L1.70103 14.8212C2.05522 13.4872 2.77842 12.2771 3.78962 11.3268L3.61842 11.1446ZM1.46 14.7548C1.12587 15.9272 0.936244 17.1352 0.895253 18.3527L1.14511 18.3611C1.18542 17.164 1.37187 15.9762 1.70043 14.8234L1.46 14.7548ZM0.895408 18.3493C0.807385 19.8107 1.00466 21.2751 1.47643 22.6626L1.71312 22.5821C1.25178 21.2253 1.05888 19.7933 1.14496 18.3644L0.895408 18.3493ZM1.47654 22.6629C2.30825 25.0875 3.96931 27.1488 6.1729 28.4914L6.30298 28.2779C4.14883 26.9654 2.52565 24.9508 1.71301 22.5818L1.47654 22.6629ZM6.1729 28.4914C8.37647 29.834 10.9845 30.374 13.5474 30.0183L13.513 29.7707C11.0071 30.1185 8.45716 29.5904 6.30298 28.2779L6.1729 28.4914ZM13.5461 30.0185C15.5962 29.7554 17.5258 28.9113 19.1019 27.5878L18.9411 27.3963C17.4018 28.6889 15.5171 29.5135 13.5143 29.7705L13.5461 30.0185ZM19.0999 27.5894C21.1794 25.9144 22.5585 23.5369 22.9708 20.9154L22.7238 20.8766C22.3212 23.4363 20.9746 25.7583 18.9431 27.3947L19.0999 27.5894ZM22.9706 20.9163C23.0215 20.6073 23.0723 20.3054 23.1233 20.0033L22.8767 19.9617C22.8258 20.2638 22.7749 20.5661 22.7239 20.8757L22.9706 20.9163ZM23.125 19.9825V18.3928H22.875V19.9825H23.125ZM23.1242 18.3789C23.0732 17.9247 23.0149 17.4635 22.9567 17.0102L22.7087 17.0421C22.7669 17.4952 22.825 17.9547 22.8758 18.4068L23.1242 18.3789ZM10.7435 28.4204C10.0115 28.1022 9.39964 27.5644 8.99413 26.8835L8.77934 27.0114C9.21183 27.7376 9.86415 28.3107 10.6438 28.6497L10.7435 28.4204ZM8.99413 26.8835C8.58864 26.2026 8.41001 25.413 8.48337 24.6264L8.23445 24.6032C8.15615 25.4427 8.34683 26.2852 8.77934 27.0114L8.99413 26.8835ZM8.4833 24.6271C8.54098 24.0424 8.65582 23.4759 8.7514 22.8869L8.50463 22.8469C8.41111 23.4232 8.29321 24.0076 8.23451 24.6026L8.4833 24.6271ZM8.59801 22.9883C8.61445 22.9923 8.63249 22.9963 8.64846 22.9998C8.66523 23.0035 8.67991 23.0067 8.69257 23.0098L8.75257 22.7672C8.73614 22.7631 8.71809 22.7591 8.70212 22.7556C8.68536 22.7519 8.67068 22.7487 8.65802 22.7456L8.59801 22.9883ZM8.62614 22.968C8.84189 23.2296 9.05807 23.5398 9.3098 23.7961L9.48816 23.6209C9.24531 23.3737 9.0542 23.0941 8.819 22.809L8.62614 22.968ZM9.31149 23.7978C9.64876 24.1283 10.0979 24.3228 10.5716 24.3441L10.5828 24.0943C10.1702 24.0758 9.7795 23.9064 9.48647 23.6192L9.31149 23.7978ZM10.5668 24.3438C10.8456 24.3671 11.0769 24.3125 11.2426 24.1577C11.4062 24.0049 11.4827 23.7758 11.502 23.5015L11.2526 23.484C11.2355 23.7275 11.1702 23.8833 11.072 23.975C10.9759 24.0648 10.8253 24.1145 10.5877 24.0947L10.5668 24.3438ZM11.502 23.5011C11.5605 22.6334 11.5965 21.7717 11.7334 20.9305L11.4867 20.8903C11.3473 21.7467 11.3105 22.6257 11.2526 23.4843L11.502 23.5011ZM11.7322 20.937C11.916 20.0936 12.3247 19.3141 12.9161 18.6795L12.7332 18.509C12.1113 19.1764 11.6813 19.9963 11.4879 20.8838L11.7322 20.937ZM12.7067 18.6355C12.7956 18.8901 12.9025 19.1382 13.0264 19.3781L13.2485 19.2634C13.13 19.0339 13.0278 18.7965 12.9427 18.553L12.7067 18.6355ZM13.0308 19.3859C13.4299 20.039 13.8252 20.6979 14.2719 21.328L14.4759 21.1834C14.0352 20.5619 13.6451 19.9116 13.2441 19.2555L13.0308 19.3859ZM14.2736 21.3302C14.9971 22.3036 15.4319 23.4569 15.5294 24.6609L15.7786 24.6407C15.6773 23.3899 15.2256 22.1919 14.4742 21.1811L14.2736 21.3302ZM15.5293 24.6594C15.713 27.3223 13.2593 29.3948 10.7388 28.4185L10.6485 28.6516C13.3647 29.7037 15.9732 27.4604 15.7787 24.6422L15.5293 24.6594ZM16.0599 28.0086C16.0873 27.9444 16.1188 27.882 16.1544 27.8218L15.9391 27.6946C15.898 27.7642 15.8615 27.8363 15.8299 27.9106L16.0599 28.0086ZM16.1518 27.826C16.8681 26.7165 17.1563 25.3886 16.9632 24.0858L16.7159 24.1225C16.9 25.365 16.6253 26.6317 15.9417 27.6904L16.1518 27.826ZM16.9634 24.0871C16.7932 22.8495 16.324 21.6708 15.5957 20.6507L15.3923 20.796C16.0971 21.7833 16.551 22.9238 16.7157 24.1212L16.9634 24.0871ZM15.597 20.6526C15.1978 20.0712 14.8133 19.4899 14.4434 18.9017L14.2317 19.0348C14.6037 19.6263 14.9901 20.2103 15.3909 20.7941L15.597 20.6526ZM14.444 18.9027C14.1714 18.46 14.0245 17.9529 14.0188 17.4348L13.7689 17.4375C13.775 18.0011 13.9348 18.5526 14.2311 19.0338L14.444 18.9027ZM14.0183 17.4483C14.0342 17.2851 13.9987 17.1211 13.9167 16.9788L13.7001 17.1036C13.7561 17.2009 13.7803 17.3128 13.7694 17.424L14.0183 17.4483ZM13.9167 16.9788C13.8347 16.8366 13.7104 16.7231 13.561 16.6538L13.4558 16.8806C13.5588 16.9284 13.644 17.0063 13.7001 17.1036L13.9167 16.9788ZM13.5554 16.6514C13.4021 16.5892 13.2329 16.5763 13.0719 16.6146L13.1297 16.8578C13.2402 16.8316 13.3563 16.8404 13.4614 16.883L13.5554 16.6514ZM13.0719 16.6146C12.9108 16.6529 12.7658 16.7404 12.6576 16.8651L12.8463 17.029C12.9201 16.9441 13.0192 16.8841 13.1297 16.8578L13.0719 16.6146ZM12.673 16.8501C11.8719 17.5025 11.2229 18.3185 10.7705 19.2424L10.995 19.3524C11.4314 18.4611 12.0577 17.6736 12.8309 17.044L12.673 16.8501ZM10.7705 19.2424C10.3181 20.1663 10.073 21.1762 10.0522 22.2026L10.3022 22.2077C10.3222 21.2177 10.5586 20.2437 10.995 19.3524L10.7705 19.2424ZM10.0524 22.1977C10.0445 22.3305 10.0453 22.4392 10.0313 22.5572L10.2795 22.5868C10.2946 22.4602 10.2954 22.3244 10.302 22.2126L10.0524 22.1977ZM10.0304 22.572C10.0304 22.5556 10.0347 22.5441 10.0363 22.5404C10.0374 22.5377 10.0377 22.5378 10.0334 22.5449C10.0263 22.5569 10.01 22.5825 9.99293 22.6163L10.216 22.7291C10.228 22.7054 10.2372 22.6914 10.2483 22.6728C10.2531 22.6646 10.2607 22.6517 10.2668 22.6371C10.2734 22.6215 10.2804 22.5992 10.2804 22.572H10.0304ZM10.2058 22.5994C9.96454 22.266 9.80296 21.8829 9.73308 21.4789L9.48674 21.5215C9.56314 21.9631 9.73975 22.3818 10.0032 22.746L10.2058 22.5994ZM9.73469 21.4928C9.7259 21.3453 9.67343 21.2037 9.58402 21.0857L9.38476 21.2367C9.44445 21.3155 9.4793 21.4097 9.48513 21.5077L9.73469 21.4928ZM9.58402 21.0857C9.49462 20.9677 9.37225 20.8786 9.2323 20.8291L9.14894 21.0648C9.2431 21.0981 9.32506 21.1579 9.38476 21.2367L9.58402 21.0857ZM9.2323 20.8291C9.09237 20.7796 8.94087 20.7719 8.79657 20.8069L8.85557 21.0499C8.95273 21.0263 9.05477 21.0315 9.14894 21.0648L9.2323 20.8291ZM8.79657 20.8069C8.65227 20.842 8.52138 20.9183 8.42029 21.0265L8.60299 21.1971C8.6706 21.1247 8.75841 21.0735 8.85557 21.0499L8.79657 20.8069ZM8.43302 21.0146C7.82956 21.5028 7.41146 22.1795 7.24758 22.9339L7.49188 22.987C7.64359 22.2886 8.03076 21.6616 8.59026 21.209L8.43302 21.0146ZM7.25077 22.9221C6.97863 23.7655 6.90211 24.6589 7.02692 25.5357L7.27443 25.5004C7.15497 24.6612 7.22819 23.8062 7.48869 22.9988L7.25077 22.9221ZM7.02692 25.5357C7.15174 26.4125 7.47466 27.2501 7.97163 27.9864L8.17885 27.8465C7.70299 27.1415 7.39389 26.3396 7.27443 25.5004L7.02692 25.5357ZM7.97676 27.8395C7.96062 27.8601 7.94294 27.8795 7.92387 27.8976L8.0957 28.0792C8.12382 28.0526 8.1499 28.0239 8.17372 27.9934L7.97676 27.8395ZM8.07377 27.881C7.49542 27.5363 6.90653 27.2429 6.38165 26.8589L6.23404 27.0607C6.77105 27.4535 7.38952 27.7643 7.94579 28.0958L8.07377 27.881ZM6.37972 26.8575C4.43825 25.4928 3.08379 23.4593 2.58241 21.1571L2.33814 21.2103C2.85297 23.5742 4.24359 25.6616 6.23596 27.062L6.37972 26.8575ZM2.58267 21.1584C2.37561 20.1604 2.31509 19.1381 2.40298 18.1231L2.15391 18.1015C2.06393 19.1408 2.12589 20.1874 2.33788 21.2091L2.58267 21.1584ZM2.40336 18.117C2.44799 16.9227 2.67608 15.742 3.0798 14.6155L2.84446 14.5312C2.43211 15.6817 2.19913 16.8877 2.15353 18.1076L2.40336 18.117ZM3.07991 14.6152C3.34101 13.8808 3.73503 13.1995 4.24277 12.6044L4.05259 12.4422C3.52513 13.0603 3.1157 13.7683 2.84435 14.5314L3.07991 14.6152ZM4.2575 12.583C4.29608 12.512 4.32825 12.4378 4.35362 12.3612L4.11629 12.2826C4.0956 12.3451 4.06935 12.4057 4.03786 12.4636L4.2575 12.583ZM4.11896 12.3685C4.32761 12.8879 4.48348 13.3202 4.67458 13.7273L4.90088 13.6211C4.71377 13.2225 4.56415 12.8061 4.35095 12.2753L4.11896 12.3685ZM4.67263 13.723C5.07848 14.6809 5.74218 15.5101 6.59128 16.1206L6.73722 15.9176C5.92511 15.3337 5.29068 14.5409 4.90283 13.6254L4.67263 13.723ZM6.59387 16.1224C7.27149 16.584 8.07421 16.8323 8.89676 16.8347L8.89749 16.5847C8.12471 16.5824 7.3708 16.3492 6.73462 15.9158L6.59387 16.1224ZM8.88223 16.8338C8.98358 16.8459 9.0864 16.8365 9.18377 16.806L9.10913 16.5674C9.04551 16.5873 8.97828 16.5935 8.91201 16.5856L8.88223 16.8338ZM9.18377 16.806C9.28114 16.7755 9.3709 16.7248 9.44694 16.657L9.28061 16.4704C9.23122 16.5144 9.17275 16.5475 9.10913 16.5674L9.18377 16.806ZM9.44694 16.657C9.52299 16.5892 9.58355 16.506 9.62447 16.413L9.39563 16.3123C9.3692 16.3724 9.33 16.4263 9.28061 16.4704L9.44694 16.657ZM9.62447 16.413C9.6654 16.3199 9.68569 16.2193 9.68397 16.1177L9.43401 16.1219C9.43512 16.1874 9.42205 16.2523 9.39563 16.3123L9.62447 16.413ZM9.68376 16.1275C9.71308 15.649 9.70588 15.1743 9.71308 14.7047L9.46311 14.7009C9.45575 15.1807 9.46309 15.6412 9.43423 16.1122L9.68376 16.1275ZM9.71309 14.703C9.71536 13.097 9.88504 11.4955 10.2195 9.92385L9.97494 9.87182C9.6369 11.4604 9.46539 13.0792 9.46309 14.7026L9.71309 14.703ZM10.2187 9.92741C10.5638 8.51004 11.156 7.16289 11.9686 5.94635L11.7607 5.80748C10.9319 7.04827 10.3279 8.42239 9.97576 9.86826L10.2187 9.92741ZM11.9695 5.9449C12.6989 4.81969 13.5822 3.79968 14.5944 2.91393L14.4298 2.7258C13.4002 3.62671 12.5017 4.66426 11.7597 5.80893L11.9695 5.9449ZM14.3899 2.84601C14.4692 3.21692 14.5357 3.55984 14.6238 3.90129L14.8659 3.8388C14.7795 3.50411 14.715 3.17089 14.6343 2.79372L14.3899 2.84601ZM14.6247 3.90461C15.0478 5.37485 15.7429 6.75467 16.6748 7.97406L16.8734 7.82227C15.9604 6.62751 15.2794 5.27572 14.865 3.83548L14.6247 3.90461ZM16.6726 7.97113C17.5696 9.2188 18.4901 10.4372 19.347 11.7084L19.5543 11.5687C18.6947 10.2935 17.7678 9.06632 16.8756 7.8252L16.6726 7.97113ZM19.3471 11.7086C20.8289 13.8967 21.6304 16.4657 21.6531 19.0988L21.9031 19.0967C21.88 16.4142 21.0634 13.7971 19.5541 11.5685L19.3471 11.7086ZM21.6531 19.0973C21.6471 20.9488 21.1005 22.7592 20.079 24.311L20.2879 24.4485C21.3359 22.8562 21.8969 20.9983 21.9031 19.0982L21.6531 19.0973ZM20.079 24.311C19.0576 25.8629 17.6045 27.0902 15.8944 27.8452L15.9954 28.0739C17.7492 27.2996 19.2398 26.0407 20.2879 24.4485L20.079 24.311Z\",\n    fill: \"white\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgI02);\nexport default __webpack_public_path__ + \"static/media/i02.1b7ed554d6f47aeafd06ef48220c99bd.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\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); }\nimport * as React from \"react\";\nfunction SvgI03(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    viewBox: \"0 0 17 28\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M16.9858 10.5864C16.9004 10.2091 16.6267 10.0219 16.1587 10.0219C14.4928 10.0191 12.8239 10.0219 11.158 10.0191C11.058 10.0191 10.9608 10.0107 10.8284 10.0051C10.9049 9.87654 10.9579 9.78152 11.0138 9.6893C12.7209 6.8555 14.4163 4.01611 16.1469 1.19908C16.5443 0.553509 16.1175 -0.0110154 15.4317 0.000163252C13.027 0.036494 10.6224 0.0225197 8.21769 0.00575166C8.01344 -0.0113446 7.80889 0.0353665 7.63516 0.13878C7.46143 0.242193 7.32802 0.39665 7.25523 0.57866C6.1044 2.89824 4.94671 5.21223 3.78214 7.52063C2.52241 10.0302 1.26169 12.538 0 15.0439V15.2647C0.22369 15.7817 0.356138 15.8627 0.97423 15.8627H6.18092C6.13677 16.0025 6.10146 16.1115 6.0632 16.2232L2.36347 26.8458C2.14273 27.4774 2.22513 27.6842 2.81674 28H3.21996C3.39028 27.8744 3.54883 27.7351 3.69383 27.5836C6.94912 23.5229 10.2005 19.4585 13.4479 15.3904C14.5487 14.0154 15.6495 12.6386 16.7503 11.2599C16.8412 11.1722 16.9097 11.0659 16.9505 10.9491C16.9913 10.8324 17.0034 10.7083 16.9858 10.5864ZM5.16548 23.5341C5.14782 23.5285 5.13311 23.5229 5.11545 23.5173C5.14194 23.4307 5.16549 23.3413 5.19492 23.2546C6.08674 20.6863 6.96384 18.1124 7.87626 15.5469C8.1235 14.8483 7.69672 14.4207 7.01388 14.4347C5.33914 14.471 3.66146 14.4458 1.93375 14.4458C1.99556 14.3173 2.03381 14.2251 2.07502 14.1384C4.15299 9.95479 6.229 5.77116 8.30304 1.58754C8.33206 1.4992 8.39262 1.42324 8.47428 1.37273C8.55594 1.32223 8.6536 1.30035 8.75043 1.31086C10.5135 1.32204 12.2735 1.31645 14.0366 1.31645H14.3662C14.3015 1.43663 14.2544 1.53164 14.2014 1.62107C12.4855 4.48282 10.7705 7.34363 9.05652 10.2035C8.94187 10.388 8.88187 10.5985 8.88286 10.8128C8.90641 11.1761 9.2184 11.3857 9.65695 11.3857C11.2581 11.3885 12.8583 11.3894 14.4575 11.3885H14.846C11.5966 15.4659 8.37956 19.5014 5.16548 23.5341Z\",\n    fill: \"white\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgI03);\nexport default __webpack_public_path__ + \"static/media/i03.1ed4e01933caa5c7e041c51891891e26.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\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); }\nimport * as React from \"react\";\nfunction SvgI04(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    viewBox: \"0 0 21 30\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M20.3004 3.7364C17.1895 2.52311 14.0824 1.30981 10.9791 0.0965106C10.6721 -0.0321702 10.3312 -0.0321702 10.0242 0.0965106C6.91325 1.32206 3.79091 2.52924 0.674297 3.74254C0.463481 3.79976 0.279064 3.93671 0.155057 4.12815C0.0310501 4.31959 -0.0241845 4.55261 -0.00048954 4.78425C-0.00048954 8.25257 0.00140478 11.7209 0.00521716 15.1892C-0.0326562 17.3708 0.346855 19.5375 1.12034 21.5559C1.95781 23.5844 3.27446 25.3438 4.94034 26.6604C6.58159 27.9434 8.34055 29.0439 10.19 29.9448C10.2186 29.9571 10.2472 29.9816 10.2815 30H10.7161C12.2323 29.241 13.6978 28.3708 15.1022 27.3957C16.7506 26.3171 18.135 24.8326 19.1405 23.0656C20.1461 21.2986 20.7437 19.3 20.8837 17.2359C20.958 16.237 20.9866 15.226 20.9924 14.221C21.0038 11.0836 20.9981 7.95231 20.9981 4.8149C21.0279 4.57434 20.9729 4.33051 20.8439 4.13108C20.7149 3.93164 20.5211 3.79092 20.3004 3.7364V3.7364ZM19.2482 5.64214C19.2482 8.73053 19.2539 11.8128 19.2482 14.9012C19.2822 16.6628 19.0366 18.4179 18.5219 20.0914C17.7991 22.1833 16.501 23.9909 14.7991 25.2755C13.4871 26.2947 12.0918 27.1848 10.6303 27.9349C10.5909 27.9541 10.5483 27.9645 10.5051 27.9656C10.4618 27.9666 10.4189 27.9583 10.3787 27.9411C8.52687 27.021 6.79793 25.8402 5.2377 24.4299C3.52299 22.8459 2.38825 20.6616 2.03532 18.2653C1.86399 17.1284 1.77223 15.9793 1.76082 14.8277C1.72651 11.7638 1.74938 8.69376 1.74367 5.62376C1.73043 5.53697 1.74931 5.44807 1.7963 5.37597C1.84329 5.30388 1.91469 5.25427 1.99528 5.2377C4.77451 4.15922 7.55183 3.07869 10.3272 1.99612C10.4444 1.95628 10.5703 1.95628 10.6875 1.99612C13.4553 3.07461 16.2212 4.15309 18.9851 5.23158C19.0709 5.26835 19.1567 5.30512 19.2482 5.34188V5.64214Z\",\n    fill: \"white\"\n  })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M16.5771 11.4757C14.3297 13.8778 12.088 16.286 9.8692 18.6636C8.53678 17.2297 7.17003 15.7652 5.82617 14.3251C6.20932 13.9084 6.61535 13.4795 7.02137 13.0444C7.94778 14.0433 8.89133 15.0543 9.82346 16.0593C11.6763 14.0739 13.5062 12.1191 15.3419 10.146C15.7994 10.6423 16.1997 11.0713 16.5771 11.4757Z\",\n    fill: \"white\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgI04);\nexport default __webpack_public_path__ + \"static/media/i04.5fd0fa80347ae95e3af3f9e398fd76df.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4, _path5;\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); }\nimport * as React from \"react\";\nfunction SvgI05(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    viewBox: \"0 0 29 29\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M26.4831 21.8789C24.817 20.1499 23.1497 18.4221 21.4812 16.6955C21.1244 16.3261 20.9282 16.3298 20.5572 16.6918C20.5013 16.7529 20.4391 16.8074 20.3717 16.8544C20.3048 16.9038 20.2273 16.9353 20.1459 16.9464C20.0644 16.9574 19.9817 16.9475 19.9048 16.9175C19.828 16.8876 19.7594 16.8386 19.7052 16.7747C19.651 16.7109 19.6127 16.6342 19.5939 16.5514C19.5154 16.2817 19.6617 16.1044 19.8258 15.9308C20.1754 15.565 20.1754 15.3433 19.8222 14.9776L18.8875 14.0096C19.6403 13.2264 20.3859 12.4653 21.1173 11.6931C21.1728 11.6142 21.2511 11.5556 21.3409 11.5257C21.4307 11.4959 21.5273 11.4963 21.6168 11.5269C21.7936 11.5685 21.9742 11.5895 22.1555 11.5897C23.011 11.6349 23.865 11.4752 24.6512 11.123C25.4374 10.7709 26.1346 10.2357 26.6886 9.55907C27.2425 8.88248 27.6384 8.08271 27.8453 7.22193C28.0522 6.36115 28.0647 5.46255 27.8817 4.59598C27.8353 4.35214 27.7747 4.14155 27.5214 4.05289C27.2538 3.96422 27.0897 4.13048 26.9255 4.30042C26.0586 5.19819 25.1904 6.09842 24.3211 7.00111C24.2775 7.05965 24.2161 7.10131 24.1469 7.1194C24.0777 7.13749 24.0046 7.13096 23.9394 7.10086C23.315 6.8718 22.68 6.6723 22.0556 6.43954C21.9392 6.38796 21.8469 6.29112 21.7987 6.16985C21.5775 5.53439 21.3813 4.88785 21.1637 4.24869C21.1292 4.17497 21.1199 4.09128 21.1374 4.01138C21.1549 3.93148 21.1982 3.86013 21.26 3.80905C22.1377 2.91867 23.0011 2.01351 23.8716 1.11574C23.965 1.04785 24.0363 0.952074 24.0758 0.841177C24.1153 0.73028 24.1212 0.60954 24.0928 0.495064C24.0179 0.236448 23.8038 0.177339 23.5862 0.12931C23.3757 0.0849762 23.1616 0.0443342 22.9511 0H21.8558C21.7979 0.0223553 21.7382 0.039662 21.6774 0.0517287C20.9199 0.145621 20.1899 0.403311 19.5347 0.808097C18.8796 1.21288 18.3138 1.75572 17.8743 2.40144C17.4474 3.0023 17.1402 3.68508 16.9705 4.41005C16.8008 5.13502 16.7721 5.88769 16.886 6.62427C16.9093 6.70822 16.9104 6.79715 16.889 6.88167C16.8677 6.96619 16.8247 7.04319 16.7647 7.10456C13.461 10.5146 10.1608 13.9259 6.86428 17.3384C6.81308 17.3851 6.75294 17.4201 6.68777 17.4411C6.6226 17.4622 6.55388 17.4687 6.4861 17.4603C5.12875 17.2412 3.741 17.5467 2.58707 18.3186C1.43313 19.0905 0.593612 20.2748 0.228334 21.6462C0.117734 22.1006 0.074922 22.5698 0 23.0316V23.3124C0.0142709 23.4232 0.0285415 23.5341 0.0499478 23.6412C0.116686 24.1237 0.213212 24.6013 0.338932 25.071C0.754623 26.3515 1.59341 27.439 2.7075 28.1419C3.8216 28.8448 5.13951 29.118 6.42902 28.9133C7.32754 28.7934 8.18279 28.4425 8.91686 27.8927C9.65093 27.3429 10.2405 26.6117 10.6318 25.7656C11.1609 24.7131 11.3414 23.5098 11.1455 22.3407C11.1278 22.2497 11.134 22.1553 11.1635 22.0676C11.193 21.9799 11.2447 21.9019 11.3132 21.842C11.9982 21.1511 12.669 20.4455 13.3433 19.7472C13.4075 19.6807 13.4753 19.6216 13.568 19.5329C13.8713 19.8506 14.1603 20.1573 14.4564 20.4639C14.8595 20.8814 15.0237 20.8777 15.4375 20.4824C15.5406 20.3784 15.6668 20.3023 15.805 20.2607C15.9128 20.2325 16.0269 20.2458 16.126 20.2981C16.2251 20.3504 16.3024 20.4383 16.3437 20.5452C16.3957 20.6624 16.4074 20.7944 16.3769 20.9194C16.3464 21.0444 16.2755 21.1549 16.176 21.2324C15.7729 21.672 15.7764 21.8346 16.1939 22.2669C17.4319 23.5488 18.6687 24.8284 19.9043 26.1055C20.5286 26.752 21.1423 27.417 21.7916 28.0303C22.4205 28.6069 23.219 28.9465 24.0576 28.9941C24.8963 29.0417 25.7258 28.7945 26.4118 28.2926C26.9069 27.9451 27.3107 27.4754 27.5866 26.9258C27.8626 26.3763 28.002 25.7642 27.9923 25.1449C28.0045 24.5937 27.904 24.0461 27.6974 23.538C27.4908 23.0299 27.1828 22.5728 26.7935 22.1967C26.6901 22.0932 26.5866 21.9861 26.4831 21.8789ZM10.3571 21.4504C10.2579 21.5526 10.1883 21.6815 10.1561 21.8225C10.124 21.9635 10.1306 22.111 10.1751 22.2484C10.3636 23.0957 10.3188 23.9808 10.0457 24.8031C9.77263 25.6254 9.28225 26.3518 8.6303 26.8998C8.01719 27.4801 7.25872 27.87 6.44166 28.0248C5.6246 28.1797 4.78195 28.0932 4.01011 27.7754C3.22465 27.5105 2.52576 27.0248 1.9915 26.3724C1.45725 25.72 1.10866 24.9266 0.984687 24.0809C0.871015 23.4491 0.880466 22.8002 1.01248 22.1723C1.14449 21.5444 1.3964 20.9502 1.7534 20.4246C2.1104 19.899 2.56529 19.4526 3.0913 19.1116C3.61732 18.7707 4.20385 18.5421 4.81642 18.4393C5.39095 18.3314 5.98056 18.344 6.55033 18.4763C6.69387 18.5184 6.84603 18.5171 6.98889 18.4725C7.13174 18.428 7.25933 18.3422 7.35663 18.2251C10.7674 14.6783 14.1864 11.1377 17.6138 7.60332C17.7288 7.49974 17.8134 7.3649 17.8582 7.21407C17.903 7.06324 17.906 6.90244 17.8671 6.74988C17.6378 5.64734 17.7934 4.49633 18.3062 3.50134C18.8189 2.50634 19.6557 1.73177 20.6678 1.31525C21.2754 1.06159 21.9295 0.949348 22.5836 0.986441C22.605 1.0123 22.6264 1.04186 22.6479 1.06772C22.498 1.20072 22.341 1.32634 22.1983 1.47042C21.574 2.11327 20.9568 2.76719 20.3217 3.40635C20.2173 3.49682 20.144 3.61975 20.1125 3.75687C20.081 3.89399 20.093 4.03797 20.1469 4.16742C20.4394 5.02824 20.7142 5.89645 20.9853 6.76466C21.017 6.88669 21.0787 6.99812 21.1643 7.08812C21.25 7.17812 21.3567 7.24361 21.4741 7.2782C22.3232 7.56638 23.1687 7.85085 24.0072 8.1501C24.1291 8.20319 24.2643 8.21425 24.3928 8.18165C24.5213 8.14905 24.6363 8.07453 24.7207 7.96908C25.4093 7.24495 26.1121 6.52821 26.8042 5.80778C26.8661 5.73666 26.9233 5.66138 26.9755 5.58242C26.9969 5.5935 27.0219 5.60459 27.0468 5.61567C27.0599 5.86799 27.0587 6.12087 27.0433 6.37304C26.9133 7.53575 26.3773 8.60913 25.5362 9.39101C24.695 10.1729 23.6069 10.6093 22.4766 10.618C22.1218 10.6074 21.7685 10.5654 21.4206 10.4924C21.2978 10.4608 21.169 10.464 21.0479 10.5017C20.9267 10.5394 20.8176 10.6102 20.732 10.7067C17.2785 14.2941 13.8202 17.8753 10.3571 21.4504ZM22.2055 27.1067C20.5286 25.3739 18.8542 23.64 17.1821 21.9048C17.0894 21.8124 17.0073 21.7459 17.1072 21.5797C17.2971 21.2878 17.3799 20.9351 17.3407 20.5855C17.3014 20.2359 17.1427 19.9123 16.8931 19.6733C16.652 19.4312 16.3368 19.284 16.002 19.257C15.6671 19.23 15.3337 19.325 15.0593 19.5255C15.0341 19.5442 15.0079 19.5615 14.9808 19.5772C14.7204 19.3186 14.4849 19.0859 14.2744 18.8753C15.598 17.4972 16.9217 16.1216 18.2453 14.7485C18.4522 14.9702 18.6841 15.2177 18.9339 15.4874C18.7974 15.6583 18.7017 15.8601 18.6546 16.0764C18.6075 16.2927 18.6103 16.5175 18.6627 16.7325C18.7516 17.0358 18.9066 17.3139 19.1158 17.5453C19.6046 18.0625 20.2468 18.0625 20.9924 17.6265C22.787 19.4812 24.5816 21.3321 26.3511 23.1572C25.0382 24.5168 23.7217 25.8838 22.3838 27.2692C22.3216 27.2184 22.2621 27.1641 22.2055 27.1067H22.2055ZM26.2548 27.1399C25.8838 27.5296 25.4137 27.8024 24.8991 27.9266C24.3844 28.0508 23.8463 28.0215 23.3471 27.8419L26.9006 24.1621C27.2966 24.9897 27.0361 26.2422 26.2548 27.1399Z\",\n    fill: \"white\"\n  })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M12.452 10.2264C12.2201 10.4629 12.0024 10.6845 11.7456 10.9469C11.7121 10.8829 11.6714 10.8234 11.6243 10.7695C9.7191 8.79295 7.81036 6.82377 5.91234 4.83982C5.76092 4.6704 5.64975 4.46672 5.58768 4.245C5.45211 3.80535 5.37005 3.35092 5.24874 2.90758C5.21854 2.80427 5.15411 2.71531 5.06679 2.65636C4.25335 2.16129 3.43278 1.67731 2.60507 1.19702C2.56131 1.17725 2.51371 1.1683 2.46603 1.17086C2.41835 1.17343 2.3719 1.18744 2.33036 1.2118C1.90937 1.62559 1.49908 2.05415 1.07809 2.4901C1.59541 3.42851 2.09845 4.35214 2.61934 5.26838C2.6869 5.35328 2.78204 5.40976 2.88692 5.42725C3.22432 5.53583 3.56737 5.62464 3.91442 5.69325C4.28074 5.76563 4.61408 5.96028 4.86344 6.24743C6.69724 8.16488 8.53818 10.0725 10.3863 11.9702C10.4589 12.0408 10.5351 12.1074 10.6146 12.1697C10.3649 12.4099 10.1401 12.6205 9.90461 12.8458C9.87607 12.82 9.80472 12.7498 9.73337 12.6759C7.88172 10.7584 6.02651 8.83975 4.16773 6.91983C4.04516 6.79979 3.89552 6.71342 3.73247 6.6686C3.26866 6.52821 2.79416 6.43215 2.33749 6.28068C2.16092 6.22059 2.00891 6.10092 1.9058 5.94079C1.30285 4.88785 0.721318 3.82013 0.136213 2.75611C0.0939133 2.70238 0.0624325 2.64043 0.0436281 2.57389C0.0248237 2.50736 0.0190713 2.43761 0.0267194 2.36874C0.0343674 2.29987 0.0552616 2.23328 0.0881593 2.17291C0.121057 2.11253 0.165295 2.05959 0.218268 2.0172C0.799806 1.40761 1.38848 0.801713 1.97715 0.199507C2.06 0.125981 2.14827 0.0592729 2.24116 0H2.51231C3.55765 0.624373 4.60299 1.25244 5.6519 1.86573C5.78043 1.92562 5.89247 2.01784 5.97783 2.13398C6.06319 2.25012 6.11917 2.3865 6.14067 2.53075C6.16565 2.697 6.24057 2.85586 6.25841 3.02211C6.36712 3.76683 6.73667 4.4441 7.29662 4.9248C8.96987 6.6058 10.6003 8.33114 12.2486 10.0343C12.32 10.1082 12.3985 10.1747 12.452 10.2264Z\",\n    fill: \"white\"\n  })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M8.77315 22.8357C8.33432 22.1005 7.9062 21.3579 7.48164 20.6116C7.42976 20.5062 7.34971 20.4184 7.25103 20.3588C7.15236 20.2992 7.03921 20.2703 6.92508 20.2754C6.06169 20.2791 5.19474 20.2791 4.33135 20.2754C4.2178 20.2688 4.10481 20.296 4.00561 20.3535C3.9064 20.4111 3.8251 20.4968 3.77121 20.6005C3.33954 21.3542 2.90429 22.1054 2.46543 22.8541C2.3996 22.9501 2.36393 23.0647 2.36329 23.1824C2.36265 23.3001 2.39707 23.4151 2.46186 23.5118C2.90426 24.2655 3.34309 25.0265 3.77835 25.7876C3.83025 25.8872 3.9094 25.9688 4.00587 26.022C4.10234 26.0752 4.21184 26.0978 4.32065 26.0869C4.74877 26.0795 5.17689 26.0869 5.60502 26.0869C6.03315 26.0869 6.46128 26.0758 6.88583 26.0905C7.00813 26.1034 7.13129 26.0774 7.23899 26.016C7.34668 25.9546 7.43379 25.8608 7.48877 25.747C7.90976 25.008 8.33432 24.2765 8.76602 23.545C8.83842 23.4423 8.87803 23.3187 8.87931 23.1915C8.88059 23.0643 8.84347 22.9399 8.77315 22.8357ZM7.77063 23.3492C7.47451 23.8886 7.16649 24.4206 6.84659 24.9452C6.81078 24.9924 6.76604 25.0315 6.71511 25.06C6.66419 25.0886 6.60816 25.1061 6.55047 25.1115C6.24364 25.1337 5.93325 25.1226 5.62643 25.1226C5.31604 25.1226 5.00565 25.1337 4.69882 25.1115C4.64113 25.1061 4.58509 25.0886 4.53417 25.06C4.48325 25.0315 4.43851 24.9924 4.4027 24.9452C4.08161 24.4243 3.77478 23.8886 3.47866 23.3492C3.45466 23.3002 3.44156 23.2462 3.44033 23.1912C3.43909 23.1362 3.44975 23.0816 3.47153 23.0315C3.76767 22.4921 4.07568 21.9601 4.39556 21.4354C4.42768 21.3906 4.4683 21.3531 4.51493 21.3252C4.56155 21.2972 4.61321 21.2794 4.66671 21.2729C5.30534 21.2581 5.94039 21.2581 6.57901 21.2729C6.63252 21.2794 6.68417 21.2972 6.7308 21.3252C6.77742 21.3531 6.81804 21.3906 6.85015 21.4354C7.16768 21.9601 7.47807 22.4921 7.77419 23.0315C7.7948 23.0818 7.80512 23.1361 7.8045 23.1907C7.80389 23.2454 7.79235 23.2994 7.77063 23.3492Z\",\n    fill: \"white\"\n  })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M19.4189 9.49868C16.0153 13.0269 12.6045 16.5589 9.18667 20.0946C9.00471 19.9061 8.79422 19.6919 8.60156 19.4924C12.0194 15.953 15.4314 12.4211 18.8373 8.89648C19.0193 9.0849 19.2298 9.30287 19.4189 9.49868Z\",\n    fill: \"white\"\n  })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M24.1027 24.3393C23.9208 24.5203 23.7103 24.7309 23.5319 24.9119L18.8867 20.1017C19.0615 19.9428 19.2863 19.7396 19.4861 19.5586L24.1027 24.3393Z\",\n    fill: \"white\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgI05);\nexport default __webpack_public_path__ + \"static/media/i05.fa6af8b10d390f3d0d0da2a585c22731.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4, _path5, _path6;\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); }\nimport * as React from \"react\";\nfunction SvgI06(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    viewBox: \"0 0 29 30\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M28.3019 5.14672C28.0112 5.07263 27.7122 5.01162 27.4173 4.95933C27.3506 4.94746 27.288 4.91794 27.2356 4.87365C27.1832 4.82936 27.1428 4.77181 27.1182 4.70657C27.0496 4.59687 27.0192 4.46617 27.0323 4.33616C27.0453 4.20616 27.1009 4.08466 27.1899 3.99187C27.3286 3.80669 27.4566 3.61316 27.5732 3.41227C27.7025 3.23428 27.7629 3.01277 27.7426 2.79111C27.7224 2.56945 27.6229 2.3636 27.4636 2.21384C27.2699 2.0003 27.0719 1.79111 26.8655 1.59064C26.7174 1.42158 26.5127 1.31716 26.2928 1.29855C26.073 1.27993 25.8546 1.34853 25.6819 1.49042C25.4334 1.65166 25.1975 1.83469 24.949 1.98722C24.8614 2.0315 24.7619 2.0438 24.6667 2.02209C24.5222 2.00679 24.3889 1.93434 24.2948 1.81986C24.2006 1.70537 24.1528 1.55769 24.1613 1.40762C24.1413 1.26367 24.1132 1.12106 24.077 0.980535C24.0712 0.764608 24.0026 0.555519 23.8801 0.380588C23.7576 0.205657 23.5869 0.0730184 23.3904 0H22.0299C21.8357 0.0774787 21.6677 0.211988 21.5465 0.386971C21.4252 0.561955 21.3561 0.769784 21.3475 0.984897C21.3188 1.1975 21.2794 1.40842 21.2296 1.6168C21.2074 1.70013 21.1671 1.7771 21.1117 1.8418C21.0563 1.9065 20.9874 1.9572 20.9101 1.99002C20.8328 2.02284 20.7493 2.0369 20.6659 2.03113C20.5826 2.02536 20.5016 1.99991 20.4293 1.95672C20.1892 1.79112 19.9491 1.61679 19.7005 1.45555C19.5514 1.32916 19.3615 1.26607 19.1692 1.27901C18.9768 1.29196 18.7964 1.37997 18.6643 1.52528C18.5035 1.71978 18.2951 1.86606 18.061 1.94885C17.8269 2.03163 17.5756 2.0479 17.3333 1.99594C17.1818 1.98722 17.0299 1.98722 16.8784 1.99594C16.6358 1.98359 16.3975 2.06511 16.2098 2.22462C16.0221 2.38413 15.8986 2.61021 15.8632 2.8588C15.7987 3.1032 15.7522 3.35233 15.7242 3.60402C15.7328 3.82611 15.6633 4.0439 15.5285 4.217C15.3938 4.3901 15.2029 4.50676 14.9913 4.54533C14.9215 4.57642 14.8451 4.58795 14.7697 4.57877C14.6943 4.56959 14.6225 4.54001 14.5617 4.49303C14.2289 4.25334 13.8961 4.01802 13.5507 3.79577C13.3709 3.66519 13.1522 3.60451 12.9334 3.62445C12.7145 3.64438 12.5095 3.74364 12.3545 3.90472C12.0638 4.18362 11.7816 4.47561 11.512 4.7763C11.357 4.93681 11.2609 5.14812 11.2402 5.37398C11.2194 5.59983 11.2753 5.82611 11.3983 6.01395C11.5162 6.23766 11.6544 6.44924 11.8111 6.64585C11.9904 6.8013 12.1042 7.02279 12.1286 7.26349C12.153 7.5042 12.0859 7.74529 11.9417 7.9358C11.8836 8.03419 11.7965 8.1106 11.6931 8.1537C11.2635 8.26265 10.8254 8.33236 10.3958 8.44131C10.1991 8.48215 10.0214 8.59037 9.89151 8.74851C9.76159 8.90666 9.68697 9.10548 9.6797 9.3129C9.65513 9.76137 9.65372 10.2109 9.67549 10.6595C9.67931 10.8721 9.75321 11.0771 9.88497 11.2403C10.0167 11.4036 10.1984 11.5154 10.4 11.5572C10.6515 11.635 10.9096 11.6875 11.1708 11.7141C11.3948 11.701 11.6156 11.7731 11.7917 11.9168C11.9679 12.0605 12.0871 12.2658 12.127 12.4942C12.1548 12.5634 12.1655 12.6387 12.1582 12.7132C12.1508 12.7878 12.1256 12.8593 12.0849 12.9213C11.849 13.2612 11.6257 13.6098 11.4109 13.9672C11.2787 14.1605 11.2187 14.3967 11.2419 14.6323C11.2651 14.8679 11.3701 15.0867 11.5373 15.2484C11.7942 15.5273 12.0554 15.7931 12.3208 16.059C12.479 16.2299 12.6906 16.3373 12.9181 16.362C13.1456 16.3868 13.3742 16.3272 13.5634 16.1941C13.7863 16.0672 13.9977 15.9199 14.1952 15.7539C14.3399 15.5833 14.5409 15.4746 14.7589 15.4488C14.9769 15.423 15.1964 15.482 15.3746 15.6145C15.5178 15.706 15.6105 15.7757 15.6358 15.95C15.7032 16.351 15.7832 16.7519 15.8674 17.1528C15.9019 17.392 16.02 17.6097 16.1994 17.7648C16.3787 17.9198 16.6068 18.0013 16.8405 17.9939C17.228 18.007 17.6155 18.007 17.9988 17.9939C18.2137 17.9938 18.422 17.9171 18.5885 17.7765C18.7551 17.636 18.8696 17.4403 18.9129 17.2225C18.9876 16.9711 19.0383 16.7128 19.0645 16.4512C19.0447 16.2106 19.1157 15.9715 19.2625 15.7838C19.4093 15.5962 19.6206 15.4746 19.8522 15.4445C19.9619 15.4167 20.0775 15.4274 20.1807 15.475C20.5177 15.6885 20.8378 15.9283 21.1706 16.1549C21.3665 16.3138 21.6136 16.3896 21.8616 16.3669C22.1096 16.3443 22.3399 16.2248 22.5059 16.0328C22.7502 15.7931 22.9903 15.5447 23.2262 15.2876C23.4154 15.1196 23.5343 14.8823 23.5579 14.6254C23.5814 14.3686 23.5078 14.1124 23.3525 13.9105C23.1377 13.5662 22.9102 13.2307 22.6954 12.8864C22.6533 12.8123 22.5985 12.699 22.6238 12.6293C22.7797 12.1891 22.9018 11.7795 23.5168 11.7316C24.0602 11.688 24.692 11.6793 25.029 11.0648C25.2859 11.2391 25.5092 11.4047 25.7451 11.5485C25.9051 11.6651 26.0998 11.7193 26.2948 11.7018C26.4898 11.6843 26.6725 11.596 26.8108 11.4526C27.0496 11.2309 27.2774 10.9968 27.4931 10.751C27.6372 10.6051 27.7261 10.4108 27.7439 10.203C27.7616 9.99526 27.7071 9.78778 27.59 9.61797C27.4342 9.36085 27.2657 9.11679 27.1056 8.86403C27.0647 8.78872 27.0409 8.70477 27.036 8.61853C27.0311 8.53229 27.0452 8.44602 27.0772 8.36625C27.1093 8.28648 27.1585 8.2153 27.221 8.15809C27.2836 8.10088 27.3579 8.05914 27.4384 8.03603C27.7417 7.97066 28.0491 7.91837 28.3482 7.83993C28.534 7.79497 28.6995 7.68588 28.8174 7.53063C28.9354 7.37537 28.9986 7.1832 28.9969 6.98576C29.0011 6.67635 29.0011 6.36258 28.9969 6.04881C29.0071 5.83668 28.9421 5.62799 28.8141 5.4619C28.6862 5.29581 28.504 5.18374 28.3019 5.14672ZM24.1613 10.5854C23.6347 10.6944 23.1419 10.812 22.6407 10.8948C22.4902 10.9036 22.3468 10.9634 22.2326 11.065C22.1184 11.1667 22.0397 11.3044 22.0088 11.457C21.9188 11.7755 21.7945 12.0825 21.6382 12.3722C21.5644 12.4913 21.5295 12.6318 21.5386 12.773C21.5477 12.9142 21.6003 13.0487 21.6887 13.1566C21.9583 13.5445 22.1984 13.9541 22.4638 14.342C22.4869 14.3651 22.5046 14.3934 22.5156 14.4247C22.5266 14.456 22.5307 14.4894 22.5274 14.5225C22.5242 14.5557 22.5138 14.5876 22.4969 14.6159C22.48 14.6443 22.4572 14.6683 22.4301 14.6862C22.211 14.8998 22.0088 15.1307 21.7856 15.3661C21.3265 15.0479 20.8758 14.7472 20.4377 14.4291C20.3354 14.3434 20.2099 14.2928 20.0786 14.2842C19.9473 14.2756 19.8166 14.3095 19.7048 14.3812C19.3838 14.5436 19.0532 14.6848 18.7149 14.8039C18.6055 14.8338 18.5071 14.8965 18.4322 14.9841C18.3572 15.0717 18.309 15.1804 18.2937 15.2963C18.1884 15.8585 18.0746 16.4207 17.9651 16.9829H16.8362C16.7352 16.4817 16.6172 15.9718 16.5414 15.4576C16.5323 15.287 16.4679 15.1245 16.3586 14.9964C16.2493 14.8684 16.1015 14.7821 15.939 14.7516C15.6258 14.6472 15.3227 14.513 15.0334 14.3507C14.9403 14.2939 14.833 14.2669 14.725 14.2731C14.6171 14.2793 14.5134 14.3184 14.4269 14.3855C13.9677 14.708 13.5002 15.0261 13.0284 15.3486C12.7757 15.0654 12.5272 14.7865 12.2534 14.4771C12.5103 14.0761 12.7925 13.6185 13.0958 13.1784C13.1897 13.0619 13.2449 12.9172 13.2532 12.7658C13.2616 12.6143 13.2226 12.4641 13.1421 12.3373C12.9896 12.0361 12.8641 11.721 12.7672 11.396C12.7364 11.2681 12.6687 11.153 12.5732 11.0658C12.4777 10.9787 12.3588 10.9236 12.2323 10.9079C11.7142 10.8077 11.1961 10.6987 10.6443 10.5854C10.6443 10.2324 10.6359 9.87507 10.6527 9.51772C10.6527 9.46543 10.758 9.39135 10.8254 9.37828C11.3014 9.26933 11.7816 9.17345 12.2618 9.07758C12.379 9.06239 12.4892 9.01103 12.5778 8.9302C12.6665 8.84936 12.7295 8.74279 12.7588 8.62435C12.8832 8.2684 13.0252 7.91931 13.1843 7.57845C13.242 7.47164 13.2687 7.34987 13.2612 7.22775C13.2538 7.10562 13.2124 6.98832 13.1421 6.88989C12.8304 6.42795 12.5356 5.95294 12.2365 5.491C12.24 5.47769 12.2442 5.4646 12.2491 5.45178C12.4977 5.19466 12.742 4.93754 12.9863 4.68478C13.2857 4.83603 13.5718 5.01393 13.8414 5.21644C14.389 5.69582 14.9281 5.88757 15.5515 5.38641C15.6143 5.3418 15.6865 5.31341 15.7621 5.30361C16.3392 5.22952 16.5288 4.83731 16.5919 4.29693C16.6425 3.87421 16.7436 3.45584 16.832 2.99826C17.1732 2.99826 17.5102 2.98954 17.843 3.01133C17.9019 3.01569 17.9862 3.14207 18.0072 3.22923C18.1125 3.72168 18.2052 4.21849 18.2979 4.71965C18.3141 4.82997 18.3603 4.93323 18.4312 5.01735C18.5021 5.10148 18.5946 5.16298 18.698 5.19466C19.0603 5.33847 19.4183 5.48228 19.7679 5.65224C19.8618 5.7073 19.9692 5.73292 20.0769 5.72596C20.1846 5.71899 20.288 5.67975 20.3745 5.61302C20.8378 5.29053 21.3012 4.97241 21.7645 4.64992L22.5691 5.48229C22.2868 5.91808 22.013 6.3713 21.7098 6.80274C21.6116 6.92103 21.5531 7.06911 21.5433 7.22471C21.5334 7.38032 21.5726 7.53504 21.655 7.6656C21.8101 7.96562 21.9356 8.28097 22.0299 8.60692C22.0594 8.73038 22.1243 8.84176 22.216 8.9265C22.3076 9.01124 22.4219 9.06541 22.5438 9.08193C23.0029 9.16473 23.462 9.27804 23.9254 9.36084C24.1023 9.39135 24.1697 9.45673 24.1655 9.64412C24.1529 9.95353 24.1613 10.2629 24.1613 10.5854ZM23.8411 8.1537C23.6585 8.24314 23.4501 8.25875 23.2568 8.19748C23.0636 8.13621 22.8994 8.00248 22.7965 7.82249C22.6891 7.66026 22.6419 7.46339 22.6636 7.26804C22.6853 7.0727 22.7743 6.892 22.9145 6.75916C23.072 6.55173 23.2156 6.33332 23.3441 6.10547C23.5009 5.90536 23.5778 5.65081 23.559 5.39395C23.5402 5.1371 23.4271 4.8974 23.243 4.724C23.2051 4.68478 23.1714 4.63685 23.1293 4.58455C23.4598 4.62737 23.7719 4.76581 24.0297 4.98399C24.2875 5.20216 24.4806 5.49119 24.5867 5.81784C24.7353 6.23712 24.7425 6.69605 24.6071 7.1201C24.4718 7.54415 24.2018 7.90841 23.8411 8.1537ZM28.0154 6.88118C27.6153 6.96834 27.2151 7.06421 26.8108 7.13829C26.6987 7.15417 26.5937 7.20404 26.509 7.2816C26.4242 7.35915 26.3636 7.46093 26.3348 7.57409C26.2401 7.84906 26.1304 8.11823 26.0062 8.38031C25.951 8.48224 25.9252 8.59843 25.9319 8.71508C25.9387 8.83173 25.9776 8.94393 26.0441 9.03836C26.2758 9.38264 26.4948 9.73563 26.7139 10.0756C26.5327 10.2542 26.36 10.4242 26.1579 10.6203C25.8756 10.4285 25.5429 10.2106 25.2312 9.9666C25.1983 9.92404 25.174 9.87514 25.1595 9.82278C25.1451 9.77042 25.1408 9.71563 25.1469 9.66154C25.1667 9.47705 25.1468 9.29031 25.0885 9.11475C25.0302 8.93919 24.9351 8.77915 24.81 8.64614C25.2139 8.22149 25.4954 7.68877 25.6229 7.10779C25.7151 6.62087 25.6907 6.11801 25.5517 5.64314C25.4126 5.16827 25.1633 4.73587 24.8254 4.38373C24.4876 4.0316 24.0715 3.77045 23.6135 3.62313C23.1555 3.47581 22.6697 3.4468 22.1984 3.53864C21.4961 3.703 20.8366 4.02264 20.265 4.4756C20.1956 4.52508 20.1157 4.55647 20.0321 4.56709C19.9485 4.57771 19.8637 4.56726 19.7848 4.53661C19.5731 4.49664 19.3833 4.37701 19.2518 4.20077C19.1204 4.02454 19.0566 3.80419 19.0729 3.58222C19.0631 3.40771 19.0275 3.23579 18.9676 3.07235C18.9384 3.00652 18.9224 2.93522 18.9206 2.86279C18.9188 2.79036 18.9313 2.71831 18.9573 2.65104C18.9834 2.58377 19.0223 2.52267 19.0719 2.47149C19.1214 2.4203 19.1806 2.38008 19.2456 2.35328C19.5868 2.58861 19.928 2.81959 20.2608 3.05928C20.352 3.12843 20.4608 3.16855 20.5738 3.17474C20.6867 3.18093 20.799 3.15292 20.8968 3.09413C21.1501 2.96563 21.4103 2.85214 21.6761 2.75422C21.7861 2.72573 21.8853 2.66344 21.9605 2.57554C22.0356 2.48764 22.0833 2.37825 22.0973 2.26177C22.1563 1.90878 22.2489 1.56014 22.2995 1.20279C22.3248 1.04155 22.3837 0.984892 22.5354 0.993608C22.7123 1.00668 22.8934 0.99797 23.0829 0.99797C23.1714 1.43812 23.2599 1.85213 23.3315 2.27049C23.3463 2.38185 23.3919 2.48638 23.463 2.57146C23.534 2.65653 23.6273 2.7185 23.7316 2.74985C24.0054 2.85444 24.275 2.96776 24.5362 3.0985C24.6348 3.15607 24.7475 3.18262 24.8605 3.17487C24.9734 3.16713 25.0818 3.12544 25.1722 3.05491C25.505 2.81523 25.8462 2.58861 26.2 2.34457C26.3643 2.5276 26.5327 2.715 26.7139 2.91982C26.5075 3.24231 26.2884 3.59094 26.0568 3.93086C25.9813 4.03117 25.9372 4.15294 25.9304 4.27989C25.9236 4.40684 25.9545 4.5329 26.0189 4.64119C26.1403 4.90489 26.2472 5.17553 26.339 5.45178C26.3688 5.55456 26.4254 5.64682 26.5028 5.71835C26.5801 5.78988 26.675 5.83789 26.7771 5.85706C27.1856 5.9355 27.59 6.02267 28.0154 6.10983V6.88118Z\",\n    fill: \"white\"\n  })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M25.9514 13.2873C25.7086 14.2926 25.2826 15.2407 24.6962 16.0808C24.1317 16.9175 23.5252 17.7324 23.0366 18.6214C22.2431 20.1126 21.9442 21.8317 22.1857 23.5154C22.3065 24.935 22.6508 26.3246 23.2051 27.6293C23.3314 27.9082 23.5041 28.1697 23.6473 28.4399C23.7889 28.6826 23.9182 28.9328 24.0349 29.1894C24.2202 29.6383 24.0138 29.9651 23.5336 29.9739C22.847 29.9869 22.1562 29.9869 21.4696 29.9869L11.672 30C11.2003 30 11.1455 29.9128 10.9686 29.4596C10.6822 28.7101 10.3536 27.9779 10.0251 27.2458C9.9348 27.0754 9.82444 26.9173 9.6965 26.7751C9.22052 26.1868 9.16998 26.1912 8.46233 26.4178C7.40927 26.7534 6.35201 27.0758 5.29475 27.3765C4.01002 27.7426 3.05806 27.1543 2.79691 25.8033C2.72249 25.3342 2.72392 24.8556 2.80112 24.387C2.88958 23.7725 2.88958 23.6897 2.39675 23.3847C1.74807 22.9881 1.65961 22.7223 1.92498 21.964C1.81546 21.8637 1.69331 21.7592 1.57116 21.6546C1.49705 21.6099 1.43229 21.5504 1.38064 21.4795C1.32899 21.4087 1.29149 21.3279 1.27031 21.2419C1.24914 21.1559 1.24473 21.0665 1.25733 20.9787C1.26992 20.8909 1.29929 20.8066 1.3437 20.7307C1.44479 20.4779 1.58379 20.2426 1.69752 19.9985C1.90813 19.5453 1.84916 19.3667 1.42794 19.1183C1.14675 18.9823 0.878759 18.8189 0.627618 18.6302C0.397469 18.3968 0.187466 18.1431 0 17.8719V17.3446C0.206398 17.0003 0.391734 16.6386 0.627618 16.3161C1.38314 15.2934 2.04586 14.2007 2.60736 13.052C2.91064 12.4114 2.91063 12.4114 2.38411 11.9407C2.07955 11.7316 1.86203 11.4117 1.77466 11.0444C1.68729 10.6772 1.73642 10.2894 1.91234 9.95788C2.29437 9.07938 2.59205 8.16418 2.80112 7.22546C2.89236 6.82824 3.01782 6.44029 3.17601 6.06625C4.13639 3.65631 5.7286 1.93493 8.18011 1.1505C9.69777 0.690196 11.2507 0.365066 12.822 0.178677C13.2853 0.113308 13.7529 0.0566531 14.2162 0H16.0275C16.0991 0.0174317 16.1707 0.0392235 16.2423 0.0566552C16.3537 0.0825999 16.453 0.147476 16.5236 0.240346C16.5942 0.333216 16.6317 0.448413 16.6298 0.566539C16.6245 0.6897 16.5757 0.806556 16.4926 0.894927C16.4095 0.983298 16.2979 1.03702 16.1791 1.0459C16.1134 1.05462 16.0468 1.05462 15.9811 1.0459C14.6811 0.954044 13.375 1.04198 12.0975 1.30738C10.9854 1.49041 9.87342 1.72575 8.78667 2.02209C6.12034 2.75422 4.56182 4.64992 3.79941 7.30826C3.56404 8.30028 3.25131 9.27092 2.8643 10.2106C2.60736 10.7641 2.65369 10.8469 3.1044 11.2609C3.29088 11.4231 3.45525 11.6108 3.59301 11.8187C3.71729 12.0153 3.78797 12.243 3.79761 12.4777C3.80725 12.7124 3.75548 12.9454 3.64777 13.1522C3.00016 14.5427 2.21081 15.8575 1.29315 17.0744C0.876139 17.6235 0.884562 17.6584 1.4827 18.0026C1.6554 18.1029 1.83652 18.1944 2.00501 18.299C2.17806 18.3863 2.33222 18.5091 2.45819 18.6597C2.58416 18.8104 2.67934 18.9859 2.73798 19.1757C2.79663 19.3654 2.81753 19.5655 2.79942 19.7639C2.78132 19.9622 2.72458 20.1547 2.63263 20.3297C2.53996 20.5433 2.42623 20.7437 2.32093 20.9529C2.5704 21.1448 2.80171 21.3608 3.01173 21.5979C3.24761 21.9117 2.93591 22.1688 2.81797 22.4564C2.88958 22.5 2.95276 22.5392 3.01594 22.5741C3.31436 22.7288 3.55432 22.9822 3.69777 23.294C3.84122 23.6058 3.87996 23.9583 3.80784 24.2955C3.65896 24.8016 3.66189 25.3425 3.81626 25.8469C3.88273 26.073 4.03302 26.2628 4.23428 26.3746C4.43554 26.4865 4.67142 26.5114 4.89037 26.4439C6.99575 25.8832 9.06868 25.1994 11.0992 24.3957C11.6871 24.1657 12.2539 23.8812 12.7925 23.5459C12.9708 23.4421 13.1202 23.2925 13.2265 23.1117C13.3327 22.9308 13.3921 22.7246 13.399 22.5131C13.3968 22.4416 13.4098 22.3705 13.4373 22.3049C13.4648 22.2393 13.5061 22.1809 13.558 22.1338C13.61 22.0867 13.6715 22.0521 13.7379 22.0325C13.8044 22.013 13.8742 22.0089 13.9424 22.0206C14.0087 22.0283 14.0727 22.0499 14.1307 22.0841C14.1886 22.1182 14.2392 22.1642 14.2794 22.2193C14.3196 22.2743 14.3485 22.3373 14.3645 22.4043C14.3804 22.4713 14.383 22.5409 14.3721 22.609C14.3452 22.9652 14.2398 23.3104 14.0638 23.6179C13.8878 23.9254 13.646 24.187 13.3569 24.3826C12.7624 24.8148 12.1056 25.1472 11.4109 25.3675C11.0065 25.507 10.6106 25.6508 10.1767 25.8077C10.2862 25.9471 10.3831 26.0735 10.48 26.1999C11.0703 26.9649 11.5148 27.8389 11.79 28.7754C11.7985 28.8453 11.8334 28.9088 11.8871 28.9521C11.9408 28.9954 12.0088 29.0149 12.0764 29.0064C15.5894 28.9846 19.101 28.9672 22.6111 28.9541C22.6533 28.9541 22.6996 28.9454 22.7291 28.9454C22.4848 28.3832 22.2068 27.8428 22.0046 27.2719C21.4902 25.8337 21.2002 24.3201 21.1453 22.7876C21.0596 20.4713 21.807 18.2044 23.243 16.4251C24.0728 15.4341 24.6811 14.2661 25.0247 13.0041C25.0356 12.9362 25.0601 12.8716 25.0967 12.8142C25.1333 12.7568 25.1812 12.708 25.2372 12.6711C25.2932 12.6341 25.3561 12.6097 25.4218 12.5995C25.4876 12.5893 25.5546 12.5935 25.6187 12.6119C25.6844 12.632 25.7455 12.6657 25.7982 12.7111C25.851 12.7564 25.8942 12.8124 25.9254 12.8756C25.9565 12.9388 25.9749 13.0079 25.9794 13.0787C25.9838 13.1495 25.9743 13.2205 25.9514 13.2873Z\",\n    fill: \"white\"\n  })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M10.4501 3.6302C10.0626 3.74787 9.66661 3.83938 9.27488 3.94832C7.32884 4.49307 6.23788 5.89633 5.66502 7.80946C5.56392 8.14502 5.4881 8.48494 5.39965 8.84229C5.09216 8.77256 4.78888 8.70284 4.46875 8.62875C4.60854 7.8308 4.84635 7.0546 5.1764 6.31904C6.09887 4.27517 7.71636 3.20313 9.78877 2.75862C9.92777 2.72811 10.0626 2.69324 10.2016 2.66709C10.3267 2.6373 10.4581 2.66002 10.567 2.73026C10.676 2.80051 10.7536 2.91256 10.7828 3.04188C10.7994 3.10313 10.8039 3.1672 10.796 3.23028C10.7881 3.29335 10.7681 3.35414 10.737 3.40904C10.706 3.46393 10.6646 3.51179 10.6153 3.54978C10.566 3.58778 10.5098 3.61513 10.4501 3.6302Z\",\n    fill: \"white\"\n  })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M4.8324 10.5115C4.82751 10.6439 4.77364 10.7693 4.68191 10.8618C4.59019 10.9543 4.46763 11.0067 4.33957 11.0083C4.21104 11.0006 4.0901 10.9428 4.00103 10.8466C3.91196 10.7504 3.86136 10.6229 3.85938 10.4898C3.86378 10.3564 3.91893 10.2303 4.01283 10.1389C4.10672 10.0474 4.23174 9.99811 4.36063 10.0016C4.42422 10.0022 4.48707 10.0159 4.54545 10.042C4.60384 10.0681 4.65657 10.106 4.70055 10.1535C4.74453 10.2011 4.77885 10.2572 4.8015 10.3187C4.82414 10.3802 4.83465 10.4458 4.8324 10.5115Z\",\n    fill: \"white\"\n  })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M17.4051 6.50196C16.5089 6.50028 15.6484 6.86549 15.0116 7.51786C14.3747 8.17022 14.0132 9.05676 14.0059 9.98394C14.0095 10.9159 14.3687 11.8087 15.0053 12.4681C15.6419 13.1275 16.5043 13.5002 17.4051 13.5052C18.3022 13.5016 19.1613 13.1304 19.7945 12.4729C20.4276 11.8154 20.7832 10.9251 20.7833 9.99703C20.7841 9.53783 20.6972 9.08299 20.5277 8.6586C20.3582 8.2342 20.1094 7.8486 19.7955 7.52389C19.4817 7.19919 19.109 6.94178 18.6988 6.76642C18.2886 6.59105 17.849 6.50118 17.4051 6.50196ZM17.4093 12.4854C17.0928 12.4892 16.7786 12.4278 16.4852 12.3048C16.1918 12.1817 15.925 11.9995 15.7004 11.7687C15.4758 11.5379 15.2978 11.2632 15.1768 10.9605C15.0558 10.6578 14.9943 10.3333 14.9957 10.0057C14.9937 9.67826 15.054 9.35358 15.1734 9.0503C15.2929 8.74702 15.4689 8.47109 15.6916 8.23832C15.9142 8.00555 16.179 7.82051 16.4709 7.69381C16.7628 7.5671 17.076 7.50122 17.3925 7.49993C18.0309 7.50347 18.6424 7.76621 19.0954 8.23162C19.5484 8.69703 19.8066 9.32786 19.8145 9.9883C19.815 10.6492 19.5621 11.2834 19.1111 11.7516C18.6602 12.2197 18.0482 12.4836 17.4093 12.4854Z\",\n    fill: \"white\"\n  })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M17.8889 9.98854C17.8886 10.121 17.8382 10.2481 17.7485 10.3426C17.6587 10.4371 17.5368 10.4914 17.4088 10.4941C17.3452 10.4974 17.2816 10.4873 17.2219 10.4642C17.1623 10.4411 17.1079 10.4055 17.0621 10.3597C17.0162 10.314 16.98 10.259 16.9556 10.1981C16.9312 10.1373 16.9191 10.0718 16.9201 10.006C16.9182 9.9403 16.929 9.87488 16.9517 9.81355C16.9745 9.75222 17.0088 9.6962 17.0527 9.64874C17.0966 9.60128 17.1493 9.56334 17.2075 9.53714C17.2657 9.51093 17.3284 9.49697 17.3919 9.49609C17.52 9.49663 17.643 9.54803 17.7354 9.63967C17.8279 9.73131 17.8829 9.85619 17.8889 9.98854Z\",\n    fill: \"white\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgI06);\nexport default __webpack_public_path__ + \"static/media/i06.4dc0344324c6357393037d66dbadc8a0.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\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); }\nimport * as React from \"react\";\nfunction SvgI07(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    viewBox: \"0 0 32 32\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M29.4049 11.977C28.6666 11.977 27.9283 11.9704 27.1901 11.9835C27.1111 11.9931 27.0314 11.9726 26.9667 11.9263C26.902 11.8799 26.8571 11.8109 26.8407 11.7331C26.643 11.1991 26.4255 10.6718 26.1882 10.1577C26.142 10.0852 26.1251 9.99781 26.141 9.91331C26.1569 9.82882 26.2044 9.75358 26.2739 9.70287C26.821 9.17555 27.3549 8.64163 27.8888 8.10112C28.0392 7.96983 28.1598 7.80798 28.2426 7.62637C28.3255 7.44477 28.3687 7.24759 28.3693 7.04797C28.3699 6.84836 28.328 6.65091 28.2463 6.46879C28.1645 6.28667 28.0449 6.12407 27.8954 5.99183C26.9396 5.02288 25.9751 4.06051 25.0017 3.10474C24.8696 2.95543 24.7069 2.83625 24.5248 2.75523C24.3426 2.67421 24.1452 2.63325 23.9458 2.63513C23.7465 2.637 23.5499 2.68166 23.3693 2.76609C23.1887 2.85052 23.0283 2.97275 22.899 3.12451C22.3585 3.65843 21.8246 4.19234 21.2973 4.73285C21.2466 4.80254 21.1708 4.84977 21.0859 4.86454C21.001 4.8793 20.9137 4.86043 20.8424 4.81194C20.3415 4.58124 19.8208 4.35714 19.3 4.17257C19.2103 4.15536 19.131 4.10352 19.0792 4.02828C19.0274 3.95304 19.0073 3.86044 19.0232 3.77049C19.0364 3.03883 19.0298 2.30057 19.0232 1.56232C19.0427 1.3526 19.0156 1.14115 18.9439 0.943107C18.8722 0.745059 18.7576 0.565299 18.6084 0.416677C18.4591 0.268054 18.2789 0.154238 18.0805 0.0833685C17.8822 0.0124994 17.6706 -0.0136749 17.461 0.00671733H13.539C13.3295 -0.0131106 13.1182 0.0134562 12.9201 0.0845252C12.722 0.155594 12.542 0.269425 12.3929 0.417924C12.2437 0.566423 12.1292 0.745941 12.0572 0.94373C11.9853 1.14152 11.9579 1.35272 11.9768 1.56232C11.9702 2.31376 11.9702 3.0586 11.9834 3.81004C11.9949 3.88916 11.9762 3.96971 11.931 4.03567C11.8858 4.10162 11.8175 4.14814 11.7395 4.16598C11.1924 4.36372 10.6585 4.58783 10.1312 4.82513C10.0691 4.86591 9.99385 4.88177 9.92055 4.86956C9.84725 4.85734 9.78124 4.81795 9.7357 4.75922C9.1952 4.20553 8.6481 3.66502 8.101 3.12451C7.97126 2.97348 7.81074 2.85191 7.63019 2.76796C7.44964 2.68401 7.25324 2.63961 7.05413 2.63774C6.85503 2.63587 6.65783 2.67657 6.47573 2.75711C6.29364 2.83765 6.13086 2.95617 5.9983 3.10474C5.02934 4.06051 4.06698 5.02288 3.11121 5.99183C2.96102 6.12367 2.84081 6.28613 2.75867 6.46831C2.67652 6.65048 2.63434 6.84814 2.63496 7.04797C2.63559 7.24781 2.679 7.44521 2.76229 7.62687C2.84557 7.80852 2.96679 7.97023 3.1178 8.10112C3.65171 8.63504 4.18563 9.17555 4.72613 9.70287C4.79719 9.75059 4.84667 9.82429 4.86392 9.90811C4.88118 9.99194 4.86484 10.0792 4.81841 10.1511C4.58112 10.6718 4.3636 11.1991 4.15926 11.7331C4.14345 11.8112 4.09863 11.8805 4.03382 11.927C3.96901 11.9734 3.88901 11.9937 3.80991 11.9835C3.05188 11.9704 2.29386 11.9835 1.53583 11.977C1.31589 11.959 1.09488 11.9946 0.8917 12.0807C0.688519 12.1668 0.509216 12.3008 0.369127 12.4713C0.225318 12.6996 0.101802 12.94 0 13.1898V17.8105C0.101774 18.0624 0.225283 18.305 0.369127 18.5355C0.509216 18.706 0.688519 18.8401 0.8917 18.9261C1.09488 19.0122 1.31589 19.0478 1.53583 19.0299C2.29386 19.0233 3.05188 19.0365 3.80991 19.0233C3.88927 19.0115 3.97011 19.031 4.03532 19.0778C4.10053 19.1245 4.14498 19.1948 4.15926 19.2738C4.3636 19.8077 4.58112 20.335 4.81841 20.8492C4.86472 20.9205 4.88166 21.007 4.86569 21.0905C4.84972 21.174 4.80208 21.2482 4.73272 21.2974C4.18563 21.8247 3.65171 22.3652 3.1178 22.9057C2.96718 23.0359 2.84612 23.1968 2.76274 23.3776C2.67936 23.5584 2.63558 23.755 2.63433 23.9541C2.63308 24.1532 2.6744 24.3502 2.7555 24.5321C2.83661 24.7139 2.95564 24.8763 3.10461 25.0084C4.06039 25.9774 5.02934 26.9397 5.9983 27.8955C6.12989 28.045 6.29191 28.1645 6.47349 28.2462C6.65507 28.328 6.85203 28.3699 7.05115 28.3693C7.25026 28.3687 7.44695 28.3255 7.62802 28.2426C7.80908 28.1598 7.97035 28.0392 8.101 27.8889C8.64151 27.355 9.18201 26.8211 9.70933 26.274C9.75856 26.2046 9.83268 26.157 9.91622 26.141C9.99975 26.1251 10.0862 26.142 10.1576 26.1883C10.6717 26.4256 11.199 26.6431 11.7329 26.8409C11.8108 26.8572 11.8798 26.9021 11.9261 26.9668C11.9725 27.0315 11.9929 27.1112 11.9834 27.1902C11.9702 27.8626 11.9768 28.5349 11.9768 29.2006C11.9768 30.2948 12.1943 30.6178 13.1897 31.0067H17.8103C18.8122 30.6178 19.0232 30.2948 19.0298 29.2006C19.0298 28.5349 19.0364 27.8626 19.0232 27.1902C19.0166 26.9925 19.0957 26.9134 19.2737 26.8409C19.8076 26.6431 20.3349 26.4256 20.849 26.1883C20.9203 26.1418 21.0068 26.1247 21.0904 26.1406C21.1741 26.1566 21.2482 26.2044 21.2973 26.274C21.8114 26.8079 22.3387 27.322 22.8595 27.8428C22.9919 28.0069 23.1593 28.1394 23.3495 28.2306C23.5397 28.3218 23.7478 28.3695 23.9587 28.3701C24.1696 28.3707 24.378 28.3243 24.5687 28.2342C24.7594 28.1442 24.9276 28.0127 25.061 27.8494C25.997 26.92 26.9286 25.9884 27.8558 25.0546C28.016 24.9214 28.1448 24.7547 28.2332 24.5661C28.3217 24.3776 28.3675 24.1719 28.3675 23.9637C28.3675 23.7554 28.3217 23.5497 28.2332 23.3612C28.1448 23.1727 28.016 23.0059 27.8558 22.8728C27.3219 22.3388 26.788 21.7983 26.2475 21.271C26.1879 21.2261 26.1478 21.16 26.1356 21.0864C26.1233 21.0128 26.1398 20.9373 26.1816 20.8755C26.4057 20.3746 26.6232 19.8736 26.8144 19.3595C26.9001 19.1156 26.9923 19.0101 27.2692 19.0167C27.9943 19.0431 28.7193 19.0299 29.4444 19.0233C29.6539 19.0417 29.8648 19.0138 30.0624 18.9417C30.2599 18.8696 30.4392 18.755 30.5876 18.606C30.7359 18.457 30.8498 18.2773 30.9211 18.0794C30.9923 17.8816 31.0193 17.6705 31 17.4611V13.5655C31.022 13.3509 30.9958 13.1341 30.9234 12.9309C30.8509 12.7277 30.7339 12.5432 30.5811 12.391C30.4282 12.2388 30.2433 12.1226 30.0398 12.051C29.8363 11.9793 29.6194 11.954 29.4049 11.977ZM29.5433 17.6127H26.4716C26.2931 17.5902 26.1128 17.6371 25.968 17.7439C25.8232 17.8506 25.725 18.009 25.6938 18.1862C25.4407 19.1063 25.0754 19.9918 24.6062 20.8228C24.5006 20.9688 24.4572 21.1508 24.4857 21.3287C24.5141 21.5067 24.612 21.6661 24.7578 21.772C25.3906 22.4114 26.03 23.0507 26.6628 23.6835C26.7485 23.7692 26.8341 23.8615 26.8935 23.9274C25.9047 24.9095 24.9292 25.8917 23.9075 26.9068C23.2484 26.241 22.5694 25.5555 21.8905 24.87C21.4159 24.3954 21.2511 24.4086 20.6447 24.692C19.8669 25.048 19.0759 25.3644 18.2783 25.661C17.7774 25.8455 17.6126 26.0103 17.6126 26.5377V29.55H13.3874V29.2006C13.3874 28.291 13.394 27.3748 13.3874 26.4651C13.4019 26.2881 13.3518 26.1118 13.2464 25.9688C13.141 25.8259 12.9874 25.7259 12.814 25.6874C11.9439 25.3446 11.0672 24.9886 10.2103 24.6129C10.0581 24.5099 9.87284 24.4677 9.69103 24.4945C9.50923 24.5214 9.34408 24.6153 9.22815 24.7579C8.57559 25.4039 7.93621 26.0499 7.29024 26.6959C7.21114 26.7684 7.13204 26.8409 7.07272 26.9002C6.0774 25.9115 5.10185 24.9293 4.04061 23.8681C4.19593 23.7695 4.34356 23.6593 4.48224 23.5385C5.07548 22.9584 5.65554 22.3784 6.23559 21.7917C6.38199 21.6728 6.47868 21.5034 6.50672 21.3169C6.53476 21.1303 6.49214 20.94 6.3872 20.7832C6.01148 19.9329 5.66213 19.0694 5.32596 18.206C5.28538 18.027 5.18183 17.8687 5.0342 17.7598C4.88657 17.6509 4.70471 17.5987 4.5218 17.6127H1.46332V13.3875H1.81267C2.72231 13.3875 3.63853 13.3941 4.54816 13.3875C4.72057 13.4095 4.89481 13.3642 5.03473 13.2611C5.17465 13.158 5.2695 13.005 5.2996 12.8339C5.55652 11.9015 5.92851 11.0047 6.40698 10.1643C6.50868 10.0164 6.54774 9.83424 6.51563 9.65764C6.48352 9.48104 6.38285 9.32432 6.23559 9.22168C5.60281 8.57571 4.96343 7.94293 4.32405 7.31014C4.23756 7.23531 4.1424 7.17112 4.04061 7.11898C5.08867 6.06434 6.07081 5.08879 7.07272 4.08028C7.43525 4.44282 7.80438 4.81854 8.17351 5.19425C8.52945 5.5502 8.88539 5.91274 9.24793 6.26209C9.36356 6.39684 9.52412 6.48512 9.69985 6.51057C9.87558 6.53602 10.0546 6.49692 10.2037 6.40051C11.0672 6.02479 11.9307 5.66225 12.8074 5.3195C12.9856 5.2794 13.1429 5.17549 13.2498 5.02734C13.3566 4.8792 13.4056 4.69708 13.3874 4.51533C13.394 3.50682 13.3874 2.49832 13.3874 1.46345H17.6126V4.56147C17.595 4.72792 17.6399 4.89495 17.7386 5.03015C17.8373 5.16535 17.9826 5.25908 18.1465 5.29313C19.0874 5.55271 19.9928 5.92683 20.8424 6.4071C20.9855 6.50774 21.1623 6.54823 21.3348 6.51988C21.5074 6.49153 21.6619 6.3966 21.7653 6.25549C22.4178 5.61611 23.0572 4.96356 23.7032 4.32418C23.7823 4.24508 23.8614 4.17257 23.9207 4.11984L26.8935 7.09262L24.8765 9.10963C24.3953 9.58422 24.4085 9.7556 24.6853 10.3554C25.0478 11.12 25.3642 11.8979 25.6543 12.6888C25.8586 13.2491 25.9904 13.3875 26.5969 13.3875H29.5433V17.6127Z\",\n    fill: \"white\"\n  })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M15.5038 8.45117C14.1123 8.45059 12.7518 8.8618 11.5936 9.63301C10.4354 10.4042 9.53134 11.5009 8.99529 12.785C8.45924 14.0691 8.31518 15.4831 8.58126 16.8489C8.84734 18.2147 9.51165 19.4712 10.4905 20.4601C11.4694 21.449 12.719 22.1262 14.082 22.4062C15.445 22.6863 16.8604 22.5567 18.1499 22.0338C19.4394 21.5109 20.5453 20.6181 21.3283 19.4679C22.1114 18.3177 22.5365 16.9614 22.5501 15.57C22.5577 13.6922 21.8201 11.8881 20.4991 10.5535C19.1781 9.21889 17.3816 8.46282 15.5038 8.45117ZM15.4708 21.1201C14.3587 21.1135 13.2736 20.7769 12.3531 20.1529C11.4325 19.5289 10.7179 18.6456 10.2999 17.615C9.88195 16.5844 9.77935 15.4529 10.0051 14.364C10.2309 13.275 10.775 12.2776 11.5683 11.4982C12.3616 10.7188 13.3684 10.1925 14.4612 9.98593C15.554 9.77939 16.6835 9.90195 17.7065 10.3381C18.7295 10.7742 19.6001 11.5042 20.2077 12.4357C20.8154 13.3671 21.1328 14.458 21.1198 15.57C21.1137 16.3055 20.9627 17.0325 20.6754 17.7096C20.3881 18.3866 19.9702 19.0004 19.4456 19.5159C18.921 20.0313 18.2999 20.4383 17.6179 20.7136C16.9359 20.9888 16.2063 21.127 15.4708 21.1201Z\",\n    fill: \"white\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgI07);\nexport default __webpack_public_path__ + \"static/media/i07.be56008525e6fac541ffbce08bda4a83.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11;\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); }\nimport * as React from \"react\";\nfunction SvgI08(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    viewBox: \"0 0 33 31\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M32.0525 29.7203C31.5019 29.7441 30.9431 29.7282 30.36 29.7282V19.7923C30.3654 19.6678 30.3627 19.543 30.3519 19.4187C30.3401 19.3377 30.3119 19.2597 30.2692 19.1894C30.2265 19.1191 30.17 19.0578 30.103 19.009C30.0359 18.9602 29.9598 18.9249 29.8788 18.9052C29.7978 18.8855 29.7137 18.8817 29.6312 18.8941C29.2587 18.9498 29.0724 19.2041 29.0724 19.6572C29.0643 22.8764 29.0616 26.101 29.0643 29.3308V29.7044H24.4484V24.6172C24.4403 24.0449 24.2297 23.8382 23.6467 23.8303H19.7515C19.1684 23.8382 18.9498 24.0528 18.9498 24.6172V29.7044H14.4472V3.71206H29.0643V13.6877C29.0643 13.799 29.0643 13.9023 29.0724 14.0057C29.0885 14.1484 29.1547 14.2811 29.2596 14.3812C29.3645 14.4813 29.5016 14.5424 29.6474 14.5541C29.7923 14.5757 29.9403 14.546 30.065 14.4703C30.1896 14.3946 30.2827 14.2777 30.3276 14.1408C30.3548 14.0181 30.3657 13.8926 30.36 13.7672V3.23513C30.36 2.61513 30.1414 2.40846 29.5016 2.40846H28.1411C28.1411 1.89179 28.1249 1.41489 28.1492 0.937967C28.176 0.756904 28.1489 0.572118 28.0714 0.405756C27.9938 0.239395 27.869 0.0984993 27.7119 0H15.9778C15.8211 0.079643 15.6935 0.20492 15.6123 0.358624C15.5311 0.512328 15.5003 0.686938 15.5243 0.858475C15.5567 1.36719 15.5324 1.86795 15.5324 2.40846H13.937C13.3702 2.41641 13.1434 2.63897 13.1434 3.20333V12.8928H8.10639V11.2236C8.10639 10.5003 7.91204 10.3174 7.16701 10.3174H3.27182C2.53489 10.3174 2.35673 10.4923 2.35673 11.2077V29.7282H0.769493C0.267409 29.7282 -0.00792442 29.9667 0.000173698 30.3721C0.000173698 30.7616 0.291708 30.9921 0.761399 30.9921C11.2485 31 21.7328 31.0026 32.2145 31C32.3755 31.0096 32.5358 30.9725 32.6755 30.8934C32.8151 30.8142 32.928 30.6965 33 30.5549V30.1177C32.8942 29.9728 32.7499 29.8591 32.5828 29.7891C32.4158 29.719 32.2324 29.6952 32.0525 29.7203ZM16.8362 1.29564H26.7969V2.39257H16.8362V1.29564ZM3.68482 11.5892H6.7702V12.9008H3.68482V11.5892ZM9.11056 29.7044H7.60431V27.4867H9.11056V29.7044ZM13.1191 29.7123H10.4306V29.3705C10.4306 28.5598 10.4387 27.749 10.4306 26.9382C10.4452 26.8378 10.4358 26.7354 10.4031 26.6392C10.3704 26.543 10.3154 26.4555 10.2423 26.3838C10.1692 26.3121 10.0801 26.258 9.98207 26.2259C9.88403 26.1939 9.77973 26.1846 9.67743 26.199C8.81093 26.191 7.93633 26.199 7.06983 26.199C6.51106 26.199 6.26812 26.4375 6.26812 26.9939V29.7044H3.68482V14.2282H13.1191V29.7123ZM23.1284 29.7044H20.2536V25.1259H23.1284V29.7044Z\",\n    fill: \"white\"\n  })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M19.9629 11.4777C19.0802 11.4618 18.2056 11.4618 17.3229 11.4777C17.2282 11.4708 17.1331 11.4843 17.0444 11.5173C16.9556 11.5502 16.8752 11.6018 16.8088 11.6684C16.7425 11.735 16.6918 11.8151 16.6603 11.903C16.6288 11.9909 16.6172 12.0845 16.6264 12.1772V14.7288C16.6165 14.8237 16.6284 14.9196 16.6613 15.0095C16.6941 15.0993 16.747 15.1808 16.8162 15.2479C16.8853 15.315 16.9689 15.366 17.0608 15.3973C17.1527 15.4285 17.2506 15.4391 17.3472 15.4283C18.2056 15.4362 19.064 15.4362 19.9224 15.4362C20.0172 15.4481 20.1135 15.4395 20.2046 15.411C20.2956 15.3825 20.3792 15.3347 20.4495 15.271C20.5197 15.2074 20.5749 15.1294 20.6111 15.0426C20.6474 14.9558 20.6638 14.8622 20.6593 14.7685C20.6755 13.8942 20.6755 13.0198 20.6593 12.1454C20.6651 12.0549 20.651 11.9642 20.6178 11.8795C20.5846 11.7948 20.5332 11.7182 20.4671 11.6548C20.401 11.5914 20.3217 11.5428 20.2347 11.5122C20.1477 11.4817 20.0549 11.4699 19.9629 11.4777ZM19.3312 14.1406H17.9302V12.7813H19.3312V14.1406Z\",\n    fill: \"white\"\n  })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M19.9465 5.95372C19.0719 5.94577 18.2054 5.94577 17.3389 5.95372C17.2421 5.94331 17.1441 5.95452 17.0522 5.98651C16.9604 6.01851 16.8771 6.07046 16.8086 6.13849C16.74 6.20651 16.6881 6.28884 16.6565 6.37934C16.6249 6.46984 16.6146 6.56617 16.6263 6.66114V9.18883C16.6143 9.2815 16.6231 9.37565 16.6524 9.46456C16.6816 9.55348 16.7304 9.63498 16.7953 9.70328C16.8603 9.77158 16.9397 9.82499 17.0281 9.85972C17.1165 9.89445 17.2115 9.90965 17.3066 9.90423C18.1973 9.92013 19.0881 9.92013 19.9789 9.90423C20.0682 9.91072 20.1578 9.89836 20.2418 9.86801C20.3258 9.83766 20.4023 9.79001 20.4659 9.72827C20.5296 9.66652 20.5791 9.5921 20.611 9.51002C20.6429 9.42794 20.6566 9.34012 20.6511 9.25243C20.6754 8.37012 20.6754 7.47987 20.6592 6.59756C20.6626 6.50725 20.6461 6.41728 20.6107 6.33386C20.5753 6.25044 20.5218 6.17555 20.4541 6.11435C20.3864 6.05315 20.3059 6.00709 20.2183 5.97936C20.1307 5.95162 20.0379 5.94288 19.9465 5.95372ZM19.3311 8.60063H17.9463V7.23345H19.3311V8.60063Z\",\n    fill: \"white\"\n  })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M19.9454 17.0182C19.5162 17.0102 19.087 17.0182 18.6578 17.0182C18.2125 17.0182 17.759 17.0102 17.3136 17.0182C17.2219 17.0105 17.1296 17.0224 17.0431 17.0531C16.9566 17.0839 16.8779 17.1326 16.8124 17.1961C16.747 17.2596 16.6963 17.3363 16.664 17.4208C16.6317 17.5054 16.6185 17.5958 16.6252 17.6859V20.2772C16.6149 20.3643 16.624 20.4525 16.6518 20.5358C16.6796 20.6192 16.7255 20.6956 16.7863 20.7598C16.8471 20.824 16.9214 20.8746 17.0041 20.9079C17.0867 20.9412 17.1757 20.9565 17.265 20.9528C18.1801 20.9767 19.087 20.9687 20.0021 20.9608C20.0865 20.9659 20.171 20.9537 20.2504 20.9251C20.3297 20.8964 20.4021 20.8519 20.463 20.7944C20.5239 20.7369 20.572 20.6675 20.6042 20.5908C20.6364 20.5141 20.652 20.4316 20.65 20.3487C20.6743 19.4505 20.6743 18.5443 20.65 17.6382C20.6419 17.2328 20.3746 17.0261 19.9454 17.0182ZM19.3219 19.6731H17.9371V18.3059H19.3219V19.6731Z\",\n    fill: \"white\"\n  })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M25.97 5.95345C25.1116 5.9455 24.2532 5.9455 23.3948 5.95345C23.298 5.93835 23.1991 5.94566 23.1057 5.97482C23.0124 6.00398 22.9273 6.05416 22.8573 6.12136C22.7873 6.18856 22.7342 6.27093 22.7024 6.36185C22.6706 6.45277 22.6609 6.54973 22.674 6.64499C22.6659 7.4955 22.6659 8.34601 22.674 9.20447C22.6617 9.29443 22.6696 9.38596 22.6974 9.47254C22.7251 9.55913 22.772 9.63865 22.8346 9.70544C22.8973 9.77223 22.9741 9.82463 23.0597 9.85894C23.1454 9.89326 23.2376 9.90864 23.33 9.90396C24.2289 9.91986 25.1278 9.91986 26.0267 9.90396C26.1192 9.90814 26.2116 9.8925 26.2974 9.85814C26.3832 9.82379 26.4604 9.77152 26.5235 9.70498C26.5867 9.63844 26.6344 9.55921 26.6632 9.47279C26.6921 9.38636 26.7015 9.29481 26.6907 9.20447V7.94063C26.6907 7.5114 26.6988 7.07422 26.6907 6.64499C26.7018 6.55013 26.6907 6.45404 26.6582 6.36406C26.6256 6.27408 26.5725 6.19261 26.503 6.12587C26.4334 6.05913 26.3492 6.0089 26.2568 5.97902C26.1645 5.94913 26.0663 5.94038 25.97 5.95345ZM25.3707 8.60036H23.9778V7.23318H25.3707V8.60036Z\",\n    fill: \"white\"\n  })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M26.051 11.4777C25.144 11.4618 24.2289 11.4618 23.3219 11.4777C23.2352 11.4742 23.1486 11.4885 23.0678 11.5197C22.9871 11.5509 22.9138 11.5983 22.8528 11.659C22.7918 11.7196 22.7444 11.7921 22.7136 11.8717C22.6828 11.9514 22.6694 12.0365 22.674 12.1216C22.6659 13.0118 22.6659 13.8941 22.674 14.7765C22.6672 14.8665 22.6808 14.957 22.7139 15.0413C22.7469 15.1256 22.7986 15.2017 22.8652 15.264C22.9318 15.3264 23.0117 15.3734 23.0991 15.4018C23.1864 15.4302 23.2791 15.4392 23.3705 15.4283C23.8078 15.4362 24.2532 15.4362 24.6905 15.4362C25.1278 15.4362 25.5651 15.4362 26.0105 15.4283C26.0989 15.4372 26.1882 15.4271 26.2723 15.3987C26.3563 15.3702 26.433 15.3241 26.497 15.2635C26.561 15.203 26.6108 15.1294 26.6428 15.0481C26.6749 14.9667 26.6885 14.8794 26.6826 14.7924C26.6907 13.9021 26.6907 13.0198 26.6826 12.1375C26.6908 12.0522 26.6804 11.9662 26.6521 11.8852C26.6238 11.8042 26.5783 11.73 26.5186 11.6676C26.4588 11.6052 26.3862 11.556 26.3056 11.5233C26.225 11.4905 26.1382 11.475 26.051 11.4777ZM25.3788 14.1485H23.994V12.7893H25.3788V14.1485Z\",\n    fill: \"white\"\n  })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M25.9781 17.0182C25.5489 17.0103 25.1197 17.0182 24.6905 17.0182C24.2532 17.0182 23.8078 17.0103 23.3705 17.0182C23.279 17.0066 23.186 17.0151 23.0983 17.0433C23.0107 17.0715 22.9305 17.1185 22.8638 17.181C22.797 17.2435 22.7453 17.3198 22.7125 17.4044C22.6797 17.489 22.6665 17.5798 22.674 17.67C22.6659 18.5524 22.6659 19.4346 22.674 20.317C22.6666 20.4027 22.6782 20.4889 22.708 20.5698C22.7378 20.6507 22.7851 20.7243 22.8467 20.7855C22.9083 20.8467 22.9827 20.8941 23.0647 20.9244C23.1467 20.9546 23.2345 20.9671 23.3219 20.9608C24.2289 20.9767 25.144 20.9767 26.051 20.9529C26.1377 20.9594 26.2249 20.9471 26.3063 20.9167C26.3876 20.8863 26.4611 20.8387 26.5215 20.7771C26.5818 20.7156 26.6276 20.6417 26.6554 20.5608C26.6833 20.4799 26.6926 20.3939 26.6826 20.309C26.6907 19.4347 26.6907 18.5603 26.6826 17.6859C26.6826 17.2408 26.4397 17.0262 25.9781 17.0182ZM25.3707 19.6731H23.9859V18.3059H25.3707V19.6731Z\",\n    fill: \"white\"\n  })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M30.352 16.7879C30.3558 16.8694 30.3429 16.9509 30.3143 17.0275C30.2857 17.1042 30.2419 17.1745 30.1854 17.2344C30.1289 17.2943 30.0609 17.3426 29.9852 17.3764C29.9096 17.4103 29.8278 17.4291 29.7447 17.4317C29.5722 17.4357 29.405 17.3728 29.2792 17.2568C29.1535 17.1408 29.0792 16.981 29.0725 16.8117C29.07 16.7276 29.0851 16.6438 29.1168 16.5655C29.1485 16.4873 29.1961 16.4162 29.2568 16.3566C29.3174 16.2971 29.3898 16.2504 29.4695 16.2193C29.5493 16.1882 29.6346 16.1734 29.7204 16.1758C29.8036 16.1724 29.8866 16.1858 29.9643 16.2152C30.042 16.2446 30.1127 16.2894 30.172 16.3469C30.2312 16.4043 30.2778 16.4731 30.3088 16.549C30.3398 16.6249 30.3545 16.7062 30.352 16.7879Z\",\n    fill: \"white\"\n  })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M9.00495 16.3345C9.01305 16.9147 9.00495 17.495 9.00495 18.0753V24.1163C9.01409 24.2083 9.00386 24.3011 8.9749 24.3891C8.94593 24.477 8.89884 24.5582 8.83656 24.6275C8.77429 24.6968 8.69815 24.7529 8.61288 24.7921C8.52761 24.8313 8.43503 24.8529 8.3409 24.8555C8.24907 24.8524 8.15887 24.8308 8.07582 24.7922C7.99278 24.7536 7.91865 24.6988 7.85798 24.631C7.79732 24.5633 7.75139 24.4841 7.72303 24.3983C7.69467 24.3125 7.68447 24.222 7.69305 24.1322C7.68495 23.226 7.69305 22.3199 7.69305 21.4137V16.6127C7.69305 16.5173 7.68495 16.4219 7.69305 16.3265C7.6902 16.239 7.70525 16.1519 7.73731 16.0702C7.76937 15.9885 7.81778 15.914 7.87969 15.851C7.9416 15.788 8.01574 15.7379 8.09774 15.7035C8.17974 15.6691 8.26793 15.6512 8.3571 15.6509C8.44582 15.6526 8.53328 15.6718 8.61428 15.7074C8.69528 15.743 8.76817 15.7941 8.8286 15.8579C8.88904 15.9217 8.9358 15.9967 8.96609 16.0786C8.99639 16.1605 9.0096 16.2475 9.00495 16.3345Z\",\n    fill: \"white\"\n  })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M11.645 16.3902C11.6531 17.67 11.645 18.9577 11.645 20.2454V23.9733C11.649 24.0878 11.6409 24.2023 11.6207 24.3151C11.5955 24.4616 11.5199 24.5953 11.4064 24.6936C11.2929 24.792 11.1484 24.8492 10.9972 24.8556C10.8395 24.8533 10.6878 24.7961 10.5691 24.6942C10.4505 24.5923 10.3726 24.4523 10.3493 24.2992C10.3356 24.1965 10.3302 24.0928 10.3331 23.9892V16.5015C10.3291 16.4592 10.3291 16.4166 10.3331 16.3743C10.3252 16.2843 10.3357 16.1935 10.3643 16.1075C10.3928 16.0215 10.4386 15.9421 10.499 15.8739C10.5595 15.8056 10.6333 15.75 10.7161 15.7104C10.7989 15.6707 10.889 15.6478 10.981 15.6431C11.0759 15.6453 11.1694 15.6669 11.2554 15.7065C11.3414 15.7462 11.4181 15.8029 11.4805 15.8732C11.543 15.9434 11.5899 16.0257 11.6182 16.1147C11.6465 16.2037 11.6556 16.2976 11.645 16.3902Z\",\n    fill: \"white\"\n  })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M6.36603 16.5731V24.1005C6.36603 24.6569 5.92063 25.0146 5.47523 24.7841C5.29158 24.6724 5.15394 24.5007 5.08652 24.2992C5.04286 24.082 5.03195 23.8598 5.05413 23.6395V16.5651C5.05413 15.961 5.27278 15.651 5.70198 15.6431C6.13118 15.6431 6.36603 15.969 6.36603 16.5731Z\",\n    fill: \"white\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgI08);\nexport default __webpack_public_path__ + \"static/media/i08.5bff1b11fdddd25247d0a6a487f02276.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\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); }\nimport * as React from \"react\";\nfunction SvgI09(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    viewBox: \"0 0 33 31\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M32.0825 3.06474C30.0959 3.05268 28.1114 3.20135 26.1473 3.5094C24.3554 3.76028 22.6285 4.37109 21.0639 5.30734C19.889 6.00205 18.9828 7.09485 18.4989 8.40057C17.7096 10.622 17.7901 13.0737 18.7236 15.2347C18.7562 15.3 18.7709 15.3733 18.7659 15.4466C18.761 15.5199 18.7366 15.5904 18.6955 15.6503C18.1432 16.675 17.544 17.6803 17.0666 18.7339C16.6172 19.7682 16.2896 20.8508 15.9151 21.8948C15.8964 21.8175 15.8683 21.7015 15.8496 21.5855C15.4459 18.8573 14.6706 16.2017 13.5467 13.6977C13.5196 13.5724 13.5397 13.4411 13.6028 13.3304C13.8462 12.8761 14.1552 12.4508 14.3518 11.9771C15.0402 10.2926 15.2165 8.43169 14.8573 6.64129C14.7276 5.80552 14.4331 5.00616 13.9918 4.29281C13.5506 3.57946 12.9721 2.96734 12.2922 2.49443C11.0255 1.64051 9.61604 1.03738 8.1357 0.71582C5.7589 0.207599 3.33562 -0.0322455 0.908605 0.000511717C0.281383 0.000511717 0.000536653 0.309835 0.000536653 0.967147C-0.0199881 2.78674 0.0864092 4.60549 0.318853 6.4093C0.516189 8.22939 1.01324 10.0013 1.78859 11.6485C2.2509 12.6922 2.96685 13.5946 3.86685 14.268C4.73147 14.8511 5.70062 15.2491 6.7169 15.4384C7.73318 15.6276 8.77591 15.6044 9.78333 15.37C10.6298 15.1684 11.4644 14.9167 12.2829 14.616C12.3415 14.7226 12.3946 14.8323 12.442 14.9447C13.5223 17.5757 14.2347 20.352 14.5577 23.1901C14.8462 25.4006 14.9807 27.6295 14.9603 29.8599C14.9214 30.1058 14.9714 30.358 15.1009 30.5683C15.2304 30.7786 15.4302 30.9324 15.6624 31.0005H15.7934C15.9991 30.9451 16.1805 30.8194 16.308 30.6438C16.4355 30.4682 16.5016 30.2532 16.4956 30.0339C16.5892 28.5163 16.6547 26.9986 16.8232 25.5004C17.1127 22.9679 17.8387 20.5093 18.967 18.2409C19.201 17.7576 19.4819 17.3033 19.7346 16.849C20.1278 17.1196 20.4835 17.3999 20.858 17.6126C22.0459 18.271 23.3762 18.6069 24.7243 18.5889C26.2132 18.7163 27.7001 18.3207 28.9439 17.4663C30.1877 16.6118 31.1155 15.3486 31.5769 13.8814C32.328 11.8879 32.7642 9.78287 32.8688 7.6466C32.9156 7.06661 32.9531 6.48664 32.9999 5.90666V3.63506C32.9246 3.45239 32.7953 3.29892 32.6306 3.19652C32.4659 3.09412 32.2741 3.048 32.0825 3.06474ZM12.8071 11.7161C12.7689 11.8078 12.7218 11.8952 12.6667 11.9771C12.6105 11.8901 12.5543 11.8321 12.5075 11.7645C11.3113 9.79653 9.71791 8.11829 7.83615 6.84429C7.62084 6.69929 7.41487 6.53497 7.20892 6.38031C7.05691 6.25354 6.86269 6.19363 6.66825 6.21352C6.4738 6.23342 6.29476 6.33152 6.1698 6.48664C6.10307 6.56383 6.05272 6.65458 6.02201 6.75307C5.99131 6.85156 5.98092 6.95561 5.9915 7.0585C6.00208 7.16139 6.03341 7.26085 6.08347 7.35048C6.13352 7.44011 6.2012 7.51793 6.28214 7.57893C6.75021 7.96559 7.24636 8.32324 7.73316 8.69056C9.28354 9.87948 10.5751 11.391 11.5246 13.1274C10.8817 13.5087 10.1723 13.755 9.43696 13.8524C8.30993 14.0465 7.15507 13.9772 6.05744 13.6494C5.40072 13.4385 4.79614 13.0829 4.28541 12.6073C3.77469 12.1317 3.36997 11.5473 3.0992 10.8945C2.49044 9.58538 2.08302 8.1863 1.89158 6.74762C1.64627 5.05806 1.52112 3.35223 1.51713 1.64379C2.2286 1.64379 2.90261 1.60512 3.57664 1.64379C5.2691 1.7187 6.94856 1.9845 8.58506 2.43643C9.46382 2.69068 10.3071 3.06106 11.0939 3.53839C11.6889 3.88544 12.2006 4.36625 12.5911 4.94521C12.9816 5.52417 13.241 6.18643 13.3501 6.88295C13.6796 8.51227 13.4891 10.208 12.8071 11.7161ZM31.4552 5.95498C31.4378 8.00504 31.1544 10.0434 30.6127 12.0158C30.3454 12.8753 30.0006 13.707 29.5829 14.5C29.2901 15.0846 28.874 15.5939 28.3653 15.9904C27.8566 16.3869 27.2682 16.6605 26.6434 16.791C24.9781 17.238 23.2131 17.0599 21.6631 16.2883C21.2926 16.0672 20.9361 15.8218 20.5959 15.5537C21.1108 14.9737 21.5601 14.4324 22.0376 13.9394C23.318 12.6688 24.7918 11.6238 26.4 10.8462C26.8213 10.6335 26.9804 10.3532 26.9056 9.99552C26.8824 9.8633 26.8276 9.73915 26.7462 9.63439C26.6647 9.52962 26.5591 9.44756 26.4391 9.39568C26.3191 9.3438 26.1884 9.32375 26.0589 9.33734C25.9295 9.35094 25.8054 9.39776 25.6979 9.47354C24.9958 9.85052 24.2937 10.2372 23.6197 10.6722C22.2671 11.5424 21.0516 12.6215 20.0155 13.8717C19.9874 13.9104 19.9687 13.9684 19.9406 14.0167C19.9091 13.9949 19.8743 13.9786 19.8376 13.9684C19.2855 12.1812 19.3786 10.248 20.0997 8.52624C20.6181 7.52849 21.4454 6.73892 22.4495 6.28364C23.6824 5.66043 25.0031 5.24281 26.3626 5.04634C27.9854 4.78198 29.6251 4.64304 31.268 4.63069C31.3242 4.63069 31.3897 4.64036 31.4552 4.64036C31.4552 5.09468 31.474 5.52 31.4552 5.95498Z\",\n    fill: \"white\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgI09);\nexport default __webpack_public_path__ + \"static/media/i09.525f0b7901f8382145d98eabfa5a7bf5.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\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); }\nimport * as React from \"react\";\nfunction SvgLogo(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: 185,\n    height: 45,\n    viewBox: \"0 0 185 45\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n    clipPath: \"url(#clip0_451_403)\"\n  }, /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M5.88776 21.8241C5.85171 21.6766 5.81346 21.5303 5.78067 21.3807C5.72705 21.1361 5.68737 20.9381 5.66947 20.7769C5.74117 21.1645 5.81577 21.5149 5.88776 21.8241ZM5.88776 21.8241C5.9175 21.9517 5.94688 22.0741 5.97527 22.1862C5.94402 22.0668 5.91725 21.9447 5.88776 21.8241ZM11.3684 14.2887C11.4184 14.1732 11.4583 14.0537 11.4875 13.9315C11.627 13.3744 11.8008 12.826 12.0078 12.2893C11.7282 12.9337 11.5141 13.6034 11.3684 14.2887ZM35.3713 -1.81143e-05C34.1481 1.21335 32.9329 2.41898 31.7077 3.63231C34.0072 6.55413 35.6076 9.16148 36.4217 11.3533C36.4574 11.431 36.4932 11.5106 36.527 11.594C38.7132 16.7951 36.527 23.2404 36.527 23.2404L36.5071 23.2385C35.7544 25.6655 34.5256 27.9259 32.8892 29.8936C32.4564 30.4139 32.0115 30.9245 31.7117 31.2741C32.9865 32.5554 34.1958 33.7727 35.405 34.988C46.1178 24.7898 44.3346 7.71321 35.3713 -1.81143e-05ZM6.27527 23.2406H6.27328C6.27328 23.2406 6.19187 22.996 6.07671 22.5708C6.06479 22.532 6.0547 22.4951 6.04495 22.4582C6.03519 22.4213 6.02705 22.3844 6.01517 22.3456C6.00127 22.2932 5.98733 22.2407 5.97541 22.1864C5.90592 21.9204 5.84041 21.6525 5.78082 21.3807C5.7272 21.1361 5.68752 20.9381 5.66962 20.7769C5.23686 18.4239 4.93693 14.778 6.27328 11.5939C6.27527 11.5939 6.27527 11.5939 6.27527 11.592C7.05959 9.35354 8.68986 6.66081 11.0746 3.6322C9.84949 2.41883 8.63426 1.21321 7.41105 -0.00012207C-1.55228 7.71311 -3.33541 24.7897 7.37731 34.9879C8.58659 33.7726 9.79587 32.5553 11.0687 31.274C10.7708 30.9246 10.326 30.414 9.89316 29.8935C8.25721 27.9263 7.0284 25.6667 6.27527 23.2406ZM31.4497 14.3606C31.3809 14.2241 31.3289 14.08 31.2948 13.9315C30.6925 11.5075 29.433 9.28699 27.649 7.50363C26.3464 8.76555 25.1133 9.96146 23.8722 11.1651C25.008 12.4967 25.8139 14.0666 26.2272 15.7527H16.553C16.9671 14.0665 17.7737 12.4966 18.91 11.1651C17.669 9.96146 16.4358 8.76555 15.1333 7.50363C13.7694 8.87066 12.707 10.4968 12.0118 12.2814L12.0078 12.2892C11.8008 12.8259 11.627 13.3743 11.4875 13.9314C11.4583 14.0536 11.4184 14.1731 11.3684 14.2887C10.804 16.8064 10.9308 19.4253 11.7357 21.8796L11.7417 21.8971C11.7973 22.0679 11.8569 22.2388 11.9204 22.4116C11.9244 22.4252 11.9303 22.4367 11.9343 22.4484C11.9998 22.6232 12.0674 22.7998 12.1408 22.9765C12.4743 23.7917 12.8893 24.5727 13.3799 25.3081C13.8648 26.0351 14.4301 26.7077 15.0657 27.3136C16.3564 26.0963 17.6014 24.9219 18.8862 23.7103C17.9303 22.5854 17.2025 21.2927 16.7416 19.9013H26.0406C25.5789 21.2927 24.8504 22.5855 23.894 23.7103C25.1788 24.9218 26.4258 26.0963 27.7165 27.3136C29.5067 25.5539 30.7572 23.3393 31.3264 20.9206C31.345 20.8429 31.3683 20.7664 31.3961 20.6915C31.8883 18.6105 31.9066 16.4492 31.4496 14.3606H31.4497Z\",\n    fill: \"#5A64FF\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M93.2744 39.7804L95.6691 42.8872V39.7804H96.949V44.9411H95.7444L93.3498 41.849V44.9411H92.0625V39.7804H93.2744Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M104.404 39.7804V40.8554H101.618V41.8197H104.133V42.8946H101.618V43.8664H104.48V44.9411H100.24V39.7804H104.404Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M111.65 39.7804V40.8921H110.069V44.9411H108.691V40.8921H107.125V39.7804H111.65Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M115.423 39.7804L116.424 43.5129L117.418 39.7804H118.766L119.767 43.5129L120.761 39.7804H122.177L120.437 44.9411H119.015L118.066 41.459L117.087 44.9411H115.671L113.939 39.7804H115.423Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M130.213 42.3571C130.213 43.8664 128.994 45.0001 127.36 45.0001C125.726 45.0001 124.506 43.8664 124.506 42.3571C124.506 40.8554 125.726 39.7437 127.36 39.7437C128.994 39.7437 130.213 40.8627 130.213 42.3571ZM125.921 42.3646C125.913 42.7501 126.061 43.1231 126.334 43.4019C126.606 43.6807 126.98 43.8424 127.375 43.8517C127.676 43.8636 127.975 43.7871 128.232 43.6321C128.488 43.4771 128.692 43.2506 128.816 42.9816C128.941 42.7127 128.98 42.4135 128.929 42.1226C128.878 41.8317 128.74 41.5623 128.531 41.3489C128.323 41.1355 128.054 40.9879 127.759 40.9251C127.464 40.8622 127.156 40.8869 126.876 40.9961C126.595 41.1052 126.355 41.2938 126.185 41.5376C126.015 41.7815 125.923 42.0694 125.921 42.3646Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M136.328 44.9411L135.56 43.5129H134.536V44.9411H133.158V39.7804H135.53C136.931 39.7804 137.729 40.443 137.729 41.5914C137.753 41.9281 137.678 42.2644 137.51 42.5597C137.343 42.855 137.092 43.0966 136.788 43.2552L137.887 44.9411L136.328 44.9411ZM134.536 42.4381H135.538C135.652 42.4545 135.769 42.4456 135.879 42.4119C135.989 42.3783 136.091 42.3209 136.175 42.2438C136.26 42.1668 136.325 42.0721 136.368 41.9669C136.41 41.8616 136.427 41.7484 136.418 41.6357C136.418 41.1277 136.095 40.8554 135.538 40.8554H134.536V42.4381Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M144.297 44.9411L142.927 42.9461L142.249 43.6823V44.9411H140.871V39.7804H142.249V41.9449L144.229 39.7804H145.825L143.868 41.9154L145.946 44.9411H144.297Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M156.1 1.92517C155.355 1.92604 154.64 2.21585 154.113 2.731C153.586 3.24616 153.29 3.94461 153.289 4.67315V30.0411C153.289 30.77 153.585 31.469 154.112 31.9844C154.64 32.4998 155.354 32.7894 156.1 32.7894C156.846 32.7894 157.56 32.4998 158.088 31.9844C158.615 31.469 158.911 30.77 158.911 30.0411V4.67315C158.91 3.94452 158.614 3.24601 158.086 2.73084C157.559 2.21567 156.845 1.92593 156.1 1.92517Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M64.7254 10.5709C63.5435 10.5418 62.3719 10.7927 61.3106 11.302C60.2492 11.8113 59.3296 12.5639 58.6301 13.4958V4.75858C58.6301 4.02964 58.3339 3.33057 57.8067 2.81513C57.2795 2.2997 56.5645 2.01013 55.8189 2.01013C55.0734 2.01013 54.3584 2.2997 53.8312 2.81513C53.304 3.33057 53.0078 4.02964 53.0078 4.75858V30.1265C53.0078 30.8554 53.304 31.5545 53.8312 32.0699C54.3584 32.5854 55.0734 32.875 55.8189 32.875C56.5645 32.875 57.2795 32.5854 57.8067 32.0699C58.3339 31.5545 58.6301 30.8554 58.6301 30.1265V21.3523C58.6301 17.8317 60.5541 15.7299 63.7768 15.7299C67.0952 15.7299 68.9226 17.7262 68.9226 21.3523V30.1265C68.9253 30.8538 69.2227 31.5504 69.7496 32.0637C70.2766 32.577 70.9901 32.8653 71.734 32.8653C72.4779 32.8653 73.1914 32.577 73.7183 32.0637C74.2453 31.5504 74.5427 30.8538 74.5454 30.1265V21.3523C74.5454 13.4031 69.4727 10.5709 64.7254 10.5709Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M96.1457 14.0425C95.4005 14.0434 94.686 14.3333 94.1591 14.8485C93.6322 15.3638 93.3358 16.0624 93.335 16.791V22.196C93.335 25.8212 91.5075 27.8177 88.1889 27.8177C84.8703 27.8177 83.0422 25.8213 83.0422 22.196V16.791C83.0422 16.0621 82.746 15.363 82.2188 14.8476C81.6916 14.3322 80.9766 14.0426 80.2311 14.0426C79.4855 14.0426 78.7705 14.3322 78.2433 14.8476C77.7161 15.363 77.4199 16.0621 77.4199 16.791V22.196C77.4199 28.947 81.4456 32.9774 88.1889 32.9774C94.9321 32.9774 98.9574 28.9471 98.9574 22.196V16.791C98.9565 16.0623 98.66 15.3636 98.1329 14.8484C97.6057 14.3331 96.8911 14.0433 96.1457 14.0425Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M114.326 10.5708C111.444 10.5708 109.033 11.6546 107.454 13.6391V4.75853C107.454 4.02964 107.158 3.33061 106.631 2.81521C106.103 2.29981 105.388 2.01025 104.643 2.01025C103.897 2.01025 103.182 2.29981 102.655 2.81521C102.128 3.33061 101.832 4.02964 101.832 4.75853V21.6054C101.832 28.3537 106.44 32.9233 113.304 32.9768H113.401C119.979 32.9768 125.153 27.9906 125.181 21.6259C125.195 18.4199 124.12 15.6634 122.074 13.6539C120.009 11.6666 117.223 10.5583 114.326 10.5708ZM113.463 27.8177C109.925 27.8177 107.454 25.3325 107.454 21.7744C107.454 18.2157 109.925 15.73 113.463 15.73C117.026 15.73 119.515 18.2157 119.515 21.7744C119.515 25.3325 117.026 27.8177 113.463 27.8177H113.463Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M139.688 10.5709C136.807 10.5709 134.397 11.6547 132.817 13.6398V4.7586C132.817 4.02979 132.52 3.33083 131.993 2.81549C131.466 2.30014 130.751 2.01062 130.006 2.01062C129.261 2.01062 128.546 2.30014 128.019 2.81549C127.491 3.33083 127.195 4.02979 127.195 4.7586V21.6055C127.195 28.3538 131.804 32.9234 138.667 32.9769H138.763C145.342 32.9769 150.516 27.9907 150.543 21.626C150.557 18.42 149.483 15.6635 147.437 13.654C145.371 11.6667 142.586 10.5584 139.688 10.5709ZM138.827 27.8178C135.288 27.8178 132.817 25.3326 132.817 21.7745C132.817 18.2157 135.288 15.7301 138.827 15.7301C142.39 15.7301 144.878 18.2157 144.878 21.7745C144.878 25.3326 142.39 27.8178 138.827 27.8178Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M185 21.7493C185.006 15.1448 180.222 10.5312 173.37 10.5312C167.15 10.5312 162.492 14.4863 161.759 20.141C161.686 20.6698 161.65 21.203 161.652 21.7366C161.669 23.921 162.347 26.0517 163.6 27.8601C164.853 29.6686 166.626 31.0741 168.695 31.8994C170.524 32.6243 172.478 33.0034 174.452 33.0166C176.857 32.9912 179.194 32.2368 181.142 30.8575C182.565 29.8376 184.535 27.4048 182.899 25.6929C182.43 25.2012 181.666 25.0977 180.982 25.1753C180.008 25.286 179.57 25.7621 178.921 26.3935C178.358 26.924 177.684 27.3291 176.946 27.5811C176.148 27.8689 175.302 28.0109 174.452 27.9998C171.418 28.0531 168.474 26.9489 167.601 23.7481H182.946C183.489 23.7485 184.01 23.5383 184.395 23.1636C184.78 22.789 184.998 22.2804 185 21.7493ZM167.751 19.2624C168.584 16.9066 170.616 15.5656 173.37 15.5656C176.095 15.5656 178.167 16.9389 178.989 19.2624H167.751Z\",\n    fill: \"white\"\n  }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n    id: \"clip0_451_403\"\n  }, /*#__PURE__*/React.createElement(\"rect\", {\n    width: 185,\n    height: 45,\n    fill: \"white\"\n  })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogo);\nexport default __webpack_public_path__ + \"static/media/Logo.8d05582fbdfd868f8be9de479136ae98.svg\";\nexport { ForwardRef as ReactComponent };","import {useNavigate} from \"react-router-dom\";\n\nimport logo from \"../assets/images/navbar/Logo.svg\";\nimport \"./Footer.css\";\nimport React from \"react\";\n\nconst Footer = () => {\n    const navigate = useNavigate();\n\n    React.useEffect(() => {\n        const script = document.createElement(\"script\");\n        script.type = \"text/javascript\";\n        script.id = \"hs-script-loader\";\n        script.async = true;\n        script.defer = true;\n        script.src = \"//js.hs-scripts.com/44939329.js\";\n        document.body.appendChild(script);\n\n        return () => {\n            document.body.removeChild(script);\n        };\n    }, []);\n\n    return (\n        <div className=\"footer\">\n            <div className=\"container\">\n                <a href=\"#top-banner\" style={{display: \"contents\"}}>\n                    <img\n                        alt=\"footer-logo\"\n                        id=\"footer-logo\"\n                        src={logo}\n                        onClick={() => navigate(\"/\")}\n                    />\n                </a>\n                <div className=\"footer-items\">\n                    <label>Hubble Network © 2024 </label> | <span onClick={() => navigate(\"/privacy-policy\")}>Privacy Policy </span> |{\" \"}\n                    <span onClick={() => navigate(\"/terms\")}>Terms</span>\n                </div>\n            </div>\n        </div>\n    );\n};\n\nexport default Footer;\n","import {useForm} from \"@formspree/react\";\nimport React from \"react\";\nimport {FORMSPREE} from \"../../../utils\";\nimport Button from \"../../Button\";\nimport Footer from \"../../Footer\";\nimport \"./Cta.scss\";\n\nimport {Tween, Timeline} from \"react-gsap\";\nimport ScrollContainer from \"../../utils/ScrollContainer\";\n\nconst Cta = () => {\n    const [state, handleSubmit] = useForm(FORMSPREE);\n\n    return (\n        <>\n            <ScrollContainer height={\"max-content\"} id={\"trigger-cta-section\"}>\n                <Timeline\n                    target={\n                        <div id=\"cta-section\" className=\"cta-section\">\n                            <div className=\"text-box\">\n                                {!state?.succeeded ? (\n                                    <>\n                                        <p>\n                                            Help deliver the next generation of IoT with a Hubble\n                                            DevKit.\n                                        </p>\n                                        <form onSubmit={handleSubmit}>\n                                            <div className=\"cta-contact\">\n                                                <input\n                                                    required\n                                                    id=\"email\"\n                                                    type=\"email\"\n                                                    name=\"email\"\n                                                    placeholder=\"Enter your email to join the waitlist\"\n                                                />\n                                                <Button>Join now</Button>\n                                            </div>\n                                        </form>\n                                    </>\n                                ) : (\n                                    <div className=\"cta-thanks\">\n                                        <h1>Thank you for your interest.</h1>\n                                        <p>\n                                            Your submission has been received. We will be\n                                            contacting you via email for next steps.\n                                        </p>\n                                        <a href=\"#top-banner\">\n                                            <Button>Got it</Button>\n                                        </a>\n                                    </div>\n                                )}\n                            </div>\n                        </div>\n                    }\n                    scrollTrigger={\n                        {\n                            trigger: '#trigger-cta-section',\n                            start: 'top bottom-=300px',\n                            end: 'bottom bottom',\n                            scrub: true,\n                            markers: false,\n                        }\n                    }\n                >\n                    <Tween\n                        from={{autoAlpha: 0}}\n                        to={{autoAlpha: 1}}\n                        immediateRender={false}\n                        ease={'power4.in'}\n                    />\n                </Timeline>\n            </ScrollContainer>\n            <Footer/>\n        </>\n    );\n};\nexport default Cta;\n","/* eslint-disable import/no-anonymous-default-export */\nimport React from \"react\";\n\n// sections\nimport TopBanner from \"../components/sections/TopBanner\";\nimport Chipset from \"../components/sections/Chipset\";\nimport Bluetooth from \"../components/sections/Bluetooth\";\nimport Cards from \"../components/sections/Cards\";\nimport Cta from \"../components/sections/CTA/Cta\";\n\nconst Home = () => (\n    <>\n        <TopBanner/>\n        <Chipset/>\n        <Bluetooth/>\n        <Cards/>\n        <Cta/>\n    </>\n);\nexport default Home;\n","export default function _taggedTemplateLiteral(strings, raw) {\n  if (!raw) {\n    raw = strings.slice(0);\n  }\n\n  return Object.freeze(Object.defineProperties(strings, {\n    raw: {\n      value: Object.freeze(raw)\n    }\n  }));\n}","var _line, _line2;\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); }\nimport * as React from \"react\";\nfunction SvgMenu(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: 26,\n    height: 13,\n    viewBox: \"0 0 26 13\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _line || (_line = /*#__PURE__*/React.createElement(\"line\", {\n    x1: 1,\n    y1: 1.5,\n    x2: 25,\n    y2: 1.5,\n    stroke: \"white\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\"\n  })), _line2 || (_line2 = /*#__PURE__*/React.createElement(\"line\", {\n    x1: 14,\n    y1: 11.5,\n    x2: 25,\n    y2: 11.5,\n    stroke: \"white\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgMenu);\nexport default __webpack_public_path__ + \"static/media/Menu.3631308f4496e20f6c58883f328f8334.svg\";\nexport { ForwardRef as ReactComponent };","var _line, _line2;\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); }\nimport * as React from \"react\";\nfunction SvgClose(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: 20,\n    height: 20,\n    viewBox: \"0 0 20 20\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _line || (_line = /*#__PURE__*/React.createElement(\"line\", {\n    x1: 2.41421,\n    y1: 1.5,\n    x2: 19,\n    y2: 18.0858,\n    stroke: \"white\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\"\n  })), _line2 || (_line2 = /*#__PURE__*/React.createElement(\"line\", {\n    x1: 1,\n    y1: -1,\n    x2: 24.4558,\n    y2: -1,\n    transform: \"matrix(-0.707107 0.707107 0.707107 0.707107 19 1.5)\",\n    stroke: \"white\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgClose);\nexport default __webpack_public_path__ + \"static/media/Close.8bbb9012ea23db76b83fd5fe74a18ec7.svg\";\nexport { ForwardRef as ReactComponent };","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n    function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n    var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n    var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n    var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n    var _, done = false;\r\n    for (var i = decorators.length - 1; i >= 0; i--) {\r\n        var context = {};\r\n        for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n        for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n        context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n        var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n        if (kind === \"accessor\") {\r\n            if (result === void 0) continue;\r\n            if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n            if (_ = accept(result.get)) descriptor.get = _;\r\n            if (_ = accept(result.set)) descriptor.set = _;\r\n            if (_ = accept(result.init)) initializers.push(_);\r\n        }\r\n        else if (_ = accept(result)) {\r\n            if (kind === \"field\") initializers.push(_);\r\n            else descriptor[key] = _;\r\n        }\r\n    }\r\n    if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n    done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n    var useValue = arguments.length > 2;\r\n    for (var i = 0; i < initializers.length; i++) {\r\n        value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n    }\r\n    return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n    return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n    if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n    return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    var desc = Object.getOwnPropertyDescriptor(m, k);\r\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n        desc = { enumerable: true, get: function() { return m[k]; } };\r\n    }\r\n    Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n    if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n    return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @param {number} position\n * @return {number}\n */\nexport function indexof (value, search, position) {\n\treturn value.indexOf(search, position)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n\n/**\n * @param {string[]} array\n * @param {RegExp} pattern\n * @return {string[]}\n */\nexport function filter (array, pattern) {\n\treturn array.filter(function (value) { return !match(value, pattern) })\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {object[]} siblings\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length, siblings) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: '', siblings: siblings}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0, root.siblings), root, {length: -root.length}, props)\n}\n\n/**\n * @param {object} root\n */\nexport function lift (root) {\n\twhile (root.root)\n\t\troot = copy(root.root, {children: [root]})\n\n\tappend(root, root.siblings)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\n\tfor (var i = 0; i < children.length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: if (!strlen(element.value = element.props.join(','))) return ''\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {MS, MOZ, WEBKIT} from './Enum.js'\nimport {hash, charat, strlen, indexof, replace, substr, match} from './Utility.js'\n\n/**\n * @param {string} value\n * @param {number} length\n * @param {object[]} children\n * @return {string}\n */\nexport function prefix (value, length, children) {\n\tswitch (hash(value, length)) {\n\t\t// color-adjust\n\t\tcase 5103:\n\t\t\treturn WEBKIT + 'print-' + value + value\n\t\t// animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\t\tcase 5737: case 4201: case 3177: case 3433: case 1641: case 4457: case 2921:\n\t\t// text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\t\tcase 5572: case 6356: case 5844: case 3191: case 6645: case 3005:\n\t\t// mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\t\tcase 6391: case 5879: case 5623: case 6135: case 4599: case 4855:\n\t\t// background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\t\tcase 4215: case 6389: case 5109: case 5365: case 5621: case 3829:\n\t\t\treturn WEBKIT + value + value\n\t\t// tab-size\n\t\tcase 4789:\n\t\t\treturn MOZ + value + value\n\t\t// appearance, user-select, transform, hyphens, text-size-adjust\n\t\tcase 5349: case 4246: case 4810: case 6968: case 2756:\n\t\t\treturn WEBKIT + value + MOZ + value + MS + value + value\n\t\t// writing-mode\n\t\tcase 5936:\n\t\t\tswitch (charat(value, length + 11)) {\n\t\t\t\t// vertical-l(r)\n\t\t\t\tcase 114:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value\n\t\t\t\t// vertical-r(l)\n\t\t\t\tcase 108:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value\n\t\t\t\t// horizontal(-)tb\n\t\t\t\tcase 45:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value\n\t\t\t\t// default: fallthrough to below\n\t\t\t}\n\t\t// flex, flex-direction, scroll-snap-type, writing-mode\n\t\tcase 6828: case 4268: case 2903:\n\t\t\treturn WEBKIT + value + MS + value + value\n\t\t// order\n\t\tcase 6165:\n\t\t\treturn WEBKIT + value + MS + 'flex-' + value + value\n\t\t// align-items\n\t\tcase 5187:\n\t\t\treturn WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value\n\t\t// align-self\n\t\tcase 5443:\n\t\t\treturn WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/g, '') + (!match(value, /flex-|baseline/) ? MS + 'grid-row-' + replace(value, /flex-|-self/g, '') : '') + value\n\t\t// align-content\n\t\tcase 4675:\n\t\t\treturn WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/g, '') + value\n\t\t// flex-shrink\n\t\tcase 5548:\n\t\t\treturn WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value\n\t\t// flex-basis\n\t\tcase 5292:\n\t\t\treturn WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value\n\t\t// flex-grow\n\t\tcase 6060:\n\t\t\treturn WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value\n\t\t// transition\n\t\tcase 4554:\n\t\t\treturn WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value\n\t\t// cursor\n\t\tcase 6187:\n\t\t\treturn replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value\n\t\t// background, background-image\n\t\tcase 5495: case 3959:\n\t\t\treturn replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1')\n\t\t// justify-content\n\t\tcase 4968:\n\t\t\treturn replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value\n\t\t// justify-self\n\t\tcase 4200:\n\t\t\tif (!match(value, /flex-|baseline/)) return MS + 'grid-column-align' + substr(value, length) + value\n\t\t\tbreak\n\t\t// grid-template-(columns|rows)\n\t\tcase 2592: case 3360:\n\t\t\treturn MS + replace(value, 'template-', '') + value\n\t\t// grid-(row|column)-start\n\t\tcase 4384: case 3616:\n\t\t\tif (children && children.some(function (element, index) { return length = index, match(element.props, /grid-\\w+-end/) })) {\n\t\t\t\treturn ~indexof(value + (children = children[length].value), 'span', 0) ? value : (MS + replace(value, '-start', '') + value + MS + 'grid-row-span:' + (~indexof(children, 'span', 0) ? match(children, /\\d+/) : +match(children, /\\d+/) - +match(value, /\\d+/)) + ';')\n\t\t\t}\n\t\t\treturn MS + replace(value, '-start', '') + value\n\t\t// grid-(row|column)-end\n\t\tcase 4896: case 4128:\n\t\t\treturn (children && children.some(function (element) { return match(element.props, /grid-\\w+-start/) })) ? value : MS + replace(replace(value, '-end', '-span'), 'span ', '') + value\n\t\t// (margin|padding)-inline-(start|end)\n\t\tcase 4095: case 3583: case 4068: case 2532:\n\t\t\treturn replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value\n\t\t// (min|max)?(width|height|inline-size|block-size)\n\t\tcase 8116: case 7059: case 5753: case 5535:\n\t\tcase 5445: case 5701: case 4933: case 4677:\n\t\tcase 5533: case 5789: case 5021: case 4765:\n\t\t\t// stretch, max-content, min-content, fill-available\n\t\t\tif (strlen(value) - 1 - length > 6)\n\t\t\t\tswitch (charat(value, length + 1)) {\n\t\t\t\t\t// (m)ax-content, (m)in-content\n\t\t\t\t\tcase 109:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (charat(value, length + 4) !== 45)\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t// (f)ill-available, (f)it-content\n\t\t\t\t\tcase 102:\n\t\t\t\t\t\treturn replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value\n\t\t\t\t\t// (s)tretch\n\t\t\t\t\tcase 115:\n\t\t\t\t\t\treturn ~indexof(value, 'stretch', 0) ? prefix(replace(value, 'stretch', 'fill-available'), length, children) + value : value\n\t\t\t\t}\n\t\t\tbreak\n\t\t// grid-(column|row)\n\t\tcase 5152: case 5920:\n\t\t\treturn replace(value, /(.+?):(\\d+)(\\s*\\/\\s*(span)?\\s*(\\d+))?(.*)/, function (_, a, b, c, d, e, f) { return (MS + a + ':' + b + f) + (c ? (MS + a + '-span:' + (d ? e : +e - +b)) + f : '') + value })\n\t\t// position: sticky\n\t\tcase 4949:\n\t\t\t// stick(y)?\n\t\t\tif (charat(value, length + 6) === 121)\n\t\t\t\treturn replace(value, ':', ':' + WEBKIT) + value\n\t\t\tbreak\n\t\t// display: (flex|inline-flex|grid|inline-grid)\n\t\tcase 6444:\n\t\t\tswitch (charat(value, charat(value, 14) === 45 ? 18 : 11)) {\n\t\t\t\t// (inline-)?fle(x)\n\t\t\t\tcase 120:\n\t\t\t\t\treturn replace(value, /(.+:)([^;\\s!]+)(;|(\\s+)?!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value\n\t\t\t\t// (inline-)?gri(d)\n\t\t\t\tcase 100:\n\t\t\t\t\treturn replace(value, ':', ':' + MS) + value\n\t\t\t}\n\t\t\tbreak\n\t\t// scroll-margin, scroll-margin-(top|right|bottom|left)\n\t\tcase 5719: case 2647: case 2135: case 3927: case 2391:\n\t\t\treturn replace(value, 'scroll-', 'scroll-snap-') + value\n\t}\n\n\treturn value\n}\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine, filter, assign} from './Utility.js'\nimport {copy, lift, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(children = element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, callback = /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [value]}))\n\t\t\t\t\t\t\t\t\tassign(element, {props: filter(children, callback)})\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [value]}))\n\t\t\t\t\t\t\t\t\tassign(element, {props: filter(children, callback)})\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f', abs(index ? points[index - 1] : 0)) != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent, declarations), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1, declarations) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2, declarations), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length, rulesets), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length, children), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @param {object[]} siblings\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length, siblings) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length, siblings)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @param {object[]} siblings\n * @return {object}\n */\nexport function comment (value, root, parent, siblings) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0, siblings)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @param {object[]} siblings\n * @return {object}\n */\nexport function declaration (value, root, parent, length, siblings) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length, siblings)\n}\n","var unitlessKeys = {\n  animationIterationCount: 1,\n  borderImageOutset: 1,\n  borderImageSlice: 1,\n  borderImageWidth: 1,\n  boxFlex: 1,\n  boxFlexGroup: 1,\n  boxOrdinalGroup: 1,\n  columnCount: 1,\n  columns: 1,\n  flex: 1,\n  flexGrow: 1,\n  flexPositive: 1,\n  flexShrink: 1,\n  flexNegative: 1,\n  flexOrder: 1,\n  gridRow: 1,\n  gridRowEnd: 1,\n  gridRowSpan: 1,\n  gridRowStart: 1,\n  gridColumn: 1,\n  gridColumnEnd: 1,\n  gridColumnSpan: 1,\n  gridColumnStart: 1,\n  msGridRow: 1,\n  msGridRowSpan: 1,\n  msGridColumn: 1,\n  msGridColumnSpan: 1,\n  fontWeight: 1,\n  lineHeight: 1,\n  opacity: 1,\n  order: 1,\n  orphans: 1,\n  tabSize: 1,\n  widows: 1,\n  zIndex: 1,\n  zoom: 1,\n  WebkitLineClamp: 1,\n  // SVG-related properties\n  fillOpacity: 1,\n  floodOpacity: 1,\n  stopOpacity: 1,\n  strokeDasharray: 1,\n  strokeDashoffset: 1,\n  strokeMiterlimit: 1,\n  strokeOpacity: 1,\n  strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","declare let SC_DISABLE_SPEEDY: boolean | null | undefined;\ndeclare let __VERSION__: string;\n\nexport const SC_ATTR: string =\n  (typeof process !== 'undefined' &&\n    typeof process.env !== 'undefined' &&\n    (process.env.REACT_APP_SC_ATTR || process.env.SC_ATTR)) ||\n  'data-styled';\n\nexport const SC_ATTR_ACTIVE = 'active';\nexport const SC_ATTR_VERSION = 'data-styled-version';\nexport const SC_VERSION = __VERSION__;\nexport const SPLITTER = '/*!sc*/\\n';\n\nexport const IS_BROWSER = typeof window !== 'undefined' && 'HTMLElement' in window;\n\nexport const DISABLE_SPEEDY = Boolean(\n  typeof SC_DISABLE_SPEEDY === 'boolean'\n    ? SC_DISABLE_SPEEDY\n    : typeof process !== 'undefined' &&\n      typeof process.env !== 'undefined' &&\n      typeof process.env.REACT_APP_SC_DISABLE_SPEEDY !== 'undefined' &&\n      process.env.REACT_APP_SC_DISABLE_SPEEDY !== ''\n    ? process.env.REACT_APP_SC_DISABLE_SPEEDY === 'false'\n      ? false\n      : process.env.REACT_APP_SC_DISABLE_SPEEDY\n    : typeof process !== 'undefined' &&\n      typeof process.env !== 'undefined' &&\n      typeof process.env.SC_DISABLE_SPEEDY !== 'undefined' &&\n      process.env.SC_DISABLE_SPEEDY !== ''\n    ? process.env.SC_DISABLE_SPEEDY === 'false'\n      ? false\n      : process.env.SC_DISABLE_SPEEDY\n    : process.env.NODE_ENV !== 'production'\n);\n\n// Shared empty execution context when generating static styles\nexport const STATIC_EXECUTION_CONTEXT = {};\n","import { Dict } from '../types';\n\nexport const EMPTY_ARRAY = Object.freeze([]) as Readonly<any[]>;\nexport const EMPTY_OBJECT = Object.freeze({}) as Readonly<Dict<any>>;\n","import { useRef } from 'react';\n\nconst invalidHookCallRe = /invalid hook call/i;\nconst seen = new Set();\n\nexport const checkDynamicCreation = (displayName: string, componentId?: string | undefined) => {\n  if (process.env.NODE_ENV !== 'production') {\n    const parsedIdString = componentId ? ` with the id of \"${componentId}\"` : '';\n    const message =\n      `The component ${displayName}${parsedIdString} has been created dynamically.\\n` +\n      \"You may see this warning because you've called styled inside another component.\\n\" +\n      'To resolve this only create new StyledComponents outside of any render method and function component.';\n\n    // If a hook is called outside of a component:\n    // React 17 and earlier throw an error\n    // React 18 and above use console.error\n\n    const originalConsoleError = console.error;\n    try {\n      let didNotCallInvalidHook = true;\n      console.error = (consoleErrorMessage, ...consoleErrorArgs) => {\n        // The error here is expected, since we're expecting anything that uses `checkDynamicCreation` to\n        // be called outside of a React component.\n        if (invalidHookCallRe.test(consoleErrorMessage)) {\n          didNotCallInvalidHook = false;\n          // This shouldn't happen, but resets `warningSeen` if we had this error happen intermittently\n          seen.delete(message);\n        } else {\n          originalConsoleError(consoleErrorMessage, ...consoleErrorArgs);\n        }\n      };\n      // We purposefully call `useRef` outside of a component and expect it to throw\n      // If it doesn't, then we're inside another component.\n      useRef();\n\n      if (didNotCallInvalidHook && !seen.has(message)) {\n        console.warn(message);\n        seen.add(message);\n      }\n    } catch (error) {\n      // The error here is expected, since we're expecting anything that uses `checkDynamicCreation` to\n      // be called outside of a React component.\n      if (invalidHookCallRe.test((error as Error).message)) {\n        // This shouldn't happen, but resets `warningSeen` if we had this error happen intermittently\n        seen.delete(message);\n      }\n    } finally {\n      console.error = originalConsoleError;\n    }\n  }\n};\n","import { DefaultTheme, ExecutionProps } from '../types';\nimport { EMPTY_OBJECT } from './empties';\n\nexport default function determineTheme(\n  props: ExecutionProps,\n  providedTheme?: DefaultTheme | undefined,\n  defaultProps: { theme?: DefaultTheme | undefined } = EMPTY_OBJECT\n): DefaultTheme | undefined {\n  return (props.theme !== defaultProps.theme && props.theme) || providedTheme || defaultProps.theme;\n}\n","// Thanks to ReactDOMFactories for this handy list!\n\nconst elements = [\n  'a',\n  'abbr',\n  'address',\n  'area',\n  'article',\n  'aside',\n  'audio',\n  'b',\n  'base',\n  'bdi',\n  'bdo',\n  'big',\n  'blockquote',\n  'body',\n  'br',\n  'button',\n  'canvas',\n  'caption',\n  'cite',\n  'code',\n  'col',\n  'colgroup',\n  'data',\n  'datalist',\n  'dd',\n  'del',\n  'details',\n  'dfn',\n  'dialog',\n  'div',\n  'dl',\n  'dt',\n  'em',\n  'embed',\n  'fieldset',\n  'figcaption',\n  'figure',\n  'footer',\n  'form',\n  'h1',\n  'h2',\n  'h3',\n  'h4',\n  'h5',\n  'h6',\n  'header',\n  'hgroup',\n  'hr',\n  'html',\n  'i',\n  'iframe',\n  'img',\n  'input',\n  'ins',\n  'kbd',\n  'keygen',\n  'label',\n  'legend',\n  'li',\n  'link',\n  'main',\n  'map',\n  'mark',\n  'menu',\n  'menuitem',\n  'meta',\n  'meter',\n  'nav',\n  'noscript',\n  'object',\n  'ol',\n  'optgroup',\n  'option',\n  'output',\n  'p',\n  'param',\n  'picture',\n  'pre',\n  'progress',\n  'q',\n  'rp',\n  'rt',\n  'ruby',\n  's',\n  'samp',\n  'script',\n  'section',\n  'select',\n  'small',\n  'source',\n  'span',\n  'strong',\n  'style',\n  'sub',\n  'summary',\n  'sup',\n  'table',\n  'tbody',\n  'td',\n  'textarea',\n  'tfoot',\n  'th',\n  'thead',\n  'time',\n  'tr',\n  'track',\n  'u',\n  'ul',\n  'use',\n  'var',\n  'video',\n  'wbr', // SVG\n  'circle',\n  'clipPath',\n  'defs',\n  'ellipse',\n  'foreignObject',\n  'g',\n  'image',\n  'line',\n  'linearGradient',\n  'marker',\n  'mask',\n  'path',\n  'pattern',\n  'polygon',\n  'polyline',\n  'radialGradient',\n  'rect',\n  'stop',\n  'svg',\n  'text',\n  'tspan',\n] as const;\n\nexport default new Set(elements);\nexport type SupportedHTMLElements = (typeof elements)[number];\n","// Source: https://www.w3.org/TR/cssom-1/#serialize-an-identifier\n// Control characters and non-letter first symbols are not supported\nconst escapeRegex = /[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~-]+/g;\n\nconst dashesAtEnds = /(^-|-$)/g;\n\n/**\n * TODO: Explore using CSS.escape when it becomes more available\n * in evergreen browsers.\n */\nexport default function escape(str: string) {\n  return str // Replace all possible CSS selectors\n    .replace(escapeRegex, '-') // Remove extraneous hyphens at the start and end\n    .replace(dashesAtEnds, '');\n}\n","const AD_REPLACER_R = /(a)(d)/gi;\n\n/* This is the \"capacity\" of our alphabet i.e. 2x26 for all letters plus their capitalised\n * counterparts */\nconst charsLength = 52;\n\n/* start at 75 for 'a' until 'z' (25) and then start at 65 for capitalised letters */\nconst getAlphabeticChar = (code: number) => String.fromCharCode(code + (code > 25 ? 39 : 97));\n\n/* input a number, usually a hash and convert it to base-52 */\nexport default function generateAlphabeticName(code: number) {\n  let name = '';\n  let x;\n\n  /* get a char and divide by alphabet-length */\n  for (x = Math.abs(code); x > charsLength; x = (x / charsLength) | 0) {\n    name = getAlphabeticChar(x % charsLength) + name;\n  }\n\n  return (getAlphabeticChar(x % charsLength) + name).replace(AD_REPLACER_R, '$1-$2');\n}\n","export const SEED = 5381;\n\n// When we have separate strings it's useful to run a progressive\n// version of djb2 where we pretend that we're still looping over\n// the same string\nexport const phash = (h: number, x: string) => {\n  let i = x.length;\n\n  while (i) {\n    h = (h * 33) ^ x.charCodeAt(--i);\n  }\n\n  return h;\n};\n\n// This is a djb2 hashing function\nexport const hash = (x: string) => {\n  return phash(SEED, x);\n};\n","import generateAlphabeticName from './generateAlphabeticName';\nimport { hash } from './hash';\n\nexport default function generateComponentId(str: string) {\n  return generateAlphabeticName(hash(str) >>> 0);\n}\n","import { StyledTarget } from '../types';\n\nexport default function getComponentName(target: StyledTarget<any>) {\n  return (\n    (process.env.NODE_ENV !== 'production' ? typeof target === 'string' && target : false) ||\n    (target as Exclude<StyledTarget<any>, string>).displayName ||\n    (target as Function).name ||\n    'Component'\n  );\n}\n","import { StyledTarget } from '../types';\n\nexport default function isTag(target: StyledTarget<'web'>): target is string {\n  return (\n    typeof target === 'string' &&\n    (process.env.NODE_ENV !== 'production'\n      ? target.charAt(0) === target.charAt(0).toLowerCase()\n      : true)\n  );\n}\n","import React from 'react';\nimport { AnyComponent } from '../types';\n\nconst hasSymbol = typeof Symbol === 'function' && Symbol.for;\n\n// copied from react-is\nconst REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nconst REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\n\n/**\n * Adapted from hoist-non-react-statics to avoid the react-is dependency.\n */\nconst REACT_STATICS = {\n  childContextTypes: true,\n  contextType: true,\n  contextTypes: true,\n  defaultProps: true,\n  displayName: true,\n  getDefaultProps: true,\n  getDerivedStateFromError: true,\n  getDerivedStateFromProps: true,\n  mixins: true,\n  propTypes: true,\n  type: true,\n};\n\nconst KNOWN_STATICS = {\n  name: true,\n  length: true,\n  prototype: true,\n  caller: true,\n  callee: true,\n  arguments: true,\n  arity: true,\n};\n\nconst FORWARD_REF_STATICS = {\n  $$typeof: true,\n  render: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true,\n};\n\nconst MEMO_STATICS = {\n  $$typeof: true,\n  compare: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true,\n  type: true,\n};\n\nconst TYPE_STATICS = {\n  [REACT_FORWARD_REF_TYPE]: FORWARD_REF_STATICS,\n  [REACT_MEMO_TYPE]: MEMO_STATICS,\n};\n\ntype OmniComponent = AnyComponent;\n\n// adapted from react-is\nfunction isMemo(\n  object: OmniComponent | React.MemoExoticComponent<any>\n): object is React.MemoExoticComponent<any> {\n  const $$typeofType = 'type' in object && object.type.$$typeof;\n\n  return $$typeofType === REACT_MEMO_TYPE;\n}\n\nfunction getStatics(component: OmniComponent) {\n  // React v16.11 and below\n  if (isMemo(component)) {\n    return MEMO_STATICS;\n  }\n\n  // React v16.12 and above\n  return '$$typeof' in component\n    ? TYPE_STATICS[component['$$typeof'] as unknown as string]\n    : REACT_STATICS;\n}\n\nconst defineProperty = Object.defineProperty;\nconst getOwnPropertyNames = Object.getOwnPropertyNames;\nconst getOwnPropertySymbols = Object.getOwnPropertySymbols;\nconst getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nconst getPrototypeOf = Object.getPrototypeOf;\nconst objectPrototype = Object.prototype;\n\ntype ExcludeList = {\n  [key: string]: true;\n};\n\ntype NonReactStatics<S extends OmniComponent, C extends ExcludeList = {}> = {\n  [key in Exclude<\n    keyof S,\n    S extends React.MemoExoticComponent<any>\n      ? keyof typeof MEMO_STATICS | keyof C\n      : S extends React.ForwardRefExoticComponent<any>\n      ? keyof typeof FORWARD_REF_STATICS | keyof C\n      : keyof typeof REACT_STATICS | keyof typeof KNOWN_STATICS | keyof C\n  >]: S[key];\n};\n\nexport default function hoistNonReactStatics<\n  T extends OmniComponent,\n  S extends OmniComponent,\n  C extends ExcludeList = {},\n>(targetComponent: T, sourceComponent: S, excludelist?: C | undefined) {\n  if (typeof sourceComponent !== 'string') {\n    // don't hoist over string (html) components\n\n    if (objectPrototype) {\n      const inheritedComponent = getPrototypeOf(sourceComponent);\n      if (inheritedComponent && inheritedComponent !== objectPrototype) {\n        hoistNonReactStatics(targetComponent, inheritedComponent, excludelist);\n      }\n    }\n\n    let keys: (String | Symbol)[] = getOwnPropertyNames(sourceComponent);\n\n    if (getOwnPropertySymbols) {\n      keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n    }\n\n    const targetStatics = getStatics(targetComponent);\n    const sourceStatics = getStatics(sourceComponent);\n\n    for (let i = 0; i < keys.length; ++i) {\n      const key = keys[i] as unknown as string;\n      if (\n        !(key in KNOWN_STATICS) &&\n        !(excludelist && excludelist[key]) &&\n        !(sourceStatics && key in sourceStatics) &&\n        !(targetStatics && key in targetStatics)\n      ) {\n        const descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n        try {\n          // Avoid failures from read-only properties\n          defineProperty(targetComponent, key, descriptor!);\n        } catch (e) {\n          /* ignore */\n        }\n      }\n    }\n  }\n\n  return targetComponent as T & NonReactStatics<S, C>;\n}\n","export default function isFunction(test: any): test is Function {\n  return typeof test === 'function';\n}\n","import { StyledComponentBrand } from '../types';\n\nexport default function isStyledComponent(target: any): target is StyledComponentBrand {\n  return typeof target === 'object' && 'styledComponentId' in target;\n}\n","/**\n * Convenience function for joining strings to form className chains\n */\nexport function joinStrings(a?: string | undefined, b?: string | undefined): string {\n  return a && b ? `${a} ${b}` : a || b || '';\n}\n\nexport function joinStringArray(arr: string[], sep?: string | undefined): string {\n  if (arr.length === 0) {\n    return '';\n  }\n\n  let result = arr[0];\n  for (let i = 1; i < arr.length; i++) {\n    result += sep ? sep + arr[i] : arr[i];\n  }\n  return result;\n}\n","export default function isPlainObject(x: any): x is Record<any, any> {\n  return (\n    x !== null &&\n    typeof x === 'object' &&\n    x.constructor.name === Object.name &&\n    /* check for reasonable markers that the object isn't an element for react & preact/compat */\n    !('props' in x && x.$$typeof)\n  );\n}\n","import isPlainObject from './isPlainObject';\n\nfunction mixinRecursively(target: any, source: any, forceMerge = false) {\n  /* only merge into POJOs, Arrays, but for top level objects only\n   * allow to merge into anything by passing forceMerge = true */\n  if (!forceMerge && !isPlainObject(target) && !Array.isArray(target)) {\n    return source;\n  }\n\n  if (Array.isArray(source)) {\n    for (let key = 0; key < source.length; key++) {\n      target[key] = mixinRecursively(target[key], source[key]);\n    }\n  } else if (isPlainObject(source)) {\n    for (const key in source) {\n      target[key] = mixinRecursively(target[key], source[key]);\n    }\n  }\n\n  return target;\n}\n\n/**\n * Arrays & POJOs merged recursively, other objects and value types are overridden\n * If target is not a POJO or an Array, it will get source properties injected via shallow merge\n * Source objects applied left to right.  Mutates & returns target.  Similar to lodash merge.\n */\nexport default function mixinDeep(target: any, ...sources: any[]) {\n  for (const source of sources) {\n    mixinRecursively(target, source, true);\n  }\n\n  return target;\n}\n","/**\n * If the Object prototype is frozen, the \"toString\" property is non-writable. This means that any objects which inherit this property\n * cannot have the property changed using a \"=\" assignment operator. If using strict mode, attempting that will cause an error. If not using\n * strict mode, attempting that will be silently ignored.\n *\n * If the Object prototype is frozen, inherited non-writable properties can still be shadowed using one of two mechanisms:\n *\n *  1. ES6 class methods: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes#methods\n *  2. Using the `Object.defineProperty()` static method:\n *     https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty\n *\n * However, this project uses Babel to transpile ES6 classes, and transforms ES6 class methods to use the assignment operator instead:\n * https://babeljs.io/docs/babel-plugin-transform-class-properties#options\n *\n * Therefore, the most compatible way to shadow the prototype's \"toString\" property is to define a new \"toString\" property on this object.\n */\nexport function setToString(object: object, toStringFn: () => string) {\n  Object.defineProperty(object, 'toString', { value: toStringFn });\n}\n","import { Dict } from '../types';\nimport errorMap from './errors';\n\nconst ERRORS: Dict<any> = process.env.NODE_ENV !== 'production' ? errorMap : {};\n\n/**\n * super basic version of sprintf\n */\nfunction format(...args: [string, ...any]) {\n  let a = args[0];\n  const b = [];\n\n  for (let c = 1, len = args.length; c < len; c += 1) {\n    b.push(args[c]);\n  }\n\n  b.forEach(d => {\n    a = a.replace(/%[a-z]/, d);\n  });\n\n  return a;\n}\n\n/**\n * Create an error file out of errors.md for development and a simple web link to the full errors\n * in production mode.\n */\nexport default function throwStyledComponentsError(\n  code: string | number,\n  ...interpolations: any[]\n) {\n  if (process.env.NODE_ENV === 'production') {\n    return new Error(\n      `An error occurred. See https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#${code} for more information.${\n        interpolations.length > 0 ? ` Args: ${interpolations.join(', ')}` : ''\n      }`\n    );\n  } else {\n    return new Error(format(ERRORS[code], ...interpolations).trim());\n  }\n}\n","import { SPLITTER } from '../constants';\nimport styledError from '../utils/error';\nimport { GroupedTag, Tag } from './types';\n\n/** Create a GroupedTag with an underlying Tag implementation */\nexport const makeGroupedTag = (tag: Tag) => {\n  return new DefaultGroupedTag(tag);\n};\n\nconst BASE_SIZE = 1 << 9;\n\nconst DefaultGroupedTag = class DefaultGroupedTag implements GroupedTag {\n  groupSizes: Uint32Array;\n  length: number;\n  tag: Tag;\n\n  constructor(tag: Tag) {\n    this.groupSizes = new Uint32Array(BASE_SIZE);\n    this.length = BASE_SIZE;\n    this.tag = tag;\n  }\n\n  indexOfGroup(group: number) {\n    let index = 0;\n    for (let i = 0; i < group; i++) {\n      index += this.groupSizes[i];\n    }\n\n    return index;\n  }\n\n  insertRules(group: number, rules: string[]) {\n    if (group >= this.groupSizes.length) {\n      const oldBuffer = this.groupSizes;\n      const oldSize = oldBuffer.length;\n\n      let newSize = oldSize;\n      while (group >= newSize) {\n        newSize <<= 1;\n        if (newSize < 0) {\n          throw styledError(16, `${group}`);\n        }\n      }\n\n      this.groupSizes = new Uint32Array(newSize);\n      this.groupSizes.set(oldBuffer);\n      this.length = newSize;\n\n      for (let i = oldSize; i < newSize; i++) {\n        this.groupSizes[i] = 0;\n      }\n    }\n\n    let ruleIndex = this.indexOfGroup(group + 1);\n\n    for (let i = 0, l = rules.length; i < l; i++) {\n      if (this.tag.insertRule(ruleIndex, rules[i])) {\n        this.groupSizes[group]++;\n        ruleIndex++;\n      }\n    }\n  }\n\n  clearGroup(group: number) {\n    if (group < this.length) {\n      const length = this.groupSizes[group];\n      const startIndex = this.indexOfGroup(group);\n      const endIndex = startIndex + length;\n\n      this.groupSizes[group] = 0;\n\n      for (let i = startIndex; i < endIndex; i++) {\n        this.tag.deleteRule(startIndex);\n      }\n    }\n  }\n\n  getGroup(group: number) {\n    let css = '';\n    if (group >= this.length || this.groupSizes[group] === 0) {\n      return css;\n    }\n\n    const length = this.groupSizes[group];\n    const startIndex = this.indexOfGroup(group);\n    const endIndex = startIndex + length;\n\n    for (let i = startIndex; i < endIndex; i++) {\n      css += `${this.tag.getRule(i)}${SPLITTER}`;\n    }\n\n    return css;\n  }\n};\n","import styledError from '../utils/error';\n\nconst MAX_SMI = 1 << (31 - 1);\n\nlet groupIDRegister: Map<string, number> = new Map();\nlet reverseRegister: Map<number, string> = new Map();\nlet nextFreeGroup = 1;\n\nexport const resetGroupIds = () => {\n  groupIDRegister = new Map();\n  reverseRegister = new Map();\n  nextFreeGroup = 1;\n};\n\nexport const getGroupForId = (id: string): number => {\n  if (groupIDRegister.has(id)) {\n    return groupIDRegister.get(id) as any;\n  }\n\n  while (reverseRegister.has(nextFreeGroup)) {\n    nextFreeGroup++;\n  }\n\n  const group = nextFreeGroup++;\n\n  if (process.env.NODE_ENV !== 'production' && ((group | 0) < 0 || group > MAX_SMI)) {\n    throw styledError(16, `${group}`);\n  }\n\n  groupIDRegister.set(id, group);\n  reverseRegister.set(group, id);\n  return group;\n};\n\nexport const getIdForGroup = (group: number): void | string => {\n  return reverseRegister.get(group);\n};\n\nexport const setGroupForId = (id: string, group: number) => {\n  // move pointer\n  nextFreeGroup = group + 1;\n\n  groupIDRegister.set(id, group);\n  reverseRegister.set(group, id);\n};\n","import { SC_ATTR, SC_ATTR_ACTIVE, SC_ATTR_VERSION, SC_VERSION, SPLITTER } from '../constants';\nimport { getIdForGroup, setGroupForId } from './GroupIDAllocator';\nimport { Sheet } from './types';\n\nconst SELECTOR = `style[${SC_ATTR}][${SC_ATTR_VERSION}=\"${SC_VERSION}\"]`;\nconst MARKER_RE = new RegExp(`^${SC_ATTR}\\\\.g(\\\\d+)\\\\[id=\"([\\\\w\\\\d-]+)\"\\\\].*?\"([^\"]*)`);\n\nexport const outputSheet = (sheet: Sheet) => {\n  const tag = sheet.getTag();\n  const { length } = tag;\n\n  let css = '';\n  for (let group = 0; group < length; group++) {\n    const id = getIdForGroup(group);\n    if (id === undefined) continue;\n\n    const names = sheet.names.get(id);\n    const rules = tag.getGroup(group);\n    if (names === undefined || rules.length === 0) continue;\n\n    const selector = `${SC_ATTR}.g${group}[id=\"${id}\"]`;\n\n    let content = '';\n    if (names !== undefined) {\n      names.forEach(name => {\n        if (name.length > 0) {\n          content += `${name},`;\n        }\n      });\n    }\n\n    // NOTE: It's easier to collect rules and have the marker\n    // after the actual rules to simplify the rehydration\n    css += `${rules}${selector}{content:\"${content}\"}${SPLITTER}`;\n  }\n\n  return css;\n};\n\nconst rehydrateNamesFromContent = (sheet: Sheet, id: string, content: string) => {\n  const names = content.split(',');\n  let name;\n\n  for (let i = 0, l = names.length; i < l; i++) {\n    if ((name = names[i])) {\n      sheet.registerName(id, name);\n    }\n  }\n};\n\nconst rehydrateSheetFromTag = (sheet: Sheet, style: HTMLStyleElement) => {\n  const parts = (style.textContent ?? '').split(SPLITTER);\n  const rules: string[] = [];\n\n  for (let i = 0, l = parts.length; i < l; i++) {\n    const part = parts[i].trim();\n    if (!part) continue;\n\n    const marker = part.match(MARKER_RE);\n\n    if (marker) {\n      const group = parseInt(marker[1], 10) | 0;\n      const id = marker[2];\n\n      if (group !== 0) {\n        // Rehydrate componentId to group index mapping\n        setGroupForId(id, group);\n        // Rehydrate names and rules\n        // looks like: data-styled.g11[id=\"idA\"]{content:\"nameA,\"}\n        rehydrateNamesFromContent(sheet, id, marker[3]);\n        sheet.getTag().insertRules(group, rules);\n      }\n\n      rules.length = 0;\n    } else {\n      rules.push(part);\n    }\n  }\n};\n\nexport const rehydrateSheet = (sheet: Sheet) => {\n  const nodes = document.querySelectorAll(SELECTOR);\n\n  for (let i = 0, l = nodes.length; i < l; i++) {\n    const node = nodes[i] as any as HTMLStyleElement;\n    if (node && node.getAttribute(SC_ATTR) !== SC_ATTR_ACTIVE) {\n      rehydrateSheetFromTag(sheet, node);\n\n      if (node.parentNode) {\n        node.parentNode.removeChild(node);\n      }\n    }\n  }\n};\n","declare let __webpack_nonce__: string;\n\nexport default function getNonce() {\n  return typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n}\n","import { SC_ATTR, SC_ATTR_ACTIVE, SC_ATTR_VERSION, SC_VERSION } from '../constants';\nimport styledError from '../utils/error';\nimport getNonce from '../utils/nonce';\n\n/** Find last style element if any inside target */\nconst findLastStyleTag = (target: HTMLElement): void | HTMLStyleElement => {\n  const arr = Array.from(target.querySelectorAll<HTMLStyleElement>(`style[${SC_ATTR}]`));\n\n  return arr[arr.length - 1];\n};\n\n/** Create a style element inside `target` or <head> after the last */\nexport const makeStyleTag = (target?: HTMLElement | undefined): HTMLStyleElement => {\n  const head = document.head;\n  const parent = target || head;\n  const style = document.createElement('style');\n  const prevStyle = findLastStyleTag(parent);\n  const nextSibling = prevStyle !== undefined ? prevStyle.nextSibling : null;\n\n  style.setAttribute(SC_ATTR, SC_ATTR_ACTIVE);\n  style.setAttribute(SC_ATTR_VERSION, SC_VERSION);\n\n  const nonce = getNonce();\n\n  if (nonce) style.setAttribute('nonce', nonce);\n\n  parent.insertBefore(style, nextSibling);\n\n  return style;\n};\n\n/** Get the CSSStyleSheet instance for a given style element */\nexport const getSheet = (tag: HTMLStyleElement): CSSStyleSheet => {\n  if (tag.sheet) {\n    return tag.sheet as any as CSSStyleSheet;\n  }\n\n  // Avoid Firefox quirk where the style element might not have a sheet property\n  const { styleSheets } = document;\n  for (let i = 0, l = styleSheets.length; i < l; i++) {\n    const sheet = styleSheets[i];\n    if (sheet.ownerNode === tag) {\n      return sheet as any as CSSStyleSheet;\n    }\n  }\n\n  throw styledError(17);\n};\n","import { getSheet, makeStyleTag } from './dom';\nimport { SheetOptions, Tag } from './types';\n\n/** Create a CSSStyleSheet-like tag depending on the environment */\nexport const makeTag = ({ isServer, useCSSOMInjection, target }: SheetOptions) => {\n  if (isServer) {\n    return new VirtualTag(target);\n  } else if (useCSSOMInjection) {\n    return new CSSOMTag(target);\n  } else {\n    return new TextTag(target);\n  }\n};\n\nexport const CSSOMTag = class CSSOMTag implements Tag {\n  element: HTMLStyleElement;\n\n  sheet: CSSStyleSheet;\n\n  length: number;\n\n  constructor(target?: HTMLElement | undefined) {\n    this.element = makeStyleTag(target);\n\n    // Avoid Edge bug where empty style elements don't create sheets\n    this.element.appendChild(document.createTextNode(''));\n\n    this.sheet = getSheet(this.element);\n    this.length = 0;\n  }\n\n  insertRule(index: number, rule: string): boolean {\n    try {\n      this.sheet.insertRule(rule, index);\n      this.length++;\n      return true;\n    } catch (_error) {\n      return false;\n    }\n  }\n\n  deleteRule(index: number): void {\n    this.sheet.deleteRule(index);\n    this.length--;\n  }\n\n  getRule(index: number): string {\n    const rule = this.sheet.cssRules[index];\n\n    // Avoid IE11 quirk where cssText is inaccessible on some invalid rules\n    if (rule && rule.cssText) {\n      return rule.cssText;\n    } else {\n      return '';\n    }\n  }\n};\n\n/** A Tag that emulates the CSSStyleSheet API but uses text nodes */\nexport const TextTag = class TextTag implements Tag {\n  element: HTMLStyleElement;\n  nodes: NodeListOf<Node>;\n  length: number;\n\n  constructor(target?: HTMLElement | undefined) {\n    this.element = makeStyleTag(target);\n    this.nodes = this.element.childNodes;\n    this.length = 0;\n  }\n\n  insertRule(index: number, rule: string) {\n    if (index <= this.length && index >= 0) {\n      const node = document.createTextNode(rule);\n      const refNode = this.nodes[index];\n      this.element.insertBefore(node, refNode || null);\n      this.length++;\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  deleteRule(index: number) {\n    this.element.removeChild(this.nodes[index]);\n    this.length--;\n  }\n\n  getRule(index: number) {\n    if (index < this.length) {\n      return this.nodes[index].textContent as string;\n    } else {\n      return '';\n    }\n  }\n};\n\n/** A completely virtual (server-side) Tag that doesn't manipulate the DOM */\nexport const VirtualTag = class VirtualTag implements Tag {\n  rules: string[];\n\n  length: number;\n\n  constructor(_target?: HTMLElement | undefined) {\n    this.rules = [];\n    this.length = 0;\n  }\n\n  insertRule(index: number, rule: string) {\n    if (index <= this.length) {\n      this.rules.splice(index, 0, rule);\n      this.length++;\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  deleteRule(index: number) {\n    this.rules.splice(index, 1);\n    this.length--;\n  }\n\n  getRule(index: number) {\n    if (index < this.length) {\n      return this.rules[index];\n    } else {\n      return '';\n    }\n  }\n};\n","import { DISABLE_SPEEDY, IS_BROWSER } from '../constants';\nimport { EMPTY_OBJECT } from '../utils/empties';\nimport { setToString } from '../utils/setToString';\nimport { makeGroupedTag } from './GroupedTag';\nimport { getGroupForId } from './GroupIDAllocator';\nimport { outputSheet, rehydrateSheet } from './Rehydration';\nimport { makeTag } from './Tag';\nimport { GroupedTag, Sheet, SheetOptions } from './types';\n\nlet SHOULD_REHYDRATE = IS_BROWSER;\n\ntype SheetConstructorArgs = {\n  isServer?: boolean;\n  useCSSOMInjection?: boolean;\n  target?: HTMLElement | undefined;\n};\n\ntype GlobalStylesAllocationMap = {\n  [key: string]: number;\n};\ntype NamesAllocationMap = Map<string, Set<string>>;\n\nconst defaultOptions: SheetOptions = {\n  isServer: !IS_BROWSER,\n  useCSSOMInjection: !DISABLE_SPEEDY,\n};\n\n/** Contains the main stylesheet logic for stringification and caching */\nexport default class StyleSheet implements Sheet {\n  gs: GlobalStylesAllocationMap;\n  names: NamesAllocationMap;\n  options: SheetOptions;\n  server: boolean;\n  tag?: GroupedTag | undefined;\n\n  /** Register a group ID to give it an index */\n  static registerId(id: string): number {\n    return getGroupForId(id);\n  }\n\n  constructor(\n    options: SheetConstructorArgs = EMPTY_OBJECT as Object,\n    globalStyles: GlobalStylesAllocationMap = {},\n    names?: NamesAllocationMap | undefined\n  ) {\n    this.options = {\n      ...defaultOptions,\n      ...options,\n    };\n\n    this.gs = globalStyles;\n    this.names = new Map(names as NamesAllocationMap);\n    this.server = !!options.isServer;\n\n    // We rehydrate only once and use the sheet that is created first\n    if (!this.server && IS_BROWSER && SHOULD_REHYDRATE) {\n      SHOULD_REHYDRATE = false;\n      rehydrateSheet(this);\n    }\n\n    setToString(this, () => outputSheet(this));\n  }\n\n  reconstructWithOptions(options: SheetConstructorArgs, withNames = true) {\n    return new StyleSheet(\n      { ...this.options, ...options },\n      this.gs,\n      (withNames && this.names) || undefined\n    );\n  }\n\n  allocateGSInstance(id: string) {\n    return (this.gs[id] = (this.gs[id] || 0) + 1);\n  }\n\n  /** Lazily initialises a GroupedTag for when it's actually needed */\n  getTag() {\n    return this.tag || (this.tag = makeGroupedTag(makeTag(this.options)));\n  }\n\n  /** Check whether a name is known for caching */\n  hasNameForId(id: string, name: string): boolean {\n    return this.names.has(id) && (this.names.get(id) as any).has(name);\n  }\n\n  /** Mark a group's name as known for caching */\n  registerName(id: string, name: string) {\n    getGroupForId(id);\n\n    if (!this.names.has(id)) {\n      const groupNames = new Set<string>();\n      groupNames.add(name);\n      this.names.set(id, groupNames);\n    } else {\n      (this.names.get(id) as any).add(name);\n    }\n  }\n\n  /** Insert new rules which also marks the name as known */\n  insertRules(id: string, name: string, rules: string | string[]) {\n    this.registerName(id, name);\n    this.getTag().insertRules(getGroupForId(id), rules);\n  }\n\n  /** Clears all cached names for a given group ID */\n  clearNames(id: string) {\n    if (this.names.has(id)) {\n      (this.names.get(id) as any).clear();\n    }\n  }\n\n  /** Clears all rules for a given group ID */\n  clearRules(id: string) {\n    this.getTag().clearGroup(getGroupForId(id));\n    this.clearNames(id);\n  }\n\n  /** Clears the entire tag which deletes all rules but not its names */\n  clearTag() {\n    // NOTE: This does not clear the names, since it's only used during SSR\n    // so that we can continuously output only new rules\n    this.tag = undefined;\n  }\n}\n","import * as stylis from 'stylis';\nimport { Stringifier } from '../types';\nimport { EMPTY_ARRAY, EMPTY_OBJECT } from './empties';\nimport throwStyledError from './error';\nimport { SEED, phash } from './hash';\n\nconst AMP_REGEX = /&/g;\nconst COMMENT_REGEX = /^\\s*\\/\\/.*$/gm;\n\nexport type ICreateStylisInstance = {\n  options?: { namespace?: string | undefined; prefix?: boolean | undefined } | undefined;\n  plugins?: stylis.Middleware[] | undefined;\n};\n\n/**\n * Takes an element and recurses through it's rules added the namespace to the start of each selector.\n * Takes into account media queries by recursing through child rules if they are present.\n */\nfunction recursivelySetNamepace(compiled: stylis.Element[], namespace: String): stylis.Element[] {\n  return compiled.map(rule => {\n    if (rule.type === 'rule') {\n      // add the namespace to the start\n      rule.value = `${namespace} ${rule.value}`;\n      // add the namespace after each comma for subsequent selectors.\n      rule.value = rule.value.replaceAll(',', `,${namespace} `);\n      rule.props = (rule.props as string[]).map(prop => {\n        return `${namespace} ${prop}`;\n      });\n    }\n\n    if (Array.isArray(rule.children) && rule.type !== '@keyframes') {\n      rule.children = recursivelySetNamepace(rule.children, namespace);\n    }\n    return rule;\n  });\n}\n\nexport default function createStylisInstance(\n  {\n    options = EMPTY_OBJECT as object,\n    plugins = EMPTY_ARRAY as unknown as stylis.Middleware[],\n  }: ICreateStylisInstance = EMPTY_OBJECT as object\n) {\n  let _componentId: string;\n  let _selector: string;\n  let _selectorRegexp: RegExp;\n\n  const selfReferenceReplacer = (match: string, offset: number, string: string) => {\n    if (\n      /**\n       * We only want to refer to the static class directly if the selector is part of a\n       * self-reference selector `& + & { color: red; }`\n       */\n      string.startsWith(_selector) &&\n      string.endsWith(_selector) &&\n      string.replaceAll(_selector, '').length > 0\n    ) {\n      return `.${_componentId}`;\n    }\n\n    return match;\n  };\n\n  /**\n   * When writing a style like\n   *\n   * & + & {\n   *   color: red;\n   * }\n   *\n   * The second ampersand should be a reference to the static component class. stylis\n   * has no knowledge of static class so we have to intelligently replace the base selector.\n   *\n   * https://github.com/thysultan/stylis.js/tree/v4.0.2#abstract-syntax-structure\n   */\n  const selfReferenceReplacementPlugin: stylis.Middleware = element => {\n    if (element.type === stylis.RULESET && element.value.includes('&')) {\n      (element.props as string[])[0] = element.props[0]\n        // catch any hanging references that stylis missed\n        .replace(AMP_REGEX, _selector)\n        .replace(_selectorRegexp, selfReferenceReplacer);\n    }\n  };\n\n  const middlewares = plugins.slice();\n\n  middlewares.push(selfReferenceReplacementPlugin);\n\n  /**\n   * Enables automatic vendor-prefixing for styles.\n   */\n  if (options.prefix) {\n    middlewares.push(stylis.prefixer);\n  }\n\n  middlewares.push(stylis.stringify);\n\n  const stringifyRules: Stringifier = (\n    css: string,\n    selector = '',\n    /**\n     * This \"prefix\" referes to a _selector_ prefix.\n     */\n    prefix = '',\n    componentId = '&'\n  ) => {\n    // stylis has no concept of state to be passed to plugins\n    // but since JS is single-threaded, we can rely on that to ensure\n    // these properties stay in sync with the current stylis run\n    _componentId = componentId;\n    _selector = selector;\n    _selectorRegexp = new RegExp(`\\\\${_selector}\\\\b`, 'g');\n\n    const flatCSS = css.replace(COMMENT_REGEX, '');\n    let compiled = stylis.compile(\n      prefix || selector ? `${prefix} ${selector} { ${flatCSS} }` : flatCSS\n    );\n\n    if (options.namespace) {\n      compiled = recursivelySetNamepace(compiled, options.namespace);\n    }\n\n    const stack: string[] = [];\n\n    stylis.serialize(\n      compiled,\n      stylis.middleware(middlewares.concat(stylis.rulesheet(value => stack.push(value))))\n    );\n\n    return stack;\n  };\n\n  stringifyRules.hash = plugins.length\n    ? plugins\n        .reduce((acc, plugin) => {\n          if (!plugin.name) {\n            throwStyledError(15);\n          }\n\n          return phash(acc, plugin.name);\n        }, SEED)\n        .toString()\n    : '';\n\n  return stringifyRules;\n}\n","import React, { useContext, useEffect, useMemo, useState } from 'react';\nimport shallowequal from 'shallowequal';\nimport type stylis from 'stylis';\nimport StyleSheet from '../sheet';\nimport { ShouldForwardProp, Stringifier } from '../types';\nimport createStylisInstance from '../utils/stylis';\n\nexport const mainSheet: StyleSheet = new StyleSheet();\nexport const mainStylis: Stringifier = createStylisInstance();\n\nexport type IStyleSheetContext = {\n  shouldForwardProp?: ShouldForwardProp<'web'> | undefined;\n  styleSheet: StyleSheet;\n  stylis: Stringifier;\n};\n\nexport const StyleSheetContext = React.createContext<IStyleSheetContext>({\n  shouldForwardProp: undefined,\n  styleSheet: mainSheet,\n  stylis: mainStylis,\n});\n\nexport const StyleSheetConsumer = StyleSheetContext.Consumer;\n\nexport type IStylisContext = Stringifier | void;\nexport const StylisContext = React.createContext<IStylisContext>(undefined);\nexport const StylisConsumer = StylisContext.Consumer;\n\nexport function useStyleSheetContext() {\n  return useContext(StyleSheetContext);\n}\n\nexport type IStyleSheetManager = React.PropsWithChildren<{\n  /**\n   * If desired, you can pass this prop to disable \"speedy\" insertion mode, which\n   * uses the browser [CSSOM APIs](https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet).\n   * When disabled, rules are inserted as simple text into style blocks.\n   */\n  disableCSSOMInjection?: undefined | boolean;\n  /**\n   * If you are working exclusively with modern browsers, vendor prefixes can often be omitted\n   * to reduce the weight of CSS on the page.\n   */\n  enableVendorPrefixes?: undefined | boolean;\n  /**\n   * Provide an optional selector to be prepended to all generated style rules.\n   */\n  namespace?: undefined | string;\n  /**\n   * Create and provide your own `StyleSheet` if necessary for advanced SSR scenarios.\n   */\n  sheet?: undefined | StyleSheet;\n  /**\n   * Starting in v6, styled-components no longer does its own prop validation\n   * and recommends use of transient props \"$prop\" to pass style-only props to\n   * components. If for some reason you are not able to use transient props, a\n   * prop validation function can be provided via `StyleSheetManager`, such as\n   * `@emotion/is-prop-valid`.\n   *\n   * When the return value is `true`, props will be forwarded to the DOM/underlying\n   * component. If return value is `false`, the prop will be discarded after styles\n   * are calculated.\n   *\n   * Manually composing `styled.{element}.withConfig({shouldForwardProp})` will\n   * override this default.\n   */\n  shouldForwardProp?: undefined | IStyleSheetContext['shouldForwardProp'];\n  /**\n   * An array of plugins to be run by stylis (style processor) during compilation.\n   * Check out [what's available on npm*](https://www.npmjs.com/search?q=keywords%3Astylis).\n   *\n   * \\* The plugin(s) must be compatible with stylis v4 or above.\n   */\n  stylisPlugins?: undefined | stylis.Middleware[];\n  /**\n   * Provide an alternate DOM node to host generated styles; useful for iframes.\n   */\n  target?: undefined | HTMLElement;\n}>;\n\nexport function StyleSheetManager(props: IStyleSheetManager): JSX.Element {\n  const [plugins, setPlugins] = useState(props.stylisPlugins);\n  const { styleSheet } = useStyleSheetContext();\n\n  const resolvedStyleSheet = useMemo(() => {\n    let sheet = styleSheet;\n\n    if (props.sheet) {\n      sheet = props.sheet;\n    } else if (props.target) {\n      sheet = sheet.reconstructWithOptions({ target: props.target }, false);\n    }\n\n    if (props.disableCSSOMInjection) {\n      sheet = sheet.reconstructWithOptions({ useCSSOMInjection: false });\n    }\n\n    return sheet;\n  }, [props.disableCSSOMInjection, props.sheet, props.target, styleSheet]);\n\n  const stylis = useMemo(\n    () =>\n      createStylisInstance({\n        options: { namespace: props.namespace, prefix: props.enableVendorPrefixes },\n        plugins,\n      }),\n    [props.enableVendorPrefixes, props.namespace, plugins]\n  );\n\n  useEffect(() => {\n    if (!shallowequal(plugins, props.stylisPlugins)) setPlugins(props.stylisPlugins);\n  }, [props.stylisPlugins]);\n\n  const styleSheetContextValue = useMemo(\n    () => ({\n      shouldForwardProp: props.shouldForwardProp,\n      styleSheet: resolvedStyleSheet,\n      stylis,\n    }),\n    [props.shouldForwardProp, resolvedStyleSheet, stylis]\n  );\n\n  return (\n    <StyleSheetContext.Provider value={styleSheetContextValue}>\n      <StylisContext.Provider value={stylis}>{props.children}</StylisContext.Provider>\n    </StyleSheetContext.Provider>\n  );\n}\n","import StyleSheet from '../sheet';\nimport { Keyframes as KeyframesType, Stringifier } from '../types';\nimport styledError from '../utils/error';\nimport { setToString } from '../utils/setToString';\nimport { mainStylis } from './StyleSheetManager';\n\nexport default class Keyframes implements KeyframesType {\n  id: string;\n  name: string;\n  rules: string;\n\n  constructor(name: string, rules: string) {\n    this.name = name;\n    this.id = `sc-keyframes-${name}`;\n    this.rules = rules;\n\n    setToString(this, () => {\n      throw styledError(12, String(this.name));\n    });\n  }\n\n  inject = (styleSheet: StyleSheet, stylisInstance: Stringifier = mainStylis): void => {\n    const resolvedName = this.name + stylisInstance.hash;\n\n    if (!styleSheet.hasNameForId(this.id, resolvedName)) {\n      styleSheet.insertRules(\n        this.id,\n        resolvedName,\n        stylisInstance(this.rules, resolvedName, '@keyframes')\n      );\n    }\n  };\n\n  getName(stylisInstance: Stringifier = mainStylis): string {\n    return this.name + stylisInstance.hash;\n  }\n}\n","const isUpper = (c: string) => c >= 'A' && c <= 'Z';\n\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n *   > hyphenateStyleName('backgroundColor')\n *   < \"background-color\"\n *   > hyphenateStyleName('MozTransition')\n *   < \"-moz-transition\"\n *   > hyphenateStyleName('msTransition')\n *   < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n */\nexport default function hyphenateStyleName(string: string): string {\n  let output = '';\n\n  for (let i = 0; i < string.length; i++) {\n    const c = string[i];\n    // Check for CSS variable prefix\n    if (i === 1 && c === '-' && string[0] === '-') {\n      return string;\n    }\n\n    if (isUpper(c)) {\n      output += '-' + c.toLowerCase();\n    } else {\n      output += c;\n    }\n  }\n\n  return output.startsWith('ms-') ? '-' + output : output;\n}\n","import Keyframes from '../models/Keyframes';\nimport StyleSheet from '../sheet';\nimport {\n  AnyComponent,\n  Dict,\n  ExecutionContext,\n  Interpolation,\n  IStyledComponent,\n  RuleSet,\n  Stringifier,\n  StyledObject,\n} from '../types';\nimport addUnitIfNeeded from './addUnitIfNeeded';\nimport { EMPTY_ARRAY } from './empties';\nimport getComponentName from './getComponentName';\nimport hyphenate from './hyphenateStyleName';\nimport isFunction from './isFunction';\nimport isPlainObject from './isPlainObject';\nimport isStatelessFunction from './isStatelessFunction';\nimport isStyledComponent from './isStyledComponent';\n\n/**\n * It's falsish not falsy because 0 is allowed.\n */\nconst isFalsish = (chunk: any): chunk is undefined | null | false | '' =>\n  chunk === undefined || chunk === null || chunk === false || chunk === '';\n\nexport const objToCssArray = (obj: Dict<any>): string[] => {\n  const rules = [];\n\n  for (const key in obj) {\n    const val = obj[key];\n    if (!obj.hasOwnProperty(key) || isFalsish(val)) continue;\n\n    // @ts-expect-error Property 'isCss' does not exist on type 'any[]'\n    if ((Array.isArray(val) && val.isCss) || isFunction(val)) {\n      rules.push(`${hyphenate(key)}:`, val, ';');\n    } else if (isPlainObject(val)) {\n      rules.push(`${key} {`, ...objToCssArray(val), '}');\n    } else {\n      rules.push(`${hyphenate(key)}: ${addUnitIfNeeded(key, val)};`);\n    }\n  }\n\n  return rules;\n};\n\nexport default function flatten<Props extends object>(\n  chunk: Interpolation<object>,\n  executionContext?: (ExecutionContext & Props) | undefined,\n  styleSheet?: StyleSheet | undefined,\n  stylisInstance?: Stringifier | undefined\n): RuleSet<Props> {\n  if (isFalsish(chunk)) {\n    return [];\n  }\n\n  /* Handle other components */\n  if (isStyledComponent(chunk)) {\n    return [`.${(chunk as unknown as IStyledComponent<'web', any>).styledComponentId}`];\n  }\n\n  /* Either execute or defer the function */\n  if (isFunction(chunk)) {\n    if (isStatelessFunction(chunk) && executionContext) {\n      const result = chunk(executionContext);\n\n      if (\n        process.env.NODE_ENV !== 'production' &&\n        typeof result === 'object' &&\n        !Array.isArray(result) &&\n        !(result instanceof Keyframes) &&\n        !isPlainObject(result) &&\n        result !== null\n      ) {\n        console.error(\n          `${getComponentName(\n            chunk as AnyComponent\n          )} is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.`\n        );\n      }\n\n      return flatten<Props>(result, executionContext, styleSheet, stylisInstance);\n    } else {\n      return [chunk as unknown as IStyledComponent<'web'>];\n    }\n  }\n\n  if (chunk instanceof Keyframes) {\n    if (styleSheet) {\n      chunk.inject(styleSheet, stylisInstance);\n      return [chunk.getName(stylisInstance)];\n    } else {\n      return [chunk];\n    }\n  }\n\n  /* Handle objects */\n  if (isPlainObject(chunk)) {\n    return objToCssArray(chunk as StyledObject<Props>);\n  }\n\n  if (!Array.isArray(chunk)) {\n    return [chunk.toString()];\n  }\n\n  return flatMap(chunk, chunklet =>\n    flatten<Props>(chunklet, executionContext, styleSheet, stylisInstance)\n  );\n}\n\nfunction flatMap<T, U>(array: T[], transform: (value: T, index: number, array: T[]) => U[]): U[] {\n  return Array.prototype.concat.apply(EMPTY_ARRAY, array.map(transform));\n}\n","import unitless from '@emotion/unitless';\n\n// Taken from https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/packages/react-dom/src/shared/dangerousStyleValue.js\nexport default function addUnitIfNeeded(name: string, value: any) {\n  // https://github.com/amilajack/eslint-plugin-flowtype-errors/issues/133\n  if (value == null || typeof value === 'boolean' || value === '') {\n    return '';\n  }\n\n  if (typeof value === 'number' && value !== 0 && !(name in unitless) && !name.startsWith('--')) {\n    return `${value}px`; // Presumes implicit 'px' suffix for unitless numbers except for CSS variables\n  }\n\n  return String(value).trim();\n}\n","import isFunction from './isFunction';\n\nexport default function isStatelessFunction(test: any): test is Function {\n  return isFunction(test) && !(test.prototype && test.prototype.isReactComponent);\n}\n","import { RuleSet } from '../types';\nimport isFunction from './isFunction';\nimport isStyledComponent from './isStyledComponent';\n\nexport default function isStaticRules<Props extends object>(rules: RuleSet<Props>) {\n  for (let i = 0; i < rules.length; i += 1) {\n    const rule = rules[i];\n\n    if (isFunction(rule) && !isStyledComponent(rule)) {\n      // functions are allowed to be static if they're just being\n      // used to get the classname of a nested styled component\n      return false;\n    }\n  }\n\n  return true;\n}\n","import { SC_VERSION } from '../constants';\nimport StyleSheet from '../sheet';\nimport { ExecutionContext, RuleSet, Stringifier } from '../types';\nimport flatten from '../utils/flatten';\nimport generateName from '../utils/generateAlphabeticName';\nimport { hash, phash } from '../utils/hash';\nimport isStaticRules from '../utils/isStaticRules';\nimport { joinStringArray, joinStrings } from '../utils/joinStrings';\n\nconst SEED = hash(SC_VERSION);\n\n/**\n * ComponentStyle is all the CSS-specific stuff, not the React-specific stuff.\n */\nexport default class ComponentStyle {\n  baseHash: number;\n  baseStyle: ComponentStyle | null | undefined;\n  componentId: string;\n  isStatic: boolean;\n  rules: RuleSet<any>;\n  staticRulesId: string;\n\n  constructor(rules: RuleSet<any>, componentId: string, baseStyle?: ComponentStyle | undefined) {\n    this.rules = rules;\n    this.staticRulesId = '';\n    this.isStatic =\n      process.env.NODE_ENV === 'production' &&\n      (baseStyle === undefined || baseStyle.isStatic) &&\n      isStaticRules(rules);\n    this.componentId = componentId;\n    this.baseHash = phash(SEED, componentId);\n    this.baseStyle = baseStyle;\n\n    // NOTE: This registers the componentId, which ensures a consistent order\n    // for this component's styles compared to others\n    StyleSheet.registerId(componentId);\n  }\n\n  generateAndInjectStyles(\n    executionContext: ExecutionContext,\n    styleSheet: StyleSheet,\n    stylis: Stringifier\n  ): string {\n    let names = this.baseStyle\n      ? this.baseStyle.generateAndInjectStyles(executionContext, styleSheet, stylis)\n      : '';\n\n    // force dynamic classnames if user-supplied stylis plugins are in use\n    if (this.isStatic && !stylis.hash) {\n      if (this.staticRulesId && styleSheet.hasNameForId(this.componentId, this.staticRulesId)) {\n        names = joinStrings(names, this.staticRulesId);\n      } else {\n        const cssStatic = joinStringArray(\n          flatten(this.rules, executionContext, styleSheet, stylis) as string[]\n        );\n        const name = generateName(phash(this.baseHash, cssStatic) >>> 0);\n\n        if (!styleSheet.hasNameForId(this.componentId, name)) {\n          const cssStaticFormatted = stylis(cssStatic, `.${name}`, undefined, this.componentId);\n          styleSheet.insertRules(this.componentId, name, cssStaticFormatted);\n        }\n\n        names = joinStrings(names, name);\n        this.staticRulesId = name;\n      }\n    } else {\n      let dynamicHash = phash(this.baseHash, stylis.hash);\n      let css = '';\n\n      for (let i = 0; i < this.rules.length; i++) {\n        const partRule = this.rules[i];\n\n        if (typeof partRule === 'string') {\n          css += partRule;\n\n          if (process.env.NODE_ENV !== 'production') dynamicHash = phash(dynamicHash, partRule);\n        } else if (partRule) {\n          const partString = joinStringArray(\n            flatten(partRule, executionContext, styleSheet, stylis) as string[]\n          );\n          // The same value can switch positions in the array, so we include \"i\" in the hash.\n          dynamicHash = phash(dynamicHash, partString + i);\n          css += partString;\n        }\n      }\n\n      if (css) {\n        const name = generateName(dynamicHash >>> 0);\n\n        if (!styleSheet.hasNameForId(this.componentId, name)) {\n          styleSheet.insertRules(\n            this.componentId,\n            name,\n            stylis(css, `.${name}`, undefined, this.componentId)\n          );\n        }\n\n        names = joinStrings(names, name);\n      }\n    }\n\n    return names;\n  }\n}\n","import React, { useContext, useMemo } from 'react';\nimport styledError from '../utils/error';\nimport isFunction from '../utils/isFunction';\n\n/**\n * Override DefaultTheme to get accurate typings for your project.\n *\n * ```\n * // create styled-components.d.ts in your project source\n * // if it isn't being picked up, check tsconfig compilerOptions.types\n * import type { CSSProp } from \"styled-components\";\n * import Theme from './theme';\n *\n * type ThemeType = typeof Theme;\n *\n * declare module \"styled-components\" {\n *  export interface DefaultTheme extends ThemeType {}\n * }\n *\n * declare module \"react\" {\n *  interface DOMAttributes<T> {\n *    css?: CSSProp;\n *  }\n * }\n * ```\n */\nexport interface DefaultTheme {\n  [key: string]: any;\n}\n\ntype ThemeFn = (outerTheme?: DefaultTheme | undefined) => DefaultTheme;\ntype ThemeArgument = DefaultTheme | ThemeFn;\n\ntype Props = {\n  children?: React.ReactNode;\n  theme: ThemeArgument;\n};\n\nexport const ThemeContext = React.createContext<DefaultTheme | undefined>(undefined);\n\nexport const ThemeConsumer = ThemeContext.Consumer;\n\nfunction mergeTheme(theme: ThemeArgument, outerTheme?: DefaultTheme | undefined): DefaultTheme {\n  if (!theme) {\n    throw styledError(14);\n  }\n\n  if (isFunction(theme)) {\n    const themeFn = theme as ThemeFn;\n    const mergedTheme = themeFn(outerTheme);\n\n    if (\n      process.env.NODE_ENV !== 'production' &&\n      (mergedTheme === null || Array.isArray(mergedTheme) || typeof mergedTheme !== 'object')\n    ) {\n      throw styledError(7);\n    }\n\n    return mergedTheme;\n  }\n\n  if (Array.isArray(theme) || typeof theme !== 'object') {\n    throw styledError(8);\n  }\n\n  return outerTheme ? { ...outerTheme, ...theme } : theme;\n}\n\n/**\n * Returns the current theme (as provided by the closest ancestor `ThemeProvider`.)\n *\n * If no `ThemeProvider` is found, the function will error. If you need access to the theme in an\n * uncertain composition scenario, `React.useContext(ThemeContext)` will not emit an error if there\n * is no `ThemeProvider` ancestor.\n */\nexport function useTheme(): DefaultTheme {\n  const theme = useContext(ThemeContext);\n\n  if (!theme) {\n    throw styledError(18);\n  }\n\n  return theme;\n}\n\n/**\n * Provide a theme to an entire react component tree via context\n */\nexport default function ThemeProvider(props: Props): JSX.Element | null {\n  const outerTheme = React.useContext(ThemeContext);\n  const themeContext = useMemo(\n    () => mergeTheme(props.theme, outerTheme),\n    [props.theme, outerTheme]\n  );\n\n  if (!props.children) {\n    return null;\n  }\n\n  return <ThemeContext.Provider value={themeContext}>{props.children}</ThemeContext.Provider>;\n}\n","import isPropValid from '@emotion/is-prop-valid';\nimport React, { createElement, Ref, useDebugValue } from 'react';\nimport { SC_VERSION } from '../constants';\nimport type {\n  AnyComponent,\n  Attrs,\n  BaseObject,\n  Dict,\n  ExecutionContext,\n  ExecutionProps,\n  IStyledComponent,\n  IStyledComponentFactory,\n  IStyledStatics,\n  OmitNever,\n  RuleSet,\n  StyledOptions,\n  WebTarget,\n} from '../types';\nimport { checkDynamicCreation } from '../utils/checkDynamicCreation';\nimport createWarnTooManyClasses from '../utils/createWarnTooManyClasses';\nimport determineTheme from '../utils/determineTheme';\nimport domElements from '../utils/domElements';\nimport { EMPTY_ARRAY, EMPTY_OBJECT } from '../utils/empties';\nimport escape from '../utils/escape';\nimport generateComponentId from '../utils/generateComponentId';\nimport generateDisplayName from '../utils/generateDisplayName';\nimport hoist from '../utils/hoist';\nimport isFunction from '../utils/isFunction';\nimport isStyledComponent from '../utils/isStyledComponent';\nimport isTag from '../utils/isTag';\nimport { joinStrings } from '../utils/joinStrings';\nimport merge from '../utils/mixinDeep';\nimport { setToString } from '../utils/setToString';\nimport ComponentStyle from './ComponentStyle';\nimport { useStyleSheetContext } from './StyleSheetManager';\nimport { DefaultTheme, ThemeContext } from './ThemeProvider';\n\nconst identifiers: { [key: string]: number } = {};\n\n/* We depend on components having unique IDs */\nfunction generateId(\n  displayName?: string | undefined,\n  parentComponentId?: string | undefined\n): string {\n  const name = typeof displayName !== 'string' ? 'sc' : escape(displayName);\n  // Ensure that no displayName can lead to duplicate componentIds\n  identifiers[name] = (identifiers[name] || 0) + 1;\n\n  const componentId = `${name}-${generateComponentId(\n    // SC_VERSION gives us isolation between multiple runtimes on the page at once\n    // this is improved further with use of the babel plugin \"namespace\" feature\n    SC_VERSION + name + identifiers[name]\n  )}`;\n\n  return parentComponentId ? `${parentComponentId}-${componentId}` : componentId;\n}\n\nfunction useInjectedStyle<T extends ExecutionContext>(\n  componentStyle: ComponentStyle,\n  resolvedAttrs: T\n) {\n  const ssc = useStyleSheetContext();\n\n  const className = componentStyle.generateAndInjectStyles(\n    resolvedAttrs,\n    ssc.styleSheet,\n    ssc.stylis\n  );\n\n  if (process.env.NODE_ENV !== 'production') useDebugValue(className);\n\n  return className;\n}\n\nfunction resolveContext<Props extends object>(\n  attrs: Attrs<React.HTMLAttributes<Element> & Props>[],\n  props: React.HTMLAttributes<Element> & ExecutionProps & Props,\n  theme: DefaultTheme\n) {\n  const context: React.HTMLAttributes<Element> &\n    ExecutionContext &\n    Props & { [key: string]: any; class?: string; ref?: React.Ref<any> } = {\n    ...props,\n    // unset, add `props.className` back at the end so props always \"wins\"\n    className: undefined,\n    theme,\n  };\n  let attrDef;\n\n  for (let i = 0; i < attrs.length; i += 1) {\n    attrDef = attrs[i];\n    const resolvedAttrDef = isFunction(attrDef) ? attrDef(context) : attrDef;\n\n    for (const key in resolvedAttrDef) {\n      context[key as keyof typeof context] =\n        key === 'className'\n          ? joinStrings(context[key] as string | undefined, resolvedAttrDef[key] as string)\n          : key === 'style'\n          ? { ...context[key], ...resolvedAttrDef[key] }\n          : resolvedAttrDef[key as keyof typeof resolvedAttrDef];\n    }\n  }\n\n  if (props.className) {\n    context.className = joinStrings(context.className, props.className);\n  }\n\n  return context;\n}\n\nlet seenUnknownProps = new Set();\n\nfunction useStyledComponentImpl<Props extends object>(\n  forwardedComponent: IStyledComponent<'web', Props>,\n  props: ExecutionProps & Props,\n  forwardedRef: Ref<Element>\n) {\n  const {\n    attrs: componentAttrs,\n    componentStyle,\n    defaultProps,\n    foldedComponentIds,\n    styledComponentId,\n    target,\n  } = forwardedComponent;\n\n  const contextTheme = React.useContext(ThemeContext);\n  const ssc = useStyleSheetContext();\n  const shouldForwardProp = forwardedComponent.shouldForwardProp || ssc.shouldForwardProp;\n\n  if (process.env.NODE_ENV !== 'production') useDebugValue(styledComponentId);\n\n  // NOTE: the non-hooks version only subscribes to this when !componentStyle.isStatic,\n  // but that'd be against the rules-of-hooks. We could be naughty and do it anyway as it\n  // should be an immutable value, but behave for now.\n  const theme = determineTheme(props, contextTheme, defaultProps) || EMPTY_OBJECT;\n\n  const context = resolveContext<Props>(componentAttrs, props, theme);\n  const elementToBeCreated: WebTarget = context.as || target;\n  const propsForElement: Dict<any> = {};\n\n  for (const key in context) {\n    if (context[key] === undefined) {\n      // Omit undefined values from props passed to wrapped element.\n      // This enables using .attrs() to remove props, for example.\n    } else if (key[0] === '$' || key === 'as' || (key === 'theme' && context.theme === theme)) {\n      // Omit transient props and execution props.\n    } else if (key === 'forwardedAs') {\n      propsForElement.as = context.forwardedAs;\n    } else if (!shouldForwardProp || shouldForwardProp(key, elementToBeCreated)) {\n      propsForElement[key] = context[key];\n\n      if (\n        !shouldForwardProp &&\n        process.env.NODE_ENV === 'development' &&\n        !isPropValid(key) &&\n        !seenUnknownProps.has(key) &&\n        // Only warn on DOM Element.\n        domElements.has(elementToBeCreated as any)\n      ) {\n        seenUnknownProps.add(key);\n        console.warn(\n          `styled-components: it looks like an unknown prop \"${key}\" is being sent through to the DOM, which will likely trigger a React console error. If you would like automatic filtering of unknown props, you can opt-into that behavior via \\`<StyleSheetManager shouldForwardProp={...}>\\` (connect an API like \\`@emotion/is-prop-valid\\`) or consider using transient props (\\`$\\` prefix for automatic filtering.)`\n        );\n      }\n    }\n  }\n\n  const generatedClassName = useInjectedStyle(componentStyle, context);\n\n  if (process.env.NODE_ENV !== 'production' && forwardedComponent.warnTooManyClasses) {\n    forwardedComponent.warnTooManyClasses(generatedClassName);\n  }\n\n  let classString = joinStrings(foldedComponentIds, styledComponentId);\n  if (generatedClassName) {\n    classString += ' ' + generatedClassName;\n  }\n  if (context.className) {\n    classString += ' ' + context.className;\n  }\n\n  propsForElement[\n    // handle custom elements which React doesn't properly alias\n    isTag(elementToBeCreated) &&\n    !domElements.has(elementToBeCreated as Extract<typeof domElements, string>)\n      ? 'class'\n      : 'className'\n  ] = classString;\n\n  propsForElement.ref = forwardedRef;\n\n  return createElement(elementToBeCreated, propsForElement);\n}\n\nfunction createStyledComponent<\n  Target extends WebTarget,\n  OuterProps extends object,\n  Statics extends object = BaseObject,\n>(\n  target: Target,\n  options: StyledOptions<'web', OuterProps>,\n  rules: RuleSet<OuterProps>\n): ReturnType<IStyledComponentFactory<'web', Target, OuterProps, Statics>> {\n  const isTargetStyledComp = isStyledComponent(target);\n  const styledComponentTarget = target as IStyledComponent<'web', OuterProps>;\n  const isCompositeComponent = !isTag(target);\n\n  const {\n    attrs = EMPTY_ARRAY,\n    componentId = generateId(options.displayName, options.parentComponentId),\n    displayName = generateDisplayName(target),\n  } = options;\n\n  const styledComponentId =\n    options.displayName && options.componentId\n      ? `${escape(options.displayName)}-${options.componentId}`\n      : options.componentId || componentId;\n\n  // fold the underlying StyledComponent attrs up (implicit extend)\n  const finalAttrs =\n    isTargetStyledComp && styledComponentTarget.attrs\n      ? styledComponentTarget.attrs.concat(attrs as unknown as Attrs<OuterProps>[]).filter(Boolean)\n      : (attrs as Attrs<OuterProps>[]);\n\n  let { shouldForwardProp } = options;\n\n  if (isTargetStyledComp && styledComponentTarget.shouldForwardProp) {\n    const shouldForwardPropFn = styledComponentTarget.shouldForwardProp;\n\n    if (options.shouldForwardProp) {\n      const passedShouldForwardPropFn = options.shouldForwardProp;\n\n      // compose nested shouldForwardProp calls\n      shouldForwardProp = (prop, elementToBeCreated) =>\n        shouldForwardPropFn(prop, elementToBeCreated) &&\n        passedShouldForwardPropFn(prop, elementToBeCreated);\n    } else {\n      shouldForwardProp = shouldForwardPropFn;\n    }\n  }\n\n  const componentStyle = new ComponentStyle(\n    rules,\n    styledComponentId,\n    isTargetStyledComp ? (styledComponentTarget.componentStyle as ComponentStyle) : undefined\n  );\n\n  function forwardRefRender(props: ExecutionProps & OuterProps, ref: Ref<Element>) {\n    return useStyledComponentImpl<OuterProps>(WrappedStyledComponent, props, ref);\n  }\n\n  forwardRefRender.displayName = displayName;\n\n  /**\n   * forwardRef creates a new interim component, which we'll take advantage of\n   * instead of extending ParentComponent to create _another_ interim class\n   */\n  let WrappedStyledComponent = React.forwardRef(forwardRefRender) as unknown as IStyledComponent<\n    'web',\n    any\n  > &\n    Statics;\n  WrappedStyledComponent.attrs = finalAttrs;\n  WrappedStyledComponent.componentStyle = componentStyle;\n  WrappedStyledComponent.displayName = displayName;\n  WrappedStyledComponent.shouldForwardProp = shouldForwardProp;\n\n  // this static is used to preserve the cascade of static classes for component selector\n  // purposes; this is especially important with usage of the css prop\n  WrappedStyledComponent.foldedComponentIds = isTargetStyledComp\n    ? joinStrings(styledComponentTarget.foldedComponentIds, styledComponentTarget.styledComponentId)\n    : '';\n\n  WrappedStyledComponent.styledComponentId = styledComponentId;\n\n  // fold the underlying StyledComponent target up since we folded the styles\n  WrappedStyledComponent.target = isTargetStyledComp ? styledComponentTarget.target : target;\n\n  Object.defineProperty(WrappedStyledComponent, 'defaultProps', {\n    get() {\n      return this._foldedDefaultProps;\n    },\n\n    set(obj) {\n      this._foldedDefaultProps = isTargetStyledComp\n        ? merge({}, styledComponentTarget.defaultProps, obj)\n        : obj;\n    },\n  });\n\n  if (process.env.NODE_ENV !== 'production') {\n    checkDynamicCreation(displayName, styledComponentId);\n\n    WrappedStyledComponent.warnTooManyClasses = createWarnTooManyClasses(\n      displayName,\n      styledComponentId\n    );\n  }\n\n  setToString(WrappedStyledComponent, () => `.${WrappedStyledComponent.styledComponentId}`);\n\n  if (isCompositeComponent) {\n    const compositeComponentTarget = target as AnyComponent;\n\n    hoist<typeof WrappedStyledComponent, typeof compositeComponentTarget>(\n      WrappedStyledComponent,\n      compositeComponentTarget,\n      {\n        // all SC-specific things should not be hoisted\n        attrs: true,\n        componentStyle: true,\n        displayName: true,\n        foldedComponentIds: true,\n        shouldForwardProp: true,\n        styledComponentId: true,\n        target: true,\n      } as { [key in keyof OmitNever<IStyledStatics<'web', OuterProps>>]: true }\n    );\n  }\n\n  return WrappedStyledComponent;\n}\n\nexport default createStyledComponent;\n","import { StyledTarget } from '../types';\nimport getComponentName from './getComponentName';\nimport isTag from './isTag';\n\nexport default function generateDisplayName(target: StyledTarget<any>) {\n  return isTag(target) ? `styled.${target}` : `Styled(${getComponentName(target)})`;\n}\n","import { Interpolation } from '../types';\n\nexport default function interleave<Props extends object>(\n  strings: readonly string[],\n  interpolations: Interpolation<Props>[]\n): Interpolation<Props>[] {\n  const result: Interpolation<Props>[] = [strings[0]];\n\n  for (let i = 0, len = interpolations.length; i < len; i += 1) {\n    result.push(interpolations[i], strings[i + 1]);\n  }\n\n  return result;\n}\n","import {\n  BaseObject,\n  Interpolation,\n  NoInfer,\n  RuleSet,\n  StyledObject,\n  StyleFunction,\n  Styles,\n} from '../types';\nimport { EMPTY_ARRAY } from '../utils/empties';\nimport flatten from '../utils/flatten';\nimport interleave from '../utils/interleave';\nimport isFunction from '../utils/isFunction';\nimport isPlainObject from '../utils/isPlainObject';\n\n/**\n * Used when flattening object styles to determine if we should\n * expand an array of styles.\n */\nconst addTag = <T extends RuleSet<any>>(arg: T): T & { isCss: true } =>\n  Object.assign(arg, { isCss: true } as const);\n\nfunction css(styles: Styles<object>, ...interpolations: Interpolation<object>[]): RuleSet<object>;\nfunction css<Props extends object>(\n  styles: Styles<NoInfer<Props>>,\n  ...interpolations: Interpolation<NoInfer<Props>>[]\n): RuleSet<NoInfer<Props>>;\nfunction css<Props extends object = BaseObject>(\n  styles: Styles<NoInfer<Props>>,\n  ...interpolations: Interpolation<NoInfer<Props>>[]\n): RuleSet<NoInfer<Props>> {\n  if (isFunction(styles) || isPlainObject(styles)) {\n    const styleFunctionOrObject = styles as StyleFunction<Props> | StyledObject<Props>;\n\n    return addTag(\n      flatten<Props>(\n        interleave<Props>(EMPTY_ARRAY, [\n          styleFunctionOrObject,\n          ...interpolations,\n        ]) as Interpolation<object>\n      )\n    );\n  }\n\n  const styleStringArray = styles as TemplateStringsArray;\n\n  if (\n    interpolations.length === 0 &&\n    styleStringArray.length === 1 &&\n    typeof styleStringArray[0] === 'string'\n  ) {\n    return flatten<Props>(styleStringArray);\n  }\n\n  return addTag(\n    flatten<Props>(interleave<Props>(styleStringArray, interpolations) as Interpolation<object>)\n  );\n}\n\nexport default css;\n","import {\n  Attrs,\n  BaseObject,\n  ExecutionProps,\n  Interpolation,\n  IStyledComponent,\n  IStyledComponentFactory,\n  KnownTarget,\n  NoInfer,\n  Runtime,\n  StyledOptions,\n  StyledTarget,\n  Styles,\n  Substitute,\n} from '../types';\nimport { EMPTY_OBJECT } from '../utils/empties';\nimport styledError from '../utils/error';\nimport css from './css';\n\ntype AttrsResult<T extends Attrs<any>> = T extends (...args: any) => infer P\n  ? P extends object\n    ? P\n    : never\n  : T extends object\n  ? T\n  : never;\n\n/**\n * Based on Attrs being a simple object or function that returns\n * a prop object, inspect the attrs result and attempt to extract\n * any \"as\" prop usage to modify the runtime target.\n */\ntype AttrsTarget<\n  R extends Runtime,\n  T extends Attrs<any>,\n  FallbackTarget extends StyledTarget<R>,\n  Result extends ExecutionProps = AttrsResult<T>,\n> = Result extends { as: infer RuntimeTarget }\n  ? RuntimeTarget extends KnownTarget\n    ? RuntimeTarget\n    : FallbackTarget\n  : FallbackTarget;\n\nexport interface Styled<\n  R extends Runtime,\n  Target extends StyledTarget<R>,\n  OuterProps extends object,\n  OuterStatics extends object = BaseObject,\n> {\n  <Props extends object = BaseObject, Statics extends object = BaseObject>(\n    initialStyles: Styles<Substitute<OuterProps, NoInfer<Props>>>,\n    ...interpolations: Interpolation<Substitute<OuterProps, NoInfer<Props>>>[]\n  ): IStyledComponent<R, Substitute<OuterProps, Props>> &\n    OuterStatics &\n    Statics &\n    (R extends 'web'\n      ? Target extends string\n        ? {}\n        : Omit<Target, keyof React.Component<any>>\n      : {});\n\n  attrs: <\n    Props extends object = BaseObject,\n    PrivateMergedProps extends object = Substitute<OuterProps, Props>,\n    PrivateAttrsArg extends Attrs<PrivateMergedProps> = Attrs<PrivateMergedProps>,\n    PrivateResolvedTarget extends StyledTarget<R> = AttrsTarget<R, PrivateAttrsArg, Target>,\n  >(\n    attrs: PrivateAttrsArg\n  ) => Styled<\n    R,\n    PrivateResolvedTarget,\n    PrivateResolvedTarget extends KnownTarget\n      ? Substitute<\n          Substitute<OuterProps, React.ComponentPropsWithRef<PrivateResolvedTarget>>,\n          Props\n        >\n      : PrivateMergedProps,\n    OuterStatics\n  >;\n\n  withConfig: (config: StyledOptions<R, OuterProps>) => Styled<R, Target, OuterProps, OuterStatics>;\n}\n\nexport default function constructWithOptions<\n  R extends Runtime,\n  Target extends StyledTarget<R>,\n  OuterProps extends object = Target extends KnownTarget\n    ? React.ComponentPropsWithRef<Target>\n    : BaseObject,\n  OuterStatics extends object = BaseObject,\n>(\n  componentConstructor: IStyledComponentFactory<R, StyledTarget<R>, object, any>,\n  tag: StyledTarget<R>,\n  options: StyledOptions<R, OuterProps> = EMPTY_OBJECT\n): Styled<R, Target, OuterProps, OuterStatics> {\n  /**\n   * We trust that the tag is a valid component as long as it isn't\n   * falsish. Typically the tag here is a string or function (i.e.\n   * class or pure function component), however a component may also be\n   * an object if it uses another utility, e.g. React.memo. React will\n   * output an appropriate warning however if the `tag` isn't valid.\n   */\n  if (!tag) {\n    throw styledError(1, tag);\n  }\n\n  /* This is callable directly as a template function */\n  const templateFunction = <Props extends object = BaseObject, Statics extends object = BaseObject>(\n    initialStyles: Styles<Substitute<OuterProps, Props>>,\n    ...interpolations: Interpolation<Substitute<OuterProps, Props>>[]\n  ) =>\n    componentConstructor<Substitute<OuterProps, Props>, Statics>(\n      tag,\n      options as StyledOptions<R, Substitute<OuterProps, Props>>,\n      css<Substitute<OuterProps, Props>>(initialStyles, ...interpolations)\n    );\n\n  /**\n   * Attrs allows for accomplishing two goals:\n   *\n   * 1. Backfilling props at runtime more expressively than defaultProps\n   * 2. Amending the prop interface of a wrapped styled component\n   */\n  templateFunction.attrs = <\n    Props extends object = BaseObject,\n    PrivateMergedProps extends object = Substitute<OuterProps, Props>,\n    PrivateAttrsArg extends Attrs<PrivateMergedProps> = Attrs<PrivateMergedProps>,\n    PrivateResolvedTarget extends StyledTarget<R> = AttrsTarget<R, PrivateAttrsArg, Target>,\n  >(\n    attrs: PrivateAttrsArg\n  ) =>\n    constructWithOptions<\n      R,\n      PrivateResolvedTarget,\n      PrivateResolvedTarget extends KnownTarget\n        ? Substitute<\n            Substitute<OuterProps, React.ComponentPropsWithRef<PrivateResolvedTarget>>,\n            Props\n          >\n        : PrivateMergedProps,\n      OuterStatics\n    >(componentConstructor, tag, {\n      ...options,\n      attrs: Array.prototype.concat(options.attrs, attrs).filter(Boolean),\n    });\n\n  /**\n   * If config methods are called, wrap up a new template function\n   * and merge options.\n   */\n  templateFunction.withConfig = (config: StyledOptions<R, OuterProps>) =>\n    constructWithOptions<R, Target, OuterProps, OuterStatics>(componentConstructor, tag, {\n      ...options,\n      ...config,\n    });\n\n  return templateFunction;\n}\n","import createStyledComponent from '../models/StyledComponent';\nimport { WebTarget } from '../types';\nimport domElements, { SupportedHTMLElements } from '../utils/domElements';\nimport constructWithOptions, { Styled } from './constructWithOptions';\n\nconst baseStyled = <Target extends WebTarget>(tag: Target) =>\n  constructWithOptions<'web', Target>(createStyledComponent, tag);\n\nconst styled = baseStyled as typeof baseStyled & {\n  [E in SupportedHTMLElements]: Styled<'web', E, JSX.IntrinsicElements[E]>;\n};\n\n// Shorthands for all valid HTML Elements\ndomElements.forEach(domElement => {\n  // @ts-expect-error some react typing bs\n  styled[domElement] = baseStyled<typeof domElement>(domElement);\n});\n\nexport default styled;\n","import StyleSheet from '../sheet';\nimport { ExecutionContext, RuleSet, Stringifier } from '../types';\nimport flatten from '../utils/flatten';\nimport isStaticRules from '../utils/isStaticRules';\nimport { joinStringArray } from '../utils/joinStrings';\n\nexport default class GlobalStyle<Props extends object> {\n  componentId: string;\n  isStatic: boolean;\n  rules: RuleSet<Props>;\n\n  constructor(rules: RuleSet<Props>, componentId: string) {\n    this.rules = rules;\n    this.componentId = componentId;\n    this.isStatic = isStaticRules(rules);\n\n    // pre-register the first instance to ensure global styles\n    // load before component ones\n    StyleSheet.registerId(this.componentId + 1);\n  }\n\n  createStyles(\n    instance: number,\n    executionContext: ExecutionContext & Props,\n    styleSheet: StyleSheet,\n    stylis: Stringifier\n  ): void {\n    const flatCSS = joinStringArray(\n      flatten(this.rules as RuleSet<object>, executionContext, styleSheet, stylis) as string[]\n    );\n    const css = stylis(flatCSS, '');\n    const id = this.componentId + instance;\n\n    // NOTE: We use the id as a name as well, since these rules never change\n    styleSheet.insertRules(id, id, css);\n  }\n\n  removeStyles(instance: number, styleSheet: StyleSheet): void {\n    styleSheet.clearRules(this.componentId + instance);\n  }\n\n  renderStyles(\n    instance: number,\n    executionContext: ExecutionContext & Props,\n    styleSheet: StyleSheet,\n    stylis: Stringifier\n  ): void {\n    if (instance > 2) StyleSheet.registerId(this.componentId + instance);\n\n    // NOTE: Remove old styles, then inject the new ones\n    this.removeStyles(instance, styleSheet);\n    this.createStyles(instance, executionContext, styleSheet, stylis);\n  }\n}\n","import React from 'react';\nimport type * as streamInternal from 'stream';\nimport { Readable } from 'stream';\nimport { IS_BROWSER, SC_ATTR, SC_ATTR_VERSION, SC_VERSION } from '../constants';\nimport StyleSheet from '../sheet';\nimport styledError from '../utils/error';\nimport { joinStringArray } from '../utils/joinStrings';\nimport getNonce from '../utils/nonce';\nimport { StyleSheetManager } from './StyleSheetManager';\n\ndeclare const __SERVER__: boolean;\n\nconst CLOSING_TAG_R = /^\\s*<\\/[a-z]/i;\n\nexport default class ServerStyleSheet {\n  instance: StyleSheet;\n  sealed: boolean;\n\n  constructor() {\n    this.instance = new StyleSheet({ isServer: true });\n    this.sealed = false;\n  }\n\n  _emitSheetCSS = (): string => {\n    const css = this.instance.toString();\n    const nonce = getNonce();\n    const attrs = [\n      nonce && `nonce=\"${nonce}\"`,\n      `${SC_ATTR}=\"true\"`,\n      `${SC_ATTR_VERSION}=\"${SC_VERSION}\"`,\n    ];\n    const htmlAttr = joinStringArray(attrs.filter(Boolean) as string[], ' ');\n\n    return `<style ${htmlAttr}>${css}</style>`;\n  };\n\n  collectStyles(children: any): JSX.Element {\n    if (this.sealed) {\n      throw styledError(2);\n    }\n\n    return <StyleSheetManager sheet={this.instance}>{children}</StyleSheetManager>;\n  }\n\n  getStyleTags = (): string => {\n    if (this.sealed) {\n      throw styledError(2);\n    }\n\n    return this._emitSheetCSS();\n  };\n\n  getStyleElement = () => {\n    if (this.sealed) {\n      throw styledError(2);\n    }\n\n    const props = {\n      [SC_ATTR]: '',\n      [SC_ATTR_VERSION]: SC_VERSION,\n      dangerouslySetInnerHTML: {\n        __html: this.instance.toString(),\n      },\n    };\n\n    const nonce = getNonce();\n    if (nonce) {\n      (props as any).nonce = nonce;\n    }\n\n    // v4 returned an array for this fn, so we'll do the same for v5 for backward compat\n    return [<style {...props} key=\"sc-0-0\" />];\n  };\n\n  // @ts-expect-error alternate return types are not possible due to code transformation\n  interleaveWithNodeStream(input: Readable): streamInternal.Transform {\n    if (!__SERVER__ || IS_BROWSER) {\n      throw styledError(3);\n    } else if (this.sealed) {\n      throw styledError(2);\n    }\n\n    if (__SERVER__) {\n      this.seal();\n\n      const { Transform } = require('stream');\n\n      const readableStream: Readable = input;\n      const { instance: sheet, _emitSheetCSS } = this;\n\n      const transformer: streamInternal.Transform = new Transform({\n        transform: function appendStyleChunks(\n          chunk: string,\n          /* encoding */\n          _: string,\n          callback: Function\n        ) {\n          // Get the chunk and retrieve the sheet's CSS as an HTML chunk,\n          // then reset its rules so we get only new ones for the next chunk\n          const renderedHtml = chunk.toString();\n          const html = _emitSheetCSS();\n\n          sheet.clearTag();\n\n          // prepend style html to chunk, unless the start of the chunk is a\n          // closing tag in which case append right after that\n          if (CLOSING_TAG_R.test(renderedHtml)) {\n            const endOfClosingTag = renderedHtml.indexOf('>') + 1;\n            const before = renderedHtml.slice(0, endOfClosingTag);\n            const after = renderedHtml.slice(endOfClosingTag);\n\n            this.push(before + html + after);\n          } else {\n            this.push(html + renderedHtml);\n          }\n\n          callback();\n        },\n      });\n\n      readableStream.on('error', err => {\n        // forward the error to the transform stream\n        transformer.emit('error', err);\n      });\n\n      return readableStream.pipe(transformer);\n    }\n  }\n\n  seal = (): void => {\n    this.sealed = true;\n  };\n}\n","/* Import singletons */\nimport { SC_ATTR, SC_VERSION } from './constants';\nimport createGlobalStyle from './constructors/createGlobalStyle';\nimport css from './constructors/css';\nimport keyframes from './constructors/keyframes';\n/* Import Higher Order Components */\nimport withTheme from './hoc/withTheme';\n/* Import hooks */\nimport ServerStyleSheet from './models/ServerStyleSheet';\nimport {\n  IStyleSheetContext,\n  IStyleSheetManager,\n  IStylisContext,\n  StyleSheetConsumer,\n  StyleSheetContext,\n  StyleSheetManager,\n} from './models/StyleSheetManager';\n/* Import components */\nimport ThemeProvider, { ThemeConsumer, ThemeContext, useTheme } from './models/ThemeProvider';\nimport isStyledComponent from './utils/isStyledComponent';\n\n/* Warning if you've imported this file on React Native */\nif (\n  process.env.NODE_ENV !== 'production' &&\n  typeof navigator !== 'undefined' &&\n  navigator.product === 'ReactNative'\n) {\n  console.warn(\n    `It looks like you've imported 'styled-components' on React Native.\\nPerhaps you're looking to import 'styled-components/native'?\\nRead more about this at https://www.styled-components.com/docs/basics#react-native`\n  );\n}\n\nconst windowGlobalKey = `__sc-${SC_ATTR}__`;\n\n/* Warning if there are several instances of styled-components */\nif (\n  process.env.NODE_ENV !== 'production' &&\n  process.env.NODE_ENV !== 'test' &&\n  typeof window !== 'undefined'\n) {\n  // @ts-expect-error dynamic key not in window object\n  window[windowGlobalKey] ||= 0;\n\n  // @ts-expect-error dynamic key not in window object\n  if (window[windowGlobalKey] === 1) {\n    console.warn(\n      `It looks like there are several instances of 'styled-components' initialized in this application. This may cause dynamic styles to not render properly, errors during the rehydration process, a missing theme prop, and makes your application bigger without good reason.\\n\\nSee https://s-c.sh/2BAXzed for more info.`\n    );\n  }\n\n  // @ts-expect-error dynamic key not in window object\n  window[windowGlobalKey] += 1;\n}\n\n/* Export everything */\nexport * from './secretInternals';\nexport { Attrs, DefaultTheme, ShouldForwardProp } from './types';\nexport {\n  IStyleSheetContext,\n  IStyleSheetManager,\n  IStylisContext,\n  ServerStyleSheet,\n  StyleSheetConsumer,\n  StyleSheetContext,\n  StyleSheetManager,\n  ThemeConsumer,\n  ThemeContext,\n  ThemeProvider,\n  createGlobalStyle,\n  css,\n  isStyledComponent,\n  keyframes,\n  useTheme,\n  SC_VERSION as version,\n  withTheme,\n};\n","import React, { useCallback, useState } from \"react\";\nimport {useNavigate, Link} from \"react-router-dom\";\nimport { gsap } from \"gsap\";\n\nimport logo from \"../assets/images/navbar/Logo.svg\";\nimport menu from \"../assets/images/navbar/Menu.svg\";\nimport close from \"../assets/images/navbar/Close.svg\";\nimport Button from \"./Button\";\nimport \"./Navigation.css\";\nimport styled, { css } from \"styled-components\";\nimport { useForm } from \"@formspree/react\";\nimport { FORMSPREE } from \"../utils\";\n\nconst Nav = styled.nav`\n  ${() => css`\n    .navigation .container a {\n    }\n  `}\n`;\n\nconst Navigation = () => {\n  const navigate = useNavigate();\n  const [state, handleSubmit] = useForm(FORMSPREE);\n\n  const [isOpen, setIsOpen] = useState(false);\n\n  const scrollTo = (element) => {\n    gsap.to(window, { duration: 2, scrollTo: element })\n  }\n\n  const handleChangeOpenstate = useCallback(\n    () => setIsOpen((prevState) => !prevState),\n    []\n  );\n  return (\n    <Nav>\n      <div className=\"navigation\">\n        <div className=\"container\">\n          <Link to={\"/\"} onClick={() => scrollTo(\"#trigger-top-banner\")}>\n            <img alt=\"-logo\" id=\"logo\" src={logo}/>\n          </Link>\n          <div className=\"menu-items\">\n            <Link to={\"/\"} onClick={() => scrollTo(\"#trigger-top-banner\")}>About</Link>\n            <Link to={\"/\"} onClick={() => scrollTo(\"#use-cases\")}>Use Cases</Link>\n            <a href=\"/blog/\">Blog</a>\n            <a href=\"/jobs/\">Careers</a>\n          </div>\n\n          <img\n              id=\"menu\"\n              alt=\"-mobile-menu\"\n              className=\"mobile-menu\"\n              src={isOpen ? close : menu}\n              onClick={handleChangeOpenstate}\n          />\n        </div>\n      </div>\n      {isOpen && (\n          <div className=\"mobile-navigation\">\n            <div className=\"mobile-container\">\n              <Link to={\"/\"} onClick={() => scrollTo(\"#trigger-top-banner\")}>About</Link>\n              <Link to={\"/\"} onClick={() => scrollTo(\"#use-cases\")}>Use Cases</Link>\n              <a href=\"/blog/\">Blog</a>\n              <a href=\"/jobs/\">Careers</a>\n\n              {!state?.succeeded ? (\n                  <form onSubmit={handleSubmit}>\n                    <div className=\"contact\">\n                      <input\n                          required\n                          id=\"email\"\n                          type=\"email\"\n                          name=\"email\"\n                          placeholder=\"Enter your email to stay informed\"\n                      />\n                      <Button>Sign Up</Button>\n                    </div>\n                  </form>\n              ) : (\n                  <div className=\"nav-thanks\">\n                    <h1>Thank you for your interest.</h1>\n                    <p>\n                      Your submission has been received. We will be contacting you\n                      via email for next steps.\n                    </p>\n                  </div>\n              )}\n              <div className=\"mobile-footer\">\n                <label>Hubble Network © 2024 </label> |{\" \"}\n                <label onClick={() => navigate(\"/privacy-policy\")}>Privacy Policy </label> | <label\n                  onClick={() => navigate(\"/terms\")}>Terms</label>\n              </div>\n            </div>\n            <div className=\"shadow\" />\n        </div>\n      )}\n    </Nav>\n  );\n};\nexport default Navigation;\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n */\n\n/**\n * Serialize the positional info of a point, position (start and end points),\n * or node.\n *\n * @param {Node | NodeLike | Position | PositionLike | Point | PointLike | null | undefined} [value]\n *   Node, position, or point.\n * @returns {string}\n *   Pretty printed positional info of a node (`string`).\n *\n *   In the format of a range `ls:cs-le:ce` (when given `node` or `position`)\n *   or a point `l:c` (when given `point`), where `l` stands for line, `c` for\n *   column, `s` for `start`, and `e` for end.\n *   An empty string (`''`) is returned if the given value is neither `node`,\n *   `position`, nor `point`.\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 | PointLike | null | 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 | PositionLike | null | 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 | null | 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\n/**\n * Message.\n */\nexport class VFileMessage extends Error {\n  /**\n   * Create a message for `reason` at `place` from `origin`.\n   *\n   * When an error is passed in as `reason`, the `stack` is copied.\n   *\n   * @param {string | Error | VFileMessage} reason\n   *   Reason for message, uses the stack and message of the error if given.\n   *\n   *   > 👉 **Note**: you should use markdown.\n   * @param {Node | NodeLike | Position | Point | null | undefined} [place]\n   *   Place in file where the message occurred.\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\n   * @returns\n   *   Instance of `VFileMessage`.\n   */\n  // To do: next major: expose `undefined` everywhere instead of `null`.\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          // To do: next major: deep clone.\n          // @ts-expect-error: looks like a position.\n          position = place.position\n        }\n      }\n      // Position.\n      else if ('start' in place || 'end' in place) {\n        // @ts-expect-error: looks like a position.\n        // To do: next major: deep clone.\n        position = place\n      }\n      // Point.\n      else if ('line' in place || 'column' in place) {\n        // To do: next major: deep clone.\n        position.start = place\n      }\n    }\n\n    // Fields from `Error`.\n    /**\n     * Serialized positional info of error.\n     *\n     * On normal errors, this would be something like `ParseError`, buit in\n     * `VFile` messages we use this space to show where an error happened.\n     */\n    this.name = stringifyPosition(place) || '1:1'\n\n    /**\n     * Reason for message.\n     *\n     * @type {string}\n     */\n    this.message = typeof reason === 'object' ? reason.message : reason\n\n    /**\n     * Stack of message.\n     *\n     * This is used by normal errors to show where something happened in\n     * programming code, irrelevant for `VFile` messages,\n     *\n     * @type {string}\n     */\n    this.stack = ''\n\n    if (typeof reason === 'object' && reason.stack) {\n      this.stack = reason.stack\n    }\n\n    /**\n     * Reason for message.\n     *\n     * > 👉 **Note**: you should use markdown.\n     *\n     * @type {string}\n     */\n    this.reason = this.message\n\n    /* eslint-disable no-unused-expressions */\n    /**\n     * State of problem.\n     *\n     * * `true` — marks associated file as no longer processable (error)\n     * * `false` — necessitates a (potential) change (warning)\n     * * `null | undefined` — for things that might not need changing (info)\n     *\n     * @type {boolean | null | undefined}\n     */\n    this.fatal\n\n    /**\n     * Starting line of error.\n     *\n     * @type {number | null}\n     */\n    this.line = position.start.line\n\n    /**\n     * Starting column of error.\n     *\n     * @type {number | null}\n     */\n    this.column = position.start.column\n\n    /**\n     * Full unist position.\n     *\n     * @type {Position | null}\n     */\n    this.position = position\n\n    /**\n     * Namespace of message (example: `'my-package'`).\n     *\n     * @type {string | null}\n     */\n    this.source = parts[0]\n\n    /**\n     * Category of message (example: `'my-rule'`).\n     *\n     * @type {string | null}\n     */\n    this.ruleId = parts[1]\n\n    /**\n     * Path of a file (used throughout the `VFile` ecosystem).\n     *\n     * @type {string | null}\n     */\n    this.file\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    /**\n     * Specify the source value that’s being reported, which is deemed\n     * incorrect.\n     *\n     * @type {string | null}\n     */\n    this.actual\n\n    /**\n     * Suggest acceptable values that can be used instead of `actual`.\n     *\n     * @type {Array<string> | null}\n     */\n    this.expected\n\n    /**\n     * Link to docs for the message.\n     *\n     * > 👉 **Note**: this must be an absolute URL that can be passed as `x`\n     * > to `new URL(x)`.\n     *\n     * @type {string | null}\n     */\n    this.url\n\n    /**\n     * Long form description of the message (you should use markdown).\n     *\n     * @type {string | null}\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 * Get the basename from a path.\n *\n * @param {string} path\n *   File path.\n * @param {string | undefined} [ext]\n *   Extension to strip.\n * @returns {string}\n *   Stem or basename.\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 * Get the dirname from a path.\n *\n * @param {string} path\n *   File path.\n * @returns {string}\n *   File path.\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 * Get an extname from a path.\n *\n * @param {string} path\n *   File path.\n * @returns {string}\n *   Extname.\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 * Join segments from a path.\n *\n * @param {Array<string>} segments\n *   Path segments.\n * @returns {string}\n *   File path.\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 * Normalize a basic file path.\n *\n * @param {string} path\n *   File path.\n * @returns {string}\n *   File path.\n */\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\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 *   File path.\n * @param {boolean} allowAboveRoot\n *   Whether `..` can move above root.\n * @returns {string}\n *   File path.\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 * Make sure `path` is a string.\n *\n * @param {string} path\n *   File path.\n * @returns {asserts path is string}\n *   Nothing.\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 * Check if `fileUrlOrPath` looks like a URL.\n *\n * @param {unknown} fileUrlOrPath\n *   File path or URL.\n * @returns {fileUrlOrPath is URL}\n *   Whether it’s a 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 *   File URL.\n * @returns {string}\n *   File URL.\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 * Get a path from a POSIX URL.\n *\n * @param {URL} url\n *   URL.\n * @returns {string}\n *   File path.\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 {import('./minurl.shared.js').URL} URL\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Value} Value\n */\n\n/**\n * @typedef {Record<string, unknown> & {type: string, position?: Position | undefined}} NodeLike\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 *\n *   This is a copy of the types 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 {Options | URL | Value | VFile} Compatible\n *   Things that can be passed to the constructor.\n *\n * @typedef VFileCoreOptions\n *   Set multiple values.\n * @property {Value | null | undefined} [value]\n *   Set `value`.\n * @property {string | null | undefined} [cwd]\n *   Set `cwd`.\n * @property {Array<string> | null | undefined} [history]\n *   Set `history`.\n * @property {URL | string | null | undefined} [path]\n *   Set `path`.\n * @property {string | null | undefined} [basename]\n *   Set `basename`.\n * @property {string | null | undefined} [stem]\n *   Set `stem`.\n * @property {string | null | undefined} [extname]\n *   Set `extname`.\n * @property {string | null | undefined} [dirname]\n *   Set `dirname`.\n * @property {Data | null | undefined} [data]\n *   Set `data`.\n *\n * @typedef Map\n *   Raw source map.\n *\n *   See:\n *   <https://github.com/mozilla/source-map/blob/58819f0/source-map.d.ts#L15-L23>.\n * @property {number} version\n *   Which version of the source map spec this map is following.\n * @property {Array<string>} sources\n *   An array of URLs to the original source files.\n * @property {Array<string>} names\n *   An array of identifiers which can be referenced by individual mappings.\n * @property {string | undefined} [sourceRoot]\n *   The URL root from which all sources are relative.\n * @property {Array<string> | undefined} [sourcesContent]\n *   An array of contents of the original source files.\n * @property {string} mappings\n *   A string of base64 VLQs which contain the actual mappings.\n * @property {string} file\n *   The generated file this source map is associated with.\n *\n * @typedef {{[key: string]: unknown} & VFileCoreOptions} Options\n *   Configuration.\n *\n *   A bunch of keys that will be shallow copied over to the new file.\n *\n * @typedef {Record<string, unknown>} ReporterSettings\n *   Configuration for reporters.\n */\n\n/**\n * @template {ReporterSettings} Settings\n *   Options type.\n * @callback Reporter\n *   Type for a reporter.\n * @param {Array<VFile>} files\n *   Files to report.\n * @param {Settings} options\n *   Configuration.\n * @returns {string}\n *   Report.\n */\n\nimport bufferLike 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/**\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.\n *\n * @type {Array<'basename' | 'dirname' | 'extname' | 'history' | 'path' | 'stem'>}\n */\nconst order = ['history', 'path', 'basename', 'stem', 'extname', 'dirname']\n\nexport class VFile {\n  /**\n   * Create a new virtual file.\n   *\n   * `options` is treated as:\n   *\n   * *   `string` or `Buffer` — `{value: options}`\n   * *   `URL` — `{path: options}`\n   * *   `VFile` — shallow copies its data over to the new file\n   * *   `object` — all fields are shallow copied over to the new file\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   * You cannot set `dirname` or `extname` without setting either `history`,\n   * `path`, `basename`, or `stem` too.\n   *\n   * @param {Compatible | null | undefined} [value]\n   *   File value.\n   * @returns\n   *   New instance.\n   */\n  constructor(value) {\n    /** @type {Options | VFile} */\n    let options\n\n    if (!value) {\n      options = {}\n    } else if (typeof value === 'string' || buffer(value)) {\n      options = {value}\n    } else if (isUrl(value)) {\n      options = {path: value}\n    } else {\n      options = value\n    }\n\n    /**\n     * Place to store custom information (default: `{}`).\n     *\n     * It’s OK to store custom data directly on the file but moving it to\n     * `data` is recommended.\n     *\n     * @type {Data}\n     */\n    this.data = {}\n\n    /**\n     * List of messages associated with the file.\n     *\n     * @type {Array<VFileMessage>}\n     */\n    this.messages = []\n\n    /**\n     * List of filepaths the file moved between.\n     *\n     * The first is the original path and the last is the current path.\n     *\n     * @type {Array<string>}\n     */\n    this.history = []\n\n    /**\n     * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n     *\n     * @type {string}\n     */\n    this.cwd = proc.cwd()\n\n    /* eslint-disable no-unused-expressions */\n    /**\n     * Raw value.\n     *\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     *\n     * This is used by vfile reporters.\n     *\n     * @type {boolean}\n     */\n    this.stored\n\n    /**\n     * Custom, non-string, compiled, representation.\n     *\n     * This is used by unified to store non-string results.\n     * One example is when turning markdown into React nodes.\n     *\n     * @type {unknown}\n     */\n    this.result\n\n    /**\n     * Source map.\n     *\n     * This type is equivalent to the `RawSourceMap` type from the `source-map`\n     * module.\n     *\n     * @type {Map | null | 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 (\n        prop in options &&\n        options[prop] !== undefined &&\n        options[prop] !== null\n      ) {\n        // @ts-expect-error: TS doesn’t understand basic reality.\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)) {\n        // @ts-expect-error: fine to set other things.\n        this[prop] = options[prop]\n      }\n    }\n  }\n\n  /**\n   * Get the full path (example: `'~/index.min.js'`).\n   *\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   *\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   *\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   *\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   *\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   *\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   *\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 | null | undefined} [encoding='utf8']\n   *   Character encoding to understand `value` as when it’s a `Buffer`\n   *   (default: `'utf8'`).\n   * @returns {string}\n   *   Serialized file.\n   */\n  toString(encoding) {\n    return (this.value || '').toString(encoding || undefined)\n  }\n\n  /**\n   * Create a warning message associated with the file.\n   *\n   * Its `fatal` is set to `false` and `file` is set to the current file path.\n   * Its added to `file.messages`.\n   *\n   * @param {string | Error | VFileMessage} reason\n   *   Reason for message, uses the stack and message of the error if given.\n   * @param {Node | NodeLike | Position | Point | null | undefined} [place]\n   *   Place in file where the message occurred.\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\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   * Create an info message associated with the file.\n   *\n   * Its `fatal` is set to `null` and `file` is set to the current file path.\n   * Its added to `file.messages`.\n   *\n   * @param {string | Error | VFileMessage} reason\n   *   Reason for message, uses the stack and message of the error if given.\n   * @param {Node | NodeLike | Position | Point | null | undefined} [place]\n   *   Place in file where the message occurred.\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\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   * Create a fatal error associated with the file.\n   *\n   * Its `fatal` is set to `true` and `file` is set to the current file path.\n   * Its added to `file.messages`.\n   *\n   * > 👉 **Note**: a fatal error means that a file is no longer processable.\n   *\n   * @param {string | Error | VFileMessage} reason\n   *   Reason for message, uses the stack and message of the error if given.\n   * @param {Node | NodeLike | Position | Point | null | undefined} [place]\n   *   Place in file where the message occurred.\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\n   * @returns {never}\n   *   Message.\n   * @throws {VFileMessage}\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 | null | undefined} part\n *   File path part.\n * @param {string} name\n *   Part name.\n * @returns {void}\n *   Nothing.\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 *   Thing.\n * @param {string} name\n *   Part name.\n * @returns {asserts part is string}\n *   Nothing.\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 *   Path.\n * @param {string} name\n *   Dependency name.\n * @returns {asserts path is string}\n *   Nothing.\n */\nfunction assertPath(path, name) {\n  if (!path) {\n    throw new Error('Setting `' + name + '` requires `path` to be set too')\n  }\n}\n\n/**\n * Assert `value` is a buffer.\n *\n * @param {unknown} value\n *   thing.\n * @returns {value is Buffer}\n *   Whether `value` is a Node.js buffer.\n */\nfunction buffer(value) {\n  return bufferLike(value)\n}\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","// To do: remove `void`s\n// To do: remove `null` from output of our APIs, allow it as user APIs.\n\n/**\n * @typedef {(error?: Error | null | undefined, ...output: Array<any>) => void} Callback\n *   Callback.\n *\n * @typedef {(...input: Array<any>) => any} Middleware\n *   Ware.\n *\n * @typedef Pipeline\n *   Pipeline.\n * @property {Run} run\n *   Run the pipeline.\n * @property {Use} use\n *   Add middleware.\n *\n * @typedef {(...input: Array<any>) => void} Run\n *   Call all middleware.\n *\n *   Calls `done` on completion with either an error or the output of the\n *   last middleware.\n *\n *   > 👉 **Note**: as the length of input defines whether async functions get a\n *   > `next` function,\n *   > it’s recommended to keep `input` at one value normally.\n\n *\n * @typedef {(fn: Middleware) => Pipeline} Use\n *   Add middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n *   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` into a uniform interface.\n *\n * You can pass all input to the resulting function.\n * `callback` is then called with the output of `middleware`.\n *\n * If `middleware` accepts more arguments than the later given in input,\n * an extra `done` function is passed to it after that input,\n * which must be called by `middleware`.\n *\n * The first value in `input` is the main input value.\n * All other input values are the rest input values.\n * The values given to `callback` are the input values,\n * merged with every non-nullish output value.\n *\n * * if `middleware` throws an error,\n *   returns a promise that is rejected,\n *   or calls the given `done` function with an error,\n *   `callback` is called with that error\n * * if `middleware` returns a value or returns a promise that is resolved,\n *   that value is the main output value\n * * if `middleware` calls `done`,\n *   all non-nullish values except for the first one (the error) overwrite the\n *   output values\n *\n * @param {Middleware} middleware\n *   Function to wrap.\n * @param {Callback} callback\n *   Callback called with the output of `middleware`.\n * @returns {Run}\n *   Wrapped middleware.\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 && result.then && typeof result.then === 'function') {\n        result.then(then, done)\n      } else if (result instanceof Error) {\n        done(result)\n      } else {\n        then(result)\n      }\n    }\n  }\n\n  /**\n   * Call `callback`, only once.\n   *\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 {import('mdast').Root|import('mdast').Content} Node\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [includeImageAlt=true]\n *   Whether to use `alt` for `image`s.\n * @property {boolean | null | undefined} [includeHtml=true]\n *   Whether to use `value` of HTML.\n */\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Get the text content of a node or list of nodes.\n *\n * Prefers the node’s plain-text fields, otherwise serializes its children,\n * and if the given value is an array, serialize the nodes in it.\n *\n * @param {unknown} value\n *   Thing to serialize, typically `Node`.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {string}\n *   Serialized `value`.\n */\nexport function toString(value, options) {\n  const settings = options || emptyOptions\n  const includeImageAlt =\n    typeof settings.includeImageAlt === 'boolean'\n      ? settings.includeImageAlt\n      : true\n  const includeHtml =\n    typeof settings.includeHtml === 'boolean' ? settings.includeHtml : true\n\n  return one(value, includeImageAlt, includeHtml)\n}\n\n/**\n * One node or several nodes.\n *\n * @param {unknown} value\n *   Thing to serialize.\n * @param {boolean} includeImageAlt\n *   Include image `alt`s.\n * @param {boolean} includeHtml\n *   Include HTML.\n * @returns {string}\n *   Serialized node.\n */\nfunction one(value, includeImageAlt, includeHtml) {\n  if (node(value)) {\n    if ('value' in value) {\n      return value.type === 'html' && !includeHtml ? '' : value.value\n    }\n\n    if (includeImageAlt && 'alt' in value && value.alt) {\n      return value.alt\n    }\n\n    if ('children' in value) {\n      return all(value.children, includeImageAlt, includeHtml)\n    }\n  }\n\n  if (Array.isArray(value)) {\n    return all(value, includeImageAlt, includeHtml)\n  }\n\n  return ''\n}\n\n/**\n * Serialize a list of nodes.\n *\n * @param {Array<unknown>} values\n *   Thing to serialize.\n * @param {boolean} includeImageAlt\n *   Include image `alt`s.\n * @param {boolean} includeHtml\n *   Include HTML.\n * @returns {string}\n *   Serialized nodes.\n */\nfunction all(values, includeImageAlt, includeHtml) {\n  /** @type {Array<string>} */\n  const result = []\n  let index = -1\n\n  while (++index < values.length) {\n    result[index] = one(values[index], includeImageAlt, includeHtml)\n  }\n\n  return result.join('')\n}\n\n/**\n * Check if `value` looks like a node.\n *\n * @param {unknown} value\n *   Thing.\n * @returns {value is Node}\n *   Whether `value` is a node.\n */\nfunction node(value) {\n  return Boolean(value && typeof value === 'object')\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 *   Item type.\n * @param {Array<T>} list\n *   List to operate on.\n * @param {number} start\n *   Index to remove/insert at (can be negative).\n * @param {number} remove\n *   Number of items to remove.\n * @param {Array<T>} items\n *   Items to inject into `list`.\n * @returns {void}\n *   Nothing.\n */\nexport function splice(list, start, remove, items) {\n  const end = list.length\n  let chunkStart = 0\n  /** @type {Array<unknown>} */\n  let parameters\n\n  // Make start between zero and `end` (included).\n  if (start < 0) {\n    start = -start > end ? 0 : end + start\n  } else {\n    start = start > end ? end : start\n  }\n  remove = remove > 0 ? remove : 0\n\n  // No need to chunk the items if there’s only a couple (10k) items.\n  if (items.length < 10000) {\n    parameters = Array.from(items)\n    parameters.unshift(start, remove)\n    // @ts-expect-error Hush, it’s fine.\n    list.splice(...parameters)\n  } else {\n    // Delete `remove` items starting from `start`\n    if (remove) list.splice(start, remove)\n\n    // Insert the items in chunks to not cause stack overflows.\n    while (chunkStart < items.length) {\n      parameters = items.slice(chunkStart, chunkStart + 10000)\n      parameters.unshift(start, 0)\n      // @ts-expect-error Hush, it’s fine.\n      list.splice(...parameters)\n      chunkStart += 10000\n      start += 10000\n    }\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 *   Item type.\n * @param {Array<T>} list\n *   List to operate on.\n * @param {Array<T>} items\n *   Items to add to `list`.\n * @returns {Array<T>}\n *   Either `list` or `items`.\n */\nexport function push(list, items) {\n  if (list.length > 0) {\n    splice(list, list.length, 0, items)\n    return list\n  }\n  return items\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Handles} Handles\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n * @typedef {import('micromark-util-types').NormalizedExtension} NormalizedExtension\n */\n\nimport {splice} from 'micromark-util-chunked'\n\nconst hasOwnProperty = {}.hasOwnProperty\n\n/**\n * Combine multiple syntax extensions into one.\n *\n * @param {Array<Extension>} extensions\n *   List of syntax extensions.\n * @returns {NormalizedExtension}\n *   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\n *   Extension to merge into.\n * @param {Extension} extension\n *   Extension to merge.\n * @returns {void}\n */\nfunction syntaxExtension(all, extension) {\n  /** @type {keyof Extension} */\n  let hook\n\n  for (hook in extension) {\n    const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n    /** @type {Record<string, unknown>} */\n    const left = maybe || (all[hook] = {})\n    /** @type {Record<string, unknown> | undefined} */\n    const right = extension[hook]\n    /** @type {string} */\n    let code\n\n    if (right) {\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/**\n * Merge `list` into `existing` (both lists of constructs).\n * Mutates `existing`.\n *\n * @param {Array<unknown>} existing\n * @param {Array<unknown>} list\n * @returns {void}\n */\nfunction constructs(existing, list) {\n  let index = -1\n  /** @type {Array<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 multiple HTML extensions into one.\n *\n * @param {Array<HtmlExtension>} htmlExtensions\n *   List of HTML extensions.\n * @returns {HtmlExtension}\n *   A single combined HTML 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\n *   Extension to merge into.\n * @param {HtmlExtension} extension\n *   Extension to merge.\n * @returns {void}\n */\nfunction htmlExtension(all, extension) {\n  /** @type {keyof HtmlExtension} */\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 {keyof Handles} */\n    let type\n\n    if (right) {\n      for (type in right) {\n        // @ts-expect-error assume document vs regular handler are managed correctly.\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.\n\n/**\n * Regular expression that matches a unicode punctuation character.\n */\nexport const unicodePunctuationRegex =\n  /[!-\\/:-@\\[-`\\{-~\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061D-\\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\\u1B7D\\u1B7E\\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-\\u2E5D\\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 */\n\nimport {unicodePunctuationRegex} from './lib/unicode-punctuation-regex.js'\n\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 * @param code\n *   Code.\n * @returns\n *   Whether it matches.\n */\nexport const asciiAlpha = regexCheck(/[A-Za-z]/)\n\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 * @param code\n *   Code.\n * @returns\n *   Whether it matches.\n */\nexport const asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/)\n\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 * @param code\n *   Code.\n * @returns\n *   Whether it matches.\n */\nexport const asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/)\n\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 *   Code.\n * @returns {boolean}\n *   Whether it matches.\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/**\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 * @param code\n *   Code.\n * @returns\n *   Whether it matches.\n */\nexport const asciiDigit = regexCheck(/\\d/)\n\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 * @param code\n *   Code.\n * @returns\n *   Whether it matches.\n */\nexport const asciiHexDigit = regexCheck(/[\\dA-Fa-f]/)\n\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 * @param code\n *   Code.\n * @returns\n *   Whether it matches.\n */\nexport const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/)\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 *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport function markdownLineEnding(code) {\n  return code !== null && code < -2\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 *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport function markdownLineEndingOrSpace(code) {\n  return code !== null && (code < 0 || code === 32)\n}\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 *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport function markdownSpace(code) {\n  return code === -2 || code === -1 || code === 32\n}\n\n// Size note: removing ASCII from the regex and using `asciiPunctuation` here\n// In fact adds to the bundle size.\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 * @param code\n *   Code.\n * @returns\n *   Whether it matches.\n */\nexport const unicodePunctuation = regexCheck(unicodePunctuationRegex)\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 * @param code\n *   Code.\n * @returns\n *   Whether it matches.\n */\nexport const unicodeWhitespace = regexCheck(/\\s/)\n\n/**\n * Create a code check from a regex.\n *\n * @param {RegExp} regex\n * @returns {(code: Code) => boolean}\n */\nfunction regexCheck(regex) {\n  return check\n\n  /**\n   * Check whether a code matches the bound regex.\n   *\n   * @param {Code} code\n   *   Character code.\n   * @returns {boolean}\n   *   Whether the character code matches the bound regex.\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 * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\nimport {markdownSpace} from 'micromark-util-character'\n\n// To do: implement `spaceOrTab`, `spaceOrTabMinMax`, `spaceOrTabWithOptions`.\n\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * *   spaces in markdown are often optional, in which case this factory can be\n *     used and `ok` will be switched to whether spaces were found or not\n * *   one line ending or space can be detected with `markdownSpace(code)` right\n *     before using `factorySpace`\n *\n * ###### Examples\n *\n * Where `␉` represents a tab (plus how much it expands) and `␠` represents a\n * single space.\n *\n * ```markdown\n * ␉\n * ␠␠␠␠\n * ␉␠\n * ```\n *\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @param {TokenType} type\n *   Type (`' \\t'`).\n * @param {number | undefined} [max=Infinity]\n *   Max (exclusive).\n * @returns\n *   Start state.\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\n  /** @type {State} */\n  function start(code) {\n    if (markdownSpace(code)) {\n      effects.enter(type)\n      return prefix(code)\n    }\n    return ok(code)\n  }\n\n  /** @type {State} */\n  function prefix(code) {\n    if (markdownSpace(code) && size++ < limit) {\n      effects.consume(code)\n      return prefix\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').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {InitialConstruct} */\nexport const content = {\n  tokenize: initializeContent\n}\n\n/**\n * @this {TokenizeContext}\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  let previous\n  return contentStart\n\n  /** @type {State} */\n  function afterContentStartConstruct(code) {\n    if (code === null) {\n      effects.consume(code)\n      return\n    }\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    return factorySpace(effects, contentStart, 'linePrefix')\n  }\n\n  /** @type {State} */\n  function paragraphInitial(code) {\n    effects.enter('paragraph')\n    return lineStart(code)\n  }\n\n  /** @type {State} */\n  function lineStart(code) {\n    const token = effects.enter('chunkText', {\n      contentType: 'text',\n      previous\n    })\n    if (previous) {\n      previous.next = token\n    }\n    previous = token\n    return data(code)\n  }\n\n  /** @type {State} */\n  function data(code) {\n    if (code === null) {\n      effects.exit('chunkText')\n      effects.exit('paragraph')\n      effects.consume(code)\n      return\n    }\n    if (markdownLineEnding(code)) {\n      effects.consume(code)\n      effects.exit('chunkText')\n      return lineStart\n    }\n\n    // Data.\n    effects.consume(code)\n    return data\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').ContainerState} ContainerState\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n/**\n * @typedef {[Construct, ContainerState]} StackItem\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {splice} from 'micromark-util-chunked'\n/** @type {InitialConstruct} */\nexport const document = {\n  tokenize: initializeDocument\n}\n\n/** @type {Construct} */\nconst containerConstruct = {\n  tokenize: tokenizeContainer\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\nfunction initializeDocument(effects) {\n  const self = this\n  /** @type {Array<StackItem>} */\n  const stack = []\n  let continued = 0\n  /** @type {TokenizeContext | undefined} */\n  let childFlow\n  /** @type {Token | undefined} */\n  let childToken\n  /** @type {number} */\n  let lineStartOffset\n  return start\n\n  /** @type {State} */\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    }\n\n    // Done.\n    return checkNewContainers(code)\n  }\n\n  /** @type {State} */\n  function documentContinue(code) {\n    continued++\n\n    // 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    if (self.containerState._closeFlow) {\n      self.containerState._closeFlow = undefined\n      if (childFlow) {\n        closeFlow()\n      }\n\n      // Note: this algorithm for moving events around is similar to the\n      // algorithm when dealing with lazy lines in `writeToChild`.\n      const indexBeforeExits = self.events.length\n      let indexBeforeFlow = indexBeforeExits\n      /** @type {Point | undefined} */\n      let point\n\n      // Find the flow chunk.\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      exitContainers(continued)\n\n      // Fix positions.\n      let index = indexBeforeExits\n      while (index < self.events.length) {\n        self.events[index][1].end = Object.assign({}, point)\n        index++\n      }\n\n      // Inject the exits earlier (they’re still also at the end).\n      splice(\n        self.events,\n        indexBeforeFlow + 1,\n        0,\n        self.events.slice(indexBeforeExits)\n      )\n\n      // Discard the duplicate exits.\n      self.events.length = index\n      return checkNewContainers(code)\n    }\n    return start(code)\n  }\n\n  /** @type {State} */\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      }\n\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      if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n        return flowStart(code)\n      }\n\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      // To do: next major: remove `_gfmTableDynamicInterruptHack` (no longer\n      // needed in micromark-extension-gfm-table@1.0.6).\n      self.interrupt = Boolean(\n        childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack\n      )\n    }\n\n    // Check if there is a new container.\n    self.containerState = {}\n    return effects.check(\n      containerConstruct,\n      thereIsANewContainer,\n      thereIsNoNewContainer\n    )(code)\n  }\n\n  /** @type {State} */\n  function thereIsANewContainer(code) {\n    if (childFlow) closeFlow()\n    exitContainers(continued)\n    return documentContinued(code)\n  }\n\n  /** @type {State} */\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\n  /** @type {State} */\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\n  /** @type {State} */\n  function containerContinue(code) {\n    continued++\n    stack.push([self.currentConstruct, self.containerState])\n    // Try another.\n    return documentContinued(code)\n  }\n\n  /** @type {State} */\n  function flowStart(code) {\n    if (code === null) {\n      if (childFlow) closeFlow()\n      exitContainers(0)\n      effects.consume(code)\n      return\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\n  /** @type {State} */\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    if (markdownLineEnding(code)) {\n      effects.consume(code)\n      writeToChild(effects.exit('chunkFlow'))\n      // Get ready for the next line.\n      continued = 0\n      self.interrupt = undefined\n      return start\n    }\n    effects.consume(code)\n    return flowContinue\n  }\n\n  /**\n   * @param {Token} token\n   * @param {boolean | undefined} [eof]\n   * @returns {void}\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)\n\n    // 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    if (self.parser.lazy[token.start.line]) {\n      let index = childFlow.events.length\n      while (index--) {\n        if (\n          // The token starts before the line ending…\n          childFlow.events[index][1].start.offset < lineStartOffset &&\n          // …and either is not ended yet…\n          (!childFlow.events[index][1].end ||\n            // …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      }\n\n      // Note: this algorithm for moving events around is similar to the\n      // algorithm when closing flow in `documentContinue`.\n      const indexBeforeExits = self.events.length\n      let indexBeforeFlow = indexBeforeExits\n      /** @type {boolean | undefined} */\n      let seen\n      /** @type {Point | undefined} */\n      let point\n\n      // Find the previous chunk (the one before the lazy line).\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          seen = true\n        }\n      }\n      exitContainers(continued)\n\n      // Fix positions.\n      index = indexBeforeExits\n      while (index < self.events.length) {\n        self.events[index][1].end = Object.assign({}, point)\n        index++\n      }\n\n      // Inject the exits earlier (they’re still also at the end).\n      splice(\n        self.events,\n        indexBeforeFlow + 1,\n        0,\n        self.events.slice(indexBeforeExits)\n      )\n\n      // Discard the duplicate exits.\n      self.events.length = index\n    }\n  }\n\n  /**\n   * @param {number} size\n   * @returns {void}\n   */\n  function exitContainers(size) {\n    let index = stack.length\n\n    // Exit open containers.\n    while (index-- > size) {\n      const entry = stack[index]\n      self.containerState = entry[1]\n      entry[0].exit.call(self, effects)\n    }\n    stack.length = size\n  }\n  function closeFlow() {\n    childFlow.write([null])\n    childToken = undefined\n    childFlow = undefined\n    self.containerState._closeFlow = undefined\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeContainer(effects, ok, nok) {\n  // Always populated by defaults.\n\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').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nexport const blankLine = {\n  tokenize: tokenizeBlankLine,\n  partial: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLine(effects, ok, nok) {\n  return start\n\n  /**\n   * Start of blank line.\n   *\n   * > 👉 **Note**: `␠` represents a space character.\n   *\n   * ```markdown\n   * > | ␠␠␊\n   *     ^\n   * > | ␊\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    return markdownSpace(code)\n      ? factorySpace(effects, after, 'linePrefix')(code)\n      : after(code)\n  }\n\n  /**\n   * At eof/eol, after optional whitespace.\n   *\n   * > 👉 **Note**: `␠` represents a space character.\n   *\n   * ```markdown\n   * > | ␠␠␊\n   *       ^\n   * > | ␊\n   *     ^\n   * ```\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').Chunk} Chunk\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Token} Token\n */\n\nimport {splice} from 'micromark-util-chunked'\n/**\n * Tokenize subcontent.\n *\n * @param {Array<Event>} events\n *   List of events.\n * @returns {boolean}\n *   Whether subtokens were found.\n */\nexport function subtokenize(events) {\n  /** @type {Record<string, number>} */\n  const jumps = {}\n  let index = -1\n  /** @type {Event} */\n  let event\n  /** @type {number | undefined} */\n  let lineIndex\n  /** @type {number} */\n  let otherIndex\n  /** @type {Event} */\n  let otherEvent\n  /** @type {Array<Event>} */\n  let parameters\n  /** @type {Array<Event>} */\n  let subevents\n  /** @type {boolean | undefined} */\n  let more\n  while (++index < events.length) {\n    while (index in jumps) {\n      index = jumps[index]\n    }\n    event = events[index]\n\n    // 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    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      if (\n        otherIndex < subevents.length &&\n        subevents[otherIndex][1].type === 'lineEndingBlank'\n      ) {\n        otherIndex += 2\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          if (subevents[otherIndex][1].type === 'chunkText') {\n            subevents[otherIndex][1]._isInFirstContentOfListItem = true\n            otherIndex++\n          }\n        }\n      }\n    }\n\n    // Enter.\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    }\n    // Exit.\n    else if (event[1]._container) {\n      otherIndex = index\n      lineIndex = undefined\n      while (otherIndex--) {\n        otherEvent = events[otherIndex]\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            otherEvent[1].type = 'lineEnding'\n            lineIndex = otherIndex\n          }\n        } else {\n          break\n        }\n      }\n      if (lineIndex) {\n        // Fix position.\n        event[1].end = Object.assign({}, events[lineIndex][1].start)\n\n        // Switch container exit w/ line endings.\n        parameters = events.slice(lineIndex, index)\n        parameters.unshift(event)\n        splice(events, lineIndex, index - lineIndex + 1, parameters)\n      }\n    }\n  }\n  return !more\n}\n\n/**\n * Tokenize embedded tokens.\n *\n * @param {Array<Event>} events\n * @param {number} eventIndex\n * @returns {Record<string, number>}\n */\nfunction subcontent(events, eventIndex) {\n  const token = events[eventIndex][1]\n  const context = events[eventIndex][2]\n  let startPosition = eventIndex - 1\n  /** @type {Array<number>} */\n  const startPositions = []\n  const tokenizer =\n    token._tokenizer || context.parser[token.contentType](token.start)\n  const childEvents = tokenizer.events\n  /** @type {Array<[number, number]>} */\n  const jumps = []\n  /** @type {Record<string, number>} */\n  const gaps = {}\n  /** @type {Array<Chunk>} */\n  let stream\n  /** @type {Token | undefined} */\n  let previous\n  let index = -1\n  /** @type {Token | undefined} */\n  let current = token\n  let adjust = 0\n  let start = 0\n  const breaks = [start]\n\n  // Loop forward through the linked tokens to pass them in order to the\n  // subtokenizer.\n  while (current) {\n    // Find the position of the event for this token.\n    while (events[++startPosition][1] !== current) {\n      // Empty.\n    }\n    startPositions.push(startPosition)\n    if (!current._tokenizer) {\n      stream = context.sliceStream(current)\n      if (!current.next) {\n        stream.push(null)\n      }\n      if (previous) {\n        tokenizer.defineSkip(current.start)\n      }\n      if (current._isInFirstContentOfListItem) {\n        tokenizer._gfmTasklistFirstContentOfListItem = true\n      }\n      tokenizer.write(stream)\n      if (current._isInFirstContentOfListItem) {\n        tokenizer._gfmTasklistFirstContentOfListItem = undefined\n      }\n    }\n\n    // Unravel the next token.\n    previous = current\n    current = current.next\n  }\n\n  // Now, loop back through all events (and linked tokens), to figure out which\n  // parts belong where.\n  current = token\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)\n      // Help GC.\n      current._tokenizer = undefined\n      current.previous = undefined\n      current = current.next\n    }\n  }\n\n  // Help GC.\n  tokenizer.events = []\n\n  // 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  if (current) {\n    // Help GC.\n    current._tokenizer = undefined\n    current.previous = undefined\n  } else {\n    breaks.pop()\n  }\n\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  index = breaks.length\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  index = -1\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  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').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {subtokenize} from 'micromark-util-subtokenize'\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\n/** @type {Construct} */\nconst continuationConstruct = {\n  tokenize: tokenizeContinuation,\n  partial: true\n}\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 */\nfunction resolveContent(events) {\n  subtokenize(events)\n  return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeContent(effects, ok) {\n  /** @type {Token | undefined} */\n  let previous\n  return chunkStart\n\n  /**\n   * Before a content chunk.\n   *\n   * ```markdown\n   * > | abc\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function chunkStart(code) {\n    effects.enter('content')\n    previous = effects.enter('chunkContent', {\n      contentType: 'content'\n    })\n    return chunkInside(code)\n  }\n\n  /**\n   * In a content chunk.\n   *\n   * ```markdown\n   * > | abc\n   *     ^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function chunkInside(code) {\n    if (code === null) {\n      return contentEnd(code)\n    }\n\n    // To do: in `markdown-rs`, each line is parsed on its own, and everything\n    // is stitched together resolving.\n    if (markdownLineEnding(code)) {\n      return effects.check(\n        continuationConstruct,\n        contentContinue,\n        contentEnd\n      )(code)\n    }\n\n    // Data.\n    effects.consume(code)\n    return chunkInside\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function contentEnd(code) {\n    effects.exit('chunkContent')\n    effects.exit('content')\n    return ok(code)\n  }\n\n  /**\n   *\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 chunkInside\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeContinuation(effects, ok, nok) {\n  const self = this\n  return startLookahead\n\n  /**\n   *\n   *\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\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function prefixed(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return nok(code)\n    }\n\n    // Always populated by defaults.\n\n    const tail = self.events[self.events.length - 1]\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    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 * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\nimport {blankLine, content} from 'micromark-core-commonmark'\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {InitialConstruct} */\nexport const flow = {\n  tokenize: initializeFlow\n}\n\n/**\n * @this {TokenizeContext}\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,\n    // 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\n  /** @type {State} */\n  function atBlankEnding(code) {\n    if (code === null) {\n      effects.consume(code)\n      return\n    }\n    effects.enter('lineEndingBlank')\n    effects.consume(code)\n    effects.exit('lineEndingBlank')\n    self.currentConstruct = undefined\n    return initial\n  }\n\n  /** @type {State} */\n  function afterConstruct(code) {\n    if (code === null) {\n      effects.consume(code)\n      return\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').Code} Code\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\nexport const resolver = {\n  resolveAll: createResolver()\n}\nexport const string = initializeFactory('string')\nexport const text = initializeFactory('text')\n\n/**\n * @param {'string' | 'text'} field\n * @returns {InitialConstruct}\n */\nfunction initializeFactory(field) {\n  return {\n    tokenize: initializeText,\n    resolveAll: createResolver(\n      field === 'text' ? resolveAllLineSuffixes : undefined\n    )\n  }\n\n  /**\n   * @this {TokenizeContext}\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\n    /** @type {State} */\n    function start(code) {\n      return atBreak(code) ? text(code) : notText(code)\n    }\n\n    /** @type {State} */\n    function notText(code) {\n      if (code === null) {\n        effects.consume(code)\n        return\n      }\n      effects.enter('data')\n      effects.consume(code)\n      return data\n    }\n\n    /** @type {State} */\n    function data(code) {\n      if (atBreak(code)) {\n        effects.exit('data')\n        return text(code)\n      }\n\n      // Data.\n      effects.consume(code)\n      return data\n    }\n\n    /**\n     * @param {Code} code\n     * @returns {boolean}\n     */\n    function atBreak(code) {\n      if (code === null) {\n        return true\n      }\n      const list = constructs[code]\n      let index = -1\n      if (list) {\n        // Always populated by defaults.\n\n        while (++index < list.length) {\n          const item = list[index]\n          if (!item.previous || item.previous.call(self, self.previous)) {\n            return true\n          }\n        }\n      }\n      return false\n    }\n  }\n}\n\n/**\n * @param {Resolver | undefined} [extraResolver]\n * @returns {Resolver}\n */\nfunction createResolver(extraResolver) {\n  return resolveAllText\n\n  /** @type {Resolver} */\n  function resolveAllText(events, context) {\n    let index = -1\n    /** @type {number | undefined} */\n    let enter\n\n    // A rather boring computation (to merge adjacent `data` events) which\n    // improves mm performance by 29%.\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        enter = undefined\n      }\n    }\n    return extraResolver ? extraResolver(events, context) : events\n  }\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 */\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      let tabs\n      while (index--) {\n        const chunk = chunks[index]\n        if (typeof chunk === 'string') {\n          bufferIndex = chunk.length\n          while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n            size++\n            bufferIndex--\n          }\n          if (bufferIndex) break\n          bufferIndex = -1\n        }\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      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        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      eventIndex++\n    }\n  }\n  return events\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\n/**\n * Call all `resolveAll`s.\n *\n * @param {Array<{resolveAll?: Resolver | undefined}>} constructs\n *   List of constructs, optionally with `resolveAll`s.\n * @param {Array<Event>} events\n *   List of events.\n * @param {TokenizeContext} context\n *   Context used by `tokenize`.\n * @returns {Array<Event>}\n *   Changed events.\n */\nexport function resolveAll(constructs, events, context) {\n  /** @type {Array<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').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenType} TokenType\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\n/**\n * @callback Restore\n * @returns {void}\n *\n * @typedef Info\n * @property {Restore} 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 */\n\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {resolveAll} from 'micromark-util-resolve-all'\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, '_bufferIndex' | '_index'> | undefined} [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  const columnStart = {}\n  /** @type {Array<Construct>} */\n  const resolveAllConstructs = []\n  /** @type {Array<Chunk>} */\n  let chunks = []\n  /** @type {Array<Token>} */\n  let stack = []\n  /** @type {boolean | undefined} */\n  let consumed = true\n\n  /**\n   * Tools used for tokenizing.\n   *\n   * @type {Effects}\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  /**\n   * State and tools for resolving and serializing.\n   *\n   * @type {TokenizeContext}\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  /**\n   * The state function.\n   *\n   * @type {State | void}\n   */\n  let state = initialize.tokenize.call(context, effects)\n\n  /**\n   * Track which character we expect to be consumed, to catch bugs.\n   *\n   * @type {Code}\n   */\n  let expectedCode\n  if (initialize.resolveAll) {\n    resolveAllConstructs.push(initialize)\n  }\n  return context\n\n  /** @type {TokenizeContext['write']} */\n  function write(slice) {\n    chunks = push(chunks, slice)\n    main()\n\n    // Exit if we’re not done, resolve might change stuff.\n    if (chunks[chunks.length - 1] !== null) {\n      return []\n    }\n    addResult(initialize, 0)\n\n    // Otherwise, resolve, and exit.\n    context.events = resolveAll(resolveAllConstructs, context.events, context)\n    return context.events\n  }\n\n  //\n  // Tools.\n  //\n\n  /** @type {TokenizeContext['sliceSerialize']} */\n  function sliceSerialize(token, expandTabs) {\n    return serializeChunks(sliceStream(token), expandTabs)\n  }\n\n  /** @type {TokenizeContext['sliceStream']} */\n  function sliceStream(token) {\n    return sliceChunks(chunks, token)\n  }\n\n  /** @type {TokenizeContext['now']} */\n  function now() {\n    // This is a hot path, so we clone manually instead of `Object.assign({}, point)`\n    const {line, column, offset, _index, _bufferIndex} = point\n    return {\n      line,\n      column,\n      offset,\n      _index,\n      _bufferIndex\n    }\n  }\n\n  /** @type {TokenizeContext['defineSkip']} */\n  function defineSkip(value) {\n    columnStart[value.line] = value.column\n    accountForPotentialSkip()\n  }\n\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  function main() {\n    /** @type {number} */\n    let chunkIndex\n    while (point._index < chunks.length) {\n      const chunk = chunks[point._index]\n\n      // If we’re in a buffer chunk, loop through it.\n      if (typeof chunk === 'string') {\n        chunkIndex = point._index\n        if (point._bufferIndex < 0) {\n          point._bufferIndex = 0\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  /**\n   * Deal with one code.\n   *\n   * @param {Code} code\n   * @returns {void}\n   */\n  function go(code) {\n    consumed = undefined\n    expectedCode = code\n    state = state(code)\n  }\n\n  /** @type {Effects['consume']} */\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    }\n\n    // Not in a string chunk.\n    if (point._bufferIndex < 0) {\n      point._index++\n    } else {\n      point._bufferIndex++\n\n      // At end of string chunk.\n      // @ts-expect-error Points w/ non-negative `_bufferIndex` reference\n      // strings.\n      if (point._bufferIndex === chunks[point._index].length) {\n        point._bufferIndex = -1\n        point._index++\n      }\n    }\n\n    // Expose the previous character.\n    context.previous = code\n\n    // Mark as consumed.\n    consumed = true\n  }\n\n  /** @type {Effects['enter']} */\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\n  /** @type {Effects['exit']} */\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  /**\n   * Use results.\n   *\n   * @type {ReturnHandle}\n   */\n  function onsuccessfulconstruct(construct, info) {\n    addResult(construct, info.from)\n  }\n\n  /**\n   * Discard results.\n   *\n   * @type {ReturnHandle}\n   */\n  function onsuccessfulcheck(_, info) {\n    info.restore()\n  }\n\n  /**\n   * Factory to attempt/check/interrupt.\n   *\n   * @param {ReturnHandle} onreturn\n   * @param {{interrupt?: boolean | undefined} | undefined} [fields]\n   */\n  function constructFactory(onreturn, fields) {\n    return hook\n\n    /**\n     * Handle either an object mapping codes to constructs, a list of\n     * constructs, or a single construct.\n     *\n     * @param {Array<Construct> | Construct | ConstructRecord} constructs\n     * @param {State} returnState\n     * @param {State | undefined} [bogusState]\n     * @returns {State}\n     */\n    function hook(constructs, returnState, bogusState) {\n      /** @type {Array<Construct>} */\n      let listOfConstructs\n      /** @type {number} */\n      let constructIndex\n      /** @type {Construct} */\n      let currentConstruct\n      /** @type {Info} */\n      let info\n      return Array.isArray(constructs) /* c8 ignore next 1 */\n        ? handleListOfConstructs(constructs)\n        : 'tokenize' in constructs\n        ? // @ts-expect-error Looks like a construct.\n          handleListOfConstructs([constructs])\n        : handleMapOfConstructs(constructs)\n\n      /**\n       * Handle a list of construct.\n       *\n       * @param {ConstructRecord} map\n       * @returns {State}\n       */\n      function handleMapOfConstructs(map) {\n        return start\n\n        /** @type {State} */\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            /* 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      /**\n       * Handle a list of construct.\n       *\n       * @param {Array<Construct>} list\n       * @returns {State}\n       */\n      function handleListOfConstructs(list) {\n        listOfConstructs = list\n        constructIndex = 0\n        if (list.length === 0) {\n          return bogusState\n        }\n        return handleConstruct(list[constructIndex])\n      }\n\n      /**\n       * Handle a single construct.\n       *\n       * @param {Construct} construct\n       * @returns {State}\n       */\n      function handleConstruct(construct) {\n        return start\n\n        /** @type {State} */\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          if (!construct.partial) {\n            context.currentConstruct = construct\n          }\n\n          // Always populated by defaults.\n\n          if (\n            construct.name &&\n            context.parser.constructs.disable.null.includes(construct.name)\n          ) {\n            return nok(code)\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\n      /** @type {State} */\n      function ok(code) {\n        consumed = true\n        onreturn(currentConstruct, info)\n        return returnState\n      }\n\n      /** @type {State} */\n      function nok(code) {\n        consumed = true\n        info.restore()\n        if (++constructIndex < listOfConstructs.length) {\n          return handleConstruct(listOfConstructs[constructIndex])\n        }\n        return bogusState\n      }\n    }\n  }\n\n  /**\n   * @param {Construct} construct\n   * @param {number} from\n   * @returns {void}\n   */\n  function addResult(construct, from) {\n    if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n      resolveAllConstructs.push(construct)\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    if (construct.resolveTo) {\n      context.events = construct.resolveTo(context.events, context)\n    }\n  }\n\n  /**\n   * Store state.\n   *\n   * @returns {Info}\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    /**\n     * Restore state.\n     *\n     * @returns {void}\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  /**\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  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/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {Array<Chunk>} chunks\n * @param {Pick<Token, 'end' | 'start'>} token\n * @returns {Array<Chunk>}\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 {Array<Chunk>} */\n  let view\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    if (startBufferIndex > -1) {\n      const head = view[0]\n      if (typeof head === 'string') {\n        view[0] = head.slice(startBufferIndex)\n      } else {\n        view.shift()\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  return view\n}\n\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {Array<Chunk>} chunks\n * @param {boolean | undefined} [expandTabs=false]\n * @returns {string}\n */\nfunction serializeChunks(chunks, expandTabs) {\n  let index = -1\n  /** @type {Array<string>} */\n  const result = []\n  /** @type {boolean | undefined} */\n  let atTab\n  while (++index < chunks.length) {\n    const chunk = chunks[index]\n    /** @type {string} */\n    let value\n    if (typeof chunk === 'string') {\n      value = chunk\n    } else\n      switch (chunk) {\n        case -5: {\n          value = '\\r'\n          break\n        }\n        case -4: {\n          value = '\\n'\n          break\n        }\n        case -3: {\n          value = '\\r' + '\\n'\n          break\n        }\n        case -2: {\n          value = expandTabs ? ' ' : '\\t'\n          break\n        }\n        case -1: {\n          if (!expandTabs && atTab) continue\n          value = ' '\n          break\n        }\n        default: {\n          // Currently only replacement character.\n          value = String.fromCharCode(chunk)\n        }\n      }\n    atTab = chunk === -2\n    result.push(value)\n  }\n  return result.join('')\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nexport const thematicBreak = {\n  name: 'thematicBreak',\n  tokenize: tokenizeThematicBreak\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeThematicBreak(effects, ok, nok) {\n  let size = 0\n  /** @type {NonNullable<Code>} */\n  let marker\n  return start\n\n  /**\n   * Start of thematic break.\n   *\n   * ```markdown\n   * > | ***\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter('thematicBreak')\n    // To do: parse indent like `markdown-rs`.\n    return before(code)\n  }\n\n  /**\n   * After optional whitespace, at marker.\n   *\n   * ```markdown\n   * > | ***\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    marker = code\n    return atBreak(code)\n  }\n\n  /**\n   * After something, before something else.\n   *\n   * ```markdown\n   * > | ***\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (code === marker) {\n      effects.enter('thematicBreakSequence')\n      return sequence(code)\n    }\n    if (size >= 3 && (code === null || markdownLineEnding(code))) {\n      effects.exit('thematicBreak')\n      return ok(code)\n    }\n    return nok(code)\n  }\n\n  /**\n   * In sequence.\n   *\n   * ```markdown\n   * > | ***\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequence(code) {\n    if (code === marker) {\n      effects.consume(code)\n      size++\n      return sequence\n    }\n    effects.exit('thematicBreakSequence')\n    return markdownSpace(code)\n      ? factorySpace(effects, atBreak, 'whitespace')(code)\n      : atBreak(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').ContainerState} ContainerState\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\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\n/** @type {Construct} */\nexport const list = {\n  name: 'list',\n  tokenize: tokenizeListStart,\n  continuation: {\n    tokenize: tokenizeListContinuation\n  },\n  exit: tokenizeListEnd\n}\n\n/** @type {Construct} */\nconst listItemPrefixWhitespaceConstruct = {\n  tokenize: tokenizeListItemPrefixWhitespace,\n  partial: true\n}\n\n/** @type {Construct} */\nconst indentConstruct = {\n  tokenize: tokenizeIndent,\n  partial: true\n}\n\n// To do: `markdown-rs` parses list items on their own and later stitches them\n// together.\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\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\n  /** @type {State} */\n  function start(code) {\n    const kind =\n      self.containerState.type ||\n      (code === 42 || code === 43 || code === 45\n        ? 'listUnordered'\n        : 'listOrdered')\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      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      if (!self.interrupt || code === 49) {\n        effects.enter('listItemPrefix')\n        effects.enter('listItemValue')\n        return inside(code)\n      }\n    }\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function inside(code) {\n    if (asciiDigit(code) && ++size < 10) {\n      effects.consume(code)\n      return inside\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    return nok(code)\n  }\n\n  /**\n   * @type {State}\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,\n      // Can’t be empty when interrupting.\n      self.interrupt ? nok : onBlank,\n      effects.attempt(\n        listItemPrefixWhitespaceConstruct,\n        endOfPrefix,\n        otherPrefix\n      )\n    )\n  }\n\n  /** @type {State} */\n  function onBlank(code) {\n    self.containerState.initialBlankLine = true\n    initialSize++\n    return endOfPrefix(code)\n  }\n\n  /** @type {State} */\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    return nok(code)\n  }\n\n  /** @type {State} */\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/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeListContinuation(effects, ok, nok) {\n  const self = this\n  self.containerState._closeFlow = undefined\n  return effects.check(blankLine, onBlank, notBlank)\n\n  /** @type {State} */\n  function onBlank(code) {\n    self.containerState.furtherBlankLines =\n      self.containerState.furtherBlankLines ||\n      self.containerState.initialBlankLine\n\n    // We have a blank line.\n    // Still, try to consume at most the items size.\n    return factorySpace(\n      effects,\n      ok,\n      'listItemIndent',\n      self.containerState.size + 1\n    )(code)\n  }\n\n  /** @type {State} */\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    self.containerState.furtherBlankLines = undefined\n    self.containerState.initialBlankLine = undefined\n    return effects.attempt(indentConstruct, ok, notInCurrentItem)(code)\n  }\n\n  /** @type {State} */\n  function notInCurrentItem(code) {\n    // While we do continue, we signal that the flow should be closed.\n    self.containerState._closeFlow = true\n    // As we’re closing flow, we’re no longer interrupting.\n    self.interrupt = undefined\n    // Always populated by defaults.\n\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/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\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\n  /** @type {State} */\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/**\n * @type {Exiter}\n * @this {TokenizeContext}\n */\nfunction tokenizeListEnd(effects) {\n  effects.exit(this.containerState.type)\n}\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n  const self = this\n\n  // Always populated by defaults.\n\n  return factorySpace(\n    effects,\n    afterPrefix,\n    'listItemPrefixWhitespace',\n    self.parser.constructs.disable.null.includes('codeIndented')\n      ? undefined\n      : 4 + 1\n  )\n\n  /** @type {State} */\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').Exiter} Exiter\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nexport const blockQuote = {\n  name: 'blockQuote',\n  tokenize: tokenizeBlockQuoteStart,\n  continuation: {\n    tokenize: tokenizeBlockQuoteContinuation\n  },\n  exit\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n  const self = this\n  return start\n\n  /**\n   * Start of block quote.\n   *\n   * ```markdown\n   * > | > a\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (code === 62) {\n      const state = self.containerState\n      if (!state.open) {\n        effects.enter('blockQuote', {\n          _container: true\n        })\n        state.open = true\n      }\n      effects.enter('blockQuotePrefix')\n      effects.enter('blockQuoteMarker')\n      effects.consume(code)\n      effects.exit('blockQuoteMarker')\n      return after\n    }\n    return nok(code)\n  }\n\n  /**\n   * After `>`, before optional whitespace.\n   *\n   * ```markdown\n   * > | > a\n   *      ^\n   * ```\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    effects.exit('blockQuotePrefix')\n    return ok(code)\n  }\n}\n\n/**\n * Start of block quote continuation.\n *\n * ```markdown\n *   | > a\n * > | > b\n *     ^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n  const self = this\n  return contStart\n\n  /**\n   * Start of block quote continuation.\n   *\n   * Also used to parse the first block quote opening.\n   *\n   * ```markdown\n   *   | > a\n   * > | > b\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function contStart(code) {\n    if (markdownSpace(code)) {\n      // Always populated by defaults.\n\n      return factorySpace(\n        effects,\n        contBefore,\n        'linePrefix',\n        self.parser.constructs.disable.null.includes('codeIndented')\n          ? undefined\n          : 4\n      )(code)\n    }\n    return contBefore(code)\n  }\n\n  /**\n   * At `>`, after optional whitespace.\n   *\n   * Also used to parse the first block quote opening.\n   *\n   * ```markdown\n   *   | > a\n   * > | > b\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function contBefore(code) {\n    return effects.attempt(blockQuote, ok, nok)(code)\n  }\n}\n\n/** @type {Exiter} */\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 * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\nimport {\n  asciiControl,\n  markdownLineEndingOrSpace,\n  markdownLineEnding\n} from 'micromark-util-character'\n/**\n * Parse destinations.\n *\n * ###### Examples\n *\n * ```markdown\n * <a>\n * <a\\>b>\n * <a b>\n * <a)>\n * a\n * a\\)b\n * a(b)c\n * a(b)\n * ```\n *\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @param {State} nok\n *   State switched to when unsuccessful.\n * @param {TokenType} type\n *   Type for whole (`<a>` or `b`).\n * @param {TokenType} literalType\n *   Type when enclosed (`<a>`).\n * @param {TokenType} literalMarkerType\n *   Type for enclosing (`<` and `>`).\n * @param {TokenType} rawType\n *   Type when not enclosed (`b`).\n * @param {TokenType} stringType\n *   Type for the value (`a` or `b`).\n * @param {number | undefined} [max=Infinity]\n *   Depth of nested parens (inclusive).\n * @returns {State}\n *   Start state.\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\n  /**\n   * Start of destination.\n   *\n   * ```markdown\n   * > | <aa>\n   *     ^\n   * > | aa\n   *     ^\n   * ```\n   *\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 enclosedBefore\n    }\n\n    // ASCII control, space, closing paren.\n    if (code === null || code === 32 || code === 41 || asciiControl(code)) {\n      return nok(code)\n    }\n    effects.enter(type)\n    effects.enter(rawType)\n    effects.enter(stringType)\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return raw(code)\n  }\n\n  /**\n   * After `<`, at an enclosed destination.\n   *\n   * ```markdown\n   * > | <aa>\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function enclosedBefore(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    effects.enter(stringType)\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return enclosed(code)\n  }\n\n  /**\n   * In enclosed destination.\n   *\n   * ```markdown\n   * > | <aa>\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function enclosed(code) {\n    if (code === 62) {\n      effects.exit('chunkString')\n      effects.exit(stringType)\n      return enclosedBefore(code)\n    }\n    if (code === null || code === 60 || markdownLineEnding(code)) {\n      return nok(code)\n    }\n    effects.consume(code)\n    return code === 92 ? enclosedEscape : enclosed\n  }\n\n  /**\n   * After `\\`, at a special character.\n   *\n   * ```markdown\n   * > | <a\\*a>\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function enclosedEscape(code) {\n    if (code === 60 || code === 62 || code === 92) {\n      effects.consume(code)\n      return enclosed\n    }\n    return enclosed(code)\n  }\n\n  /**\n   * In raw destination.\n   *\n   * ```markdown\n   * > | aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function raw(code) {\n    if (\n      !balance &&\n      (code === null || code === 41 || markdownLineEndingOrSpace(code))\n    ) {\n      effects.exit('chunkString')\n      effects.exit(stringType)\n      effects.exit(rawType)\n      effects.exit(type)\n      return ok(code)\n    }\n    if (balance < limit && code === 40) {\n      effects.consume(code)\n      balance++\n      return raw\n    }\n    if (code === 41) {\n      effects.consume(code)\n      balance--\n      return raw\n    }\n\n    // ASCII control (but *not* `\\0`) and space and `(`.\n    // Note: in `markdown-rs`, `\\0` exists in codes, in `micromark-js` it\n    // doesn’t.\n    if (code === null || code === 32 || code === 40 || asciiControl(code)) {\n      return nok(code)\n    }\n    effects.consume(code)\n    return code === 92 ? rawEscape : raw\n  }\n\n  /**\n   * After `\\`, at special character.\n   *\n   * ```markdown\n   * > | a\\*a\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function rawEscape(code) {\n    if (code === 40 || code === 41 || code === 92) {\n      effects.consume(code)\n      return raw\n    }\n    return raw(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').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/**\n * Parse labels.\n *\n * > 👉 **Note**: labels in markdown are capped at 999 characters in the string.\n *\n * ###### Examples\n *\n * ```markdown\n * [a]\n * [a\n * b]\n * [a\\]b]\n * ```\n *\n * @this {TokenizeContext}\n *   Tokenize context.\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @param {State} nok\n *   State switched to when unsuccessful.\n * @param {TokenType} type\n *   Type of the whole label (`[a]`).\n * @param {TokenType} markerType\n *   Type for the markers (`[` and `]`).\n * @param {TokenType} stringType\n *   Type for the identifier (`a`).\n * @returns {State}\n *   Start state.\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  let seen\n  return start\n\n  /**\n   * Start of label.\n   *\n   * ```markdown\n   * > | [a]\n   *     ^\n   * ```\n   *\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\n  /**\n   * In label, at something, before something else.\n   *\n   * ```markdown\n   * > | [a]\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (\n      size > 999 ||\n      code === null ||\n      code === 91 ||\n      (code === 93 && !seen) ||\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      // Hidden footnotes hook.\n      /* c8 ignore next 3 */\n      (code === 94 &&\n        !size &&\n        '_hiddenFootnoteSupport' in self.parser.constructs)\n    ) {\n      return nok(code)\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    // To do: indent? Link chunks and EOLs together?\n    if (markdownLineEnding(code)) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return atBreak\n    }\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return labelInside(code)\n  }\n\n  /**\n   * In label, in text.\n   *\n   * ```markdown\n   * > | [a]\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelInside(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    effects.consume(code)\n    if (!seen) seen = !markdownSpace(code)\n    return code === 92 ? labelEscape : labelInside\n  }\n\n  /**\n   * After `\\`, at a special character.\n   *\n   * ```markdown\n   * > | [a\\*a]\n   *        ^\n   * ```\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 labelInside\n    }\n    return labelInside(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/**\n * Parse titles.\n *\n * ###### Examples\n *\n * ```markdown\n * \"a\"\n * 'b'\n * (c)\n * \"a\n * b\"\n * 'a\n *     b'\n * (a\\)b)\n * ```\n *\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @param {State} nok\n *   State switched to when unsuccessful.\n * @param {TokenType} type\n *   Type of the whole title (`\"a\"`, `'b'`, `(c)`).\n * @param {TokenType} markerType\n *   Type for the markers (`\"`, `'`, `(`, and `)`).\n * @param {TokenType} stringType\n *   Type for the value (`a`).\n * @returns {State}\n *   Start state.\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\n  /**\n   * Start of title.\n   *\n   * ```markdown\n   * > | \"a\"\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (code === 34 || code === 39 || code === 40) {\n      effects.enter(type)\n      effects.enter(markerType)\n      effects.consume(code)\n      effects.exit(markerType)\n      marker = code === 40 ? 41 : code\n      return begin\n    }\n    return nok(code)\n  }\n\n  /**\n   * After opening marker.\n   *\n   * This is also used at the closing marker.\n   *\n   * ```markdown\n   * > | \"a\"\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function begin(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    effects.enter(stringType)\n    return atBreak(code)\n  }\n\n  /**\n   * At something, before something else.\n   *\n   * ```markdown\n   * > | \"a\"\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (code === marker) {\n      effects.exit(stringType)\n      return begin(marker)\n    }\n    if (code === null) {\n      return nok(code)\n    }\n\n    // Note: blank lines can’t exist in content.\n    if (markdownLineEnding(code)) {\n      // To do: use `space_or_tab_eol_with_options`, connect.\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return factorySpace(effects, atBreak, 'linePrefix')\n    }\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return inside(code)\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    if (code === marker || code === null || markdownLineEnding(code)) {\n      effects.exit('chunkString')\n      return atBreak(code)\n    }\n    effects.consume(code)\n    return code === 92 ? escape : inside\n  }\n\n  /**\n   * After `\\`, at a special character.\n   *\n   * ```markdown\n   * > | \"a\\*b\"\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function escape(code) {\n    if (code === marker || code === 92) {\n      effects.consume(code)\n      return inside\n    }\n    return inside(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * *   line endings or spaces in markdown are often optional, in which case this\n *     factory can be used and `ok` will be switched to whether spaces were found\n *     or not\n * *   one line ending or space can be detected with\n *     `markdownLineEndingOrSpace(code)` right before using `factoryWhitespace`\n *\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @returns\n *   Start state.\n */\nexport function factoryWhitespace(effects, ok) {\n  /** @type {boolean} */\n  let seen\n  return start\n\n  /** @type {State} */\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    if (markdownSpace(code)) {\n      return factorySpace(\n        effects,\n        start,\n        seen ? 'linePrefix' : 'lineSuffix'\n      )(code)\n    }\n    return ok(code)\n  }\n}\n","/**\n * Normalize an identifier (as found in references, definitions).\n *\n * Collapses markdown whitespace, trim, and then lower- and uppercase.\n *\n * Some characters are considered “uppercase”, such as U+03F4 (`ϴ`), but if their\n * lowercase counterpart (U+03B8 (`θ`)) is uppercased will result in a different\n * uppercase character (U+0398 (`Θ`)).\n * So, to get a canonical form, we perform both lower- and uppercase.\n *\n * Using uppercase last makes sure keys will never interact with default\n * prototypal values (such as `constructor`): nothing in the prototype of\n * `Object` is uppercase.\n *\n * @param {string} value\n *   Identifier to normalize.\n * @returns {string}\n *   Normalized identifier.\n */\nexport function normalizeIdentifier(value) {\n  return (\n    value\n      // Collapse markdown whitespace.\n      .replace(/[\\t\\n\\r ]+/g, ' ')\n      // Trim.\n      .replace(/^ | $/g, '')\n      // 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').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\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 {\n  markdownLineEnding,\n  markdownLineEndingOrSpace,\n  markdownSpace\n} from 'micromark-util-character'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\n/** @type {Construct} */\nexport const definition = {\n  name: 'definition',\n  tokenize: tokenizeDefinition\n}\n\n/** @type {Construct} */\nconst titleBefore = {\n  tokenize: tokenizeTitleBefore,\n  partial: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinition(effects, ok, nok) {\n  const self = this\n  /** @type {string} */\n  let identifier\n  return start\n\n  /**\n   * At start of a definition.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // Do not interrupt paragraphs (but do follow definitions).\n    // To do: do `interrupt` the way `markdown-rs` does.\n    // To do: parse whitespace the way `markdown-rs` does.\n    effects.enter('definition')\n    return before(code)\n  }\n\n  /**\n   * After optional whitespace, at `[`.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    // To do: parse whitespace the way `markdown-rs` does.\n\n    return factoryLabel.call(\n      self,\n      effects,\n      labelAfter,\n      // Note: we don’t need to reset the way `markdown-rs` does.\n      nok,\n      'definitionLabel',\n      'definitionLabelMarker',\n      'definitionLabelString'\n    )(code)\n  }\n\n  /**\n   * After label.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *        ^\n   * ```\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    if (code === 58) {\n      effects.enter('definitionMarker')\n      effects.consume(code)\n      effects.exit('definitionMarker')\n      return markerAfter\n    }\n    return nok(code)\n  }\n\n  /**\n   * After marker.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function markerAfter(code) {\n    // Note: whitespace is optional.\n    return markdownLineEndingOrSpace(code)\n      ? factoryWhitespace(effects, destinationBefore)(code)\n      : destinationBefore(code)\n  }\n\n  /**\n   * Before destination.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function destinationBefore(code) {\n    return factoryDestination(\n      effects,\n      destinationAfter,\n      // Note: we don’t need to reset the way `markdown-rs` does.\n      nok,\n      'definitionDestination',\n      'definitionDestinationLiteral',\n      'definitionDestinationLiteralMarker',\n      'definitionDestinationRaw',\n      'definitionDestinationString'\n    )(code)\n  }\n\n  /**\n   * After destination.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function destinationAfter(code) {\n    return effects.attempt(titleBefore, after, after)(code)\n  }\n\n  /**\n   * After definition.\n   *\n   * ```markdown\n   * > | [a]: b\n   *           ^\n   * > | [a]: b \"c\"\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    return markdownSpace(code)\n      ? factorySpace(effects, afterWhitespace, 'whitespace')(code)\n      : afterWhitespace(code)\n  }\n\n  /**\n   * After definition, after optional whitespace.\n   *\n   * ```markdown\n   * > | [a]: b\n   *           ^\n   * > | [a]: b \"c\"\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function afterWhitespace(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('definition')\n\n      // Note: we don’t care about uniqueness.\n      // It’s likely that that doesn’t happen very frequently.\n      // It is more likely that it wastes precious time.\n      self.parser.defined.push(identifier)\n\n      // To do: `markdown-rs` interrupt.\n      // // You’d be interrupting.\n      // tokenizer.interrupt = true\n      return ok(code)\n    }\n    return nok(code)\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTitleBefore(effects, ok, nok) {\n  return titleBefore\n\n  /**\n   * After destination, at whitespace.\n   *\n   * ```markdown\n   * > | [a]: b\n   *           ^\n   * > | [a]: b \"c\"\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function titleBefore(code) {\n    return markdownLineEndingOrSpace(code)\n      ? factoryWhitespace(effects, beforeMarker)(code)\n      : nok(code)\n  }\n\n  /**\n   * At title.\n   *\n   * ```markdown\n   *   | [a]: b\n   * > | \"c\"\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function beforeMarker(code) {\n    return factoryTitle(\n      effects,\n      titleAfter,\n      nok,\n      'definitionTitle',\n      'definitionTitleMarker',\n      'definitionTitleString'\n    )(code)\n  }\n\n  /**\n   * After title.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function titleAfter(code) {\n    return markdownSpace(code)\n      ? factorySpace(effects, titleAfterOptionalWhitespace, 'whitespace')(code)\n      : titleAfterOptionalWhitespace(code)\n  }\n\n  /**\n   * After title, after optional whitespace.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function titleAfterOptionalWhitespace(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').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nexport const codeIndented = {\n  name: 'codeIndented',\n  tokenize: tokenizeCodeIndented\n}\n\n/** @type {Construct} */\nconst furtherStart = {\n  tokenize: tokenizeFurtherStart,\n  partial: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeIndented(effects, ok, nok) {\n  const self = this\n  return start\n\n  /**\n   * Start of code (indented).\n   *\n   * > **Parsing note**: it is not needed to check if this first line is a\n   * > filled line (that it has a non-whitespace character), because blank lines\n   * > are parsed already, so we never run into that.\n   *\n   * ```markdown\n   * > |     aaa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // To do: manually check if interrupting like `markdown-rs`.\n\n    effects.enter('codeIndented')\n    // To do: use an improved `space_or_tab` function like `markdown-rs`,\n    // so that we can drop the next state.\n    return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)(code)\n  }\n\n  /**\n   * At start, after 1 or 4 spaces.\n   *\n   * ```markdown\n   * > |     aaa\n   *         ^\n   * ```\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      ? atBreak(code)\n      : nok(code)\n  }\n\n  /**\n   * At a break.\n   *\n   * ```markdown\n   * > |     aaa\n   *         ^  ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (code === null) {\n      return after(code)\n    }\n    if (markdownLineEnding(code)) {\n      return effects.attempt(furtherStart, atBreak, after)(code)\n    }\n    effects.enter('codeFlowValue')\n    return inside(code)\n  }\n\n  /**\n   * In code content.\n   *\n   * ```markdown\n   * > |     aaa\n   *         ^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('codeFlowValue')\n      return atBreak(code)\n    }\n    effects.consume(code)\n    return inside\n  }\n\n  /** @type {State} */\n  function after(code) {\n    effects.exit('codeIndented')\n    // To do: allow interrupting like `markdown-rs`.\n    // Feel free to interrupt.\n    // tokenizer.interrupt = false\n    return ok(code)\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeFurtherStart(effects, ok, nok) {\n  const self = this\n  return furtherStart\n\n  /**\n   * At eol, trying to parse another indent.\n   *\n   * ```markdown\n   * > |     aaa\n   *            ^\n   *   |     bbb\n   * ```\n   *\n   * @type {State}\n   */\n  function furtherStart(code) {\n    // To do: improve `lazy` / `pierce` handling.\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    if (markdownLineEnding(code)) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return furtherStart\n    }\n\n    // To do: the code here in `micromark-js` is a bit different from\n    // `markdown-rs` because there it can attempt spaces.\n    // We can’t yet.\n    //\n    // To do: use an improved `space_or_tab` function like `markdown-rs`,\n    // so that we can drop the next state.\n    return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)(code)\n  }\n\n  /**\n   * At start, after 1 or 4 spaces.\n   *\n   * ```markdown\n   * > |     aaa\n   *         ^\n   * ```\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      ? furtherStart(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').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\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/** @type {Construct} */\nexport const headingAtx = {\n  name: 'headingAtx',\n  tokenize: tokenizeHeadingAtx,\n  resolve: resolveHeadingAtx\n}\n\n/** @type {Resolver} */\nfunction resolveHeadingAtx(events, context) {\n  let contentEnd = events.length - 2\n  let contentStart = 3\n  /** @type {Token} */\n  let content\n  /** @type {Token} */\n  let text\n\n  // Prefix whitespace, part of the opening.\n  if (events[contentStart][1].type === 'whitespace') {\n    contentStart += 2\n  }\n\n  // Suffix whitespace, part of the closing.\n  if (\n    contentEnd - 2 > contentStart &&\n    events[contentEnd][1].type === 'whitespace'\n  ) {\n    contentEnd -= 2\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  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      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  return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n  let size = 0\n  return start\n\n  /**\n   * Start of a heading (atx).\n   *\n   * ```markdown\n   * > | ## aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // To do: parse indent like `markdown-rs`.\n    effects.enter('atxHeading')\n    return before(code)\n  }\n\n  /**\n   * After optional whitespace, at `#`.\n   *\n   * ```markdown\n   * > | ## aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    effects.enter('atxHeadingSequence')\n    return sequenceOpen(code)\n  }\n\n  /**\n   * In opening sequence.\n   *\n   * ```markdown\n   * > | ## aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceOpen(code) {\n    if (code === 35 && size++ < 6) {\n      effects.consume(code)\n      return sequenceOpen\n    }\n\n    // Always at least one `#`.\n    if (code === null || markdownLineEndingOrSpace(code)) {\n      effects.exit('atxHeadingSequence')\n      return atBreak(code)\n    }\n    return nok(code)\n  }\n\n  /**\n   * After something, before something else.\n   *\n   * ```markdown\n   * > | ## aa\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (code === 35) {\n      effects.enter('atxHeadingSequence')\n      return sequenceFurther(code)\n    }\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('atxHeading')\n      // To do: interrupt like `markdown-rs`.\n      // // Feel free to interrupt.\n      // tokenizer.interrupt = false\n      return ok(code)\n    }\n    if (markdownSpace(code)) {\n      return factorySpace(effects, atBreak, 'whitespace')(code)\n    }\n\n    // To do: generate `data` tokens, add the `text` token later.\n    // Needs edit map, see: `markdown.rs`.\n    effects.enter('atxHeadingText')\n    return data(code)\n  }\n\n  /**\n   * In further sequence (after whitespace).\n   *\n   * Could be normal “visible” hashes in the heading or a final sequence.\n   *\n   * ```markdown\n   * > | ## aa ##\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceFurther(code) {\n    if (code === 35) {\n      effects.consume(code)\n      return sequenceFurther\n    }\n    effects.exit('atxHeadingSequence')\n    return atBreak(code)\n  }\n\n  /**\n   * In text.\n   *\n   * ```markdown\n   * > | ## aa\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function data(code) {\n    if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n      effects.exit('atxHeadingText')\n      return atBreak(code)\n    }\n    effects.consume(code)\n    return data\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nexport const setextUnderline = {\n  name: 'setextUnderline',\n  tokenize: tokenizeSetextUnderline,\n  resolveTo: resolveToSetextUnderline\n}\n\n/** @type {Resolver} */\nfunction resolveToSetextUnderline(events, context) {\n  // To do: resolve like `markdown-rs`.\n  let index = events.length\n  /** @type {number | undefined} */\n  let content\n  /** @type {number | undefined} */\n  let text\n  /** @type {number | undefined} */\n  let definition\n\n  // Find the opening of the content.\n  // It’ll always exist: we don’t tokenize if it isn’t there.\n  while (index--) {\n    if (events[index][0] === 'enter') {\n      if (events[index][1].type === 'content') {\n        content = index\n        break\n      }\n      if (events[index][1].type === 'paragraph') {\n        text = index\n      }\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      if (!definition && events[index][1].type === 'definition') {\n        definition = index\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  }\n\n  // Change the paragraph to setext heading text.\n  events[text][1].type = 'setextHeadingText'\n\n  // If we have definitions in the content, we’ll keep on having content,\n  // but we need move it.\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  }\n\n  // Add the heading exit at the end.\n  events.push(['exit', heading, context])\n  return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n  const self = this\n  /** @type {NonNullable<Code>} */\n  let marker\n  return start\n\n  /**\n   * At start of heading (setext) underline.\n   *\n   * ```markdown\n   *   | aa\n   * > | ==\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    let index = self.events.length\n    /** @type {boolean | undefined} */\n    let paragraph\n    // Find an opening.\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    // To do: handle lazy/pierce like `markdown-rs`.\n    // To do: parse indent like `markdown-rs`.\n    if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) {\n      effects.enter('setextHeadingLine')\n      marker = code\n      return before(code)\n    }\n    return nok(code)\n  }\n\n  /**\n   * After optional whitespace, at `-` or `=`.\n   *\n   * ```markdown\n   *   | aa\n   * > | ==\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    effects.enter('setextHeadingLineSequence')\n    return inside(code)\n  }\n\n  /**\n   * In sequence.\n   *\n   * ```markdown\n   *   | aa\n   * > | ==\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    if (code === marker) {\n      effects.consume(code)\n      return inside\n    }\n    effects.exit('setextHeadingLineSequence')\n    return markdownSpace(code)\n      ? factorySpace(effects, after, 'lineSuffix')(code)\n      : after(code)\n  }\n\n  /**\n   * After sequence, after optional whitespace.\n   *\n   * ```markdown\n   *   | aa\n   * > | ==\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('setextHeadingLine')\n      return ok(code)\n    }\n    return nok(code)\n  }\n}\n","/**\n * List of lowercase HTML “block” tag names.\n *\n * The list, when parsing HTML (flow), results in more relaxed rules (condition\n * 6).\n * Because they are known blocks, the HTML-like syntax doesn’t have to be\n * 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 *\n * > 👉 **Note**: `search` was added in `CommonMark@0.31`.\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  'search',\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 “raw” tag names.\n *\n * The list, when parsing HTML (flow), results in HTML that can include lines\n * without exiting, until a closing tag also in this list is found (condition\n * 1).\n *\n * This module is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n *\n * > 👉 **Note**: `textarea` was added in `CommonMark@0.30`.\n */\nexport const htmlRawNames = ['pre', 'script', 'style', 'textarea']\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\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\n/** @type {Construct} */\nexport const htmlFlow = {\n  name: 'htmlFlow',\n  tokenize: tokenizeHtmlFlow,\n  resolveTo: resolveToHtmlFlow,\n  concrete: true\n}\n\n/** @type {Construct} */\nconst blankLineBefore = {\n  tokenize: tokenizeBlankLineBefore,\n  partial: true\n}\nconst nonLazyContinuationStart = {\n  tokenize: tokenizeNonLazyContinuationStart,\n  partial: true\n}\n\n/** @type {Resolver} */\nfunction resolveToHtmlFlow(events) {\n  let index = events.length\n  while (index--) {\n    if (events[index][0] === 'enter' && events[index][1].type === 'htmlFlow') {\n      break\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\n    // Add the prefix start to the HTML line token.\n    events[index + 1][1].start = events[index - 2][1].start\n    // Remove the line prefix.\n    events.splice(index - 2, 2)\n  }\n  return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n  const self = this\n  /** @type {number} */\n  let marker\n  /** @type {boolean} */\n  let closingTag\n  /** @type {string} */\n  let buffer\n  /** @type {number} */\n  let index\n  /** @type {Code} */\n  let markerB\n  return start\n\n  /**\n   * Start of HTML (flow).\n   *\n   * ```markdown\n   * > | <x />\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // To do: parse indent like `markdown-rs`.\n    return before(code)\n  }\n\n  /**\n   * At `<`, after optional whitespace.\n   *\n   * ```markdown\n   * > | <x />\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    effects.enter('htmlFlow')\n    effects.enter('htmlFlowData')\n    effects.consume(code)\n    return open\n  }\n\n  /**\n   * After `<`, at tag name or other stuff.\n   *\n   * ```markdown\n   * > | <x />\n   *      ^\n   * > | <!doctype>\n   *      ^\n   * > | <!--xxx-->\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (code === 33) {\n      effects.consume(code)\n      return declarationOpen\n    }\n    if (code === 47) {\n      effects.consume(code)\n      closingTag = true\n      return tagCloseStart\n    }\n    if (code === 63) {\n      effects.consume(code)\n      marker = 3\n      // To do:\n      // tokenizer.concrete = true\n      // To do: use `markdown-rs` style interrupt.\n      // 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      return self.interrupt ? ok : continuationDeclarationInside\n    }\n\n    // ASCII alphabetical.\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      // @ts-expect-error: not null.\n      buffer = String.fromCharCode(code)\n      return tagName\n    }\n    return nok(code)\n  }\n\n  /**\n   * After `<!`, at declaration, comment, or CDATA.\n   *\n   * ```markdown\n   * > | <!doctype>\n   *       ^\n   * > | <!--xxx-->\n   *       ^\n   * > | <![CDATA[>&<]]>\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function declarationOpen(code) {\n    if (code === 45) {\n      effects.consume(code)\n      marker = 2\n      return commentOpenInside\n    }\n    if (code === 91) {\n      effects.consume(code)\n      marker = 5\n      index = 0\n      return cdataOpenInside\n    }\n\n    // ASCII alphabetical.\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      marker = 4\n      // // Do not form containers.\n      // tokenizer.concrete = true\n      return self.interrupt ? ok : continuationDeclarationInside\n    }\n    return nok(code)\n  }\n\n  /**\n   * After `<!-`, inside a comment, at another `-`.\n   *\n   * ```markdown\n   * > | <!--xxx-->\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function commentOpenInside(code) {\n    if (code === 45) {\n      effects.consume(code)\n      // // Do not form containers.\n      // tokenizer.concrete = true\n      return self.interrupt ? ok : continuationDeclarationInside\n    }\n    return nok(code)\n  }\n\n  /**\n   * After `<![`, inside CDATA, expecting `CDATA[`.\n   *\n   * ```markdown\n   * > | <![CDATA[>&<]]>\n   *        ^^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdataOpenInside(code) {\n    const value = 'CDATA['\n    if (code === value.charCodeAt(index++)) {\n      effects.consume(code)\n      if (index === value.length) {\n        // // Do not form containers.\n        // tokenizer.concrete = true\n        return self.interrupt ? ok : continuation\n      }\n      return cdataOpenInside\n    }\n    return nok(code)\n  }\n\n  /**\n   * After `</`, in closing tag, at tag name.\n   *\n   * ```markdown\n   * > | </x>\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagCloseStart(code) {\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      // @ts-expect-error: not null.\n      buffer = String.fromCharCode(code)\n      return tagName\n    }\n    return nok(code)\n  }\n\n  /**\n   * In tag name.\n   *\n   * ```markdown\n   * > | <ab>\n   *      ^^\n   * > | </ab>\n   *       ^^\n   * ```\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      const slash = code === 47\n      const name = buffer.toLowerCase()\n      if (!slash && !closingTag && htmlRawNames.includes(name)) {\n        marker = 1\n        // // Do not form containers.\n        // tokenizer.concrete = true\n        return self.interrupt ? ok(code) : continuation(code)\n      }\n      if (htmlBlockNames.includes(buffer.toLowerCase())) {\n        marker = 6\n        if (slash) {\n          effects.consume(code)\n          return basicSelfClosing\n        }\n\n        // // Do not form containers.\n        // tokenizer.concrete = true\n        return self.interrupt ? ok(code) : continuation(code)\n      }\n      marker = 7\n      // Do not support complete HTML when interrupting.\n      return self.interrupt && !self.parser.lazy[self.now().line]\n        ? nok(code)\n        : closingTag\n        ? completeClosingTagAfter(code)\n        : completeAttributeNameBefore(code)\n    }\n\n    // ASCII alphanumerical and `-`.\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code)\n      buffer += String.fromCharCode(code)\n      return tagName\n    }\n    return nok(code)\n  }\n\n  /**\n   * After closing slash of a basic tag name.\n   *\n   * ```markdown\n   * > | <div/>\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function basicSelfClosing(code) {\n    if (code === 62) {\n      effects.consume(code)\n      // // Do not form containers.\n      // tokenizer.concrete = true\n      return self.interrupt ? ok : continuation\n    }\n    return nok(code)\n  }\n\n  /**\n   * After closing slash of a complete tag name.\n   *\n   * ```markdown\n   * > | <x/>\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeClosingTagAfter(code) {\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return completeClosingTagAfter\n    }\n    return completeEnd(code)\n  }\n\n  /**\n   * At an attribute name.\n   *\n   * At first, this state is used after a complete tag name, after whitespace,\n   * where it expects optional attributes or the end of the tag.\n   * It is also reused after attributes, when expecting more optional\n   * attributes.\n   *\n   * ```markdown\n   * > | <a />\n   *        ^\n   * > | <a :b>\n   *        ^\n   * > | <a _b>\n   *        ^\n   * > | <a b>\n   *        ^\n   * > | <a >\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeNameBefore(code) {\n    if (code === 47) {\n      effects.consume(code)\n      return completeEnd\n    }\n\n    // ASCII alphanumerical and `:` and `_`.\n    if (code === 58 || code === 95 || asciiAlpha(code)) {\n      effects.consume(code)\n      return completeAttributeName\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return completeAttributeNameBefore\n    }\n    return completeEnd(code)\n  }\n\n  /**\n   * In attribute name.\n   *\n   * ```markdown\n   * > | <a :b>\n   *         ^\n   * > | <a _b>\n   *         ^\n   * > | <a b>\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeName(code) {\n    // ASCII alphanumerical and `-`, `.`, `:`, and `_`.\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    return completeAttributeNameAfter(code)\n  }\n\n  /**\n   * After attribute name, at an optional initializer, the end of the tag, or\n   * whitespace.\n   *\n   * ```markdown\n   * > | <a b>\n   *         ^\n   * > | <a b=c>\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeNameAfter(code) {\n    if (code === 61) {\n      effects.consume(code)\n      return completeAttributeValueBefore\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return completeAttributeNameAfter\n    }\n    return completeAttributeNameBefore(code)\n  }\n\n  /**\n   * Before unquoted, double quoted, or single quoted attribute value, allowing\n   * whitespace.\n   *\n   * ```markdown\n   * > | <a b=c>\n   *          ^\n   * > | <a b=\"c\">\n   *          ^\n   * ```\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    if (code === 34 || code === 39) {\n      effects.consume(code)\n      markerB = code\n      return completeAttributeValueQuoted\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return completeAttributeValueBefore\n    }\n    return completeAttributeValueUnquoted(code)\n  }\n\n  /**\n   * In double or single quoted attribute value.\n   *\n   * ```markdown\n   * > | <a b=\"c\">\n   *           ^\n   * > | <a b='c'>\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeValueQuoted(code) {\n    if (code === markerB) {\n      effects.consume(code)\n      markerB = null\n      return completeAttributeValueQuotedAfter\n    }\n    if (code === null || markdownLineEnding(code)) {\n      return nok(code)\n    }\n    effects.consume(code)\n    return completeAttributeValueQuoted\n  }\n\n  /**\n   * In unquoted attribute value.\n   *\n   * ```markdown\n   * > | <a b=c>\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeValueUnquoted(code) {\n    if (\n      code === null ||\n      code === 34 ||\n      code === 39 ||\n      code === 47 ||\n      code === 60 ||\n      code === 61 ||\n      code === 62 ||\n      code === 96 ||\n      markdownLineEndingOrSpace(code)\n    ) {\n      return completeAttributeNameAfter(code)\n    }\n    effects.consume(code)\n    return completeAttributeValueUnquoted\n  }\n\n  /**\n   * After double or single quoted attribute value, before whitespace or the\n   * end of the tag.\n   *\n   * ```markdown\n   * > | <a b=\"c\">\n   *            ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeValueQuotedAfter(code) {\n    if (code === 47 || code === 62 || markdownSpace(code)) {\n      return completeAttributeNameBefore(code)\n    }\n    return nok(code)\n  }\n\n  /**\n   * In certain circumstances of a complete tag where only an `>` is allowed.\n   *\n   * ```markdown\n   * > | <a b=\"c\">\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeEnd(code) {\n    if (code === 62) {\n      effects.consume(code)\n      return completeAfter\n    }\n    return nok(code)\n  }\n\n  /**\n   * After `>` in a complete tag.\n   *\n   * ```markdown\n   * > | <x>\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAfter(code) {\n    if (code === null || markdownLineEnding(code)) {\n      // // Do not form containers.\n      // tokenizer.concrete = true\n      return continuation(code)\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return completeAfter\n    }\n    return nok(code)\n  }\n\n  /**\n   * In continuation of any HTML kind.\n   *\n   * ```markdown\n   * > | <!--xxx-->\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuation(code) {\n    if (code === 45 && marker === 2) {\n      effects.consume(code)\n      return continuationCommentInside\n    }\n    if (code === 60 && marker === 1) {\n      effects.consume(code)\n      return continuationRawTagOpen\n    }\n    if (code === 62 && marker === 4) {\n      effects.consume(code)\n      return continuationClose\n    }\n    if (code === 63 && marker === 3) {\n      effects.consume(code)\n      return continuationDeclarationInside\n    }\n    if (code === 93 && marker === 5) {\n      effects.consume(code)\n      return continuationCdataInside\n    }\n    if (markdownLineEnding(code) && (marker === 6 || marker === 7)) {\n      effects.exit('htmlFlowData')\n      return effects.check(\n        blankLineBefore,\n        continuationAfter,\n        continuationStart\n      )(code)\n    }\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('htmlFlowData')\n      return continuationStart(code)\n    }\n    effects.consume(code)\n    return continuation\n  }\n\n  /**\n   * In continuation, at eol.\n   *\n   * ```markdown\n   * > | <x>\n   *        ^\n   *   | asd\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationStart(code) {\n    return effects.check(\n      nonLazyContinuationStart,\n      continuationStartNonLazy,\n      continuationAfter\n    )(code)\n  }\n\n  /**\n   * In continuation, at eol, before non-lazy content.\n   *\n   * ```markdown\n   * > | <x>\n   *        ^\n   *   | asd\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationStartNonLazy(code) {\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    return continuationBefore\n  }\n\n  /**\n   * In continuation, before non-lazy content.\n   *\n   * ```markdown\n   *   | <x>\n   * > | asd\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationBefore(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return continuationStart(code)\n    }\n    effects.enter('htmlFlowData')\n    return continuation(code)\n  }\n\n  /**\n   * In comment continuation, after one `-`, expecting another.\n   *\n   * ```markdown\n   * > | <!--xxx-->\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationCommentInside(code) {\n    if (code === 45) {\n      effects.consume(code)\n      return continuationDeclarationInside\n    }\n    return continuation(code)\n  }\n\n  /**\n   * In raw continuation, after `<`, at `/`.\n   *\n   * ```markdown\n   * > | <script>console.log(1)</script>\n   *                            ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationRawTagOpen(code) {\n    if (code === 47) {\n      effects.consume(code)\n      buffer = ''\n      return continuationRawEndTag\n    }\n    return continuation(code)\n  }\n\n  /**\n   * In raw continuation, after `</`, in a raw tag name.\n   *\n   * ```markdown\n   * > | <script>console.log(1)</script>\n   *                             ^^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationRawEndTag(code) {\n    if (code === 62) {\n      const name = buffer.toLowerCase()\n      if (htmlRawNames.includes(name)) {\n        effects.consume(code)\n        return continuationClose\n      }\n      return continuation(code)\n    }\n    if (asciiAlpha(code) && buffer.length < 8) {\n      effects.consume(code)\n      // @ts-expect-error: not null.\n      buffer += String.fromCharCode(code)\n      return continuationRawEndTag\n    }\n    return continuation(code)\n  }\n\n  /**\n   * In cdata continuation, after `]`, expecting `]>`.\n   *\n   * ```markdown\n   * > | <![CDATA[>&<]]>\n   *                  ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationCdataInside(code) {\n    if (code === 93) {\n      effects.consume(code)\n      return continuationDeclarationInside\n    }\n    return continuation(code)\n  }\n\n  /**\n   * In declaration or instruction continuation, at `>`.\n   *\n   * ```markdown\n   * > | <!-->\n   *         ^\n   * > | <?>\n   *       ^\n   * > | <!q>\n   *        ^\n   * > | <!--ab-->\n   *             ^\n   * > | <![CDATA[>&<]]>\n   *                   ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationDeclarationInside(code) {\n    if (code === 62) {\n      effects.consume(code)\n      return continuationClose\n    }\n\n    // More dashes.\n    if (code === 45 && marker === 2) {\n      effects.consume(code)\n      return continuationDeclarationInside\n    }\n    return continuation(code)\n  }\n\n  /**\n   * In closed continuation: everything we get until the eol/eof is part of it.\n   *\n   * ```markdown\n   * > | <!doctype>\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationClose(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('htmlFlowData')\n      return continuationAfter(code)\n    }\n    effects.consume(code)\n    return continuationClose\n  }\n\n  /**\n   * Done.\n   *\n   * ```markdown\n   * > | <!doctype>\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationAfter(code) {\n    effects.exit('htmlFlow')\n    // // Feel free to interrupt.\n    // tokenizer.interrupt = false\n    // // No longer concrete.\n    // tokenizer.concrete = false\n    return ok(code)\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n  const self = this\n  return start\n\n  /**\n   * At eol, before continuation.\n   *\n   * ```markdown\n   * > | * ```js\n   *            ^\n   *   | b\n   * ```\n   *\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      return after\n    }\n    return nok(code)\n  }\n\n  /**\n   * A continuation.\n   *\n   * ```markdown\n   *   | * ```js\n   * > | b\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n  return start\n\n  /**\n   * Before eol, expecting blank line.\n   *\n   * ```markdown\n   * > | <div>\n   *          ^\n   *   |\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    return effects.attempt(blankLine, ok, nok)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nconst nonLazyContinuation = {\n  tokenize: tokenizeNonLazyContinuation,\n  partial: true\n}\n\n/** @type {Construct} */\nexport const codeFenced = {\n  name: 'codeFenced',\n  tokenize: tokenizeCodeFenced,\n  concrete: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n  const self = this\n  /** @type {Construct} */\n  const closeStart = {\n    tokenize: tokenizeCloseStart,\n    partial: true\n  }\n  let initialPrefix = 0\n  let sizeOpen = 0\n  /** @type {NonNullable<Code>} */\n  let marker\n  return start\n\n  /**\n   * Start of code.\n   *\n   * ```markdown\n   * > | ~~~js\n   *     ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // To do: parse whitespace like `markdown-rs`.\n    return beforeSequenceOpen(code)\n  }\n\n  /**\n   * In opening fence, after prefix, at sequence.\n   *\n   * ```markdown\n   * > | ~~~js\n   *     ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function beforeSequenceOpen(code) {\n    const tail = self.events[self.events.length - 1]\n    initialPrefix =\n      tail && tail[1].type === 'linePrefix'\n        ? tail[2].sliceSerialize(tail[1], true).length\n        : 0\n    marker = code\n    effects.enter('codeFenced')\n    effects.enter('codeFencedFence')\n    effects.enter('codeFencedFenceSequence')\n    return sequenceOpen(code)\n  }\n\n  /**\n   * In opening fence sequence.\n   *\n   * ```markdown\n   * > | ~~~js\n   *      ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceOpen(code) {\n    if (code === marker) {\n      sizeOpen++\n      effects.consume(code)\n      return sequenceOpen\n    }\n    if (sizeOpen < 3) {\n      return nok(code)\n    }\n    effects.exit('codeFencedFenceSequence')\n    return markdownSpace(code)\n      ? factorySpace(effects, infoBefore, 'whitespace')(code)\n      : infoBefore(code)\n  }\n\n  /**\n   * In opening fence, after the sequence (and optional whitespace), before info.\n   *\n   * ```markdown\n   * > | ~~~js\n   *        ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function infoBefore(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('codeFencedFence')\n      return self.interrupt\n        ? ok(code)\n        : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n    }\n    effects.enter('codeFencedFenceInfo')\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return info(code)\n  }\n\n  /**\n   * In info.\n   *\n   * ```markdown\n   * > | ~~~js\n   *        ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function info(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('chunkString')\n      effects.exit('codeFencedFenceInfo')\n      return infoBefore(code)\n    }\n    if (markdownSpace(code)) {\n      effects.exit('chunkString')\n      effects.exit('codeFencedFenceInfo')\n      return factorySpace(effects, metaBefore, 'whitespace')(code)\n    }\n    if (code === 96 && code === marker) {\n      return nok(code)\n    }\n    effects.consume(code)\n    return info\n  }\n\n  /**\n   * In opening fence, after info and whitespace, before meta.\n   *\n   * ```markdown\n   * > | ~~~js eval\n   *           ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function metaBefore(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return infoBefore(code)\n    }\n    effects.enter('codeFencedFenceMeta')\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return meta(code)\n  }\n\n  /**\n   * In meta.\n   *\n   * ```markdown\n   * > | ~~~js eval\n   *           ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\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 infoBefore(code)\n    }\n    if (code === 96 && code === marker) {\n      return nok(code)\n    }\n    effects.consume(code)\n    return meta\n  }\n\n  /**\n   * At eol/eof in code, before a non-lazy closing fence or content.\n   *\n   * ```markdown\n   * > | ~~~js\n   *          ^\n   * > | alert(1)\n   *             ^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function atNonLazyBreak(code) {\n    return effects.attempt(closeStart, after, contentBefore)(code)\n  }\n\n  /**\n   * Before code content, not a closing fence, at eol.\n   *\n   * ```markdown\n   *   | ~~~js\n   * > | alert(1)\n   *             ^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function contentBefore(code) {\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    return contentStart\n  }\n\n  /**\n   * Before code content, not a closing fence.\n   *\n   * ```markdown\n   *   | ~~~js\n   * > | alert(1)\n   *     ^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function contentStart(code) {\n    return initialPrefix > 0 && markdownSpace(code)\n      ? factorySpace(\n          effects,\n          beforeContentChunk,\n          'linePrefix',\n          initialPrefix + 1\n        )(code)\n      : beforeContentChunk(code)\n  }\n\n  /**\n   * Before code content, after optional prefix.\n   *\n   * ```markdown\n   *   | ~~~js\n   * > | alert(1)\n   *     ^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function beforeContentChunk(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n    }\n    effects.enter('codeFlowValue')\n    return contentChunk(code)\n  }\n\n  /**\n   * In code content.\n   *\n   * ```markdown\n   *   | ~~~js\n   * > | alert(1)\n   *     ^^^^^^^^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function contentChunk(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('codeFlowValue')\n      return beforeContentChunk(code)\n    }\n    effects.consume(code)\n    return contentChunk\n  }\n\n  /**\n   * After code.\n   *\n   * ```markdown\n   *   | ~~~js\n   *   | alert(1)\n   * > | ~~~\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    effects.exit('codeFenced')\n    return ok(code)\n  }\n\n  /**\n   * @this {TokenizeContext}\n   * @type {Tokenizer}\n   */\n  function tokenizeCloseStart(effects, ok, nok) {\n    let size = 0\n    return startBefore\n\n    /**\n     *\n     *\n     * @type {State}\n     */\n    function startBefore(code) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return start\n    }\n\n    /**\n     * Before closing fence, at optional whitespace.\n     *\n     * ```markdown\n     *   | ~~~js\n     *   | alert(1)\n     * > | ~~~\n     *     ^\n     * ```\n     *\n     * @type {State}\n     */\n    function start(code) {\n      // Always populated by defaults.\n\n      // To do: `enter` here or in next state?\n      effects.enter('codeFencedFence')\n      return markdownSpace(code)\n        ? factorySpace(\n            effects,\n            beforeSequenceClose,\n            'linePrefix',\n            self.parser.constructs.disable.null.includes('codeIndented')\n              ? undefined\n              : 4\n          )(code)\n        : beforeSequenceClose(code)\n    }\n\n    /**\n     * In closing fence, after optional whitespace, at sequence.\n     *\n     * ```markdown\n     *   | ~~~js\n     *   | alert(1)\n     * > | ~~~\n     *     ^\n     * ```\n     *\n     * @type {State}\n     */\n    function beforeSequenceClose(code) {\n      if (code === marker) {\n        effects.enter('codeFencedFenceSequence')\n        return sequenceClose(code)\n      }\n      return nok(code)\n    }\n\n    /**\n     * In closing fence sequence.\n     *\n     * ```markdown\n     *   | ~~~js\n     *   | alert(1)\n     * > | ~~~\n     *     ^\n     * ```\n     *\n     * @type {State}\n     */\n    function sequenceClose(code) {\n      if (code === marker) {\n        size++\n        effects.consume(code)\n        return sequenceClose\n      }\n      if (size >= sizeOpen) {\n        effects.exit('codeFencedFenceSequence')\n        return markdownSpace(code)\n          ? factorySpace(effects, sequenceCloseAfter, 'whitespace')(code)\n          : sequenceCloseAfter(code)\n      }\n      return nok(code)\n    }\n\n    /**\n     * After closing fence sequence, after optional whitespace.\n     *\n     * ```markdown\n     *   | ~~~js\n     *   | alert(1)\n     * > | ~~~\n     *        ^\n     * ```\n     *\n     * @type {State}\n     */\n    function sequenceCloseAfter(code) {\n      if (code === null || markdownLineEnding(code)) {\n        effects.exit('codeFencedFence')\n        return ok(code)\n      }\n      return nok(code)\n    }\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n  const self = this\n  return start\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (code === null) {\n      return nok(code)\n    }\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    return lineStart\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function lineStart(code) {\n    return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n  }\n}\n","/// <reference lib=\"dom\" />\n\n/* eslint-env browser */\n\nconst element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string|false}\n */\nexport function decodeNamedCharacterReference(value) {\n  const characterReference = '&' + value + ';'\n  element.innerHTML = characterReference\n  const char = element.textContent\n\n  // Some named character references do not require the closing semicolon\n  // (`&not`, for instance), which leads to situations where parsing the assumed\n  // named reference of `&notit;` will result in the string `¬it;`.\n  // When we encounter a trailing semicolon after parsing, and the character\n  // reference to decode was not a semicolon (`&semi;`), we can assume that the\n  // matching was not complete.\n  // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n  // yield `null`.\n  if (char.charCodeAt(char.length - 1) === 59 /* `;` */ && value !== 'semi') {\n    return false\n  }\n\n  // If the decoded string is equal to the input, the character reference was\n  // not valid.\n  // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n  // yield `null`.\n  return char === characterReference ? false : char\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {\n  asciiAlphanumeric,\n  asciiDigit,\n  asciiHexDigit\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const characterReference = {\n  name: 'characterReference',\n  tokenize: tokenizeCharacterReference\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n  const self = this\n  let size = 0\n  /** @type {number} */\n  let max\n  /** @type {(code: Code) => boolean} */\n  let test\n  return start\n\n  /**\n   * Start of character reference.\n   *\n   * ```markdown\n   * > | a&amp;b\n   *      ^\n   * > | a&#123;b\n   *      ^\n   * > | a&#x9;b\n   *      ^\n   * ```\n   *\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\n  /**\n   * After `&`, at `#` for numeric references or alphanumeric for named\n   * references.\n   *\n   * ```markdown\n   * > | a&amp;b\n   *       ^\n   * > | a&#123;b\n   *       ^\n   * > | a&#x9;b\n   *       ^\n   * ```\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    effects.enter('characterReferenceValue')\n    max = 31\n    test = asciiAlphanumeric\n    return value(code)\n  }\n\n  /**\n   * After `#`, at `x` for hexadecimals or digit for decimals.\n   *\n   * ```markdown\n   * > | a&#123;b\n   *        ^\n   * > | a&#x9;b\n   *        ^\n   * ```\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    effects.enter('characterReferenceValue')\n    max = 7\n    test = asciiDigit\n    return value(code)\n  }\n\n  /**\n   * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n   *\n   * The character reference kind defines what and how many characters are\n   * allowed.\n   *\n   * ```markdown\n   * > | a&amp;b\n   *       ^^^\n   * > | a&#123;b\n   *        ^^^\n   * > | a&#x9;b\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function value(code) {\n    if (code === 59 && size) {\n      const token = effects.exit('characterReferenceValue')\n      if (\n        test === asciiAlphanumeric &&\n        !decodeNamedCharacterReference(self.sliceSerialize(token))\n      ) {\n        return nok(code)\n      }\n\n      // To do: `markdown-rs` uses a different name:\n      // `CharacterReferenceMarkerSemi`.\n      effects.enter('characterReferenceMarker')\n      effects.consume(code)\n      effects.exit('characterReferenceMarker')\n      effects.exit('characterReference')\n      return ok\n    }\n    if (test(code) && size++ < max) {\n      effects.consume(code)\n      return value\n    }\n    return nok(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {asciiPunctuation} from 'micromark-util-character'\n/** @type {Construct} */\nexport const characterEscape = {\n  name: 'characterEscape',\n  tokenize: tokenizeCharacterEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n  return start\n\n  /**\n   * Start of character escape.\n   *\n   * ```markdown\n   * > | a\\*b\n   *      ^\n   * ```\n   *\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 inside\n  }\n\n  /**\n   * After `\\`, at punctuation.\n   *\n   * ```markdown\n   * > | a\\*b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    // ASCII punctuation.\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    return nok(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const lineEnding = {\n  name: 'lineEnding',\n  tokenize: tokenizeLineEnding\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n  return start\n\n  /** @type {State} */\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').Event} Event\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').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\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/** @type {Construct} */\nexport const labelEnd = {\n  name: 'labelEnd',\n  tokenize: tokenizeLabelEnd,\n  resolveTo: resolveToLabelEnd,\n  resolveAll: resolveAllLabelEnd\n}\n\n/** @type {Construct} */\nconst resourceConstruct = {\n  tokenize: tokenizeResource\n}\n/** @type {Construct} */\nconst referenceFullConstruct = {\n  tokenize: tokenizeReferenceFull\n}\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n  tokenize: tokenizeReferenceCollapsed\n}\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n  let index = -1\n  while (++index < events.length) {\n    const token = events[index][1]\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  return events\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n  let index = events.length\n  let offset = 0\n  /** @type {Token} */\n  let token\n  /** @type {number | undefined} */\n  let open\n  /** @type {number | undefined} */\n  let close\n  /** @type {Array<Event>} */\n  let media\n\n  // Find an opening.\n  while (index--) {\n    token = events[index][1]\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      }\n\n      // Mark other link openings as inactive, as we can’t have links in\n      // links.\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        if (token.type !== 'labelLink') {\n          offset = 2\n          break\n        }\n      }\n    } else if (token.type === 'labelEnd') {\n      close = index\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  ]\n\n  // Opening marker.\n  media = push(media, events.slice(open + 1, open + offset + 3))\n\n  // Text open.\n  media = push(media, [['enter', text, context]])\n\n  // Always populated by defaults.\n\n  // Between.\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  )\n\n  // Text close, marker close, label close.\n  media = push(media, [\n    ['exit', text, context],\n    events[close - 2],\n    events[close - 1],\n    ['exit', label, context]\n  ])\n\n  // Reference, resource, or so.\n  media = push(media, events.slice(close + 1))\n\n  // Media close.\n  media = push(media, [['exit', group, context]])\n  splice(events, open, events.length, media)\n  return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n  const self = this\n  let index = self.events.length\n  /** @type {Token} */\n  let labelStart\n  /** @type {boolean} */\n  let defined\n\n  // Find an opening.\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  return start\n\n  /**\n   * Start of label end.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *       ^\n   * > | [a][b] c\n   *       ^\n   * > | [a][] b\n   *       ^\n   * > | [a] b\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // If there is not an okay opening.\n    if (!labelStart) {\n      return nok(code)\n    }\n\n    // If the corresponding label (link) start is marked as inactive,\n    // it means we’d be wrapping a link, like this:\n    //\n    // ```markdown\n    // > | a [b [c](d) e](f) g.\n    //                  ^\n    // ```\n    //\n    // We can’t have that, so it’s just balanced brackets.\n    if (labelStart._inactive) {\n      return labelEndNok(code)\n    }\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 after\n  }\n\n  /**\n   * After `]`.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *       ^\n   * > | [a][b] c\n   *       ^\n   * > | [a][] b\n   *       ^\n   * > | [a] b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n    // an extension.\n\n    // Resource (`[asd](fgh)`)?\n    if (code === 40) {\n      return effects.attempt(\n        resourceConstruct,\n        labelEndOk,\n        defined ? labelEndOk : labelEndNok\n      )(code)\n    }\n\n    // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n    if (code === 91) {\n      return effects.attempt(\n        referenceFullConstruct,\n        labelEndOk,\n        defined ? referenceNotFull : labelEndNok\n      )(code)\n    }\n\n    // Shortcut (`[asd]`) reference?\n    return defined ? labelEndOk(code) : labelEndNok(code)\n  }\n\n  /**\n   * After `]`, at `[`, but not at a full reference.\n   *\n   * > 👉 **Note**: we only get here if the label is defined.\n   *\n   * ```markdown\n   * > | [a][] b\n   *        ^\n   * > | [a] b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceNotFull(code) {\n    return effects.attempt(\n      referenceCollapsedConstruct,\n      labelEndOk,\n      labelEndNok\n    )(code)\n  }\n\n  /**\n   * Done, we found something.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *           ^\n   * > | [a][b] c\n   *           ^\n   * > | [a][] b\n   *          ^\n   * > | [a] b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelEndOk(code) {\n    // Note: `markdown-rs` does a bunch of stuff here.\n    return ok(code)\n  }\n\n  /**\n   * Done, it’s nothing.\n   *\n   * There was an okay opening, but we didn’t match anything.\n   *\n   * ```markdown\n   * > | [a](b c\n   *        ^\n   * > | [a][b c\n   *        ^\n   * > | [a] b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelEndNok(code) {\n    labelStart._balanced = true\n    return nok(code)\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n  return resourceStart\n\n  /**\n   * At a resource.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceStart(code) {\n    effects.enter('resource')\n    effects.enter('resourceMarker')\n    effects.consume(code)\n    effects.exit('resourceMarker')\n    return resourceBefore\n  }\n\n  /**\n   * In resource, after `(`, at optional whitespace.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceBefore(code) {\n    return markdownLineEndingOrSpace(code)\n      ? factoryWhitespace(effects, resourceOpen)(code)\n      : resourceOpen(code)\n  }\n\n  /**\n   * In resource, after optional whitespace, at `)` or a destination.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceOpen(code) {\n    if (code === 41) {\n      return resourceEnd(code)\n    }\n    return factoryDestination(\n      effects,\n      resourceDestinationAfter,\n      resourceDestinationMissing,\n      'resourceDestination',\n      'resourceDestinationLiteral',\n      'resourceDestinationLiteralMarker',\n      'resourceDestinationRaw',\n      'resourceDestinationString',\n      32\n    )(code)\n  }\n\n  /**\n   * In resource, after destination, at optional whitespace.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceDestinationAfter(code) {\n    return markdownLineEndingOrSpace(code)\n      ? factoryWhitespace(effects, resourceBetween)(code)\n      : resourceEnd(code)\n  }\n\n  /**\n   * At invalid destination.\n   *\n   * ```markdown\n   * > | [a](<<) b\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceDestinationMissing(code) {\n    return nok(code)\n  }\n\n  /**\n   * In resource, after destination and whitespace, at `(` or title.\n   *\n   * ```markdown\n   * > | [a](b ) c\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceBetween(code) {\n    if (code === 34 || code === 39 || code === 40) {\n      return factoryTitle(\n        effects,\n        resourceTitleAfter,\n        nok,\n        'resourceTitle',\n        'resourceTitleMarker',\n        'resourceTitleString'\n      )(code)\n    }\n    return resourceEnd(code)\n  }\n\n  /**\n   * In resource, after title, at optional whitespace.\n   *\n   * ```markdown\n   * > | [a](b \"c\") d\n   *              ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceTitleAfter(code) {\n    return markdownLineEndingOrSpace(code)\n      ? factoryWhitespace(effects, resourceEnd)(code)\n      : resourceEnd(code)\n  }\n\n  /**\n   * In resource, at `)`.\n   *\n   * ```markdown\n   * > | [a](b) d\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceEnd(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    return nok(code)\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n  const self = this\n  return referenceFull\n\n  /**\n   * In a reference (full), at the `[`.\n   *\n   * ```markdown\n   * > | [a][b] d\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceFull(code) {\n    return factoryLabel.call(\n      self,\n      effects,\n      referenceFullAfter,\n      referenceFullMissing,\n      'reference',\n      'referenceMarker',\n      'referenceString'\n    )(code)\n  }\n\n  /**\n   * In a reference (full), after `]`.\n   *\n   * ```markdown\n   * > | [a][b] d\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceFullAfter(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  /**\n   * In reference (full) that was missing.\n   *\n   * ```markdown\n   * > | [a][b d\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceFullMissing(code) {\n    return nok(code)\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n  return referenceCollapsedStart\n\n  /**\n   * In reference (collapsed), at `[`.\n   *\n   * > 👉 **Note**: we only get here if the label is defined.\n   *\n   * ```markdown\n   * > | [a][] d\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceCollapsedStart(code) {\n    // We only attempt a collapsed label if there’s a `[`.\n\n    effects.enter('reference')\n    effects.enter('referenceMarker')\n    effects.consume(code)\n    effects.exit('referenceMarker')\n    return referenceCollapsedOpen\n  }\n\n  /**\n   * In reference (collapsed), at `]`.\n   *\n   * > 👉 **Note**: we only get here if the label is defined.\n   *\n   * ```markdown\n   * > | [a][] d\n   *         ^\n   * ```\n   *\n   *  @type {State}\n   */\n  function referenceCollapsedOpen(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    return nok(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {labelEnd} from './label-end.js'\n\n/** @type {Construct} */\nexport const labelStartImage = {\n  name: 'labelStartImage',\n  tokenize: tokenizeLabelStartImage,\n  resolveAll: labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n  const self = this\n  return start\n\n  /**\n   * Start of label (image) start.\n   *\n   * ```markdown\n   * > | a ![b] c\n   *       ^\n   * ```\n   *\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\n  /**\n   * After `!`, at `[`.\n   *\n   * ```markdown\n   * > | a ![b] c\n   *        ^\n   * ```\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    return nok(code)\n  }\n\n  /**\n   * After `![`.\n   *\n   * ```markdown\n   * > | a ![b] c\n   *         ^\n   * ```\n   *\n   * This is needed in because, when GFM footnotes are enabled, images never\n   * form when started with a `^`.\n   * Instead, links form:\n   *\n   * ```markdown\n   * ![^a](b)\n   *\n   * ![^a][b]\n   *\n   * [b]: c\n   * ```\n   *\n   * ```html\n   * <p>!<a href=\\\"b\\\">^a</a></p>\n   * <p>!<a href=\\\"c\\\">^a</a></p>\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    // To do: use a new field to do this, this is still needed for\n    // `micromark-extension-gfm-footnote`, but the `label-start-link`\n    // behavior isn’t.\n    // Hidden footnotes hook.\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 */\n\nimport {\n  markdownLineEndingOrSpace,\n  unicodePunctuation,\n  unicodeWhitespace\n} from 'micromark-util-character'\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * 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**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n *   Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n *   Group.\n */\nexport function classifyCharacter(code) {\n  if (\n    code === null ||\n    markdownLineEndingOrSpace(code) ||\n    unicodeWhitespace(code)\n  ) {\n    return 1\n  }\n  if (unicodePunctuation(code)) {\n    return 2\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Point} Point\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').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {push, splice} from 'micromark-util-chunked'\nimport {classifyCharacter} from 'micromark-util-classify-character'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/** @type {Construct} */\nexport const attention = {\n  name: 'attention',\n  tokenize: tokenizeAttention,\n  resolveAll: resolveAllAttention\n}\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\nfunction resolveAllAttention(events, context) {\n  let index = -1\n  /** @type {number} */\n  let open\n  /** @type {Token} */\n  let group\n  /** @type {Token} */\n  let text\n  /** @type {Token} */\n  let openingSequence\n  /** @type {Token} */\n  let closingSequence\n  /** @type {number} */\n  let use\n  /** @type {Array<Event>} */\n  let nextEvents\n  /** @type {number} */\n  let offset\n\n  // 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  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\n\n      // Now walk back to find an opener.\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 &&\n          // 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          }\n\n          // Number of markers to use from the sequence.\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 = []\n\n          // If there are more markers in the opening, add them before.\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          }\n\n          // Opening.\n          nextEvents = push(nextEvents, [\n            ['enter', group, context],\n            ['enter', openingSequence, context],\n            ['exit', openingSequence, context],\n            ['enter', text, context]\n          ])\n\n          // Always populated by defaults.\n\n          // Between.\n          nextEvents = push(\n            nextEvents,\n            resolveAll(\n              context.parser.constructs.insideSpan.null,\n              events.slice(open + 1, index),\n              context\n            )\n          )\n\n          // Closing.\n          nextEvents = push(nextEvents, [\n            ['exit', text, context],\n            ['enter', closingSequence, context],\n            ['exit', closingSequence, context],\n            ['exit', group, context]\n          ])\n\n          // If there are more markers in the closing, add them after.\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          splice(events, open - 1, index - open + 3, nextEvents)\n          index = open + nextEvents.length - offset - 2\n          break\n        }\n      }\n    }\n  }\n\n  // Remove remaining sequences.\n  index = -1\n  while (++index < events.length) {\n    if (events[index][1].type === 'attentionSequence') {\n      events[index][1].type = 'data'\n    }\n  }\n  return events\n}\n\n/**\n * @this {TokenizeContext}\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\n  /** @type {NonNullable<Code>} */\n  let marker\n  return start\n\n  /**\n   * Before a sequence.\n   *\n   * ```markdown\n   * > | **\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    marker = code\n    effects.enter('attentionSequence')\n    return inside(code)\n  }\n\n  /**\n   * In a sequence.\n   *\n   * ```markdown\n   * > | **\n   *     ^^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    if (code === marker) {\n      effects.consume(code)\n      return inside\n    }\n    const token = effects.exit('attentionSequence')\n\n    // To do: next major: move this to resolver, just like `markdown-rs`.\n    const after = classifyCharacter(code)\n\n    // Always populated by defaults.\n\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/**\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 */\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').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {\n  asciiAlpha,\n  asciiAlphanumeric,\n  asciiAtext,\n  asciiControl\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const autolink = {\n  name: 'autolink',\n  tokenize: tokenizeAutolink\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n  let size = 0\n  return start\n\n  /**\n   * Start of an autolink.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *      ^\n   * > | a<user@example.com>b\n   *      ^\n   * ```\n   *\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\n  /**\n   * After `<`, at protocol or atext.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *       ^\n   * > | a<user@example.com>b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      return schemeOrEmailAtext\n    }\n    return emailAtext(code)\n  }\n\n  /**\n   * At second byte of protocol or atext.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *        ^\n   * > | a<user@example.com>b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function schemeOrEmailAtext(code) {\n    // ASCII alphanumeric and `+`, `-`, and `.`.\n    if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n      // Count the previous alphabetical from `open` too.\n      size = 1\n      return schemeInsideOrEmailAtext(code)\n    }\n    return emailAtext(code)\n  }\n\n  /**\n   * In ambiguous protocol or atext.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *        ^\n   * > | a<user@example.com>b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function schemeInsideOrEmailAtext(code) {\n    if (code === 58) {\n      effects.consume(code)\n      size = 0\n      return urlInside\n    }\n\n    // ASCII alphanumeric and `+`, `-`, and `.`.\n    if (\n      (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) &&\n      size++ < 32\n    ) {\n      effects.consume(code)\n      return schemeInsideOrEmailAtext\n    }\n    size = 0\n    return emailAtext(code)\n  }\n\n  /**\n   * After protocol, in URL.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function urlInside(code) {\n    if (code === 62) {\n      effects.exit('autolinkProtocol')\n      effects.enter('autolinkMarker')\n      effects.consume(code)\n      effects.exit('autolinkMarker')\n      effects.exit('autolink')\n      return ok\n    }\n\n    // ASCII control, space, or `<`.\n    if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n      return nok(code)\n    }\n    effects.consume(code)\n    return urlInside\n  }\n\n  /**\n   * In email atext.\n   *\n   * ```markdown\n   * > | a<user.name@example.com>b\n   *              ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailAtext(code) {\n    if (code === 64) {\n      effects.consume(code)\n      return emailAtSignOrDot\n    }\n    if (asciiAtext(code)) {\n      effects.consume(code)\n      return emailAtext\n    }\n    return nok(code)\n  }\n\n  /**\n   * In label, after at-sign or dot.\n   *\n   * ```markdown\n   * > | a<user.name@example.com>b\n   *                 ^       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailAtSignOrDot(code) {\n    return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)\n  }\n\n  /**\n   * In label, where `.` and `>` are allowed.\n   *\n   * ```markdown\n   * > | a<user.name@example.com>b\n   *                   ^\n   * ```\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    if (code === 62) {\n      // Exit, then change the token type.\n      effects.exit('autolinkProtocol').type = 'autolinkEmail'\n      effects.enter('autolinkMarker')\n      effects.consume(code)\n      effects.exit('autolinkMarker')\n      effects.exit('autolink')\n      return ok\n    }\n    return emailValue(code)\n  }\n\n  /**\n   * In label, where `.` and `>` are *not* allowed.\n   *\n   * Though, this is also used in `emailLabel` to parse other values.\n   *\n   * ```markdown\n   * > | a<user.name@ex-ample.com>b\n   *                    ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailValue(code) {\n    // ASCII alphanumeric or `-`.\n    if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n      const next = code === 45 ? emailValue : emailLabel\n      effects.consume(code)\n      return next\n    }\n    return nok(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n  asciiAlpha,\n  asciiAlphanumeric,\n  markdownLineEnding,\n  markdownLineEndingOrSpace,\n  markdownSpace\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const htmlText = {\n  name: 'htmlText',\n  tokenize: tokenizeHtmlText\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n  const self = this\n  /** @type {NonNullable<Code> | undefined} */\n  let marker\n  /** @type {number} */\n  let index\n  /** @type {State} */\n  let returnState\n  return start\n\n  /**\n   * Start of HTML (text).\n   *\n   * ```markdown\n   * > | a <b> c\n   *       ^\n   * ```\n   *\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\n  /**\n   * After `<`, at tag name or other stuff.\n   *\n   * ```markdown\n   * > | a <b> c\n   *        ^\n   * > | a <!doctype> c\n   *        ^\n   * > | a <!--b--> c\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (code === 33) {\n      effects.consume(code)\n      return declarationOpen\n    }\n    if (code === 47) {\n      effects.consume(code)\n      return tagCloseStart\n    }\n    if (code === 63) {\n      effects.consume(code)\n      return instruction\n    }\n\n    // ASCII alphabetical.\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      return tagOpen\n    }\n    return nok(code)\n  }\n\n  /**\n   * After `<!`, at declaration, comment, or CDATA.\n   *\n   * ```markdown\n   * > | a <!doctype> c\n   *         ^\n   * > | a <!--b--> c\n   *         ^\n   * > | a <![CDATA[>&<]]> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function declarationOpen(code) {\n    if (code === 45) {\n      effects.consume(code)\n      return commentOpenInside\n    }\n    if (code === 91) {\n      effects.consume(code)\n      index = 0\n      return cdataOpenInside\n    }\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      return declaration\n    }\n    return nok(code)\n  }\n\n  /**\n   * In a comment, after `<!-`, at another `-`.\n   *\n   * ```markdown\n   * > | a <!--b--> c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function commentOpenInside(code) {\n    if (code === 45) {\n      effects.consume(code)\n      return commentEnd\n    }\n    return nok(code)\n  }\n\n  /**\n   * In comment.\n   *\n   * ```markdown\n   * > | a <!--b--> c\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function comment(code) {\n    if (code === null) {\n      return nok(code)\n    }\n    if (code === 45) {\n      effects.consume(code)\n      return commentClose\n    }\n    if (markdownLineEnding(code)) {\n      returnState = comment\n      return lineEndingBefore(code)\n    }\n    effects.consume(code)\n    return comment\n  }\n\n  /**\n   * In comment, after `-`.\n   *\n   * ```markdown\n   * > | a <!--b--> c\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function commentClose(code) {\n    if (code === 45) {\n      effects.consume(code)\n      return commentEnd\n    }\n    return comment(code)\n  }\n\n  /**\n   * In comment, after `--`.\n   *\n   * ```markdown\n   * > | a <!--b--> c\n   *              ^\n   * ```\n   *\n   * @type {State}\n   */\n  function commentEnd(code) {\n    return code === 62\n      ? end(code)\n      : code === 45\n      ? commentClose(code)\n      : comment(code)\n  }\n\n  /**\n   * After `<![`, in CDATA, expecting `CDATA[`.\n   *\n   * ```markdown\n   * > | a <![CDATA[>&<]]> b\n   *          ^^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdataOpenInside(code) {\n    const value = 'CDATA['\n    if (code === value.charCodeAt(index++)) {\n      effects.consume(code)\n      return index === value.length ? cdata : cdataOpenInside\n    }\n    return nok(code)\n  }\n\n  /**\n   * In CDATA.\n   *\n   * ```markdown\n   * > | a <![CDATA[>&<]]> b\n   *                ^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdata(code) {\n    if (code === null) {\n      return nok(code)\n    }\n    if (code === 93) {\n      effects.consume(code)\n      return cdataClose\n    }\n    if (markdownLineEnding(code)) {\n      returnState = cdata\n      return lineEndingBefore(code)\n    }\n    effects.consume(code)\n    return cdata\n  }\n\n  /**\n   * In CDATA, after `]`, at another `]`.\n   *\n   * ```markdown\n   * > | a <![CDATA[>&<]]> b\n   *                    ^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdataClose(code) {\n    if (code === 93) {\n      effects.consume(code)\n      return cdataEnd\n    }\n    return cdata(code)\n  }\n\n  /**\n   * In CDATA, after `]]`, at `>`.\n   *\n   * ```markdown\n   * > | a <![CDATA[>&<]]> b\n   *                     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdataEnd(code) {\n    if (code === 62) {\n      return end(code)\n    }\n    if (code === 93) {\n      effects.consume(code)\n      return cdataEnd\n    }\n    return cdata(code)\n  }\n\n  /**\n   * In declaration.\n   *\n   * ```markdown\n   * > | a <!b> c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function declaration(code) {\n    if (code === null || code === 62) {\n      return end(code)\n    }\n    if (markdownLineEnding(code)) {\n      returnState = declaration\n      return lineEndingBefore(code)\n    }\n    effects.consume(code)\n    return declaration\n  }\n\n  /**\n   * In instruction.\n   *\n   * ```markdown\n   * > | a <?b?> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function instruction(code) {\n    if (code === null) {\n      return nok(code)\n    }\n    if (code === 63) {\n      effects.consume(code)\n      return instructionClose\n    }\n    if (markdownLineEnding(code)) {\n      returnState = instruction\n      return lineEndingBefore(code)\n    }\n    effects.consume(code)\n    return instruction\n  }\n\n  /**\n   * In instruction, after `?`, at `>`.\n   *\n   * ```markdown\n   * > | a <?b?> c\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function instructionClose(code) {\n    return code === 62 ? end(code) : instruction(code)\n  }\n\n  /**\n   * After `</`, in closing tag, at tag name.\n   *\n   * ```markdown\n   * > | a </b> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagCloseStart(code) {\n    // ASCII alphabetical.\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      return tagClose\n    }\n    return nok(code)\n  }\n\n  /**\n   * After `</x`, in a tag name.\n   *\n   * ```markdown\n   * > | a </b> c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagClose(code) {\n    // ASCII alphanumerical and `-`.\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code)\n      return tagClose\n    }\n    return tagCloseBetween(code)\n  }\n\n  /**\n   * In closing tag, after tag name.\n   *\n   * ```markdown\n   * > | a </b> c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagCloseBetween(code) {\n    if (markdownLineEnding(code)) {\n      returnState = tagCloseBetween\n      return lineEndingBefore(code)\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return tagCloseBetween\n    }\n    return end(code)\n  }\n\n  /**\n   * After `<x`, in opening tag name.\n   *\n   * ```markdown\n   * > | a <b> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpen(code) {\n    // ASCII alphanumerical and `-`.\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code)\n      return tagOpen\n    }\n    if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code)\n    }\n    return nok(code)\n  }\n\n  /**\n   * In opening tag, after tag name.\n   *\n   * ```markdown\n   * > | a <b> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenBetween(code) {\n    if (code === 47) {\n      effects.consume(code)\n      return end\n    }\n\n    // ASCII alphabetical and `:` and `_`.\n    if (code === 58 || code === 95 || asciiAlpha(code)) {\n      effects.consume(code)\n      return tagOpenAttributeName\n    }\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenBetween\n      return lineEndingBefore(code)\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return tagOpenBetween\n    }\n    return end(code)\n  }\n\n  /**\n   * In attribute name.\n   *\n   * ```markdown\n   * > | a <b c> d\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeName(code) {\n    // ASCII alphabetical and `-`, `.`, `:`, and `_`.\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    return tagOpenAttributeNameAfter(code)\n  }\n\n  /**\n   * After attribute name, before initializer, the end of the tag, or\n   * whitespace.\n   *\n   * ```markdown\n   * > | a <b c> d\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeNameAfter(code) {\n    if (code === 61) {\n      effects.consume(code)\n      return tagOpenAttributeValueBefore\n    }\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeNameAfter\n      return lineEndingBefore(code)\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return tagOpenAttributeNameAfter\n    }\n    return tagOpenBetween(code)\n  }\n\n  /**\n   * Before unquoted, double quoted, or single quoted attribute value, allowing\n   * whitespace.\n   *\n   * ```markdown\n   * > | a <b c=d> e\n   *            ^\n   * ```\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    if (code === 34 || code === 39) {\n      effects.consume(code)\n      marker = code\n      return tagOpenAttributeValueQuoted\n    }\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeValueBefore\n      return lineEndingBefore(code)\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return tagOpenAttributeValueBefore\n    }\n    effects.consume(code)\n    return tagOpenAttributeValueUnquoted\n  }\n\n  /**\n   * In double or single quoted attribute value.\n   *\n   * ```markdown\n   * > | a <b c=\"d\"> e\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeValueQuoted(code) {\n    if (code === marker) {\n      effects.consume(code)\n      marker = undefined\n      return tagOpenAttributeValueQuotedAfter\n    }\n    if (code === null) {\n      return nok(code)\n    }\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeValueQuoted\n      return lineEndingBefore(code)\n    }\n    effects.consume(code)\n    return tagOpenAttributeValueQuoted\n  }\n\n  /**\n   * In unquoted attribute value.\n   *\n   * ```markdown\n   * > | a <b c=d> e\n   *            ^\n   * ```\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    if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code)\n    }\n    effects.consume(code)\n    return tagOpenAttributeValueUnquoted\n  }\n\n  /**\n   * After double or single quoted attribute value, before whitespace or the end\n   * of the tag.\n   *\n   * ```markdown\n   * > | a <b c=\"d\"> e\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeValueQuotedAfter(code) {\n    if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code)\n    }\n    return nok(code)\n  }\n\n  /**\n   * In certain circumstances of a tag where only an `>` is allowed.\n   *\n   * ```markdown\n   * > | a <b c=\"d\"> e\n   *               ^\n   * ```\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    return nok(code)\n  }\n\n  /**\n   * At eol.\n   *\n   * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n   * > empty tokens.\n   *\n   * ```markdown\n   * > | a <!--a\n   *            ^\n   *   | b-->\n   * ```\n   *\n   * @type {State}\n   */\n  function lineEndingBefore(code) {\n    effects.exit('htmlTextData')\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    return lineEndingAfter\n  }\n\n  /**\n   * After eol, at optional whitespace.\n   *\n   * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n   * > empty tokens.\n   *\n   * ```markdown\n   *   | a <!--a\n   * > | b-->\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function lineEndingAfter(code) {\n    // Always populated by defaults.\n\n    return markdownSpace(code)\n      ? factorySpace(\n          effects,\n          lineEndingAfterPrefix,\n          'linePrefix',\n          self.parser.constructs.disable.null.includes('codeIndented')\n            ? undefined\n            : 4\n        )(code)\n      : lineEndingAfterPrefix(code)\n  }\n\n  /**\n   * After eol, after optional whitespace.\n   *\n   * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n   * > empty tokens.\n   *\n   * ```markdown\n   *   | a <!--a\n   * > | b-->\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function lineEndingAfterPrefix(code) {\n    effects.enter('htmlTextData')\n    return returnState(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {labelEnd} from './label-end.js'\n\n/** @type {Construct} */\nexport const labelStartLink = {\n  name: 'labelStartLink',\n  tokenize: tokenizeLabelStartLink,\n  resolveAll: labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n  const self = this\n  return start\n\n  /**\n   * Start of label (link) start.\n   *\n   * ```markdown\n   * > | a [b] c\n   *       ^\n   * ```\n   *\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\n  /** @type {State} */\n  function after(code) {\n    // To do: this isn’t needed in `micromark-extension-gfm-footnote`,\n    // remove.\n    // Hidden footnotes hook.\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').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const hardBreakEscape = {\n  name: 'hardBreakEscape',\n  tokenize: tokenizeHardBreakEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n  return start\n\n  /**\n   * Start of a hard break (escape).\n   *\n   * ```markdown\n   * > | a\\\n   *      ^\n   *   | b\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter('hardBreakEscape')\n    effects.consume(code)\n    return after\n  }\n\n  /**\n   * After `\\`, at eol.\n   *\n   * ```markdown\n   * > | a\\\n   *       ^\n   *   | b\n   * ```\n   *\n   *  @type {State}\n   */\n  function after(code) {\n    if (markdownLineEnding(code)) {\n      effects.exit('hardBreakEscape')\n      return ok(code)\n    }\n    return nok(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Previous} Previous\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').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const codeText = {\n  name: 'codeText',\n  tokenize: tokenizeCodeText,\n  resolve: resolveCodeText,\n  previous\n}\n\n// To do: next major: don’t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n  let tailExitIndex = events.length - 4\n  let headEnterIndex = 3\n  /** @type {number} */\n  let index\n  /** @type {number | undefined} */\n  let enter\n\n  // If we start and end with an EOL or a space.\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\n\n    // And we have data.\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  }\n\n  // Merge adjacent spaces and data.\n  index = headEnterIndex - 1\n  tailExitIndex++\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      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      enter = undefined\n    }\n  }\n  return events\n}\n\n/**\n * @this {TokenizeContext}\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\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n  const self = this\n  let sizeOpen = 0\n  /** @type {number} */\n  let size\n  /** @type {Token} */\n  let token\n  return start\n\n  /**\n   * Start of code (text).\n   *\n   * ```markdown\n   * > | `a`\n   *     ^\n   * > | \\`a`\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter('codeText')\n    effects.enter('codeTextSequence')\n    return sequenceOpen(code)\n  }\n\n  /**\n   * In opening sequence.\n   *\n   * ```markdown\n   * > | `a`\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceOpen(code) {\n    if (code === 96) {\n      effects.consume(code)\n      sizeOpen++\n      return sequenceOpen\n    }\n    effects.exit('codeTextSequence')\n    return between(code)\n  }\n\n  /**\n   * Between something and something else.\n   *\n   * ```markdown\n   * > | `a`\n   *      ^^\n   * ```\n   *\n   * @type {State}\n   */\n  function between(code) {\n    // EOF.\n    if (code === null) {\n      return nok(code)\n    }\n\n    // To do: next major: don’t do spaces in resolve, but when compiling,\n    // like `markdown-rs`.\n    // Tabs don’t work, and virtual spaces don’t make sense.\n    if (code === 32) {\n      effects.enter('space')\n      effects.consume(code)\n      effects.exit('space')\n      return between\n    }\n\n    // Closing fence? Could also be data.\n    if (code === 96) {\n      token = effects.enter('codeTextSequence')\n      size = 0\n      return sequenceClose(code)\n    }\n    if (markdownLineEnding(code)) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return between\n    }\n\n    // Data.\n    effects.enter('codeTextData')\n    return data(code)\n  }\n\n  /**\n   * In data.\n   *\n   * ```markdown\n   * > | `a`\n   *      ^\n   * ```\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 between(code)\n    }\n    effects.consume(code)\n    return data\n  }\n\n  /**\n   * In closing sequence.\n   *\n   * ```markdown\n   * > | `a`\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceClose(code) {\n    // More.\n    if (code === 96) {\n      effects.consume(code)\n      size++\n      return sequenceClose\n    }\n\n    // Done!\n    if (size === sizeOpen) {\n      effects.exit('codeTextSequence')\n      effects.exit('codeText')\n      return ok(code)\n    }\n\n    // More or less accents: mark as data.\n    token.type = 'codeTextData'\n    return data(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\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\n/** @satisfies {Extension['document']} */\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\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n  [91]: definition\n}\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n  [-2]: codeIndented,\n  [-1]: codeIndented,\n  [32]: codeIndented\n}\n\n/** @satisfies {Extension['flow']} */\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\n/** @satisfies {Extension['string']} */\nexport const string = {\n  [38]: characterReference,\n  [92]: characterEscape\n}\n\n/** @satisfies {Extension['text']} */\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\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n  null: [attention, resolveText]\n}\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n  null: [42, 95]\n}\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n  null: []\n}\n","/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {boolean | null | undefined} [end=false]\n * @returns {Array<Chunk>}\n */\n\nconst search = /[\\0\\t\\n\\r]/g\n\n/**\n * @returns {Preprocessor}\n */\nexport function preprocess() {\n  let column = 1\n  let buffer = ''\n  /** @type {boolean | undefined} */\n  let start = true\n  /** @type {boolean | undefined} */\n  let atCarriageReturn\n  return preprocessor\n\n  /** @type {Preprocessor} */\n  function preprocessor(value, encoding, end) {\n    /** @type {Array<Chunk>} */\n    const chunks = []\n    /** @type {RegExpMatchArray | null} */\n    let match\n    /** @type {number} */\n    let next\n    /** @type {number} */\n    let startPosition\n    /** @type {number} */\n    let endPosition\n    /** @type {Code} */\n    let code\n\n    // @ts-expect-error `Buffer` does allow an encoding.\n    value = buffer + value.toString(encoding)\n    startPosition = 0\n    buffer = ''\n    if (start) {\n      // To do: `markdown-rs` actually parses BOMs (byte order mark).\n      if (value.charCodeAt(0) === 65279) {\n        startPosition++\n      }\n      start = undefined\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      if (!match) {\n        buffer = value.slice(startPosition)\n        break\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        if (startPosition < endPosition) {\n          chunks.push(value.slice(startPosition, endPosition))\n          column += endPosition - startPosition\n        }\n        switch (code) {\n          case 0: {\n            chunks.push(65533)\n            column++\n            break\n          }\n          case 9: {\n            next = Math.ceil(column / 4) * 4\n            chunks.push(-2)\n            while (column++ < next) chunks.push(-1)\n            break\n          }\n          case 10: {\n            chunks.push(-4)\n            column = 1\n            break\n          }\n          default: {\n            atCarriageReturn = true\n            column = 1\n          }\n        }\n      }\n      startPosition = endPosition + 1\n    }\n    if (end) {\n      if (atCarriageReturn) chunks.push(-5)\n      if (buffer) chunks.push(buffer)\n      chunks.push(null)\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 * Sort of like `String.fromCharCode(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n *   Value to decode.\n * @param {number} base\n *   Numeric base.\n * @returns {string}\n *   Character.\n */\nexport function decodeNumericCharacterReference(value, base) {\n  const code = Number.parseInt(value, base)\n  if (\n    // C0 except for HT, LF, FF, CR, space.\n    code < 9 ||\n    code === 11 ||\n    (code > 13 && code < 32) ||\n    // Control character (DEL) of C0, and C1 controls.\n    (code > 126 && code < 160) ||\n    // Lone high surrogates and low surrogates.\n    (code > 55295 && code < 57344) ||\n    // Noncharacters.\n    (code > 64975 && code < 65008) /* eslint-disable no-bitwise */ ||\n    (code & 65535) === 65535 ||\n    (code & 65535) === 65534 /* eslint-enable no-bitwise */ ||\n    // Out of range\n    code > 1114111\n  ) {\n    return '\\uFFFD'\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/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n *   Value to decode.\n * @returns {string}\n *   Decoded value.\n */\nexport function decodeString(value) {\n  return value.replace(characterEscapeOrReference, decode)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\nfunction decode($0, $1, $2) {\n  if ($1) {\n    // Escape.\n    return $1\n  }\n\n  // Reference.\n  const head = $2.charCodeAt(0)\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  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 *\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist').Point} Point\n *\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').StaticPhrasingContent} StaticPhrasingContent\n * @typedef {import('mdast').Content} Content\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 * @typedef {import('mdast').ReferenceType} ReferenceType\n * @typedef {import('../index.js').CompileData} CompileData\n */\n\n/**\n * @typedef {Root | Content} Node\n * @typedef {Extract<Node, UnistParent>} Parent\n *\n * @typedef {Omit<UnistParent, 'type' | 'children'> & {type: 'fragment', children: Array<PhrasingContent>}} Fragment\n */\n\n/**\n * @callback Transform\n *   Extra transform, to change the AST afterwards.\n * @param {Root} tree\n *   Tree to transform.\n * @returns {Root | undefined | null | void}\n *   New tree or nothing (in which case the current tree is used).\n *\n * @callback Handle\n *   Handle a token.\n * @param {CompileContext} this\n *   Context.\n * @param {Token} token\n *   Current token.\n * @returns {void}\n *   Nothing.\n *\n * @typedef {Record<string, Handle>} Handles\n *   Token types mapping to handles\n *\n * @callback OnEnterError\n *   Handle the case where the `right` token is open, but it is closed (by the\n *   `left` token) or because we reached the end of the document.\n * @param {Omit<CompileContext, 'sliceSerialize'>} this\n *   Context.\n * @param {Token | undefined} left\n *   Left token.\n * @param {Token} right\n *   Right token.\n * @returns {void}\n *   Nothing.\n *\n * @callback OnExitError\n *   Handle the case where the `right` token is open but it is closed by\n *   exiting the `left` token.\n * @param {Omit<CompileContext, 'sliceSerialize'>} this\n *   Context.\n * @param {Token} left\n *   Left token.\n * @param {Token} right\n *   Right token.\n * @returns {void}\n *   Nothing.\n *\n * @typedef {[Token, OnEnterError | undefined]} TokenTuple\n *   Open token on the stack, with an optional error handler for when\n *   that token isn’t closed properly.\n */\n\n/**\n * @typedef Config\n *   Configuration.\n *\n *   We have our defaults, but extensions will add more.\n * @property {Array<string>} canContainEols\n *   Token types where line endings are used.\n * @property {Handles} enter\n *   Opening handles.\n * @property {Handles} exit\n *   Closing handles.\n * @property {Array<Transform>} transforms\n *   Tree transforms.\n *\n * @typedef {Partial<Config>} Extension\n *   Change how markdown tokens from micromark are turned into mdast.\n *\n * @typedef CompileContext\n *   mdast compiler context.\n * @property {Array<Node | Fragment>} stack\n *   Stack of nodes.\n * @property {Array<TokenTuple>} tokenStack\n *   Stack of tokens.\n * @property {<Key extends keyof CompileData>(key: Key) => CompileData[Key]} getData\n *   Get data from the key/value store.\n * @property {<Key extends keyof CompileData>(key: Key, value?: CompileData[Key]) => void} setData\n *   Set data into 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 {<Kind extends Node>(this: CompileContext, node: Kind, token: Token, onError?: OnEnterError) => Kind} 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 {Config} config\n *   Configuration.\n *\n * @typedef FromMarkdownOptions\n *   Configuration for how to build mdast.\n * @property {Array<Extension | Array<Extension>> | null | undefined} [mdastExtensions]\n *   Extensions for this utility to change how tokens are turned into a tree.\n *\n * @typedef {ParseOptions & FromMarkdownOptions} Options\n *   Configuration.\n */\n\n// To do: micromark: create a registry of tokens?\n// To do: next major: don’t return given `Node` from `enter`.\n// To do: next major: remove setter/getter.\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/**\n * @param value\n *   Markdown to parse.\n * @param encoding\n *   Character encoding for when `value` is `Buffer`.\n * @param options\n *   Configuration.\n * @returns\n *   mdast tree.\n */\nexport const fromMarkdown =\n  /**\n   * @type {(\n   *   ((value: Value, encoding: Encoding, options?: Options | null | undefined) => Root) &\n   *   ((value: Value, options?: Options | null | undefined) => Root)\n   * )}\n   */\n\n  /**\n   * @param {Value} value\n   * @param {Encoding | Options | null | undefined} [encoding]\n   * @param {Options | null | undefined} [options]\n   * @returns {Root}\n   */\n  function (value, encoding, options) {\n    if (typeof encoding !== 'string') {\n      options = encoding\n      encoding = undefined\n    }\n    return compiler(options)(\n      postprocess(\n        parse(options).document().write(preprocess()(value, encoding, true))\n      )\n    )\n  }\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n  /** @type {Config} */\n  const config = {\n    transforms: [],\n    canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\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  configure(config, (options || {}).mdastExtensions || [])\n\n  /** @type {CompileData} */\n  const data = {}\n  return compile\n\n  /**\n   * Turn micromark events into an mdast tree.\n   *\n   * @param {Array<Event>} events\n   *   Events.\n   * @returns {Root}\n   *   mdast tree.\n   */\n  function compile(events) {\n    /** @type {Root} */\n    let tree = {\n      type: 'root',\n      children: []\n    }\n    /** @type {Omit<CompileContext, 'sliceSerialize'>} */\n    const context = {\n      stack: [tree],\n      tokenStack: [],\n      config,\n      enter,\n      exit,\n      buffer,\n      resume,\n      setData,\n      getData\n    }\n    /** @type {Array<number>} */\n    const listStack = []\n    let index = -1\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    index = -1\n    while (++index < events.length) {\n      const handler = config[events[index][0]]\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    // Handle tokens still being open.\n    if (context.tokenStack.length > 0) {\n      const tail = context.tokenStack[context.tokenStack.length - 1]\n      const handler = tail[1] || defaultOnError\n      handler.call(context, undefined, tail[0])\n    }\n\n    // Figure out `root` position.\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\n    // Call transforms.\n    index = -1\n    while (++index < config.transforms.length) {\n      tree = config.transforms[index](tree) || tree\n    }\n    return tree\n  }\n\n  /**\n   * @param {Array<Event>} events\n   * @param {number} start\n   * @param {number} length\n   * @returns {number}\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    let listItem\n    /** @type {number | undefined} */\n    let lineIndex\n    /** @type {number | undefined} */\n    let firstBlankLineIndex\n    /** @type {boolean | undefined} */\n    let atMarker\n    while (++index <= length) {\n      const event = events[index]\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        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          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      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          while (tailIndex--) {\n            const tailEvent = events[tailIndex]\n            if (\n              tailEvent[1].type === 'lineEnding' ||\n              tailEvent[1].type === 'lineEndingBlank'\n            ) {\n              if (tailEvent[0] === 'exit') continue\n              if (lineIndex) {\n                events[lineIndex][1].type = 'lineEndingBlank'\n                listSpread = true\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          if (\n            firstBlankLineIndex &&\n            (!lineIndex || firstBlankLineIndex < lineIndex)\n          ) {\n            listItem._spread = true\n          }\n\n          // Fix position.\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        }\n\n        // Create a new list item.\n        if (event[1].type === 'listItemPrefix') {\n          listItem = {\n            type: 'listItem',\n            _spread: false,\n            start: Object.assign({}, event[1].start),\n            // @ts-expect-error: we’ll add `end` in a second.\n            end: undefined\n          }\n          // @ts-expect-error: `listItem` is most definitely defined, TS...\n          events.splice(index, 0, ['enter', listItem, event[2]])\n          index++\n          length++\n          firstBlankLineIndex = undefined\n          atMarker = true\n        }\n      }\n    }\n    events[start][1]._spread = listSpread\n    return length\n  }\n\n  /**\n   * Set data.\n   *\n   * @template {keyof CompileData} Key\n   *   Field type.\n   * @param {Key} key\n   *   Key of field.\n   * @param {CompileData[Key]} [value]\n   *   New value.\n   * @returns {void}\n   *   Nothing.\n   */\n  function setData(key, value) {\n    data[key] = value\n  }\n\n  /**\n   * Get data.\n   *\n   * @template {keyof CompileData} Key\n   *   Field type.\n   * @param {Key} key\n   *   Key of field.\n   * @returns {CompileData[Key]}\n   *   Value.\n   */\n  function getData(key) {\n    return data[key]\n  }\n\n  /**\n   * Create an opener handle.\n   *\n   * @param {(token: Token) => Node} create\n   *   Create a node.\n   * @param {Handle} [and]\n   *   Optional function to also run.\n   * @returns {Handle}\n   *   Handle.\n   */\n  function opener(create, and) {\n    return open\n\n    /**\n     * @this {CompileContext}\n     * @param {Token} token\n     * @returns {void}\n     */\n    function open(token) {\n      enter.call(this, create(token), token)\n      if (and) and.call(this, token)\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @returns {void}\n   */\n  function buffer() {\n    this.stack.push({\n      type: 'fragment',\n      children: []\n    })\n  }\n\n  /**\n   * @template {Node} Kind\n   *   Node type.\n   * @this {CompileContext}\n   *   Context.\n   * @param {Kind} node\n   *   Node to enter.\n   * @param {Token} token\n   *   Corresponding token.\n   * @param {OnEnterError | undefined} [errorHandler]\n   *   Handle the case where this token is open, but it is closed by something else.\n   * @returns {Kind}\n   *   The given node.\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])\n    // @ts-expect-error: `end` will be patched later.\n    node.position = {\n      start: point(token.start)\n    }\n    return node\n  }\n\n  /**\n   * Create a closer handle.\n   *\n   * @param {Handle} [and]\n   *   Optional function to also run.\n   * @returns {Handle}\n   *   Handle.\n   */\n  function closer(and) {\n    return close\n\n    /**\n     * @this {CompileContext}\n     * @param {Token} token\n     * @returns {void}\n     */\n    function close(token) {\n      if (and) and.call(this, token)\n      exit.call(this, token)\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   *   Context.\n   * @param {Token} token\n   *   Corresponding token.\n   * @param {OnExitError | undefined} [onExitError]\n   *   Handle the case where another token is open.\n   * @returns {Node}\n   *   The closed node.\n   */\n  function exit(token, onExitError) {\n    const node = this.stack.pop()\n    const open = this.tokenStack.pop()\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    node.position.end = point(token.end)\n    return node\n  }\n\n  /**\n   * @this {CompileContext}\n   * @returns {string}\n   */\n  function resume() {\n    return toString(this.stack.pop())\n  }\n\n  //\n  // Handlers.\n  //\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onenterlistordered() {\n    setData('expectingFirstListItemValue', true)\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onenterlistitemvalue(token) {\n    if (getData('expectingFirstListItemValue')) {\n      const ancestor = this.stack[this.stack.length - 2]\n      ancestor.start = Number.parseInt(this.sliceSerialize(token), 10)\n      setData('expectingFirstListItemValue')\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodefencedfenceinfo() {\n    const data = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    node.lang = data\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodefencedfencemeta() {\n    const data = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    node.meta = data\n  }\n\n  /**\n   * @this {CompileContext}\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\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodefenced() {\n    const data = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '')\n    setData('flowCodeInside')\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodeindented() {\n    const data = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    node.value = data.replace(/(\\r?\\n|\\r)$/g, '')\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitdefinitionlabelstring(token) {\n    const label = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    node.label = label\n    node.identifier = normalizeIdentifier(\n      this.sliceSerialize(token)\n    ).toLowerCase()\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitdefinitiontitlestring() {\n    const data = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    node.title = data\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitdefinitiondestinationstring() {\n    const data = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    node.url = data\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitatxheadingsequence(token) {\n    const node = this.stack[this.stack.length - 1]\n    if (!node.depth) {\n      const depth = this.sliceSerialize(token).length\n      node.depth = depth\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitsetextheadingtext() {\n    setData('setextHeadingSlurpLineEnding', true)\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitsetextheadinglinesequence(token) {\n    const node = this.stack[this.stack.length - 1]\n    node.depth = this.sliceSerialize(token).charCodeAt(0) === 61 ? 1 : 2\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitsetextheading() {\n    setData('setextHeadingSlurpLineEnding')\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onenterdata(token) {\n    const node = this.stack[this.stack.length - 1]\n    let tail = node.children[node.children.length - 1]\n    if (!tail || tail.type !== 'text') {\n      // Add a new text node.\n      tail = text()\n      // @ts-expect-error: we’ll add `end` later.\n      tail.position = {\n        start: point(token.start)\n      }\n      // @ts-expect-error: Assume `parent` accepts `text`.\n      node.children.push(tail)\n    }\n    this.stack.push(tail)\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\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\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlineending(token) {\n    const context = this.stack[this.stack.length - 1]\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    if (\n      !getData('setextHeadingSlurpLineEnding') &&\n      config.canContainEols.includes(context.type)\n    ) {\n      onenterdata.call(this, token)\n      onexitdata.call(this, token)\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexithardbreak() {\n    setData('atHardBreak', true)\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexithtmlflow() {\n    const data = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    node.value = data\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexithtmltext() {\n    const data = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    node.value = data\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitcodetext() {\n    const data = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    node.value = data\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlink() {\n    const node = this.stack[this.stack.length - 1]\n    // Note: there are also `identifier` and `label` fields on this link node!\n    // These are used / cleaned here.\n    // To do: clean.\n    if (getData('inReference')) {\n      /** @type {ReferenceType} */\n      const referenceType = getData('referenceType') || 'shortcut'\n      node.type += 'Reference'\n      // @ts-expect-error: mutate.\n      node.referenceType = referenceType\n      // @ts-expect-error: mutate.\n      delete node.url\n      delete node.title\n    } else {\n      // @ts-expect-error: mutate.\n      delete node.identifier\n      // @ts-expect-error: mutate.\n      delete node.label\n    }\n    setData('referenceType')\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitimage() {\n    const node = this.stack[this.stack.length - 1]\n    // Note: there are also `identifier` and `label` fields on this link node!\n    // These are used / cleaned here.\n    // To do: clean.\n    if (getData('inReference')) {\n      /** @type {ReferenceType} */\n      const referenceType = getData('referenceType') || 'shortcut'\n      node.type += 'Reference'\n      // @ts-expect-error: mutate.\n      node.referenceType = referenceType\n      // @ts-expect-error: mutate.\n      delete node.url\n      delete node.title\n    } else {\n      // @ts-expect-error: mutate.\n      delete node.identifier\n      // @ts-expect-error: mutate.\n      delete node.label\n    }\n    setData('referenceType')\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlabeltext(token) {\n    const string = this.sliceSerialize(token)\n    const ancestor = this.stack[this.stack.length - 2]\n    // @ts-expect-error: stash this on the node, as it might become a reference\n    // later.\n    ancestor.label = decodeString(string)\n    // @ts-expect-error: same as above.\n    ancestor.identifier = normalizeIdentifier(string).toLowerCase()\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlabel() {\n    const fragment = this.stack[this.stack.length - 1]\n    const value = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    // Assume a reference.\n    setData('inReference', true)\n    if (node.type === 'link') {\n      /** @type {Array<StaticPhrasingContent>} */\n      // @ts-expect-error: Assume static phrasing content.\n      const children = fragment.children\n      node.children = children\n    } else {\n      node.alt = value\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitresourcedestinationstring() {\n    const data = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    node.url = data\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitresourcetitlestring() {\n    const data = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    node.title = data\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitresource() {\n    setData('inReference')\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onenterreference() {\n    setData('referenceType', 'collapsed')\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitreferencestring(token) {\n    const label = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    // @ts-expect-error: stash this on the node, as it might become a reference\n    // later.\n    node.label = label\n    // @ts-expect-error: same as above.\n    node.identifier = normalizeIdentifier(\n      this.sliceSerialize(token)\n    ).toLowerCase()\n    setData('referenceType', 'full')\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitcharacterreferencemarker(token) {\n    setData('characterReferenceType', token.type)\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcharacterreferencevalue(token) {\n    const data = this.sliceSerialize(token)\n    const type = getData('characterReferenceType')\n    /** @type {string} */\n    let value\n    if (type) {\n      value = decodeNumericCharacterReference(\n        data,\n        type === 'characterReferenceMarkerNumeric' ? 10 : 16\n      )\n      setData('characterReferenceType')\n    } else {\n      const result = decodeNamedCharacterReference(data)\n      value = result\n    }\n    const tail = this.stack.pop()\n    tail.value += value\n    tail.position.end = point(token.end)\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitautolinkprotocol(token) {\n    onexitdata.call(this, token)\n    const node = this.stack[this.stack.length - 1]\n    node.url = this.sliceSerialize(token)\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitautolinkemail(token) {\n    onexitdata.call(this, token)\n    const node = this.stack[this.stack.length - 1]\n    node.url = 'mailto:' + this.sliceSerialize(token)\n  }\n\n  //\n  // Creaters.\n  //\n\n  /** @returns {Blockquote} */\n  function blockQuote() {\n    return {\n      type: 'blockquote',\n      children: []\n    }\n  }\n\n  /** @returns {Code} */\n  function codeFlow() {\n    return {\n      type: 'code',\n      lang: null,\n      meta: null,\n      value: ''\n    }\n  }\n\n  /** @returns {InlineCode} */\n  function codeText() {\n    return {\n      type: 'inlineCode',\n      value: ''\n    }\n  }\n\n  /** @returns {Definition} */\n  function definition() {\n    return {\n      type: 'definition',\n      identifier: '',\n      label: null,\n      title: null,\n      url: ''\n    }\n  }\n\n  /** @returns {Emphasis} */\n  function emphasis() {\n    return {\n      type: 'emphasis',\n      children: []\n    }\n  }\n\n  /** @returns {Heading} */\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\n  /** @returns {Break} */\n  function hardBreak() {\n    return {\n      type: 'break'\n    }\n  }\n\n  /** @returns {HTML} */\n  function html() {\n    return {\n      type: 'html',\n      value: ''\n    }\n  }\n\n  /** @returns {Image} */\n  function image() {\n    return {\n      type: 'image',\n      title: null,\n      url: '',\n      alt: null\n    }\n  }\n\n  /** @returns {Link} */\n  function link() {\n    return {\n      type: 'link',\n      title: null,\n      url: '',\n      children: []\n    }\n  }\n\n  /**\n   * @param {Token} token\n   * @returns {List}\n   */\n  function list(token) {\n    return {\n      type: 'list',\n      ordered: token.type === 'listOrdered',\n      start: null,\n      spread: token._spread,\n      children: []\n    }\n  }\n\n  /**\n   * @param {Token} token\n   * @returns {ListItem}\n   */\n  function listItem(token) {\n    return {\n      type: 'listItem',\n      spread: token._spread,\n      checked: null,\n      children: []\n    }\n  }\n\n  /** @returns {Paragraph} */\n  function paragraph() {\n    return {\n      type: 'paragraph',\n      children: []\n    }\n  }\n\n  /** @returns {Strong} */\n  function strong() {\n    return {\n      type: 'strong',\n      children: []\n    }\n  }\n\n  /** @returns {Text} */\n  function text() {\n    return {\n      type: 'text',\n      value: ''\n    }\n  }\n\n  /** @returns {ThematicBreak} */\n  function thematicBreak() {\n    return {\n      type: 'thematicBreak'\n    }\n  }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n *   Point-like value.\n * @returns {Point}\n *   unist point.\n */\nfunction point(d) {\n  return {\n    line: d.line,\n    column: d.column,\n    offset: d.offset\n  }\n}\n\n/**\n * @param {Config} combined\n * @param {Array<Extension | Array<Extension>>} extensions\n * @returns {void}\n */\nfunction configure(combined, extensions) {\n  let index = -1\n  while (++index < extensions.length) {\n    const value = extensions[index]\n    if (Array.isArray(value)) {\n      configure(combined, value)\n    } else {\n      extension(combined, value)\n    }\n  }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {void}\n */\nfunction extension(combined, extension) {\n  /** @type {keyof Extension} */\n  let key\n  for (key in extension) {\n    if (own.call(extension, key)) {\n      if (key === 'canContainEols') {\n        const right = extension[key]\n        if (right) {\n          combined[key].push(...right)\n        }\n      } else if (key === 'transforms') {\n        const right = extension[key]\n        if (right) {\n          combined[key].push(...right)\n        }\n      } else if (key === 'enter' || key === 'exit') {\n        const right = extension[key]\n        if (right) {\n          Object.assign(combined[key], right)\n        }\n      }\n    }\n  }\n}\n\n/** @type {OnEnterError} */\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 */\n\nimport {subtokenize} from 'micromark-util-subtokenize'\n\n/**\n * @param {Array<Event>} events\n * @returns {Array<Event>}\n */\nexport function postprocess(events) {\n  while (!subtokenize(events)) {\n    // Empty\n  }\n  return events\n}\n","/**\n * @typedef {import('micromark-util-types').Create} Create\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n */\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/**\n * @param {ParseOptions | null | undefined} [options]\n * @returns {ParseContext}\n */\nexport function parse(options) {\n  const settings = options || {}\n  const constructs =\n    /** @type {FullNormalizedExtension} */\n    combineExtensions([defaultConstructs, ...(settings.extensions || [])])\n\n  /** @type {ParseContext} */\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  /**\n   * @param {InitialConstruct} initial\n   */\n  function create(initial) {\n    return creator\n    /** @type {Create} */\n    function creator(from) {\n      return createTokenizer(parser, initial, from)\n    }\n  }\n}\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/**\n * @this {import('unified').Processor}\n * @type {import('unified').Plugin<[Options?] | void[], string, Root>}\n */\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","import {asciiAlphanumeric} from 'micromark-util-character'\nimport {encode} from 'micromark-util-encode'\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`).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * 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]`, or\n * `/^https?$/i` for `img[src]` (this is what `github.com` allows).\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 *   URI to sanitize.\n * @param {RegExp | null | undefined} [protocol]\n *   Allowed protocols.\n * @returns {string}\n *   Sanitized URI.\n */\nexport function sanitizeUri(url, protocol) {\n  const value = encode(normalizeUri(url || ''))\n  if (!protocol) {\n    return value\n  }\n  const colon = value.indexOf(':')\n  const questionMark = value.indexOf('?')\n  const numberSign = value.indexOf('#')\n  const slash = value.indexOf('/')\n  if (\n    // If there is no protocol, it’s relative.\n    colon < 0 ||\n    // 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) ||\n    // It is a protocol, it should be allowed.\n    protocol.test(value.slice(0, colon))\n  ) {\n    return value\n  }\n  return ''\n}\n\n/**\n * Normalize a URL.\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n *   URI to normalize.\n * @returns {string}\n *   Normalized URI.\n */\nexport function normalizeUri(value) {\n  /** @type {Array<string>} */\n  const result = []\n  let index = -1\n  let start = 0\n  let skip = 0\n  while (++index < value.length) {\n    const code = value.charCodeAt(index)\n    /** @type {string} */\n    let replace = ''\n\n    // A correct percent encoded value.\n    if (\n      code === 37 &&\n      asciiAlphanumeric(value.charCodeAt(index + 1)) &&\n      asciiAlphanumeric(value.charCodeAt(index + 2))\n    ) {\n      skip = 2\n    }\n    // ASCII.\n    else if (code < 128) {\n      if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n        replace = String.fromCharCode(code)\n      }\n    }\n    // Astral.\n    else if (code > 55295 && code < 57344) {\n      const next = value.charCodeAt(index + 1)\n\n      // A correct surrogate pair.\n      if (code < 56320 && next > 56319 && next < 57344) {\n        replace = String.fromCharCode(code, next)\n        skip = 1\n      }\n      // Lone surrogate.\n      else {\n        replace = '\\uFFFD'\n      }\n    }\n    // Unicode.\n    else {\n      replace = String.fromCharCode(code)\n    }\n    if (replace) {\n      result.push(value.slice(start, index), encodeURIComponent(replace))\n      start = index + skip + 1\n      replace = ''\n    }\n    if (skip) {\n      index += skip\n      skip = 0\n    }\n  }\n  return result.join('') + value.slice(start)\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n */\n\n/**\n * @typedef {Record<string, unknown>} Props\n * @typedef {null | undefined | string | Props | TestFunctionAnything | Array<string | Props | TestFunctionAnything>} Test\n *   Check for an arbitrary node, unaware of TypeScript inferral.\n *\n * @callback TestFunctionAnything\n *   Check if a node passes a test, unaware of TypeScript inferral.\n * @param {unknown} this\n *   The given context.\n * @param {Node} node\n *   A node.\n * @param {number | null | undefined} [index]\n *   The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n *   The node’s parent.\n * @returns {boolean | void}\n *   Whether this node passes the test.\n */\n\n/**\n * @template {Node} Kind\n *   Node type.\n * @typedef {Kind['type'] | Partial<Kind> | TestFunctionPredicate<Kind> | Array<Kind['type'] | Partial<Kind> | TestFunctionPredicate<Kind>>} PredicateTest\n *   Check for a node that can be inferred by TypeScript.\n */\n\n/**\n * Check if a node passes a certain test.\n *\n * @template {Node} Kind\n *   Node type.\n * @callback TestFunctionPredicate\n *   Complex test function for a node that can be inferred by TypeScript.\n * @param {Node} node\n *   A node.\n * @param {number | null | undefined} [index]\n *   The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n *   The node’s parent.\n * @returns {node is Kind}\n *   Whether this node passes the test.\n */\n\n/**\n * @callback AssertAnything\n *   Check that an arbitrary value is a node, unaware of TypeScript inferral.\n * @param {unknown} [node]\n *   Anything (typically a node).\n * @param {number | null | undefined} [index]\n *   The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n *   The node’s parent.\n * @returns {boolean}\n *   Whether this is a node and passes a test.\n */\n\n/**\n * Check if a node is a node and passes a certain node test.\n *\n * @template {Node} Kind\n *   Node type.\n * @callback AssertPredicate\n *   Check that an arbitrary value is a specific node, aware of TypeScript.\n * @param {unknown} [node]\n *   Anything (typically a node).\n * @param {number | null | undefined} [index]\n *   The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n *   The node’s parent.\n * @returns {node is Kind}\n *   Whether this is a node and passes a test.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param node\n *   Thing to check, typically `Node`.\n * @param test\n *   A check for a specific node.\n * @param index\n *   The node’s position in its parent.\n * @param parent\n *   The node’s parent.\n * @returns\n *   Whether `node` is a node and passes a test.\n */\nexport const is =\n  /**\n   * @type {(\n   *   (() => false) &\n   *   (<Kind extends Node = Node>(node: unknown, test: PredicateTest<Kind>, index: number, parent: Parent, context?: unknown) => node is Kind) &\n   *   (<Kind extends Node = Node>(node: unknown, test: PredicateTest<Kind>, index?: null | undefined, parent?: null | undefined, context?: unknown) => node is Kind) &\n   *   ((node: unknown, test: Test, index: number, parent: Parent, context?: unknown) => boolean) &\n   *   ((node: unknown, test?: Test, index?: null | undefined, parent?: null | undefined, context?: unknown) => boolean)\n   * )}\n   */\n  (\n    /**\n     * @param {unknown} [node]\n     * @param {Test} [test]\n     * @param {number | null | undefined} [index]\n     * @param {Parent | null | undefined} [parent]\n     * @param {unknown} [context]\n     * @returns {boolean}\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\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param test\n *   *   when nullish, checks if `node` is a `Node`.\n *   *   when `string`, works like passing `(node) => 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 if any one of the subtests pass.\n * @returns\n *   An assertion.\n */\nexport const convert =\n  /**\n   * @type {(\n   *   (<Kind extends Node>(test: PredicateTest<Kind>) => AssertPredicate<Kind>) &\n   *   ((test?: Test) => AssertAnything)\n   * )}\n   */\n  (\n    /**\n     * @param {Test} [test]\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/**\n * @param {Array<string | 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 {Array<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 * Turn an object into a test for a node with a certain fields.\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 * Turn a string into a test for a node with a certain type.\n *\n * @param {string} 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 * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunctionAnything} check\n * @returns {AssertAnything}\n */\nfunction castFactory(check) {\n  return assertion\n\n  /**\n   * @this {unknown}\n   * @param {unknown} node\n   * @param {Array<unknown>} parameters\n   * @returns {boolean}\n   */\n  function assertion(node, ...parameters) {\n    return Boolean(\n      node &&\n        typeof node === 'object' &&\n        'type' in node &&\n        // @ts-expect-error: fine.\n        Boolean(check.call(this, node, ...parameters))\n    )\n  }\n}\n\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 */\n\n/**\n * @typedef {boolean | 'skip'} Action\n *   Union of the action types.\n *\n * @typedef {number} Index\n *   Move to the sibling at `index` next (after node itself is completely\n *   traversed).\n *\n *   Useful if mutating the tree, such as removing the node the visitor is\n *   currently on, or any of its previous siblings.\n *   Results less than 0 or greater than or equal to `children.length` stop\n *   traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n *   List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n *   Any value that can be returned from a visitor.\n */\n\n/**\n * @template {Node} [Visited=Node]\n *   Visited node type.\n * @template {Parent} [Ancestor=Parent]\n *   Ancestor type.\n * @callback Visitor\n *   Handle a node (matching `test`, if given).\n *\n *   Visitors are free to transform `node`.\n *   They can also transform the parent of node (the last of `ancestors`).\n *\n *   Replacing `node` itself, if `SKIP` is not returned, still causes its\n *   descendants to be walked (which is a bug).\n *\n *   When adding or removing previous siblings of `node` (or next siblings, in\n *   case of reverse), the `Visitor` should return a new `Index` to specify the\n *   sibling to traverse after `node` is traversed.\n *   Adding or removing next siblings of `node` (or previous siblings, in case\n *   of reverse) is handled as expected without needing to return a new `Index`.\n *\n *   Removing the children property of an ancestor still results in them being\n *   traversed.\n * @param {Visited} node\n *   Found node.\n * @param {Array<Ancestor>} ancestors\n *   Ancestors of `node`.\n * @returns {VisitorResult}\n *   What to do next.\n *\n *   An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n *   An `Action` is treated as a tuple of `[Action]`.\n *\n *   Passing a tuple back only makes sense if the `Action` is `SKIP`.\n *   When the `Action` is `EXIT`, that action can be returned.\n *   When the `Action` is `CONTINUE`, `Index` can be returned.\n */\n\n/**\n * @template {Node} [Tree=Node]\n *   Tree type.\n * @template {Test} [Check=string]\n *   Test type.\n * @typedef {Visitor<import('./complex-types.js').Matches<import('./complex-types.js').InclusiveDescendant<Tree>, Check>, Extract<import('./complex-types.js').InclusiveDescendant<Tree>, Parent>>} BuildVisitor\n *   Build a typed `Visitor` function from a tree and a test.\n *\n *   It will infer which values are passed as `node` and which as `parents`.\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/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @param tree\n *   Tree to traverse.\n * @param test\n *   `unist-util-is`-compatible test\n * @param visitor\n *   Handle each node.\n * @param reverse\n *   Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns\n *   Nothing.\n */\nexport const visitParents =\n  /**\n   * @type {(\n   *   (<Tree extends Node, Check extends Test>(tree: Tree, test: Check, visitor: BuildVisitor<Tree, Check>, reverse?: boolean | null | undefined) => void) &\n   *   (<Tree extends Node>(tree: Tree, visitor: BuildVisitor<Tree>, reverse?: boolean | null | undefined) => void)\n   * )}\n   */\n  (\n    /**\n     * @param {Node} tree\n     * @param {Test} test\n     * @param {Visitor<Node>} visitor\n     * @param {boolean | null | undefined} [reverse]\n     * @returns {void}\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, undefined, [])()\n\n      /**\n       * @param {Node} node\n       * @param {number | undefined} 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 = node && typeof node === 'object' ? node : {}\n\n        if (typeof value.type === 'string') {\n          const name =\n            // `hast`\n            typeof value.tagName === 'string'\n              ? value.tagName\n              : // `xast`\n              typeof value.name === 'string'\n              ? value.name\n              : undefined\n\n          Object.defineProperty(visit, 'name', {\n            value:\n              'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\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 * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n *   Valid return values from visitors.\n * @returns {ActionTuple}\n *   Clean result.\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 */\n\n/**\n * Check if `Child` can be a child of `Ancestor`.\n *\n * Returns the ancestor when `Child` can be a child of `Ancestor`, or returns\n * `never`.\n *\n * @template {Node} Ancestor\n *   Node type.\n * @template {Node} Child\n *   Node type.\n * @typedef {(\n *   Ancestor extends Parent\n *     ? Child extends Ancestor['children'][number]\n *       ? Ancestor\n *       : never\n *     : never\n * )} ParentsOf\n */\n\n/**\n * @template {Node} [Visited=Node]\n *   Visited node type.\n * @template {Parent} [Ancestor=Parent]\n *   Ancestor type.\n * @callback Visitor\n *   Handle a node (matching `test`, if given).\n *\n *   Visitors are free to transform `node`.\n *   They can also transform `parent`.\n *\n *   Replacing `node` itself, if `SKIP` is not returned, still causes its\n *   descendants to be walked (which is a bug).\n *\n *   When adding or removing previous siblings of `node` (or next siblings, in\n *   case of reverse), the `Visitor` should return a new `Index` to specify the\n *   sibling to traverse after `node` is traversed.\n *   Adding or removing next siblings of `node` (or previous siblings, in case\n *   of reverse) is handled as expected without needing to return a new `Index`.\n *\n *   Removing the children property of `parent` still results in them being\n *   traversed.\n * @param {Visited} node\n *   Found node.\n * @param {Visited extends Node ? number | null : never} index\n *   Index of `node` in `parent`.\n * @param {Ancestor extends Node ? Ancestor | null : never} parent\n *   Parent of `node`.\n * @returns {VisitorResult}\n *   What to do next.\n *\n *   An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n *   An `Action` is treated as a tuple of `[Action]`.\n *\n *   Passing a tuple back only makes sense if the `Action` is `SKIP`.\n *   When the `Action` is `EXIT`, that action can be returned.\n *   When the `Action` is `CONTINUE`, `Index` can be returned.\n */\n\n/**\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} Visited\n *   Node type.\n * @template {Parent} Ancestor\n *   Parent type.\n * @typedef {Visitor<Visited, ParentsOf<Ancestor, Visited>>} BuildVisitorFromMatch\n */\n\n/**\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} Descendant\n *   Node type.\n * @template {Test} Check\n *   Test type.\n * @typedef {(\n *   BuildVisitorFromMatch<\n *     import('unist-util-visit-parents/complex-types.js').Matches<Descendant, Check>,\n *     Extract<Descendant, Parent>\n *   >\n * )} BuildVisitorFromDescendants\n */\n\n/**\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} [Tree=Node]\n *   Node type.\n * @template {Test} [Check=string]\n *   Test type.\n * @typedef {(\n *   BuildVisitorFromDescendants<\n *     import('unist-util-visit-parents/complex-types.js').InclusiveDescendant<Tree>,\n *     Check\n *   >\n * )} BuildVisitor\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @param tree\n *   Tree to traverse.\n * @param test\n *   `unist-util-is`-compatible test\n * @param visitor\n *   Handle each node.\n * @param reverse\n *   Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns\n *   Nothing.\n */\nexport const visit =\n  /**\n   * @type {(\n   *   (<Tree extends Node, Check extends Test>(tree: Tree, test: Check, visitor: BuildVisitor<Tree, Check>, reverse?: boolean | null | undefined) => void) &\n   *   (<Tree extends Node>(tree: Tree, visitor: BuildVisitor<Tree>, reverse?: boolean | null | undefined) => void)\n   * )}\n   */\n  (\n    /**\n     * @param {Node} tree\n     * @param {Test} test\n     * @param {Visitor} visitor\n     * @param {boolean | null | undefined} [reverse]\n     * @returns {void}\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 {import('unist').Point} Point\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n */\n\n/**\n * Get the starting point of `node`.\n *\n * @param node\n *   Node.\n * @returns\n *   Point.\n */\nexport const pointStart = point('start')\n\n/**\n * Get the ending point of `node`.\n *\n * @param node\n *   Node.\n * @returns\n *   Point.\n */\nexport const pointEnd = point('end')\n\n/**\n * Get the positional info of `node`.\n *\n * @param {NodeLike | Node | null | undefined} [node]\n *   Node.\n * @returns {Position}\n *   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 *   Side.\n * @returns\n *   Getter.\n */\nfunction point(type) {\n  return point\n\n  /**\n   * Get the point info of `node` at a bound side.\n   *\n   * @param {NodeLike | Node | null | undefined} [node]\n   * @returns {Point}\n   */\n  function point(node) {\n    const point = (node && node.position && node.position[type]) || {}\n\n    // To do: next major: don’t return points when invalid.\n    return {\n      // @ts-expect-error: in practice, null is allowed.\n      line: point.line || null,\n      // @ts-expect-error: in practice, null is allowed.\n      column: point.column || null,\n      // @ts-expect-error: in practice, null is allowed.\n      offset: point.offset > -1 ? point.offset : null\n    }\n  }\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Definition} Definition\n */\n\n/**\n * @typedef {Root | Content} Node\n *\n * @callback GetDefinition\n *   Get a definition by identifier.\n * @param {string | null | undefined} [identifier]\n *   Identifier of definition.\n * @returns {Definition | null}\n *   Definition corresponding to `identifier` or `null`.\n */\n\nimport {visit} from 'unist-util-visit'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Find definitions in `tree`.\n *\n * Uses CommonMark precedence, which means that earlier definitions are\n * preferred over duplicate later definitions.\n *\n * @param {Node} tree\n *   Tree to check.\n * @returns {GetDefinition}\n *   Getter.\n */\nexport function definitions(tree) {\n  /** @type {Record<string, Definition>} */\n  const cache = Object.create(null)\n\n  if (!tree || !tree.type) {\n    throw new Error('mdast-util-definitions expected node')\n  }\n\n  visit(tree, '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  /** @type {GetDefinition} */\n  function definition(identifier) {\n    const id = clean(identifier)\n    // To do: next major: return `undefined` when not found.\n    return id && own.call(cache, id) ? cache[id] : null\n  }\n}\n\n/**\n * @param {string | null | undefined} [value]\n * @returns {string}\n */\nfunction clean(value) {\n  return String(value || '').toUpperCase()\n}\n","/**\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('hast').Element} Element\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `footnoteReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {FootnoteReference} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function footnoteReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const safeId = normalizeUri(id.toLowerCase())\n  const index = state.footnoteOrder.indexOf(id)\n  /** @type {number} */\n  let counter\n\n  if (index === -1) {\n    state.footnoteOrder.push(id)\n    state.footnoteCounts[id] = 1\n    counter = state.footnoteOrder.length\n  } else {\n    state.footnoteCounts[id]++\n    counter = index + 1\n  }\n\n  const reuseCounter = state.footnoteCounts[id]\n\n  /** @type {Element} */\n  const link = {\n    type: 'element',\n    tagName: 'a',\n    properties: {\n      href: '#' + state.clobberPrefix + 'fn-' + safeId,\n      id:\n        state.clobberPrefix +\n        'fnref-' +\n        safeId +\n        (reuseCounter > 1 ? '-' + reuseCounter : ''),\n      dataFootnoteRef: true,\n      ariaDescribedBy: ['footnote-label']\n    },\n    children: [{type: 'text', value: String(counter)}]\n  }\n  state.patch(node, link)\n\n  /** @type {Element} */\n  const sup = {\n    type: 'element',\n    tagName: 'sup',\n    properties: {},\n    children: [link]\n  }\n  state.patch(node, sup)\n  return state.applyData(node, sup)\n}\n","/**\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Reference} Reference\n * @typedef {import('mdast').Root} Root\n *\n * @typedef {import('./state.js').State} State\n */\n\n/**\n * @typedef {Root | Content} Nodes\n * @typedef {Extract<Nodes, Reference>} References\n */\n\n// To do: next major: always return array.\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n *   Info passed around.\n * @param {References} node\n *   Reference node (image, link).\n * @returns {ElementContent | Array<ElementContent>}\n *   hast content.\n */\nexport function revert(state, 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 {type: 'text', value: '![' + node.alt + suffix}\n  }\n\n  const contents = state.all(node)\n  const head = contents[0]\n\n  if (head && head.type === 'text') {\n    head.value = '[' + head.value\n  } else {\n    contents.unshift({type: 'text', value: '['})\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({type: 'text', value: suffix})\n  }\n\n  return contents\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * @typedef {Root | Content} Nodes\n * @typedef {Extract<Nodes, Parent>} Parents\n */\n\n/**\n * Turn an mdast `listItem` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ListItem} node\n *   mdast node.\n * @param {Parents | null | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function listItem(state, node, parent) {\n  const results = state.all(node)\n  const loose = parent ? listLoose(parent) : listItemLoose(node)\n  /** @type {Properties} */\n  const properties = {}\n  /** @type {Array<ElementContent>} */\n  const children = []\n\n  if (typeof node.checked === 'boolean') {\n    const head = results[0]\n    /** @type {Element} */\n    let paragraph\n\n    if (head && head.type === 'element' && head.tagName === 'p') {\n      paragraph = head\n    } else {\n      paragraph = {type: 'element', tagName: 'p', properties: {}, children: []}\n      results.unshift(paragraph)\n    }\n\n    if (paragraph.children.length > 0) {\n      paragraph.children.unshift({type: 'text', value: ' '})\n    }\n\n    paragraph.children.unshift({\n      type: 'element',\n      tagName: 'input',\n      properties: {type: 'checkbox', checked: node.checked, disabled: true},\n      children: []\n    })\n\n    // According to github-markdown-css, this class hides bullet.\n    // See: <https://github.com/sindresorhus/github-markdown-css>.\n    properties.className = ['task-list-item']\n  }\n\n  let index = -1\n\n  while (++index < results.length) {\n    const child = results[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      children.push({type: 'text', value: '\\n'})\n    }\n\n    if (child.type === 'element' && child.tagName === 'p' && !loose) {\n      children.push(...child.children)\n    } else {\n      children.push(child)\n    }\n  }\n\n  const tail = results[results.length - 1]\n\n  // Add a final eol.\n  if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {\n    children.push({type: 'text', value: '\\n'})\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'li', properties, children}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n/**\n * @param {Parents} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n  let loose = false\n  if (node.type === 'list') {\n    loose = node.spread || false\n    const children = node.children\n    let index = -1\n\n    while (!loose && ++index < children.length) {\n      loose = listItemLoose(children[index])\n    }\n  }\n\n  return 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 {tableRow} from './table-row.js'\nimport {tableCell} from './table-cell.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default handlers for nodes.\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  tableCell,\n  tableRow,\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  // To do: next major: return `undefined`.\n  return null\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `blockquote` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Blockquote} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function blockquote(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'blockquote',\n    properties: {},\n    children: state.wrap(state.all(node), true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').Break} Break\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `break` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Break} node\n *   mdast node.\n * @returns {Array<Element | Text>}\n *   hast element content.\n */\nexport function hardBreak(state, node) {\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'br', properties: {}, children: []}\n  state.patch(node, result)\n  return [state.applyData(node, result), {type: 'text', value: '\\n'}]\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Code} Code\n * @typedef {import('../state.js').State} State\n\n */\n\n/**\n * Turn an mdast `code` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Code} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function code(state, 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]|$)/) : null\n  /** @type {Properties} */\n  const properties = {}\n\n  if (lang) {\n    properties.className = ['language-' + lang]\n  }\n\n  // Create `<code>`.\n  /** @type {Element} */\n  let result = {\n    type: 'element',\n    tagName: 'code',\n    properties,\n    children: [{type: 'text', value}]\n  }\n\n  if (node.meta) {\n    result.data = {meta: node.meta}\n  }\n\n  state.patch(node, result)\n  result = state.applyData(node, result)\n\n  // Create `<pre>`.\n  result = {type: 'element', tagName: 'pre', properties: {}, children: [result]}\n  state.patch(node, result)\n  return result\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('../state.js').State} State\n\n */\n\n/**\n * Turn an mdast `delete` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Delete} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strikethrough(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'del',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `emphasis` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Emphasis} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function emphasis(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'em',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Footnote} Footnote\n * @typedef {import('../state.js').State} State\n */\n\nimport {footnoteReference} from './footnote-reference.js'\n\n// To do: when both:\n// * <https://github.com/micromark/micromark-extension-footnote>\n// * <https://github.com/syntax-tree/mdast-util-footnote>\n// …are archived, remove this (also from mdast).\n// These inline notes are not used in GFM.\n\n/**\n * Turn an mdast `footnote` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Footnote} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function footnote(state, node) {\n  const footnoteById = state.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(state, {\n    type: 'footnoteReference',\n    identifier,\n    position: node.position\n  })\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `heading` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Heading} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function heading(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'h' + node.depth,\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').HTML} Html\n * @typedef {import('../state.js').State} State\n * @typedef {import('../../index.js').Raw} Raw\n */\n\n/**\n * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise\n * nothing).\n *\n * @param {State} state\n *   Info passed around.\n * @param {Html} node\n *   mdast node.\n * @returns {Raw | Element | null}\n *   hast node.\n */\nexport function html(state, node) {\n  if (state.dangerous) {\n    /** @type {Raw} */\n    const result = {type: 'raw', value: node.value}\n    state.patch(node, result)\n    return state.applyData(node, result)\n  }\n\n  // To do: next major: return `undefined`.\n  return null\n}\n","/**\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `imageReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ImageReference} node\n *   mdast node.\n * @returns {ElementContent | Array<ElementContent>}\n *   hast node.\n */\nexport function imageReference(state, node) {\n  const def = state.definition(node.identifier)\n\n  if (!def) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(def.url || ''), alt: node.alt}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Image} Image\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `image` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Image} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function image(state, node) {\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(node.url)}\n\n  if (node.alt !== null && node.alt !== undefined) {\n    properties.alt = node.alt\n  }\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `inlineCode` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {InlineCode} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function inlineCode(state, node) {\n  /** @type {Text} */\n  const text = {type: 'text', value: node.value.replace(/\\r?\\n|\\r/g, ' ')}\n  state.patch(node, text)\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'code',\n    properties: {},\n    children: [text]\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `linkReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {LinkReference} node\n *   mdast node.\n * @returns {ElementContent | Array<ElementContent>}\n *   hast node.\n */\nexport function linkReference(state, node) {\n  const def = state.definition(node.identifier)\n\n  if (!def) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(def.url || '')}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Link} Link\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `link` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Link} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function link(state, node) {\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(node.url)}\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').List} List\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `list` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {List} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function list(state, node) {\n  /** @type {Properties} */\n  const properties = {}\n  const results = state.all(node)\n  let index = -1\n\n  if (typeof node.start === 'number' && node.start !== 1) {\n    properties.start = node.start\n  }\n\n  // Like GitHub, add a class for custom styling.\n  while (++index < results.length) {\n    const child = results[index]\n\n    if (\n      child.type === 'element' &&\n      child.tagName === 'li' &&\n      child.properties &&\n      Array.isArray(child.properties.className) &&\n      child.properties.className.includes('task-list-item')\n    ) {\n      properties.className = ['contains-task-list']\n      break\n    }\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: node.ordered ? 'ol' : 'ul',\n    properties,\n    children: state.wrap(results, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `paragraph` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Paragraph} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function paragraph(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'p',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `root` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastRoot} node\n *   mdast node.\n * @returns {HastRoot | HastElement}\n *   hast node.\n */\nexport function root(state, node) {\n  /** @type {HastRoot} */\n  const result = {type: 'root', children: state.wrap(state.all(node))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `strong` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Strong} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strong(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'strong',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Table} Table\n * @typedef {import('../state.js').State} State\n */\n\nimport {pointStart, pointEnd} from 'unist-util-position'\n\n/**\n * Turn an mdast `table` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Table} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function table(state, node) {\n  const rows = state.all(node)\n  const firstRow = rows.shift()\n  /** @type {Array<Element>} */\n  const tableContent = []\n\n  if (firstRow) {\n    /** @type {Element} */\n    const head = {\n      type: 'element',\n      tagName: 'thead',\n      properties: {},\n      children: state.wrap([firstRow], true)\n    }\n    state.patch(node.children[0], head)\n    tableContent.push(head)\n  }\n\n  if (rows.length > 0) {\n    /** @type {Element} */\n    const body = {\n      type: 'element',\n      tagName: 'tbody',\n      properties: {},\n      children: state.wrap(rows, true)\n    }\n\n    const start = pointStart(node.children[1])\n    const end = pointEnd(node.children[node.children.length - 1])\n    if (start.line && end.line) body.position = {start, end}\n    tableContent.push(body)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'table',\n    properties: {},\n    children: state.wrap(tableContent, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `tableCell` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableCell} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function tableCell(state, node) {\n  // Note: this function is normally not called: see `table-row` for how rows\n  // and their cells are compiled.\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'td', // Assume body cell.\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * @typedef {Root | Content} Nodes\n * @typedef {Extract<Nodes, Parent>} Parents\n */\n\n/**\n * Turn an mdast `tableRow` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableRow} node\n *   mdast node.\n * @param {Parents | null | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function tableRow(state, node, parent) {\n  const siblings = parent ? parent.children : undefined\n  // Generate a body row when without parent.\n  const rowIndex = siblings ? siblings.indexOf(node) : 1\n  const tagName = rowIndex === 0 ? 'th' : 'td'\n  const align = parent && parent.type === 'table' ? parent.align : undefined\n  const length = align ? align.length : node.children.length\n  let cellIndex = -1\n  /** @type {Array<ElementContent>} */\n  const cells = []\n\n  while (++cellIndex < length) {\n    // Note: can also be undefined.\n    const cell = node.children[cellIndex]\n    /** @type {Properties} */\n    const properties = {}\n    const alignValue = align ? align[cellIndex] : undefined\n\n    if (alignValue) {\n      properties.align = alignValue\n    }\n\n    /** @type {Element} */\n    let result = {type: 'element', tagName, properties, children: []}\n\n    if (cell) {\n      result.children = state.all(cell)\n      state.patch(cell, result)\n      result = state.applyData(node, result)\n    }\n\n    cells.push(result)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'tr',\n    properties: {},\n    children: state.wrap(cells, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').Text} HastText\n * @typedef {import('mdast').Text} MdastText\n * @typedef {import('../state.js').State} State\n */\n\nimport {trimLines} from 'trim-lines'\n\n/**\n * Turn an mdast `text` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastText} node\n *   mdast node.\n * @returns {HastText | HastElement}\n *   hast node.\n */\nexport function text(state, node) {\n  /** @type {HastText} */\n  const result = {type: 'text', value: trimLines(String(node.value))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `thematicBreak` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ThematicBreak} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function thematicBreak(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'hr',\n    properties: {},\n    children: []\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Content} HastContent\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').ElementContent} HastElementContent\n * @typedef {import('hast').Properties} HastProperties\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('hast').Text} HastText\n *\n * @typedef {import('mdast').Content} MdastContent\n * @typedef {import('mdast').Definition} MdastDefinition\n * @typedef {import('mdast').FootnoteDefinition} MdastFootnoteDefinition\n * @typedef {import('mdast').Parent} MdastParent\n * @typedef {import('mdast').Root} MdastRoot\n */\n\n/**\n * @typedef {HastRoot | HastContent} HastNodes\n * @typedef {MdastRoot | MdastContent} MdastNodes\n * @typedef {Extract<MdastNodes, MdastParent>} MdastParents\n *\n * @typedef EmbeddedHastFields\n *   hast fields.\n * @property {string | null | undefined} [hName]\n *   Generate a specific element with this tag name instead.\n * @property {HastProperties | null | undefined} [hProperties]\n *   Generate an element with these properties instead.\n * @property {Array<HastElementContent> | null | undefined} [hChildren]\n *   Generate an element with this content instead.\n *\n * @typedef {Record<string, unknown> & EmbeddedHastFields} MdastData\n *   mdast data with embedded hast fields.\n *\n * @typedef {MdastNodes & {data?: MdastData | null | undefined}} MdastNodeWithData\n *   mdast node with embedded hast data.\n *\n * @typedef PointLike\n *   Point-like value.\n * @property {number | null | undefined} [line]\n *   Line.\n * @property {number | null | undefined} [column]\n *   Column.\n * @property {number | null | undefined} [offset]\n *   Offset.\n *\n * @typedef PositionLike\n *   Position-like value.\n * @property {PointLike | null | undefined} [start]\n *   Point-like value.\n * @property {PointLike | null | undefined} [end]\n *   Point-like value.\n *\n * @callback Handler\n *   Handle a node.\n * @param {State} state\n *   Info passed around.\n * @param {any} node\n *   mdast node to handle.\n * @param {MdastParents | null | undefined} parent\n *   Parent of `node`.\n * @returns {HastElementContent | Array<HastElementContent> | null | undefined}\n *   hast node.\n *\n * @callback HFunctionProps\n *   Signature of `state` for when props are passed.\n * @param {MdastNodes | PositionLike | null | undefined} node\n *   mdast node or unist position.\n * @param {string} tagName\n *   HTML tag name.\n * @param {HastProperties} props\n *   Properties.\n * @param {Array<HastElementContent> | null | undefined} [children]\n *   hast content.\n * @returns {HastElement}\n *   Compiled element.\n *\n * @callback HFunctionNoProps\n *   Signature of `state` for when no props are passed.\n * @param {MdastNodes | PositionLike | null | undefined} node\n *   mdast node or unist position.\n * @param {string} tagName\n *   HTML tag name.\n * @param {Array<HastElementContent> | null | undefined} [children]\n *   hast content.\n * @returns {HastElement}\n *   Compiled element.\n *\n * @typedef HFields\n *   Info on `state`.\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 {HastProperties} footnoteLabelProperties\n *   Properties on the HTML tag used for the footnote label.\n * @property {string} footnoteBackLabel\n *   Label to use from backreferences back to their footnote call.\n * @property {(identifier: string) => MdastDefinition | null} definition\n *   Definition cache.\n * @property {Record<string, MdastFootnoteDefinition>} footnoteById\n *   Footnote definitions by their identifier.\n * @property {Array<string>} footnoteOrder\n *   Identifiers of order when footnote calls first appear in tree order.\n * @property {Record<string, number>} footnoteCounts\n *   Counts for how often the same footnote was called.\n * @property {Handlers} handlers\n *   Applied handlers.\n * @property {Handler} unknownHandler\n *   Handler for any none not in `passThrough` or otherwise handled.\n * @property {(from: MdastNodes, node: HastNodes) => void} patch\n *   Copy a node’s positional info.\n * @property {<Type extends HastNodes>(from: MdastNodes, to: Type) => Type | HastElement} applyData\n *   Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {(node: MdastNodes, parent: MdastParents | null | undefined) => HastElementContent | Array<HastElementContent> | null | undefined} one\n *   Transform an mdast node to hast.\n * @property {(node: MdastNodes) => Array<HastElementContent>} all\n *   Transform the children of an mdast parent to hast.\n * @property {<Type extends HastContent>(nodes: Array<Type>, loose?: boolean | null | undefined) => Array<Type | HastText>} wrap\n *   Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n * @property {(left: MdastNodeWithData | PositionLike | null | undefined, right: HastElementContent) => HastElementContent} augment\n *   Like `state` but lower-level and usable on non-elements.\n *   Deprecated: use `patch` and `applyData`.\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 | null | undefined} [allowDangerousHtml=false]\n *   Whether to persist raw HTML in markdown in the hast tree.\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n *   Prefix to use before the `id` attribute on footnotes to prevent it from\n *   *clobbering*.\n * @property {string | null | undefined} [footnoteBackLabel='Back to content']\n *   Label to use from backreferences back to their footnote call (affects\n *   screen readers).\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n *   Label to use for the footnotes section (affects screen readers).\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n *   Properties to use on the footnote label (note that `id: 'footnote-label'`\n *   is always added as footnote calls use it with `aria-describedby` to\n *   provide an accessible label).\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n *   Tag name to use for the footnote label.\n * @property {Handlers | null | undefined} [handlers]\n *   Extra handlers for nodes.\n * @property {Array<string> | null | undefined} [passThrough]\n *   List of custom mdast node types to pass through (keep) in hast (note that\n *   the node itself is passed, but eventual children are transformed).\n * @property {Handler | null | undefined} [unknownHandler]\n *   Handler for all unknown nodes.\n *\n * @typedef {Record<string, Handler>} Handlers\n *   Handle nodes.\n *\n * @typedef {HFunctionProps & HFunctionNoProps & HFields} State\n *   Info passed around.\n */\n\nimport {visit} from 'unist-util-visit'\nimport {position, pointStart, pointEnd} from 'unist-util-position'\nimport {generated} from 'unist-util-generated'\nimport {definitions} from 'mdast-util-definitions'\nimport {handlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n *   mdast node to transform.\n * @param {Options | null | undefined} [options]\n *   Configuration.\n * @returns {State}\n *   `state` function.\n */\nexport function createState(tree, options) {\n  const settings = options || {}\n  const dangerous = settings.allowDangerousHtml || false\n  /** @type {Record<string, MdastFootnoteDefinition>} */\n  const footnoteById = {}\n\n  // To do: next major: add `options` to state, remove:\n  // `dangerous`, `clobberPrefix`, `footnoteLabel`, `footnoteLabelTagName`,\n  // `footnoteLabelProperties`, `footnoteBackLabel`, `passThrough`,\n  // `unknownHandler`.\n\n  // To do: next major: move to `state.options.allowDangerousHtml`.\n  state.dangerous = dangerous\n  // To do: next major: move to `state.options`.\n  state.clobberPrefix =\n    settings.clobberPrefix === undefined || settings.clobberPrefix === null\n      ? 'user-content-'\n      : settings.clobberPrefix\n  // To do: next major: move to `state.options`.\n  state.footnoteLabel = settings.footnoteLabel || 'Footnotes'\n  // To do: next major: move to `state.options`.\n  state.footnoteLabelTagName = settings.footnoteLabelTagName || 'h2'\n  // To do: next major: move to `state.options`.\n  state.footnoteLabelProperties = settings.footnoteLabelProperties || {\n    className: ['sr-only']\n  }\n  // To do: next major: move to `state.options`.\n  state.footnoteBackLabel = settings.footnoteBackLabel || 'Back to content'\n  // To do: next major: move to `state.options`.\n  state.unknownHandler = settings.unknownHandler\n  // To do: next major: move to `state.options`.\n  state.passThrough = settings.passThrough\n\n  state.handlers = {...handlers, ...settings.handlers}\n\n  // To do: next major: replace utility with `definitionById` object, so we\n  // only walk once (as we need footnotes too).\n  state.definition = definitions(tree)\n  state.footnoteById = footnoteById\n  /** @type {Array<string>} */\n  state.footnoteOrder = []\n  /** @type {Record<string, number>} */\n  state.footnoteCounts = {}\n\n  state.patch = patch\n  state.applyData = applyData\n  state.one = oneBound\n  state.all = allBound\n  state.wrap = wrap\n  // To do: next major: remove `augment`.\n  state.augment = augment\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 state\n\n  /**\n   * Finalise the created `right`, a hast node, from `left`, an mdast node.\n   *\n   * @param {MdastNodeWithData | PositionLike | null | undefined} left\n   * @param {HastElementContent} right\n   * @returns {HastElementContent}\n   */\n  /* c8 ignore start */\n  // To do: next major: remove.\n  function augment(left, right) {\n    // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n    if (left && 'data' in left && left.data) {\n      /** @type {MdastData} */\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  /* c8 ignore stop */\n\n  /**\n   * Create an element for `node`.\n   *\n   * @type {HFunctionProps}\n   */\n  /* c8 ignore start */\n  // To do: next major: remove.\n  function state(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  /* c8 ignore stop */\n\n  /**\n   * Transform an mdast node into a hast node.\n   *\n   * @param {MdastNodes} node\n   *   mdast node.\n   * @param {MdastParents | null | undefined} [parent]\n   *   Parent of `node`.\n   * @returns {HastElementContent | Array<HastElementContent> | null | undefined}\n   *   Resulting hast node.\n   */\n  function oneBound(node, parent) {\n    // @ts-expect-error: that’s a state :)\n    return one(state, node, parent)\n  }\n\n  /**\n   * Transform the children of an mdast node into hast nodes.\n   *\n   * @param {MdastNodes} parent\n   *   mdast node to compile\n   * @returns {Array<HastElementContent>}\n   *   Resulting hast nodes.\n   */\n  function allBound(parent) {\n    // @ts-expect-error: that’s a state :)\n    return all(state, parent)\n  }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {MdastNodes} from\n *   mdast node to copy from.\n * @param {HastNodes} to\n *   hast node to copy into.\n * @returns {void}\n *   Nothing.\n */\nfunction patch(from, to) {\n  if (from.position) to.position = position(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n *   Node type.\n * @param {MdastNodes} from\n *   mdast node to use data from.\n * @param {Type} to\n *   hast node to change.\n * @returns {Type | HastElement}\n *   Nothing.\n */\nfunction applyData(from, to) {\n  /** @type {Type | HastElement} */\n  let result = to\n\n  // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n  if (from && from.data) {\n    const hName = from.data.hName\n    const hChildren = from.data.hChildren\n    const hProperties = from.data.hProperties\n\n    if (typeof hName === 'string') {\n      // Transforming the node resulted in an element with a different name\n      // than wanted:\n      if (result.type === 'element') {\n        result.tagName = hName\n      }\n      // Transforming the node resulted in a non-element, which happens for\n      // raw, text, and root nodes (unless custom handlers are passed).\n      // The intent is likely to keep the content around (otherwise: pass\n      // `hChildren`).\n      else {\n        result = {\n          type: 'element',\n          tagName: hName,\n          properties: {},\n          children: []\n        }\n\n        // To do: next major: take the children from the `root`, or inject the\n        // raw/text/comment or so into the element?\n        // if ('children' in node) {\n        //   // @ts-expect-error: assume `children` are allowed in elements.\n        //   result.children = node.children\n        // } else {\n        //   // @ts-expect-error: assume `node` is allowed in elements.\n        //   result.children.push(node)\n        // }\n      }\n    }\n\n    if (result.type === 'element' && hProperties) {\n      result.properties = {...result.properties, ...hProperties}\n    }\n\n    if (\n      'children' in result &&\n      result.children &&\n      hChildren !== null &&\n      hChildren !== undefined\n    ) {\n      // @ts-expect-error: assume valid children are defined.\n      result.children = hChildren\n    }\n  }\n\n  return result\n}\n\n/**\n * Transform an mdast node into a hast node.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastNodes} node\n *   mdast node.\n * @param {MdastParents | null | undefined} [parent]\n *   Parent of `node`.\n * @returns {HastElementContent | Array<HastElementContent> | null | undefined}\n *   Resulting hast node.\n */\n// To do: next major: do not expose, keep bound.\nexport function one(state, node, parent) {\n  const type = node && node.type\n\n  // Fail on non-nodes.\n  if (!type) {\n    throw new Error('Expected node, got `' + node + '`')\n  }\n\n  if (own.call(state.handlers, type)) {\n    return state.handlers[type](state, node, parent)\n  }\n\n  if (state.passThrough && state.passThrough.includes(type)) {\n    // To do: next major: deep clone.\n    // @ts-expect-error: types of passed through nodes are expected to be added manually.\n    return 'children' in node ? {...node, children: all(state, node)} : node\n  }\n\n  if (state.unknownHandler) {\n    return state.unknownHandler(state, node, parent)\n  }\n\n  return defaultUnknownHandler(state, node)\n}\n\n/**\n * Transform the children of an mdast node into hast nodes.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastNodes} parent\n *   mdast node to compile\n * @returns {Array<HastElementContent>}\n *   Resulting hast nodes.\n */\n// To do: next major: do not expose, keep bound.\nexport function all(state, parent) {\n  /** @type {Array<HastElementContent>} */\n  const values = []\n\n  if ('children' in parent) {\n    const nodes = parent.children\n    let index = -1\n    while (++index < nodes.length) {\n      const result = one(state, nodes[index], parent)\n\n      // To do: see if we van clean this? Can we merge texts?\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\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastNodes} node\n *   Unknown mdast node.\n * @returns {HastText | HastElement}\n *   Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n  const data = node.data || {}\n  /** @type {HastText | HastElement} */\n  const result =\n    'value' in node &&\n    !(own.call(data, 'hProperties') || own.call(data, 'hChildren'))\n      ? {type: 'text', value: node.value}\n      : {\n          type: 'element',\n          tagName: 'div',\n          properties: {},\n          children: all(state, node)\n        }\n\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastContent} Type\n *   Node type.\n * @param {Array<Type>} nodes\n *   List of nodes to wrap.\n * @param {boolean | null | undefined} [loose=false]\n *   Whether to add line endings at start and end.\n * @returns {Array<Type | HastText>}\n *   Wrapped nodes.\n */\nexport function wrap(nodes, loose) {\n  /** @type {Array<Type | HastText>} */\n  const result = []\n  let index = -1\n\n  if (loose) {\n    result.push({type: 'text', value: '\\n'})\n  }\n\n  while (++index < nodes.length) {\n    if (index) result.push({type: 'text', value: '\\n'})\n    result.push(nodes[index])\n  }\n\n  if (loose && nodes.length > 0) {\n    result.push({type: 'text', value: '\\n'})\n  }\n\n  return result\n}\n","/**\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef NodeLike\n * @property {PositionLike | null | undefined} [position]\n */\n\n/**\n * Check if `node` is generated.\n *\n * @param {NodeLike | null | undefined} [node]\n *   Node to check.\n * @returns {boolean}\n *   Whether `node` is generated (does not have positional info).\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').Content} HastContent\n * @typedef {import('hast').Root} HastRoot\n *\n * @typedef {import('mdast').Content} MdastContent\n * @typedef {import('mdast').Root} MdastRoot\n *\n * @typedef {import('./state.js').Options} Options\n */\n\n/**\n * @typedef {HastRoot | HastContent} HastNodes\n * @typedef {MdastRoot | MdastContent} MdastNodes\n */\n\nimport {footer} from './footer.js'\nimport {createState} from './state.js'\n\n/**\n * Transform mdast to hast.\n *\n * ##### Notes\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most utilities ignore `raw` nodes but two notable ones don’t:\n *\n * *   `hast-util-to-html` also has an option `allowDangerousHtml` which will\n *     output the raw HTML.\n *     This is typically discouraged as noted by the option name but is useful\n *     if you completely trust authors\n * *   `hast-util-raw` can handle the raw embedded HTML strings by parsing them\n *     into standard hast nodes (`element`, `text`, etc).\n *     This is a heavy task as it needs a full HTML parser, but it is the only\n *     way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `mdast-util-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n * <p id=x></p>\n * <script>alert(x) // `x` now refers to the DOM `p#x` element</script>\n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * *   when the node has a `value` (and doesn’t have `data.hName`,\n *     `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n *     node\n * *   otherwise, create a `<div>` element (which could be changed with\n *     `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n *   mdast tree.\n * @param {Options | null | undefined} [options]\n *   Configuration.\n * @returns {HastNodes | null | undefined}\n *   hast tree.\n */\n// To do: next major: always return a single `root`.\nexport function toHast(tree, options) {\n  const state = createState(tree, options)\n  const node = state.one(tree, null)\n  const foot = footer(state)\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({type: 'text', value: '\\n'}, foot)\n  }\n\n  // To do: next major: always return root?\n  return Array.isArray(node) ? {type: 'root', children: node} : node\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('./state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Generate a hast footer for called footnote definitions.\n *\n * @param {State} state\n *   Info passed around.\n * @returns {Element | undefined}\n *   `section` element or `undefined`.\n */\nexport function footer(state) {\n  /** @type {Array<ElementContent>} */\n  const listItems = []\n  let index = -1\n\n  while (++index < state.footnoteOrder.length) {\n    const def = state.footnoteById[state.footnoteOrder[index]]\n\n    if (!def) {\n      continue\n    }\n\n    const content = state.all(def)\n    const id = String(def.identifier).toUpperCase()\n    const safeId = normalizeUri(id.toLowerCase())\n    let referenceIndex = 0\n    /** @type {Array<ElementContent>} */\n    const backReferences = []\n\n    while (++referenceIndex <= state.footnoteCounts[id]) {\n      /** @type {Element} */\n      const backReference = {\n        type: 'element',\n        tagName: 'a',\n        properties: {\n          href:\n            '#' +\n            state.clobberPrefix +\n            'fnref-' +\n            safeId +\n            (referenceIndex > 1 ? '-' + referenceIndex : ''),\n          dataFootnoteBackref: true,\n          className: ['data-footnote-backref'],\n          ariaLabel: state.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: state.clobberPrefix + 'fn-' + safeId},\n      children: state.wrap(content, true)\n    }\n\n    state.patch(def, listItem)\n\n    listItems.push(listItem)\n  }\n\n  if (listItems.length === 0) {\n    return\n  }\n\n  return {\n    type: 'element',\n    tagName: 'section',\n    properties: {dataFootnotes: true, className: ['footnotes']},\n    children: [\n      {\n        type: 'element',\n        tagName: state.footnoteLabelTagName,\n        properties: {\n          // To do: use structured clone.\n          ...JSON.parse(JSON.stringify(state.footnoteLabelProperties)),\n          id: 'footnote-label'\n        },\n        children: [{type: 'text', value: state.footnoteLabel}]\n      },\n      {type: 'text', value: '\\n'},\n      {\n        type: 'element',\n        tagName: 'ol',\n        properties: {},\n        children: state.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    blocking: spaceSeparated,\n    capture: null,\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    fetchPriority: 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    inert: boolean,\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    onBeforeMatch: null,\n    onBeforePrint: null,\n    onBeforeToggle: 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    onScrollEnd: 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    popover: null,\n    popoverTarget: null,\n    popoverTargetAction: null,\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    shadowRootClonable: boolean,\n    shadowRootDelegatesFocus: boolean,\n    shadowRootMode: null,\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    writingSuggestions: 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    transformOrigin: 'transform-origin',\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    transformOrigin: 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","/**\n * Check if the given value is *inter-element whitespace*.\n *\n * @param {unknown} thing\n *   Thing to check (typically `Node` or `string`).\n * @returns {boolean}\n *   Whether the `value` is inter-element whitespace (`boolean`): consisting of\n *   zero or more of space, tab (`\\t`), line feed (`\\n`), carriage return\n *   (`\\r`), or form feed (`\\f`).\n *   If a node is passed it must be a `Text` node, whose `value` field is\n *   checked.\n */\nexport function whitespace(thing) {\n  /** @type {string} */\n  const value =\n    // @ts-expect-error looks like a node.\n    thing && typeof thing === 'object' && thing.type === 'text'\n      ? // @ts-expect-error looks like a text.\n        thing.value || ''\n      : thing\n\n  // HTML whitespace expression.\n  // See <https://infra.spec.whatwg.org/#ascii-whitespace>.\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","/**\n * `hast` is close to `React`, but differs in a couple of cases.\n *\n * To get a React property from a hast property, check if it is in\n * `hastToReact`, if it is, then use the corresponding value,\n * otherwise, use the hast property.\n *\n * @type {Record<string, string>}\n */\nexport 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","import StyleToObject from './index.js';\n\nexport default StyleToObject;\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 * @template T\n * @typedef {import('react').ComponentType<T>} ComponentType<T>\n */\n\n/**\n * @template {import('react').ElementType} 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.js').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<'td'> & ReactMarkdownProps & {style?: Record<string, unknown>, isHeader: false}} TableDataCellProps\n * @typedef {ComponentPropsWithoutRef<'th'> & ReactMarkdownProps & {style?: Record<string, unknown>, isHeader: true}} TableHeaderCellProps\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<TableDataCellProps>} TableDataCellComponent\n * @typedef {ComponentType<TableHeaderCellProps>} TableHeaderCellComponent\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 {TableDataCellComponent|ReactMarkdownNames} td\n * @property {TableHeaderCellComponent|ReactMarkdownNames} th\n * @property {TableRowComponent|ReactMarkdownNames} tr\n * @property {UnorderedListComponent|ReactMarkdownNames} ul\n *\n * @typedef {Partial<Omit<import('./complex-types.js').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'\nimport {uriTransformer} from './uri-transformer.js'\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 transform =\n    options.transformLinkUri === undefined\n      ? uriTransformer\n      : options.transformLinkUri\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 = index\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' && transform) {\n    properties.href = transform(\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(String)\n    .join('')\n}\n","/**\n * @typedef Options\n *   Configuration for `stringify`.\n * @property {boolean} [padLeft=true]\n *   Whether to pad a space before a token.\n * @property {boolean} [padRight=false]\n *   Whether to pad a space after a token.\n */\n\n/**\n * @typedef {Options} StringifyOptions\n *   Please use `StringifyOptions` instead.\n */\n\n/**\n * Parse comma-separated tokens to an array.\n *\n * @param {string} value\n *   Comma-separated tokens.\n * @returns {Array<string>}\n *   List of tokens.\n */\nexport function parse(value) {\n  /** @type {Array<string>} */\n  const tokens = []\n  const input = String(value || '')\n  let index = input.indexOf(',')\n  let start = 0\n  /** @type {boolean} */\n  let end = false\n\n  while (!end) {\n    if (index === -1) {\n      index = input.length\n      end = true\n    }\n\n    const 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 or numbers to comma-separated tokens.\n *\n * @param {Array<string|number>} values\n *   List of tokens.\n * @param {Options} [options]\n *   Configuration for `stringify` (optional).\n * @returns {string}\n *   Comma-separated tokens.\n */\nexport function stringify(values, options) {\n  const settings = options || {}\n\n  // Ensure the last empty entry is seen.\n  const input = values[values.length - 1] === '' ? [...values, ''] : values\n\n  return input\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\n *   Space-separated tokens.\n * @returns {Array<string>}\n *   List of 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\n *   List of tokens.\n * @returns {string}\n *   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 {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: 'remarkPlugins', 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.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","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {\n  asciiAlpha,\n  asciiAlphanumeric,\n  asciiControl,\n  markdownLineEndingOrSpace,\n  unicodePunctuation,\n  unicodeWhitespace\n} from 'micromark-util-character'\nconst wwwPrefix = {\n  tokenize: tokenizeWwwPrefix,\n  partial: true\n}\nconst domain = {\n  tokenize: tokenizeDomain,\n  partial: true\n}\nconst path = {\n  tokenize: tokenizePath,\n  partial: true\n}\nconst trail = {\n  tokenize: tokenizeTrail,\n  partial: true\n}\nconst emailDomainDotTrail = {\n  tokenize: tokenizeEmailDomainDotTrail,\n  partial: true\n}\nconst wwwAutolink = {\n  tokenize: tokenizeWwwAutolink,\n  previous: previousWww\n}\nconst protocolAutolink = {\n  tokenize: tokenizeProtocolAutolink,\n  previous: previousProtocol\n}\nconst emailAutolink = {\n  tokenize: tokenizeEmailAutolink,\n  previous: previousEmail\n}\n\n/** @type {ConstructRecord} */\nconst text = {}\n\n// To do: next major: expose functions that yields extension.\n\n/**\n * Extension for `micromark` that can be passed in `extensions` to enable GFM\n * autolink literal syntax.\n *\n * @type {Extension}\n */\nexport const gfmAutolinkLiteral = {\n  text\n}\n\n/** @type {Code} */\nlet code = 48\n\n// Add alphanumerics.\nwhile (code < 123) {\n  text[code] = emailAutolink\n  code++\n  if (code === 58) code = 65\n  else if (code === 91) code = 97\n}\ntext[43] = emailAutolink\ntext[45] = emailAutolink\ntext[46] = emailAutolink\ntext[95] = emailAutolink\ntext[72] = [emailAutolink, protocolAutolink]\ntext[104] = [emailAutolink, protocolAutolink]\ntext[87] = [emailAutolink, wwwAutolink]\ntext[119] = [emailAutolink, wwwAutolink]\n\n// To do: perform email autolink literals on events, afterwards.\n// That’s where `markdown-rs` and `cmark-gfm` perform it.\n// It should look for `@`, then for atext backwards, and then for a label\n// forwards.\n// To do: `mailto:`, `xmpp:` protocol as prefix.\n\n/**\n * Email autolink literal.\n *\n * ```markdown\n * > | a contact@example.org b\n *       ^^^^^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeEmailAutolink(effects, ok, nok) {\n  const self = this\n  /** @type {boolean | undefined} */\n  let dot\n  /** @type {boolean} */\n  let data\n  return start\n\n  /**\n   * Start of email autolink literal.\n   *\n   * ```markdown\n   * > | a contact@example.org b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (\n      !gfmAtext(code) ||\n      !previousEmail.call(self, self.previous) ||\n      previousUnbalanced(self.events)\n    ) {\n      return nok(code)\n    }\n    effects.enter('literalAutolink')\n    effects.enter('literalAutolinkEmail')\n    return atext(code)\n  }\n\n  /**\n   * In email atext.\n   *\n   * ```markdown\n   * > | a contact@example.org b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atext(code) {\n    if (gfmAtext(code)) {\n      effects.consume(code)\n      return atext\n    }\n    if (code === 64) {\n      effects.consume(code)\n      return emailDomain\n    }\n    return nok(code)\n  }\n\n  /**\n   * In email domain.\n   *\n   * The reference code is a bit overly complex as it handles the `@`, of which\n   * there may be just one.\n   * Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L318>\n   *\n   * ```markdown\n   * > | a contact@example.org b\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailDomain(code) {\n    // Dot followed by alphanumerical (not `-` or `_`).\n    if (code === 46) {\n      return effects.check(\n        emailDomainDotTrail,\n        emailDomainAfter,\n        emailDomainDot\n      )(code)\n    }\n\n    // Alphanumerical, `-`, and `_`.\n    if (code === 45 || code === 95 || asciiAlphanumeric(code)) {\n      data = true\n      effects.consume(code)\n      return emailDomain\n    }\n\n    // To do: `/` if xmpp.\n\n    // Note: normally we’d truncate trailing punctuation from the link.\n    // However, email autolink literals cannot contain any of those markers,\n    // except for `.`, but that can only occur if it isn’t trailing.\n    // So we can ignore truncating!\n    return emailDomainAfter(code)\n  }\n\n  /**\n   * In email domain, on dot that is not a trail.\n   *\n   * ```markdown\n   * > | a contact@example.org b\n   *                      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailDomainDot(code) {\n    effects.consume(code)\n    dot = true\n    return emailDomain\n  }\n\n  /**\n   * After email domain.\n   *\n   * ```markdown\n   * > | a contact@example.org b\n   *                          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailDomainAfter(code) {\n    // Domain must not be empty, must include a dot, and must end in alphabetical.\n    // Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L332>.\n    if (data && dot && asciiAlpha(self.previous)) {\n      effects.exit('literalAutolinkEmail')\n      effects.exit('literalAutolink')\n      return ok(code)\n    }\n    return nok(code)\n  }\n}\n\n/**\n * `www` autolink literal.\n *\n * ```markdown\n * > | a www.example.org b\n *       ^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeWwwAutolink(effects, ok, nok) {\n  const self = this\n  return wwwStart\n\n  /**\n   * Start of www autolink literal.\n   *\n   * ```markdown\n   * > | www.example.com/a?b#c\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function wwwStart(code) {\n    if (\n      (code !== 87 && code !== 119) ||\n      !previousWww.call(self, self.previous) ||\n      previousUnbalanced(self.events)\n    ) {\n      return nok(code)\n    }\n    effects.enter('literalAutolink')\n    effects.enter('literalAutolinkWww')\n    // Note: we *check*, so we can discard the `www.` we parsed.\n    // If it worked, we consider it as a part of the domain.\n    return effects.check(\n      wwwPrefix,\n      effects.attempt(domain, effects.attempt(path, wwwAfter), nok),\n      nok\n    )(code)\n  }\n\n  /**\n   * After a www autolink literal.\n   *\n   * ```markdown\n   * > | www.example.com/a?b#c\n   *                          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function wwwAfter(code) {\n    effects.exit('literalAutolinkWww')\n    effects.exit('literalAutolink')\n    return ok(code)\n  }\n}\n\n/**\n * Protocol autolink literal.\n *\n * ```markdown\n * > | a https://example.org b\n *       ^^^^^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeProtocolAutolink(effects, ok, nok) {\n  const self = this\n  let buffer = ''\n  let seen = false\n  return protocolStart\n\n  /**\n   * Start of protocol autolink literal.\n   *\n   * ```markdown\n   * > | https://example.com/a?b#c\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function protocolStart(code) {\n    if (\n      (code === 72 || code === 104) &&\n      previousProtocol.call(self, self.previous) &&\n      !previousUnbalanced(self.events)\n    ) {\n      effects.enter('literalAutolink')\n      effects.enter('literalAutolinkHttp')\n      buffer += String.fromCodePoint(code)\n      effects.consume(code)\n      return protocolPrefixInside\n    }\n    return nok(code)\n  }\n\n  /**\n   * In protocol.\n   *\n   * ```markdown\n   * > | https://example.com/a?b#c\n   *     ^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function protocolPrefixInside(code) {\n    // `5` is size of `https`\n    if (asciiAlpha(code) && buffer.length < 5) {\n      // @ts-expect-error: definitely number.\n      buffer += String.fromCodePoint(code)\n      effects.consume(code)\n      return protocolPrefixInside\n    }\n    if (code === 58) {\n      const protocol = buffer.toLowerCase()\n      if (protocol === 'http' || protocol === 'https') {\n        effects.consume(code)\n        return protocolSlashesInside\n      }\n    }\n    return nok(code)\n  }\n\n  /**\n   * In slashes.\n   *\n   * ```markdown\n   * > | https://example.com/a?b#c\n   *           ^^\n   * ```\n   *\n   * @type {State}\n   */\n  function protocolSlashesInside(code) {\n    if (code === 47) {\n      effects.consume(code)\n      if (seen) {\n        return afterProtocol\n      }\n      seen = true\n      return protocolSlashesInside\n    }\n    return nok(code)\n  }\n\n  /**\n   * After protocol, before domain.\n   *\n   * ```markdown\n   * > | https://example.com/a?b#c\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function afterProtocol(code) {\n    // To do: this is different from `markdown-rs`:\n    // https://github.com/wooorm/markdown-rs/blob/b3a921c761309ae00a51fe348d8a43adbc54b518/src/construct/gfm_autolink_literal.rs#L172-L182\n    return code === null ||\n      asciiControl(code) ||\n      markdownLineEndingOrSpace(code) ||\n      unicodeWhitespace(code) ||\n      unicodePunctuation(code)\n      ? nok(code)\n      : effects.attempt(domain, effects.attempt(path, protocolAfter), nok)(code)\n  }\n\n  /**\n   * After a protocol autolink literal.\n   *\n   * ```markdown\n   * > | https://example.com/a?b#c\n   *                              ^\n   * ```\n   *\n   * @type {State}\n   */\n  function protocolAfter(code) {\n    effects.exit('literalAutolinkHttp')\n    effects.exit('literalAutolink')\n    return ok(code)\n  }\n}\n\n/**\n * `www` prefix.\n *\n * ```markdown\n * > | a www.example.org b\n *       ^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeWwwPrefix(effects, ok, nok) {\n  let size = 0\n  return wwwPrefixInside\n\n  /**\n   * In www prefix.\n   *\n   * ```markdown\n   * > | www.example.com\n   *     ^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function wwwPrefixInside(code) {\n    if ((code === 87 || code === 119) && size < 3) {\n      size++\n      effects.consume(code)\n      return wwwPrefixInside\n    }\n    if (code === 46 && size === 3) {\n      effects.consume(code)\n      return wwwPrefixAfter\n    }\n    return nok(code)\n  }\n\n  /**\n   * After www prefix.\n   *\n   * ```markdown\n   * > | www.example.com\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function wwwPrefixAfter(code) {\n    // If there is *anything*, we can link.\n    return code === null ? nok(code) : ok(code)\n  }\n}\n\n/**\n * Domain.\n *\n * ```markdown\n * > | a https://example.org b\n *               ^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDomain(effects, ok, nok) {\n  /** @type {boolean | undefined} */\n  let underscoreInLastSegment\n  /** @type {boolean | undefined} */\n  let underscoreInLastLastSegment\n  /** @type {boolean | undefined} */\n  let seen\n  return domainInside\n\n  /**\n   * In domain.\n   *\n   * ```markdown\n   * > | https://example.com/a\n   *             ^^^^^^^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function domainInside(code) {\n    // Check whether this marker, which is a trailing punctuation\n    // marker, optionally followed by more trailing markers, and then\n    // followed by an end.\n    if (code === 46 || code === 95) {\n      return effects.check(trail, domainAfter, domainAtPunctuation)(code)\n    }\n\n    // GH documents that only alphanumerics (other than `-`, `.`, and `_`) can\n    // occur, which sounds like ASCII only, but they also support `www.點看.com`,\n    // so that’s Unicode.\n    // Instead of some new production for Unicode alphanumerics, markdown\n    // already has that for Unicode punctuation and whitespace, so use those.\n    // Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L12>.\n    if (\n      code === null ||\n      markdownLineEndingOrSpace(code) ||\n      unicodeWhitespace(code) ||\n      (code !== 45 && unicodePunctuation(code))\n    ) {\n      return domainAfter(code)\n    }\n    seen = true\n    effects.consume(code)\n    return domainInside\n  }\n\n  /**\n   * In domain, at potential trailing punctuation, that was not trailing.\n   *\n   * ```markdown\n   * > | https://example.com\n   *                    ^\n   * ```\n   *\n   * @type {State}\n   */\n  function domainAtPunctuation(code) {\n    // There is an underscore in the last segment of the domain\n    if (code === 95) {\n      underscoreInLastSegment = true\n    }\n    // Otherwise, it’s a `.`: save the last segment underscore in the\n    // penultimate segment slot.\n    else {\n      underscoreInLastLastSegment = underscoreInLastSegment\n      underscoreInLastSegment = undefined\n    }\n    effects.consume(code)\n    return domainInside\n  }\n\n  /**\n   * After domain.\n   *\n   * ```markdown\n   * > | https://example.com/a\n   *                        ^\n   * ```\n   *\n   * @type {State} */\n  function domainAfter(code) {\n    // Note: that’s GH says a dot is needed, but it’s not true:\n    // <https://github.com/github/cmark-gfm/issues/279>\n    if (underscoreInLastLastSegment || underscoreInLastSegment || !seen) {\n      return nok(code)\n    }\n    return ok(code)\n  }\n}\n\n/**\n * Path.\n *\n * ```markdown\n * > | a https://example.org/stuff b\n *                          ^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizePath(effects, ok) {\n  let sizeOpen = 0\n  let sizeClose = 0\n  return pathInside\n\n  /**\n   * In path.\n   *\n   * ```markdown\n   * > | https://example.com/a\n   *                        ^^\n   * ```\n   *\n   * @type {State}\n   */\n  function pathInside(code) {\n    if (code === 40) {\n      sizeOpen++\n      effects.consume(code)\n      return pathInside\n    }\n\n    // To do: `markdown-rs` also needs this.\n    // If this is a paren, and there are less closings than openings,\n    // we don’t check for a trail.\n    if (code === 41 && sizeClose < sizeOpen) {\n      return pathAtPunctuation(code)\n    }\n\n    // Check whether this trailing punctuation marker is optionally\n    // followed by more trailing markers, and then followed\n    // by an end.\n    if (\n      code === 33 ||\n      code === 34 ||\n      code === 38 ||\n      code === 39 ||\n      code === 41 ||\n      code === 42 ||\n      code === 44 ||\n      code === 46 ||\n      code === 58 ||\n      code === 59 ||\n      code === 60 ||\n      code === 63 ||\n      code === 93 ||\n      code === 95 ||\n      code === 126\n    ) {\n      return effects.check(trail, ok, pathAtPunctuation)(code)\n    }\n    if (\n      code === null ||\n      markdownLineEndingOrSpace(code) ||\n      unicodeWhitespace(code)\n    ) {\n      return ok(code)\n    }\n    effects.consume(code)\n    return pathInside\n  }\n\n  /**\n   * In path, at potential trailing punctuation, that was not trailing.\n   *\n   * ```markdown\n   * > | https://example.com/a\"b\n   *                          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function pathAtPunctuation(code) {\n    // Count closing parens.\n    if (code === 41) {\n      sizeClose++\n    }\n    effects.consume(code)\n    return pathInside\n  }\n}\n\n/**\n * Trail.\n *\n * This calls `ok` if this *is* the trail, followed by an end, which means\n * the entire trail is not part of the link.\n * It calls `nok` if this *is* part of the link.\n *\n * ```markdown\n * > | https://example.com\").\n *                        ^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTrail(effects, ok, nok) {\n  return trail\n\n  /**\n   * In trail of domain or path.\n   *\n   * ```markdown\n   * > | https://example.com\").\n   *                        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function trail(code) {\n    // Regular trailing punctuation.\n    if (\n      code === 33 ||\n      code === 34 ||\n      code === 39 ||\n      code === 41 ||\n      code === 42 ||\n      code === 44 ||\n      code === 46 ||\n      code === 58 ||\n      code === 59 ||\n      code === 63 ||\n      code === 95 ||\n      code === 126\n    ) {\n      effects.consume(code)\n      return trail\n    }\n\n    // `&` followed by one or more alphabeticals and then a `;`, is\n    // as a whole considered as trailing punctuation.\n    // In all other cases, it is considered as continuation of the URL.\n    if (code === 38) {\n      effects.consume(code)\n      return trailCharRefStart\n    }\n\n    // Needed because we allow literals after `[`, as we fix:\n    // <https://github.com/github/cmark-gfm/issues/278>.\n    // Check that it is not followed by `(` or `[`.\n    if (code === 93) {\n      effects.consume(code)\n      return trailBracketAfter\n    }\n    if (\n      // `<` is an end.\n      code === 60 ||\n      // So is whitespace.\n      code === null ||\n      markdownLineEndingOrSpace(code) ||\n      unicodeWhitespace(code)\n    ) {\n      return ok(code)\n    }\n    return nok(code)\n  }\n\n  /**\n   * In trail, after `]`.\n   *\n   * > 👉 **Note**: this deviates from `cmark-gfm` to fix a bug.\n   * > See end of <https://github.com/github/cmark-gfm/issues/278> for more.\n   *\n   * ```markdown\n   * > | https://example.com](\n   *                         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function trailBracketAfter(code) {\n    // Whitespace or something that could start a resource or reference is the end.\n    // Switch back to trail otherwise.\n    if (\n      code === null ||\n      code === 40 ||\n      code === 91 ||\n      markdownLineEndingOrSpace(code) ||\n      unicodeWhitespace(code)\n    ) {\n      return ok(code)\n    }\n    return trail(code)\n  }\n\n  /**\n   * In character-reference like trail, after `&`.\n   *\n   * ```markdown\n   * > | https://example.com&amp;).\n   *                         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function trailCharRefStart(code) {\n    // When non-alpha, it’s not a trail.\n    return asciiAlpha(code) ? trailCharRefInside(code) : nok(code)\n  }\n\n  /**\n   * In character-reference like trail.\n   *\n   * ```markdown\n   * > | https://example.com&amp;).\n   *                         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function trailCharRefInside(code) {\n    // Switch back to trail if this is well-formed.\n    if (code === 59) {\n      effects.consume(code)\n      return trail\n    }\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      return trailCharRefInside\n    }\n\n    // It’s not a trail.\n    return nok(code)\n  }\n}\n\n/**\n * Dot in email domain trail.\n *\n * This calls `ok` if this *is* the trail, followed by an end, which means\n * the trail is not part of the link.\n * It calls `nok` if this *is* part of the link.\n *\n * ```markdown\n * > | contact@example.org.\n *                        ^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeEmailDomainDotTrail(effects, ok, nok) {\n  return start\n\n  /**\n   * Dot.\n   *\n   * ```markdown\n   * > | contact@example.org.\n   *                    ^   ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // Must be dot.\n    effects.consume(code)\n    return after\n  }\n\n  /**\n   * After dot.\n   *\n   * ```markdown\n   * > | contact@example.org.\n   *                     ^   ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    // Not a trail if alphanumeric.\n    return asciiAlphanumeric(code) ? nok(code) : ok(code)\n  }\n}\n\n/**\n * See:\n * <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L156>.\n *\n * @type {Previous}\n */\nfunction previousWww(code) {\n  return (\n    code === null ||\n    code === 40 ||\n    code === 42 ||\n    code === 95 ||\n    code === 91 ||\n    code === 93 ||\n    code === 126 ||\n    markdownLineEndingOrSpace(code)\n  )\n}\n\n/**\n * See:\n * <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L214>.\n *\n * @type {Previous}\n */\nfunction previousProtocol(code) {\n  return !asciiAlpha(code)\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previousEmail(code) {\n  // Do not allow a slash “inside” atext.\n  // The reference code is a bit weird, but that’s what it results in.\n  // Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L307>.\n  // Other than slash, every preceding character is allowed.\n  return !(code === 47 || gfmAtext(code))\n}\n\n/**\n * @param {Code} code\n * @returns {boolean}\n */\nfunction gfmAtext(code) {\n  return (\n    code === 43 ||\n    code === 45 ||\n    code === 46 ||\n    code === 95 ||\n    asciiAlphanumeric(code)\n  )\n}\n\n/**\n * @param {Array<Event>} events\n * @returns {boolean}\n */\nfunction previousUnbalanced(events) {\n  let index = events.length\n  let result = false\n  while (index--) {\n    const token = events[index][1]\n    if (\n      (token.type === 'labelLink' || token.type === 'labelImage') &&\n      !token._balanced\n    ) {\n      result = true\n      break\n    }\n\n    // If we’ve seen this token, and it was marked as not having any unbalanced\n    // bracket before it, we can exit.\n    if (token._gfmAutolinkLiteralWalkedInto) {\n      result = false\n      break\n    }\n  }\n  if (events.length > 0 && !result) {\n    // Mark the last token as “walked into” w/o finding\n    // anything.\n    events[events.length - 1][1]._gfmAutolinkLiteralWalkedInto = true\n  }\n  return result\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').Extension} Extension\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').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {blankLine} from 'micromark-core-commonmark'\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEndingOrSpace} from 'micromark-util-character'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nconst indent = {\n  tokenize: tokenizeIndent,\n  partial: true\n}\n\n// To do: micromark should support a `_hiddenGfmFootnoteSupport`, which only\n// affects label start (image).\n// That will let us drop `tokenizePotentialGfmFootnote*`.\n// It currently has a `_hiddenFootnoteSupport`, which affects that and more.\n// That can be removed when `micromark-extension-footnote` is archived.\n\n/**\n * Create an extension for `micromark` to enable GFM footnote syntax.\n *\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `extensions` to\n *   enable GFM footnote syntax.\n */\nexport function gfmFootnote() {\n  /** @type {Extension} */\n  return {\n    document: {\n      [91]: {\n        tokenize: tokenizeDefinitionStart,\n        continuation: {\n          tokenize: tokenizeDefinitionContinuation\n        },\n        exit: gfmFootnoteDefinitionEnd\n      }\n    },\n    text: {\n      [91]: {\n        tokenize: tokenizeGfmFootnoteCall\n      },\n      [93]: {\n        add: 'after',\n        tokenize: tokenizePotentialGfmFootnoteCall,\n        resolveTo: resolveToPotentialGfmFootnoteCall\n      }\n    }\n  }\n}\n\n// To do: remove after micromark update.\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizePotentialGfmFootnoteCall(effects, ok, nok) {\n  const self = this\n  let index = self.events.length\n  /** @type {Array<string>} */\n  // @ts-expect-error It’s fine!\n  const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n  /** @type {Token} */\n  let labelStart\n\n  // Find an opening.\n  while (index--) {\n    const token = self.events[index][1]\n    if (token.type === 'labelImage') {\n      labelStart = token\n      break\n    }\n\n    // Exit if we’ve walked far enough.\n    if (\n      token.type === 'gfmFootnoteCall' ||\n      token.type === 'labelLink' ||\n      token.type === 'label' ||\n      token.type === 'image' ||\n      token.type === 'link'\n    ) {\n      break\n    }\n  }\n  return start\n\n  /**\n   * @type {State}\n   */\n  function start(code) {\n    if (!labelStart || !labelStart._balanced) {\n      return nok(code)\n    }\n    const id = normalizeIdentifier(\n      self.sliceSerialize({\n        start: labelStart.end,\n        end: self.now()\n      })\n    )\n    if (id.codePointAt(0) !== 94 || !defined.includes(id.slice(1))) {\n      return nok(code)\n    }\n    effects.enter('gfmFootnoteCallLabelMarker')\n    effects.consume(code)\n    effects.exit('gfmFootnoteCallLabelMarker')\n    return ok(code)\n  }\n}\n\n// To do: remove after micromark update.\n/** @type {Resolver} */\nfunction resolveToPotentialGfmFootnoteCall(events, context) {\n  let index = events.length\n  /** @type {Token | undefined} */\n  let labelStart\n\n  // Find an opening.\n  while (index--) {\n    if (\n      events[index][1].type === 'labelImage' &&\n      events[index][0] === 'enter'\n    ) {\n      labelStart = events[index][1]\n      break\n    }\n  }\n  // Change the `labelImageMarker` to a `data`.\n  events[index + 1][1].type = 'data'\n  events[index + 3][1].type = 'gfmFootnoteCallLabelMarker'\n\n  // The whole (without `!`):\n  /** @type {Token} */\n  const call = {\n    type: 'gfmFootnoteCall',\n    start: Object.assign({}, events[index + 3][1].start),\n    end: Object.assign({}, events[events.length - 1][1].end)\n  }\n  // The `^` marker\n  /** @type {Token} */\n  const marker = {\n    type: 'gfmFootnoteCallMarker',\n    start: Object.assign({}, events[index + 3][1].end),\n    end: Object.assign({}, events[index + 3][1].end)\n  }\n  // Increment the end 1 character.\n  marker.end.column++\n  marker.end.offset++\n  marker.end._bufferIndex++\n  /** @type {Token} */\n  const string = {\n    type: 'gfmFootnoteCallString',\n    start: Object.assign({}, marker.end),\n    end: Object.assign({}, events[events.length - 1][1].start)\n  }\n  /** @type {Token} */\n  const chunk = {\n    type: 'chunkString',\n    contentType: 'string',\n    start: Object.assign({}, string.start),\n    end: Object.assign({}, string.end)\n  }\n\n  /** @type {Array<Event>} */\n  const replacement = [\n    // Take the `labelImageMarker` (now `data`, the `!`)\n    events[index + 1],\n    events[index + 2],\n    ['enter', call, context],\n    // The `[`\n    events[index + 3],\n    events[index + 4],\n    // The `^`.\n    ['enter', marker, context],\n    ['exit', marker, context],\n    // Everything in between.\n    ['enter', string, context],\n    ['enter', chunk, context],\n    ['exit', chunk, context],\n    ['exit', string, context],\n    // The ending (`]`, properly parsed and labelled).\n    events[events.length - 2],\n    events[events.length - 1],\n    ['exit', call, context]\n  ]\n  events.splice(index, events.length - index + 1, ...replacement)\n  return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeGfmFootnoteCall(effects, ok, nok) {\n  const self = this\n  /** @type {Array<string>} */\n  // @ts-expect-error It’s fine!\n  const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n  let size = 0\n  /** @type {boolean} */\n  let data\n\n  // Note: the implementation of `markdown-rs` is different, because it houses\n  // core *and* extensions in one project.\n  // Therefore, it can include footnote logic inside `label-end`.\n  // We can’t do that, but luckily, we can parse footnotes in a simpler way than\n  // needed for labels.\n  return start\n\n  /**\n   * Start of footnote label.\n   *\n   * ```markdown\n   * > | a [^b] c\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter('gfmFootnoteCall')\n    effects.enter('gfmFootnoteCallLabelMarker')\n    effects.consume(code)\n    effects.exit('gfmFootnoteCallLabelMarker')\n    return callStart\n  }\n\n  /**\n   * After `[`, at `^`.\n   *\n   * ```markdown\n   * > | a [^b] c\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function callStart(code) {\n    if (code !== 94) return nok(code)\n    effects.enter('gfmFootnoteCallMarker')\n    effects.consume(code)\n    effects.exit('gfmFootnoteCallMarker')\n    effects.enter('gfmFootnoteCallString')\n    effects.enter('chunkString').contentType = 'string'\n    return callData\n  }\n\n  /**\n   * In label.\n   *\n   * ```markdown\n   * > | a [^b] c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function callData(code) {\n    if (\n      // Too long.\n      size > 999 ||\n      // Closing brace with nothing.\n      (code === 93 && !data) ||\n      // Space or tab is not supported by GFM for some reason.\n      // `\\n` and `[` not being supported makes sense.\n      code === null ||\n      code === 91 ||\n      markdownLineEndingOrSpace(code)\n    ) {\n      return nok(code)\n    }\n    if (code === 93) {\n      effects.exit('chunkString')\n      const token = effects.exit('gfmFootnoteCallString')\n      if (!defined.includes(normalizeIdentifier(self.sliceSerialize(token)))) {\n        return nok(code)\n      }\n      effects.enter('gfmFootnoteCallLabelMarker')\n      effects.consume(code)\n      effects.exit('gfmFootnoteCallLabelMarker')\n      effects.exit('gfmFootnoteCall')\n      return ok\n    }\n    if (!markdownLineEndingOrSpace(code)) {\n      data = true\n    }\n    size++\n    effects.consume(code)\n    return code === 92 ? callEscape : callData\n  }\n\n  /**\n   * On character after escape.\n   *\n   * ```markdown\n   * > | a [^b\\c] d\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function callEscape(code) {\n    if (code === 91 || code === 92 || code === 93) {\n      effects.consume(code)\n      size++\n      return callData\n    }\n    return callData(code)\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinitionStart(effects, ok, nok) {\n  const self = this\n  /** @type {Array<string>} */\n  // @ts-expect-error It’s fine!\n  const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n  /** @type {string} */\n  let identifier\n  let size = 0\n  /** @type {boolean | undefined} */\n  let data\n  return start\n\n  /**\n   * Start of GFM footnote definition.\n   *\n   * ```markdown\n   * > | [^a]: b\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter('gfmFootnoteDefinition')._container = true\n    effects.enter('gfmFootnoteDefinitionLabel')\n    effects.enter('gfmFootnoteDefinitionLabelMarker')\n    effects.consume(code)\n    effects.exit('gfmFootnoteDefinitionLabelMarker')\n    return labelAtMarker\n  }\n\n  /**\n   * In label, at caret.\n   *\n   * ```markdown\n   * > | [^a]: b\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelAtMarker(code) {\n    if (code === 94) {\n      effects.enter('gfmFootnoteDefinitionMarker')\n      effects.consume(code)\n      effects.exit('gfmFootnoteDefinitionMarker')\n      effects.enter('gfmFootnoteDefinitionLabelString')\n      effects.enter('chunkString').contentType = 'string'\n      return labelInside\n    }\n    return nok(code)\n  }\n\n  /**\n   * In label.\n   *\n   * > 👉 **Note**: `cmark-gfm` prevents whitespace from occurring in footnote\n   * > definition labels.\n   *\n   * ```markdown\n   * > | [^a]: b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelInside(code) {\n    if (\n      // Too long.\n      size > 999 ||\n      // Closing brace with nothing.\n      (code === 93 && !data) ||\n      // Space or tab is not supported by GFM for some reason.\n      // `\\n` and `[` not being supported makes sense.\n      code === null ||\n      code === 91 ||\n      markdownLineEndingOrSpace(code)\n    ) {\n      return nok(code)\n    }\n    if (code === 93) {\n      effects.exit('chunkString')\n      const token = effects.exit('gfmFootnoteDefinitionLabelString')\n      identifier = normalizeIdentifier(self.sliceSerialize(token))\n      effects.enter('gfmFootnoteDefinitionLabelMarker')\n      effects.consume(code)\n      effects.exit('gfmFootnoteDefinitionLabelMarker')\n      effects.exit('gfmFootnoteDefinitionLabel')\n      return labelAfter\n    }\n    if (!markdownLineEndingOrSpace(code)) {\n      data = true\n    }\n    size++\n    effects.consume(code)\n    return code === 92 ? labelEscape : labelInside\n  }\n\n  /**\n   * After `\\`, at a special character.\n   *\n   * > 👉 **Note**: `cmark-gfm` currently does not support escaped brackets:\n   * > <https://github.com/github/cmark-gfm/issues/240>\n   *\n   * ```markdown\n   * > | [^a\\*b]: c\n   *         ^\n   * ```\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 labelInside\n    }\n    return labelInside(code)\n  }\n\n  /**\n   * After definition label.\n   *\n   * ```markdown\n   * > | [^a]: b\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelAfter(code) {\n    if (code === 58) {\n      effects.enter('definitionMarker')\n      effects.consume(code)\n      effects.exit('definitionMarker')\n      if (!defined.includes(identifier)) {\n        defined.push(identifier)\n      }\n\n      // Any whitespace after the marker is eaten, forming indented code\n      // is not possible.\n      // No space is also fine, just like a block quote marker.\n      return factorySpace(\n        effects,\n        whitespaceAfter,\n        'gfmFootnoteDefinitionWhitespace'\n      )\n    }\n    return nok(code)\n  }\n\n  /**\n   * After definition prefix.\n   *\n   * ```markdown\n   * > | [^a]: b\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function whitespaceAfter(code) {\n    // `markdown-rs` has a wrapping token for the prefix that is closed here.\n    return ok(code)\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinitionContinuation(effects, ok, nok) {\n  /// Start of footnote definition continuation.\n  ///\n  /// ```markdown\n  ///   | [^a]: b\n  /// > |     c\n  ///     ^\n  /// ```\n  //\n  // Either a blank line, which is okay, or an indented thing.\n  return effects.check(blankLine, ok, effects.attempt(indent, ok, nok))\n}\n\n/** @type {Exiter} */\nfunction gfmFootnoteDefinitionEnd(effects) {\n  effects.exit('gfmFootnoteDefinition')\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n  const self = this\n  return factorySpace(\n    effects,\n    afterPrefix,\n    'gfmFootnoteDefinitionIndent',\n    4 + 1\n  )\n\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 === 'gfmFootnoteDefinitionIndent' &&\n      tail[2].sliceSerialize(tail[1], true).length === 4\n      ? ok(code)\n      : nok(code)\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Extension} Extension\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').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean} [singleTilde=true]\n *   Whether to support strikethrough with a single tilde.\n *\n *   Single tildes work on github.com, but are technically prohibited by the\n *   GFM spec.\n */\n\nimport {splice} from 'micromark-util-chunked'\nimport {classifyCharacter} from 'micromark-util-classify-character'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/**\n * Create an extension for `micromark` to enable GFM strikethrough syntax.\n *\n * @param {Options | null | undefined} [options]\n *   Configuration.\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `extensions`, to\n *   enable GFM strikethrough syntax.\n */\nexport function gfmStrikethrough(options) {\n  const options_ = options || {}\n  let single = options_.singleTilde\n  const tokenizer = {\n    tokenize: tokenizeStrikethrough,\n    resolveAll: resolveAllStrikethrough\n  }\n  if (single === null || single === undefined) {\n    single = true\n  }\n  return {\n    text: {\n      [126]: tokenizer\n    },\n    insideSpan: {\n      null: [tokenizer]\n    },\n    attentionMarkers: {\n      null: [126]\n    }\n  }\n\n  /**\n   * Take events and resolve strikethrough.\n   *\n   * @type {Resolver}\n   */\n  function resolveAllStrikethrough(events, context) {\n    let index = -1\n\n    // Walk through all events.\n    while (++index < events.length) {\n      // Find a token that can close.\n      if (\n        events[index][0] === 'enter' &&\n        events[index][1].type === 'strikethroughSequenceTemporary' &&\n        events[index][1]._close\n      ) {\n        let open = index\n\n        // Now walk back to find an opener.\n        while (open--) {\n          // Find a token that can open the closer.\n          if (\n            events[open][0] === 'exit' &&\n            events[open][1].type === 'strikethroughSequenceTemporary' &&\n            events[open][1]._open &&\n            // If the sizes are the same:\n            events[index][1].end.offset - events[index][1].start.offset ===\n              events[open][1].end.offset - events[open][1].start.offset\n          ) {\n            events[index][1].type = 'strikethroughSequence'\n            events[open][1].type = 'strikethroughSequence'\n\n            /** @type {Token} */\n            const strikethrough = {\n              type: 'strikethrough',\n              start: Object.assign({}, events[open][1].start),\n              end: Object.assign({}, events[index][1].end)\n            }\n\n            /** @type {Token} */\n            const text = {\n              type: 'strikethroughText',\n              start: Object.assign({}, events[open][1].end),\n              end: Object.assign({}, events[index][1].start)\n            }\n\n            // Opening.\n            /** @type {Array<Event>} */\n            const nextEvents = [\n              ['enter', strikethrough, context],\n              ['enter', events[open][1], context],\n              ['exit', events[open][1], context],\n              ['enter', text, context]\n            ]\n            const insideSpan = context.parser.constructs.insideSpan.null\n            if (insideSpan) {\n              // Between.\n              splice(\n                nextEvents,\n                nextEvents.length,\n                0,\n                resolveAll(insideSpan, events.slice(open + 1, index), context)\n              )\n            }\n\n            // Closing.\n            splice(nextEvents, nextEvents.length, 0, [\n              ['exit', text, context],\n              ['enter', events[index][1], context],\n              ['exit', events[index][1], context],\n              ['exit', strikethrough, context]\n            ])\n            splice(events, open - 1, index - open + 3, nextEvents)\n            index = open + nextEvents.length - 2\n            break\n          }\n        }\n      }\n    }\n    index = -1\n    while (++index < events.length) {\n      if (events[index][1].type === 'strikethroughSequenceTemporary') {\n        events[index][1].type = 'data'\n      }\n    }\n    return events\n  }\n\n  /**\n   * @this {TokenizeContext}\n   * @type {Tokenizer}\n   */\n  function tokenizeStrikethrough(effects, ok, nok) {\n    const previous = this.previous\n    const events = this.events\n    let size = 0\n    return start\n\n    /** @type {State} */\n    function start(code) {\n      if (\n        previous === 126 &&\n        events[events.length - 1][1].type !== 'characterEscape'\n      ) {\n        return nok(code)\n      }\n      effects.enter('strikethroughSequenceTemporary')\n      return more(code)\n    }\n\n    /** @type {State} */\n    function more(code) {\n      const before = classifyCharacter(previous)\n      if (code === 126) {\n        // If this is the third marker, exit.\n        if (size > 1) return nok(code)\n        effects.consume(code)\n        size++\n        return more\n      }\n      if (size < 2 && !single) return nok(code)\n      const token = effects.exit('strikethroughSequenceTemporary')\n      const after = classifyCharacter(code)\n      token._open = !after || (after === 2 && Boolean(before))\n      token._close = !before || (before === 2 && Boolean(after))\n      return ok(code)\n    }\n  }\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\n// Port of `edit_map.rs` from `markdown-rs`.\n// This should move to `markdown-js` later.\n\n// Deal with several changes in events, batching them together.\n//\n// Preferably, changes should be kept to a minimum.\n// Sometimes, it’s needed to change the list of events, because parsing can be\n// messy, and it helps to expose a cleaner interface of events to the compiler\n// and other users.\n// It can also help to merge many adjacent similar events.\n// And, in other cases, it’s needed to parse subcontent: pass some events\n// through another tokenizer and inject the result.\n\n/**\n * @typedef {[number, number, Array<Event>]} Change\n * @typedef {[number, number, number]} Jump\n */\n\n/**\n * Tracks a bunch of edits.\n */\nexport class EditMap {\n  /**\n   * Create a new edit map.\n   */\n  constructor() {\n    /**\n     * Record of changes.\n     *\n     * @type {Array<Change>}\n     */\n    this.map = []\n  }\n\n  /**\n   * Create an edit: a remove and/or add at a certain place.\n   *\n   * @param {number} index\n   * @param {number} remove\n   * @param {Array<Event>} add\n   * @returns {void}\n   */\n  add(index, remove, add) {\n    addImpl(this, index, remove, add)\n  }\n\n  // To do: not used here.\n  // /**\n  //  * Create an edit: but insert `add` before existing additions.\n  //  *\n  //  * @param {number} index\n  //  * @param {number} remove\n  //  * @param {Array<Event>} add\n  //  * @returns {void}\n  //  */\n  // addBefore(index, remove, add) {\n  //   addImpl(this, index, remove, add, true)\n  // }\n\n  /**\n   * Done, change the events.\n   *\n   * @param {Array<Event>} events\n   * @returns {void}\n   */\n  consume(events) {\n    this.map.sort((a, b) => a[0] - b[0])\n\n    /* c8 ignore next 3 -- `resolve` is never called without tables, so without edits. */\n    if (this.map.length === 0) {\n      return\n    }\n\n    // To do: if links are added in events, like they are in `markdown-rs`,\n    // this is needed.\n    // // Calculate jumps: where items in the current list move to.\n    // /** @type {Array<Jump>} */\n    // const jumps = []\n    // let index = 0\n    // let addAcc = 0\n    // let removeAcc = 0\n    // while (index < this.map.length) {\n    //   const [at, remove, add] = this.map[index]\n    //   removeAcc += remove\n    //   addAcc += add.length\n    //   jumps.push([at, removeAcc, addAcc])\n    //   index += 1\n    // }\n    //\n    // . shiftLinks(events, jumps)\n\n    let index = this.map.length\n    /** @type {Array<Array<Event>>} */\n    const vecs = []\n    while (index > 0) {\n      index -= 1\n      vecs.push(events.slice(this.map[index][0] + this.map[index][1]))\n      // eslint-disable-next-line unicorn/no-array-push-push\n      vecs.push(this.map[index][2])\n\n      // Truncate rest.\n      events.length = this.map[index][0]\n    }\n    vecs.push([...events])\n    events.length = 0\n    let slice = vecs.pop()\n    while (slice) {\n      events.push(...slice)\n      slice = vecs.pop()\n    }\n\n    // Truncate everything.\n    this.map.length = 0\n  }\n}\n\n/**\n * Create an edit.\n *\n * @param {EditMap} editMap\n * @param {number} at\n * @param {number} remove\n * @param {Array<Event>} add\n * @returns {void}\n */\nfunction addImpl(editMap, at, remove, add) {\n  let index = 0\n\n  /* c8 ignore next 3 -- `resolve` is never called without tables, so without edits. */\n  if (remove === 0 && add.length === 0) {\n    return\n  }\n  while (index < editMap.map.length) {\n    if (editMap.map[index][0] === at) {\n      editMap.map[index][1] += remove\n\n      // To do: before not used.\n      // if (before) {\n      //   add.push(...editMap.map[index][2])\n      //   editMap.map[index][2] = add\n      // } else {\n      editMap.map[index][2].push(...add)\n      // }\n\n      return\n    }\n    index += 1\n  }\n  editMap.map.push([at, remove, add])\n}\n\n// /**\n//  * Shift `previous` and `next` links according to `jumps`.\n//  *\n//  * This fixes links in case there are events removed or added between them.\n//  *\n//  * @param {Array<Event>} events\n//  * @param {Array<Jump>} jumps\n//  */\n// function shiftLinks(events, jumps) {\n//   let jumpIndex = 0\n//   let index = 0\n//   let add = 0\n//   let rm = 0\n\n//   while (index < events.length) {\n//     const rmCurr = rm\n\n//     while (jumpIndex < jumps.length && jumps[jumpIndex][0] <= index) {\n//       add = jumps[jumpIndex][2]\n//       rm = jumps[jumpIndex][1]\n//       jumpIndex += 1\n//     }\n\n//     // Ignore items that will be removed.\n//     if (rm > rmCurr) {\n//       index += rm - rmCurr\n//     } else {\n//       console.log('to do: links?', add, rmCurr)\n//       // ?\n//       // if let Some(link) = &events[index].link {\n//       //     if let Some(next) = link.next {\n//       //         events[next].link.as_mut().unwrap().previous = Some(index + add - rm);\n//       //         while jumpIndex < jumps.len() && jumps[jumpIndex].0 <= next {\n//       //             add = jumps[jumpIndex].2;\n//       //             rm = jumps[jumpIndex].1;\n//       //             jumpIndex += 1;\n//       //         }\n//       //         events[index].link.as_mut().unwrap().next = Some(next + add - rm);\n//       //         index = next;\n//       //         continue;\n//       //     }\n//       // }\n//       index += 1\n//     }\n//   }\n// }\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\n/**\n * @typedef {'left' | 'center' | 'right' | 'none'} Align\n */\n\n/**\n * Figure out the alignment of a GFM table.\n *\n * @param {Array<Event>} events\n * @param {number} index\n * @returns {Array<Align>}\n */\nexport function gfmTableAlign(events, index) {\n  let inDelimiterRow = false\n  /** @type {Array<Align>} */\n  const align = []\n  while (index < events.length) {\n    const event = events[index]\n    if (inDelimiterRow) {\n      if (event[0] === 'enter') {\n        // Start of alignment value: set a new column.\n        // To do: `markdown-rs` uses `tableDelimiterCellValue`.\n        if (event[1].type === 'tableContent') {\n          align.push(\n            events[index + 1][1].type === 'tableDelimiterMarker'\n              ? 'left'\n              : 'none'\n          )\n        }\n      }\n      // Exits:\n      // End of alignment value: change the column.\n      // To do: `markdown-rs` uses `tableDelimiterCellValue`.\n      else if (event[1].type === 'tableContent') {\n        if (events[index - 1][1].type === 'tableDelimiterMarker') {\n          const alignIndex = align.length - 1\n          align[alignIndex] = align[alignIndex] === 'left' ? 'center' : 'right'\n        }\n      }\n      // Done!\n      else if (event[1].type === 'tableDelimiterRow') {\n        break\n      }\n    } else if (event[0] === 'enter' && event[1].type === 'tableDelimiterRow') {\n      inDelimiterRow = true\n    }\n    index += 1\n  }\n  return align\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Point} Point\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').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n/**\n * @typedef {[number, number, number, number]} Range\n *   Cell info.\n *\n * @typedef {0 | 1 | 2 | 3} RowKind\n *   Where we are: `1` for head row, `2` for delimiter row, `3` for body row.\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n  markdownLineEnding,\n  markdownLineEndingOrSpace,\n  markdownSpace\n} from 'micromark-util-character'\nimport {EditMap} from './edit-map.js'\nimport {gfmTableAlign} from './infer.js'\n\n// To do: next major: expose functions.\n\n/**\n * Extension for `micromark` that can be passed in `extensions` to enable GFM\n * table syntax.\n *\n * @type {Extension}\n */\nexport const gfmTable = {\n  flow: {\n    null: {\n      tokenize: tokenizeTable,\n      resolveAll: resolveTable\n    }\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTable(effects, ok, nok) {\n  const self = this\n  let size = 0\n  let sizeB = 0\n  /** @type {boolean | undefined} */\n  let seen\n  return start\n\n  /**\n   * Start of a GFM table.\n   *\n   * If there is a valid table row or table head before, then we try to parse\n   * another row.\n   * Otherwise, we try to parse a head.\n   *\n   * ```markdown\n   * > | | a |\n   *     ^\n   *   | | - |\n   * > | | b |\n   *     ^\n   * ```\n   * @type {State}\n   */\n  function start(code) {\n    let index = self.events.length - 1\n    while (index > -1) {\n      const type = self.events[index][1].type\n      if (\n        type === 'lineEnding' ||\n        // Note: markdown-rs uses `whitespace` instead of `linePrefix`\n        type === 'linePrefix'\n      )\n        index--\n      else break\n    }\n    const tail = index > -1 ? self.events[index][1].type : null\n    const next =\n      tail === 'tableHead' || tail === 'tableRow' ? bodyRowStart : headRowBefore\n\n    // Don’t allow lazy body rows.\n    if (next === bodyRowStart && self.parser.lazy[self.now().line]) {\n      return nok(code)\n    }\n    return next(code)\n  }\n\n  /**\n   * Before table head row.\n   *\n   * ```markdown\n   * > | | a |\n   *     ^\n   *   | | - |\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headRowBefore(code) {\n    effects.enter('tableHead')\n    effects.enter('tableRow')\n    return headRowStart(code)\n  }\n\n  /**\n   * Before table head row, after whitespace.\n   *\n   * ```markdown\n   * > | | a |\n   *     ^\n   *   | | - |\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headRowStart(code) {\n    if (code === 124) {\n      return headRowBreak(code)\n    }\n\n    // To do: micromark-js should let us parse our own whitespace in extensions,\n    // like `markdown-rs`:\n    //\n    // ```js\n    // // 4+ spaces.\n    // if (markdownSpace(code)) {\n    //   return nok(code)\n    // }\n    // ```\n\n    seen = true\n    // Count the first character, that isn’t a pipe, double.\n    sizeB += 1\n    return headRowBreak(code)\n  }\n\n  /**\n   * At break in table head row.\n   *\n   * ```markdown\n   * > | | a |\n   *     ^\n   *       ^\n   *         ^\n   *   | | - |\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headRowBreak(code) {\n    if (code === null) {\n      // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don‘t.\n      return nok(code)\n    }\n    if (markdownLineEnding(code)) {\n      // If anything other than one pipe (ignoring whitespace) was used, it’s fine.\n      if (sizeB > 1) {\n        sizeB = 0\n        // To do: check if this works.\n        // Feel free to interrupt:\n        self.interrupt = true\n        effects.exit('tableRow')\n        effects.enter('lineEnding')\n        effects.consume(code)\n        effects.exit('lineEnding')\n        return headDelimiterStart\n      }\n\n      // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don‘t.\n      return nok(code)\n    }\n    if (markdownSpace(code)) {\n      // To do: check if this is fine.\n      // effects.attempt(State::Next(StateName::GfmTableHeadRowBreak), State::Nok)\n      // State::Retry(space_or_tab(tokenizer))\n      return factorySpace(effects, headRowBreak, 'whitespace')(code)\n    }\n    sizeB += 1\n    if (seen) {\n      seen = false\n      // Header cell count.\n      size += 1\n    }\n    if (code === 124) {\n      effects.enter('tableCellDivider')\n      effects.consume(code)\n      effects.exit('tableCellDivider')\n      // Whether a delimiter was seen.\n      seen = true\n      return headRowBreak\n    }\n\n    // Anything else is cell data.\n    effects.enter('data')\n    return headRowData(code)\n  }\n\n  /**\n   * In table head row data.\n   *\n   * ```markdown\n   * > | | a |\n   *       ^\n   *   | | - |\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headRowData(code) {\n    if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n      effects.exit('data')\n      return headRowBreak(code)\n    }\n    effects.consume(code)\n    return code === 92 ? headRowEscape : headRowData\n  }\n\n  /**\n   * In table head row escape.\n   *\n   * ```markdown\n   * > | | a\\-b |\n   *         ^\n   *   | | ---- |\n   *   | | c    |\n   * ```\n   *\n   * @type {State}\n   */\n  function headRowEscape(code) {\n    if (code === 92 || code === 124) {\n      effects.consume(code)\n      return headRowData\n    }\n    return headRowData(code)\n  }\n\n  /**\n   * Before delimiter row.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | - |\n   *     ^\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterStart(code) {\n    // Reset `interrupt`.\n    self.interrupt = false\n\n    // Note: in `markdown-rs`, we need to handle piercing here too.\n    if (self.parser.lazy[self.now().line]) {\n      return nok(code)\n    }\n    effects.enter('tableDelimiterRow')\n    // Track if we’ve seen a `:` or `|`.\n    seen = false\n    if (markdownSpace(code)) {\n      return factorySpace(\n        effects,\n        headDelimiterBefore,\n        'linePrefix',\n        self.parser.constructs.disable.null.includes('codeIndented')\n          ? undefined\n          : 4\n      )(code)\n    }\n    return headDelimiterBefore(code)\n  }\n\n  /**\n   * Before delimiter row, after optional whitespace.\n   *\n   * Reused when a `|` is found later, to parse another cell.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | - |\n   *     ^\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterBefore(code) {\n    if (code === 45 || code === 58) {\n      return headDelimiterValueBefore(code)\n    }\n    if (code === 124) {\n      seen = true\n      // If we start with a pipe, we open a cell marker.\n      effects.enter('tableCellDivider')\n      effects.consume(code)\n      effects.exit('tableCellDivider')\n      return headDelimiterCellBefore\n    }\n\n    // More whitespace / empty row not allowed at start.\n    return headDelimiterNok(code)\n  }\n\n  /**\n   * After `|`, before delimiter cell.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | - |\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterCellBefore(code) {\n    if (markdownSpace(code)) {\n      return factorySpace(effects, headDelimiterValueBefore, 'whitespace')(code)\n    }\n    return headDelimiterValueBefore(code)\n  }\n\n  /**\n   * Before delimiter cell value.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | - |\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterValueBefore(code) {\n    // Align: left.\n    if (code === 58) {\n      sizeB += 1\n      seen = true\n      effects.enter('tableDelimiterMarker')\n      effects.consume(code)\n      effects.exit('tableDelimiterMarker')\n      return headDelimiterLeftAlignmentAfter\n    }\n\n    // Align: none.\n    if (code === 45) {\n      sizeB += 1\n      // To do: seems weird that this *isn’t* left aligned, but that state is used?\n      return headDelimiterLeftAlignmentAfter(code)\n    }\n    if (code === null || markdownLineEnding(code)) {\n      return headDelimiterCellAfter(code)\n    }\n    return headDelimiterNok(code)\n  }\n\n  /**\n   * After delimiter cell left alignment marker.\n   *\n   * ```markdown\n   *   | | a  |\n   * > | | :- |\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterLeftAlignmentAfter(code) {\n    if (code === 45) {\n      effects.enter('tableDelimiterFiller')\n      return headDelimiterFiller(code)\n    }\n\n    // Anything else is not ok after the left-align colon.\n    return headDelimiterNok(code)\n  }\n\n  /**\n   * In delimiter cell filler.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | - |\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterFiller(code) {\n    if (code === 45) {\n      effects.consume(code)\n      return headDelimiterFiller\n    }\n\n    // Align is `center` if it was `left`, `right` otherwise.\n    if (code === 58) {\n      seen = true\n      effects.exit('tableDelimiterFiller')\n      effects.enter('tableDelimiterMarker')\n      effects.consume(code)\n      effects.exit('tableDelimiterMarker')\n      return headDelimiterRightAlignmentAfter\n    }\n    effects.exit('tableDelimiterFiller')\n    return headDelimiterRightAlignmentAfter(code)\n  }\n\n  /**\n   * After delimiter cell right alignment marker.\n   *\n   * ```markdown\n   *   | |  a |\n   * > | | -: |\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterRightAlignmentAfter(code) {\n    if (markdownSpace(code)) {\n      return factorySpace(effects, headDelimiterCellAfter, 'whitespace')(code)\n    }\n    return headDelimiterCellAfter(code)\n  }\n\n  /**\n   * After delimiter cell.\n   *\n   * ```markdown\n   *   | |  a |\n   * > | | -: |\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterCellAfter(code) {\n    if (code === 124) {\n      return headDelimiterBefore(code)\n    }\n    if (code === null || markdownLineEnding(code)) {\n      // Exit when:\n      // * there was no `:` or `|` at all (it’s a thematic break or setext\n      //   underline instead)\n      // * the header cell count is not the delimiter cell count\n      if (!seen || size !== sizeB) {\n        return headDelimiterNok(code)\n      }\n\n      // Note: in markdown-rs`, a reset is needed here.\n      effects.exit('tableDelimiterRow')\n      effects.exit('tableHead')\n      // To do: in `markdown-rs`, resolvers need to be registered manually.\n      // effects.register_resolver(ResolveName::GfmTable)\n      return ok(code)\n    }\n    return headDelimiterNok(code)\n  }\n\n  /**\n   * In delimiter row, at a disallowed byte.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | x |\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterNok(code) {\n    // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don‘t.\n    return nok(code)\n  }\n\n  /**\n   * Before table body row.\n   *\n   * ```markdown\n   *   | | a |\n   *   | | - |\n   * > | | b |\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function bodyRowStart(code) {\n    // Note: in `markdown-rs` we need to manually take care of a prefix,\n    // but in `micromark-js` that is done for us, so if we’re here, we’re\n    // never at whitespace.\n    effects.enter('tableRow')\n    return bodyRowBreak(code)\n  }\n\n  /**\n   * At break in table body row.\n   *\n   * ```markdown\n   *   | | a |\n   *   | | - |\n   * > | | b |\n   *     ^\n   *       ^\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function bodyRowBreak(code) {\n    if (code === 124) {\n      effects.enter('tableCellDivider')\n      effects.consume(code)\n      effects.exit('tableCellDivider')\n      return bodyRowBreak\n    }\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('tableRow')\n      return ok(code)\n    }\n    if (markdownSpace(code)) {\n      return factorySpace(effects, bodyRowBreak, 'whitespace')(code)\n    }\n\n    // Anything else is cell content.\n    effects.enter('data')\n    return bodyRowData(code)\n  }\n\n  /**\n   * In table body row data.\n   *\n   * ```markdown\n   *   | | a |\n   *   | | - |\n   * > | | b |\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function bodyRowData(code) {\n    if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n      effects.exit('data')\n      return bodyRowBreak(code)\n    }\n    effects.consume(code)\n    return code === 92 ? bodyRowEscape : bodyRowData\n  }\n\n  /**\n   * In table body row escape.\n   *\n   * ```markdown\n   *   | | a    |\n   *   | | ---- |\n   * > | | b\\-c |\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function bodyRowEscape(code) {\n    if (code === 92 || code === 124) {\n      effects.consume(code)\n      return bodyRowData\n    }\n    return bodyRowData(code)\n  }\n}\n\n/** @type {Resolver} */\n// eslint-disable-next-line complexity\nfunction resolveTable(events, context) {\n  let index = -1\n  let inFirstCellAwaitingPipe = true\n  /** @type {RowKind} */\n  let rowKind = 0\n  /** @type {Range} */\n  let lastCell = [0, 0, 0, 0]\n  /** @type {Range} */\n  let cell = [0, 0, 0, 0]\n  let afterHeadAwaitingFirstBodyRow = false\n  let lastTableEnd = 0\n  /** @type {Token | undefined} */\n  let currentTable\n  /** @type {Token | undefined} */\n  let currentBody\n  /** @type {Token | undefined} */\n  let currentCell\n  const map = new EditMap()\n  while (++index < events.length) {\n    const event = events[index]\n    const token = event[1]\n    if (event[0] === 'enter') {\n      // Start of head.\n      if (token.type === 'tableHead') {\n        afterHeadAwaitingFirstBodyRow = false\n\n        // Inject previous (body end and) table end.\n        if (lastTableEnd !== 0) {\n          flushTableEnd(map, context, lastTableEnd, currentTable, currentBody)\n          currentBody = undefined\n          lastTableEnd = 0\n        }\n\n        // Inject table start.\n        currentTable = {\n          type: 'table',\n          start: Object.assign({}, token.start),\n          // Note: correct end is set later.\n          end: Object.assign({}, token.end)\n        }\n        map.add(index, 0, [['enter', currentTable, context]])\n      } else if (\n        token.type === 'tableRow' ||\n        token.type === 'tableDelimiterRow'\n      ) {\n        inFirstCellAwaitingPipe = true\n        currentCell = undefined\n        lastCell = [0, 0, 0, 0]\n        cell = [0, index + 1, 0, 0]\n\n        // Inject table body start.\n        if (afterHeadAwaitingFirstBodyRow) {\n          afterHeadAwaitingFirstBodyRow = false\n          currentBody = {\n            type: 'tableBody',\n            start: Object.assign({}, token.start),\n            // Note: correct end is set later.\n            end: Object.assign({}, token.end)\n          }\n          map.add(index, 0, [['enter', currentBody, context]])\n        }\n        rowKind = token.type === 'tableDelimiterRow' ? 2 : currentBody ? 3 : 1\n      }\n      // Cell data.\n      else if (\n        rowKind &&\n        (token.type === 'data' ||\n          token.type === 'tableDelimiterMarker' ||\n          token.type === 'tableDelimiterFiller')\n      ) {\n        inFirstCellAwaitingPipe = false\n\n        // First value in cell.\n        if (cell[2] === 0) {\n          if (lastCell[1] !== 0) {\n            cell[0] = cell[1]\n            currentCell = flushCell(\n              map,\n              context,\n              lastCell,\n              rowKind,\n              undefined,\n              currentCell\n            )\n            lastCell = [0, 0, 0, 0]\n          }\n          cell[2] = index\n        }\n      } else if (token.type === 'tableCellDivider') {\n        if (inFirstCellAwaitingPipe) {\n          inFirstCellAwaitingPipe = false\n        } else {\n          if (lastCell[1] !== 0) {\n            cell[0] = cell[1]\n            currentCell = flushCell(\n              map,\n              context,\n              lastCell,\n              rowKind,\n              undefined,\n              currentCell\n            )\n          }\n          lastCell = cell\n          cell = [lastCell[1], index, 0, 0]\n        }\n      }\n    }\n    // Exit events.\n    else if (token.type === 'tableHead') {\n      afterHeadAwaitingFirstBodyRow = true\n      lastTableEnd = index\n    } else if (\n      token.type === 'tableRow' ||\n      token.type === 'tableDelimiterRow'\n    ) {\n      lastTableEnd = index\n      if (lastCell[1] !== 0) {\n        cell[0] = cell[1]\n        currentCell = flushCell(\n          map,\n          context,\n          lastCell,\n          rowKind,\n          index,\n          currentCell\n        )\n      } else if (cell[1] !== 0) {\n        currentCell = flushCell(map, context, cell, rowKind, index, currentCell)\n      }\n      rowKind = 0\n    } else if (\n      rowKind &&\n      (token.type === 'data' ||\n        token.type === 'tableDelimiterMarker' ||\n        token.type === 'tableDelimiterFiller')\n    ) {\n      cell[3] = index\n    }\n  }\n  if (lastTableEnd !== 0) {\n    flushTableEnd(map, context, lastTableEnd, currentTable, currentBody)\n  }\n  map.consume(context.events)\n\n  // To do: move this into `html`, when events are exposed there.\n  // That’s what `markdown-rs` does.\n  // That needs updates to `mdast-util-gfm-table`.\n  index = -1\n  while (++index < context.events.length) {\n    const event = context.events[index]\n    if (event[0] === 'enter' && event[1].type === 'table') {\n      event[1]._align = gfmTableAlign(context.events, index)\n    }\n  }\n  return events\n}\n\n/// Generate a cell.\n/**\n *\n * @param {EditMap} map\n * @param {TokenizeContext} context\n * @param {Range} range\n * @param {RowKind} rowKind\n * @param {number | undefined} rowEnd\n * @param {Token | undefined} previousCell\n * @returns {Token | undefined}\n */\n// eslint-disable-next-line max-params\nfunction flushCell(map, context, range, rowKind, rowEnd, previousCell) {\n  // `markdown-rs` uses:\n  // rowKind === 2 ? 'tableDelimiterCell' : 'tableCell'\n  const groupName =\n    rowKind === 1\n      ? 'tableHeader'\n      : rowKind === 2\n      ? 'tableDelimiter'\n      : 'tableData'\n  // `markdown-rs` uses:\n  // rowKind === 2 ? 'tableDelimiterCellValue' : 'tableCellText'\n  const valueName = 'tableContent'\n\n  // Insert an exit for the previous cell, if there is one.\n  //\n  // ```markdown\n  // > | | aa | bb | cc |\n  //          ^-- exit\n  //           ^^^^-- this cell\n  // ```\n  if (range[0] !== 0) {\n    previousCell.end = Object.assign({}, getPoint(context.events, range[0]))\n    map.add(range[0], 0, [['exit', previousCell, context]])\n  }\n\n  // Insert enter of this cell.\n  //\n  // ```markdown\n  // > | | aa | bb | cc |\n  //           ^-- enter\n  //           ^^^^-- this cell\n  // ```\n  const now = getPoint(context.events, range[1])\n  previousCell = {\n    type: groupName,\n    start: Object.assign({}, now),\n    // Note: correct end is set later.\n    end: Object.assign({}, now)\n  }\n  map.add(range[1], 0, [['enter', previousCell, context]])\n\n  // Insert text start at first data start and end at last data end, and\n  // remove events between.\n  //\n  // ```markdown\n  // > | | aa | bb | cc |\n  //            ^-- enter\n  //             ^-- exit\n  //           ^^^^-- this cell\n  // ```\n  if (range[2] !== 0) {\n    const relatedStart = getPoint(context.events, range[2])\n    const relatedEnd = getPoint(context.events, range[3])\n    /** @type {Token} */\n    const valueToken = {\n      type: valueName,\n      start: Object.assign({}, relatedStart),\n      end: Object.assign({}, relatedEnd)\n    }\n    map.add(range[2], 0, [['enter', valueToken, context]])\n    if (rowKind !== 2) {\n      // Fix positional info on remaining events\n      const start = context.events[range[2]]\n      const end = context.events[range[3]]\n      start[1].end = Object.assign({}, end[1].end)\n      start[1].type = 'chunkText'\n      start[1].contentType = 'text'\n\n      // Remove if needed.\n      if (range[3] > range[2] + 1) {\n        const a = range[2] + 1\n        const b = range[3] - range[2] - 1\n        map.add(a, b, [])\n      }\n    }\n    map.add(range[3] + 1, 0, [['exit', valueToken, context]])\n  }\n\n  // Insert an exit for the last cell, if at the row end.\n  //\n  // ```markdown\n  // > | | aa | bb | cc |\n  //                    ^-- exit\n  //               ^^^^^^-- this cell (the last one contains two “between” parts)\n  // ```\n  if (rowEnd !== undefined) {\n    previousCell.end = Object.assign({}, getPoint(context.events, rowEnd))\n    map.add(rowEnd, 0, [['exit', previousCell, context]])\n    previousCell = undefined\n  }\n  return previousCell\n}\n\n/**\n * Generate table end (and table body end).\n *\n * @param {EditMap} map\n * @param {TokenizeContext} context\n * @param {number} index\n * @param {Token} table\n * @param {Token | undefined} tableBody\n */\n// eslint-disable-next-line max-params\nfunction flushTableEnd(map, context, index, table, tableBody) {\n  /** @type {Array<Event>} */\n  const exits = []\n  const related = getPoint(context.events, index)\n  if (tableBody) {\n    tableBody.end = Object.assign({}, related)\n    exits.push(['exit', tableBody, context])\n  }\n  table.end = Object.assign({}, related)\n  exits.push(['exit', table, context])\n  map.add(index + 1, 0, exits)\n}\n\n/**\n * @param {Array<Event>} events\n * @param {number} index\n * @returns {readonly Point}\n */\nfunction getPoint(events, index) {\n  const event = events[index]\n  const side = event[0] === 'enter' ? 'start' : 'end'\n  return event[1][side]\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n  markdownLineEndingOrSpace,\n  markdownLineEnding,\n  markdownSpace\n} from 'micromark-util-character'\nconst tasklistCheck = {\n  tokenize: tokenizeTasklistCheck\n}\n\n// To do: next major: expose function to make extension.\n\n/**\n * Extension for `micromark` that can be passed in `extensions`, to\n * enable GFM task list items syntax.\n *\n * @type {Extension}\n */\nexport const gfmTaskListItem = {\n  text: {\n    [91]: tasklistCheck\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTasklistCheck(effects, ok, nok) {\n  const self = this\n  return open\n\n  /**\n   * At start of task list item check.\n   *\n   * ```markdown\n   * > | * [x] y.\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (\n      // Exit if there’s stuff before.\n      self.previous !== null ||\n      // Exit if not in the first content that is the first child of a list\n      // item.\n      !self._gfmTasklistFirstContentOfListItem\n    ) {\n      return nok(code)\n    }\n    effects.enter('taskListCheck')\n    effects.enter('taskListCheckMarker')\n    effects.consume(code)\n    effects.exit('taskListCheckMarker')\n    return inside\n  }\n\n  /**\n   * In task list item check.\n   *\n   * ```markdown\n   * > | * [x] y.\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    // Currently we match how GH works in files.\n    // To match how GH works in comments, use `markdownSpace` (`[\\t ]`) instead\n    // of `markdownLineEndingOrSpace` (`[\\t\\n\\r ]`).\n    if (markdownLineEndingOrSpace(code)) {\n      effects.enter('taskListCheckValueUnchecked')\n      effects.consume(code)\n      effects.exit('taskListCheckValueUnchecked')\n      return close\n    }\n    if (code === 88 || code === 120) {\n      effects.enter('taskListCheckValueChecked')\n      effects.consume(code)\n      effects.exit('taskListCheckValueChecked')\n      return close\n    }\n    return nok(code)\n  }\n\n  /**\n   * At close of task list item check.\n   *\n   * ```markdown\n   * > | * [x] y.\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function close(code) {\n    if (code === 93) {\n      effects.enter('taskListCheckMarker')\n      effects.consume(code)\n      effects.exit('taskListCheckMarker')\n      effects.exit('taskListCheck')\n      return after\n    }\n    return nok(code)\n  }\n\n  /**\n   * @type {State}\n   */\n  function after(code) {\n    // EOL in paragraph means there must be something else after it.\n    if (markdownLineEnding(code)) {\n      return ok(code)\n    }\n\n    // Space or tab?\n    // Check what comes after.\n    if (markdownSpace(code)) {\n      return effects.check(\n        {\n          tokenize: spaceThenNonSpace\n        },\n        ok,\n        nok\n      )(code)\n    }\n\n    // EOF, or non-whitespace, both wrong.\n    return nok(code)\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction spaceThenNonSpace(effects, ok, nok) {\n  return factorySpace(effects, after, 'whitespace')\n\n  /**\n   * After whitespace, after task list item check.\n   *\n   * ```markdown\n   * > | * [x] y.\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    // EOF means there was nothing, so bad.\n    // EOL means there’s content after it, so good.\n    // Impossible to have more spaces.\n    // Anything else is good.\n    return code === null ? nok(code) : ok(code)\n  }\n}\n","/**\n * Count how often a character (or substring) is used in a string.\n *\n * @param {string} value\n *   Value to search in.\n * @param {string} character\n *   Character (or substring) to look for.\n * @return {number}\n *   Number of times `character` occurred in `value`.\n */\nexport function ccount(value, character) {\n  const source = String(value)\n\n  if (typeof character !== 'string') {\n    throw new TypeError('Expected character')\n  }\n\n  let count = 0\n  let index = source.indexOf(character)\n\n  while (index !== -1) {\n    count++\n    index = source.indexOf(character, index + character.length)\n  }\n\n  return count\n}\n","/**\n * @typedef {import('mdast').Parent} MdastParent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').Text} Text\n * @typedef {import('unist-util-visit-parents').Test} Test\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * @typedef {Content | Root} Node\n * @typedef {Extract<Node, MdastParent>} Parent\n * @typedef {Exclude<Parent, Root>} ContentParent\n *\n * @typedef RegExpMatchObject\n *   Info on the match.\n * @property {number} index\n *   The index of the search at which the result was found.\n * @property {string} input\n *   A copy of the search string in the text node.\n * @property {[Root, ...Array<ContentParent>, Text]} stack\n *   All ancestors of the text node, where the last node is the text itself.\n *\n * @callback ReplaceFunction\n *   Callback called when a search matches.\n * @param {...any} parameters\n *   The parameters are the result of corresponding search expression:\n *\n *   * `value` (`string`) — whole match\n *   * `...capture` (`Array<string>`) — matches from regex capture groups\n *   * `match` (`RegExpMatchObject`) — info on the match\n * @returns {Array<PhrasingContent> | PhrasingContent | string | false | undefined | null}\n *   Thing to replace with.\n *\n *   * when `null`, `undefined`, `''`, remove the match\n *   * …or when `false`, do not replace at all\n *   * …or when `string`, replace with a text node of that value\n *   * …or when `Node` or `Array<Node>`, replace with those nodes\n *\n * @typedef {string | RegExp} Find\n *   Pattern to find.\n *\n *   Strings are escaped and then turned into global expressions.\n *\n * @typedef {Array<FindAndReplaceTuple>} FindAndReplaceList\n *   Several find and replaces, in array form.\n * @typedef {Record<string, Replace>} FindAndReplaceSchema\n *   Several find and replaces, in object form.\n * @typedef {[Find, Replace]} FindAndReplaceTuple\n *   Find and replace in tuple form.\n * @typedef {string | ReplaceFunction} Replace\n *   Thing to replace with.\n * @typedef {[RegExp, ReplaceFunction]} Pair\n *   Normalized find and replace.\n * @typedef {Array<Pair>} Pairs\n *   All find and replaced.\n *\n * @typedef Options\n *   Configuration.\n * @property {Test | null | undefined} [ignore]\n *   Test for which nodes to ignore.\n */\n\nimport escape from 'escape-string-regexp'\nimport {visitParents} from 'unist-util-visit-parents'\nimport {convert} from 'unist-util-is'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Find patterns in a tree and replace them.\n *\n * The algorithm searches the tree in *preorder* for complete values in `Text`\n * nodes.\n * Partial matches are not supported.\n *\n * @param tree\n *   Tree to change.\n * @param find\n *   Patterns to find.\n * @param replace\n *   Things to replace with (when `find` is `Find`) or configuration.\n * @param options\n *   Configuration (when `find` is not `Find`).\n * @returns\n *   Given, modified, tree.\n */\n// To do: next major: remove `find` & `replace` combo, remove schema.\nexport const findAndReplace =\n  /**\n   * @type {(\n   *   (<Tree extends Node>(tree: Tree, find: Find, replace?: Replace | null | undefined, options?: Options | null | undefined) => Tree) &\n   *   (<Tree extends Node>(tree: Tree, schema: FindAndReplaceSchema | FindAndReplaceList, options?: Options | null | undefined) => Tree)\n   * )}\n   **/\n  (\n    /**\n     * @template {Node} Tree\n     * @param {Tree} tree\n     * @param {Find | FindAndReplaceSchema | FindAndReplaceList} find\n     * @param {Replace | Options | null | undefined} [replace]\n     * @param {Options | null | undefined} [options]\n     * @returns {Tree}\n     */\n    function (tree, find, replace, options) {\n      /** @type {Options | null | undefined} */\n      let settings\n      /** @type {FindAndReplaceSchema|FindAndReplaceList} */\n      let schema\n\n      if (typeof find === 'string' || find instanceof RegExp) {\n        // @ts-expect-error don’t expect options twice.\n        schema = [[find, replace]]\n        settings = options\n      } else {\n        schema = find\n        // @ts-expect-error don’t expect replace twice.\n        settings = replace\n      }\n\n      if (!settings) {\n        settings = {}\n      }\n\n      const ignored = convert(settings.ignore || [])\n      const pairs = toPairs(schema)\n      let pairIndex = -1\n\n      while (++pairIndex < pairs.length) {\n        visitParents(tree, 'text', visitor)\n      }\n\n      // To do next major: don’t return the given tree.\n      return tree\n\n      /** @type {import('unist-util-visit-parents/complex-types.js').BuildVisitor<Root, 'text'>} */\n      function visitor(node, parents) {\n        let index = -1\n        /** @type {Parent | undefined} */\n        let grandparent\n\n        while (++index < parents.length) {\n          const parent = parents[index]\n\n          if (\n            ignored(\n              parent,\n              // @ts-expect-error: TS doesn’t understand but it’s perfect.\n              grandparent ? grandparent.children.indexOf(parent) : undefined,\n              grandparent\n            )\n          ) {\n            return\n          }\n\n          grandparent = parent\n        }\n\n        if (grandparent) {\n          return handler(node, parents)\n        }\n      }\n\n      /**\n       * Handle a text node which is not in an ignored parent.\n       *\n       * @param {Text} node\n       *   Text node.\n       * @param {Array<Parent>} parents\n       *   Parents.\n       * @returns {VisitorResult}\n       *   Result.\n       */\n      function handler(node, parents) {\n        const parent = parents[parents.length - 1]\n        const find = pairs[pairIndex][0]\n        const replace = pairs[pairIndex][1]\n        let start = 0\n        // @ts-expect-error: TS is wrong, some of these children can be text.\n        const index = parent.children.indexOf(node)\n        let change = false\n        /** @type {Array<PhrasingContent>} */\n        let nodes = []\n\n        find.lastIndex = 0\n\n        let match = find.exec(node.value)\n\n        while (match) {\n          const position = match.index\n          /** @type {RegExpMatchObject} */\n          const matchObject = {\n            index: match.index,\n            input: match.input,\n            // @ts-expect-error: stack is fine.\n            stack: [...parents, node]\n          }\n          let value = replace(...match, matchObject)\n\n          if (typeof value === 'string') {\n            value = value.length > 0 ? {type: 'text', value} : undefined\n          }\n\n          // It wasn’t a match after all.\n          if (value !== false) {\n            if (start !== position) {\n              nodes.push({\n                type: 'text',\n                value: node.value.slice(start, position)\n              })\n            }\n\n            if (Array.isArray(value)) {\n              nodes.push(...value)\n            } else if (value) {\n              nodes.push(value)\n            }\n\n            start = position + match[0].length\n            change = true\n          }\n\n          if (!find.global) {\n            break\n          }\n\n          match = find.exec(node.value)\n        }\n\n        if (change) {\n          if (start < node.value.length) {\n            nodes.push({type: 'text', value: node.value.slice(start)})\n          }\n\n          parent.children.splice(index, 1, ...nodes)\n        } else {\n          nodes = [node]\n        }\n\n        return index + nodes.length\n      }\n    }\n  )\n\n/**\n * Turn a schema into pairs.\n *\n * @param {FindAndReplaceSchema | FindAndReplaceList} schema\n *   Schema.\n * @returns {Pairs}\n *   Clean pairs.\n */\nfunction toPairs(schema) {\n  /** @type {Pairs} */\n  const result = []\n\n  if (typeof schema !== 'object') {\n    throw new TypeError('Expected array or object as schema')\n  }\n\n  if (Array.isArray(schema)) {\n    let index = -1\n\n    while (++index < schema.length) {\n      result.push([\n        toExpression(schema[index][0]),\n        toFunction(schema[index][1])\n      ])\n    }\n  } else {\n    /** @type {string} */\n    let key\n\n    for (key in schema) {\n      if (own.call(schema, key)) {\n        result.push([toExpression(key), toFunction(schema[key])])\n      }\n    }\n  }\n\n  return result\n}\n\n/**\n * Turn a find into an expression.\n *\n * @param {Find} find\n *   Find.\n * @returns {RegExp}\n *   Expression.\n */\nfunction toExpression(find) {\n  return typeof find === 'string' ? new RegExp(escape(find), 'g') : find\n}\n\n/**\n * Turn a replace into a function.\n *\n * @param {Replace} replace\n *   Replace.\n * @returns {ReplaceFunction}\n *   Function.\n */\nfunction toFunction(replace) {\n  return typeof replace === 'function' ? replace : () => replace\n}\n","export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n","/**\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-from-markdown').Transform} FromMarkdownTransform\n *\n * @typedef {import('mdast-util-to-markdown').ConstructName} ConstructName\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n *\n * @typedef {import('mdast-util-find-and-replace').ReplaceFunction} ReplaceFunction\n * @typedef {import('mdast-util-find-and-replace').RegExpMatchObject} RegExpMatchObject\n */\n\nimport {ccount} from 'ccount'\nimport {findAndReplace} from 'mdast-util-find-and-replace'\nimport {unicodePunctuation, unicodeWhitespace} from 'micromark-util-character'\n\n/** @type {ConstructName} */\nconst inConstruct = 'phrasing'\n/** @type {Array<ConstructName>} */\nconst notInConstruct = ['autolink', 'link', 'image', 'label']\n\n// To do: next major: expose functions instead of extensions.\n\n/**\n * Extension for `mdast-util-from-markdown` to enable GFM autolink literals.\n *\n * @type {FromMarkdownExtension}\n */\nexport const gfmAutolinkLiteralFromMarkdown = {\n  transforms: [transformGfmAutolinkLiterals],\n  enter: {\n    literalAutolink: enterLiteralAutolink,\n    literalAutolinkEmail: enterLiteralAutolinkValue,\n    literalAutolinkHttp: enterLiteralAutolinkValue,\n    literalAutolinkWww: enterLiteralAutolinkValue\n  },\n  exit: {\n    literalAutolink: exitLiteralAutolink,\n    literalAutolinkEmail: exitLiteralAutolinkEmail,\n    literalAutolinkHttp: exitLiteralAutolinkHttp,\n    literalAutolinkWww: exitLiteralAutolinkWww\n  }\n}\n\n/**\n * Extension for `mdast-util-to-markdown` to enable GFM autolink literals.\n *\n * @type {ToMarkdownExtension}\n */\nexport const gfmAutolinkLiteralToMarkdown = {\n  unsafe: [\n    {\n      character: '@',\n      before: '[+\\\\-.\\\\w]',\n      after: '[\\\\-.\\\\w]',\n      inConstruct,\n      notInConstruct\n    },\n    {\n      character: '.',\n      before: '[Ww]',\n      after: '[\\\\-.\\\\w]',\n      inConstruct,\n      notInConstruct\n    },\n    {character: ':', before: '[ps]', after: '\\\\/', inConstruct, notInConstruct}\n  ]\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterLiteralAutolink(token) {\n  this.enter({type: 'link', title: null, url: '', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterLiteralAutolinkValue(token) {\n  this.config.enter.autolinkProtocol.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkHttp(token) {\n  this.config.exit.autolinkProtocol.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkWww(token) {\n  this.config.exit.data.call(this, token)\n  const node = /** @type {Link} */ (this.stack[this.stack.length - 1])\n  node.url = 'http://' + this.sliceSerialize(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkEmail(token) {\n  this.config.exit.autolinkEmail.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolink(token) {\n  this.exit(token)\n}\n\n/** @type {FromMarkdownTransform} */\nfunction transformGfmAutolinkLiterals(tree) {\n  findAndReplace(\n    tree,\n    [\n      [/(https?:\\/\\/|www(?=\\.))([-.\\w]+)([^ \\t\\r\\n]*)/gi, findUrl],\n      [/([-.\\w+]+)@([-\\w]+(?:\\.[-\\w]+)+)/g, findEmail]\n    ],\n    {ignore: ['link', 'linkReference']}\n  )\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} protocol\n * @param {string} domain\n * @param {string} path\n * @param {RegExpMatchObject} match\n * @returns {Link | Array<PhrasingContent> | false}\n */\n// eslint-disable-next-line max-params\nfunction findUrl(_, protocol, domain, path, match) {\n  let prefix = ''\n\n  // Not an expected previous character.\n  if (!previous(match)) {\n    return false\n  }\n\n  // Treat `www` as part of the domain.\n  if (/^w/i.test(protocol)) {\n    domain = protocol + domain\n    protocol = ''\n    prefix = 'http://'\n  }\n\n  if (!isCorrectDomain(domain)) {\n    return false\n  }\n\n  const parts = splitUrl(domain + path)\n\n  if (!parts[0]) return false\n\n  /** @type {Link} */\n  const result = {\n    type: 'link',\n    title: null,\n    url: prefix + protocol + parts[0],\n    children: [{type: 'text', value: protocol + parts[0]}]\n  }\n\n  if (parts[1]) {\n    return [result, {type: 'text', value: parts[1]}]\n  }\n\n  return result\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} atext\n * @param {string} label\n * @param {RegExpMatchObject} match\n * @returns {Link | false}\n */\nfunction findEmail(_, atext, label, match) {\n  if (\n    // Not an expected previous character.\n    !previous(match, true) ||\n    // Label ends in not allowed character.\n    /[-\\d_]$/.test(label)\n  ) {\n    return false\n  }\n\n  return {\n    type: 'link',\n    title: null,\n    url: 'mailto:' + atext + '@' + label,\n    children: [{type: 'text', value: atext + '@' + label}]\n  }\n}\n\n/**\n * @param {string} domain\n * @returns {boolean}\n */\nfunction isCorrectDomain(domain) {\n  const parts = domain.split('.')\n\n  if (\n    parts.length < 2 ||\n    (parts[parts.length - 1] &&\n      (/_/.test(parts[parts.length - 1]) ||\n        !/[a-zA-Z\\d]/.test(parts[parts.length - 1]))) ||\n    (parts[parts.length - 2] &&\n      (/_/.test(parts[parts.length - 2]) ||\n        !/[a-zA-Z\\d]/.test(parts[parts.length - 2])))\n  ) {\n    return false\n  }\n\n  return true\n}\n\n/**\n * @param {string} url\n * @returns {[string, string | undefined]}\n */\nfunction splitUrl(url) {\n  const trailExec = /[!\"&'),.:;<>?\\]}]+$/.exec(url)\n\n  if (!trailExec) {\n    return [url, undefined]\n  }\n\n  url = url.slice(0, trailExec.index)\n\n  let trail = trailExec[0]\n  let closingParenIndex = trail.indexOf(')')\n  const openingParens = ccount(url, '(')\n  let closingParens = ccount(url, ')')\n\n  while (closingParenIndex !== -1 && openingParens > closingParens) {\n    url += trail.slice(0, closingParenIndex + 1)\n    trail = trail.slice(closingParenIndex + 1)\n    closingParenIndex = trail.indexOf(')')\n    closingParens++\n  }\n\n  return [url, trail]\n}\n\n/**\n * @param {RegExpMatchObject} match\n * @param {boolean | null | undefined} [email=false]\n * @returns {boolean}\n */\nfunction previous(match, email) {\n  const code = match.input.charCodeAt(match.index - 1)\n\n  return (\n    (match.index === 0 ||\n      unicodeWhitespace(code) ||\n      unicodePunctuation(code)) &&\n    (!email || code !== 47)\n  )\n}\n","/**\n * @typedef {import('../types.js').AssociationId} AssociationId\n */\n\nimport {decodeString} from 'micromark-util-decode-string'\n\n/**\n * Get an identifier from an association to match it to others.\n *\n * Associations are nodes that match to something else through an ID:\n * <https://github.com/syntax-tree/mdast#association>.\n *\n * The `label` of an association is the string value: character escapes and\n * references work, and casing is intact.\n * The `identifier` is used to match one association to another:\n * controversially, character escapes and references don’t work in this\n * matching: `&copy;` does not match `©`, and `\\+` does not match `+`.\n *\n * But casing is ignored (and whitespace) is trimmed and collapsed: ` A\\nb`\n * matches `a b`.\n * So, we do prefer the label when figuring out how we’re going to serialize:\n * it has whitespace, casing, and we can ignore most useless character\n * escapes and all character references.\n *\n * @type {AssociationId}\n */\nexport function association(node) {\n  if (node.label || !node.identifier) {\n    return node.label || ''\n  }\n\n  return decodeString(node.identifier)\n}\n","/**\n * @typedef {import('../types.js').FlowContent} FlowContent\n * @typedef {import('../types.js').Node} Node\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').State} State\n * @typedef {import('../types.js').TrackFields} TrackFields\n */\n\n/**\n * @param {Parent & {children: Array<FlowContent>}} parent\n *   Parent of flow nodes.\n * @param {State} state\n *   Info passed around about the current state.\n * @param {TrackFields} info\n *   Info on where we are in the document we are generating.\n * @returns {string}\n *   Serialized children, joined by (blank) lines.\n */\nexport function containerFlow(parent, state, info) {\n  const indexStack = state.indexStack\n  const children = parent.children || []\n  const tracker = state.createTracker(info)\n  /** @type {Array<string>} */\n  const results = []\n  let index = -1\n\n  indexStack.push(-1)\n\n  while (++index < children.length) {\n    const child = children[index]\n\n    indexStack[indexStack.length - 1] = index\n\n    results.push(\n      tracker.move(\n        state.handle(child, parent, state, {\n          before: '\\n',\n          after: '\\n',\n          ...tracker.current()\n        })\n      )\n    )\n\n    if (child.type !== 'list') {\n      state.bulletLastUsed = undefined\n    }\n\n    if (index < children.length - 1) {\n      results.push(\n        tracker.move(between(child, children[index + 1], parent, state))\n      )\n    }\n  }\n\n  indexStack.pop()\n\n  return results.join('')\n}\n\n/**\n * @param {Node} left\n * @param {Node} right\n * @param {Parent} parent\n * @param {State} state\n * @returns {string}\n */\nfunction between(left, right, parent, state) {\n  let index = state.join.length\n\n  while (index--) {\n    const result = state.join[index](left, right, parent, state)\n\n    if (result === true || result === 1) {\n      break\n    }\n\n    if (typeof result === 'number') {\n      return '\\n'.repeat(1 + result)\n    }\n\n    if (result === false) {\n      return '\\n\\n<!---->\\n\\n'\n    }\n  }\n\n  return '\\n\\n'\n}\n","/**\n * @typedef {import('../types.js').IndentLines} IndentLines\n */\n\nconst eol = /\\r?\\n|\\r/g\n\n/**\n * @type {IndentLines}\n */\nexport function indentLines(value, map) {\n  /** @type {Array<string>} */\n  const result = []\n  let start = 0\n  let line = 0\n  /** @type {RegExpExecArray | null} */\n  let match\n\n  while ((match = eol.exec(value))) {\n    one(value.slice(start, match.index))\n    result.push(match[0])\n    start = match.index + match[0].length\n    line++\n  }\n\n  one(value.slice(start))\n\n  return result.join('')\n\n  /**\n   * @param {string} value\n   */\n  function one(value) {\n    result.push(map(value, line, !value))\n  }\n}\n","/**\n * @typedef {import('../types.js').Unsafe} Unsafe\n */\n\n/**\n * @param {Unsafe} pattern\n * @returns {RegExp}\n */\nexport function patternCompile(pattern) {\n  if (!pattern._compiled) {\n    const before =\n      (pattern.atBreak ? '[\\\\r\\\\n][\\\\t ]*' : '') +\n      (pattern.before ? '(?:' + pattern.before + ')' : '')\n\n    pattern._compiled = new RegExp(\n      (before ? '(' + before + ')' : '') +\n        (/[|\\\\{}()[\\]^$+*?.-]/.test(pattern.character) ? '\\\\' : '') +\n        pattern.character +\n        (pattern.after ? '(?:' + pattern.after + ')' : ''),\n      'g'\n    )\n  }\n\n  return pattern._compiled\n}\n","/**\n * @typedef {import('../types.js').Unsafe} Unsafe\n * @typedef {import('../types.js').ConstructName} ConstructName\n */\n\n/**\n * @param {Array<ConstructName>} stack\n * @param {Unsafe} pattern\n * @returns {boolean}\n */\nexport function patternInScope(stack, pattern) {\n  return (\n    listInScope(stack, pattern.inConstruct, true) &&\n    !listInScope(stack, pattern.notInConstruct, false)\n  )\n}\n\n/**\n * @param {Array<ConstructName>} stack\n * @param {Unsafe['inConstruct']} list\n * @param {boolean} none\n * @returns {boolean}\n */\nfunction listInScope(stack, list, none) {\n  if (typeof list === 'string') {\n    list = [list]\n  }\n\n  if (!list || list.length === 0) {\n    return none\n  }\n\n  let index = -1\n\n  while (++index < list.length) {\n    if (stack.includes(list[index])) {\n      return true\n    }\n  }\n\n  return false\n}\n","/**\n * @typedef {import('../types.js').State} State\n * @typedef {import('../types.js').SafeConfig} SafeConfig\n */\n\nimport {patternCompile} from './pattern-compile.js'\nimport {patternInScope} from './pattern-in-scope.js'\n\n/**\n * Make a string safe for embedding in markdown constructs.\n *\n * In markdown, almost all punctuation characters can, in certain cases,\n * result in something.\n * Whether they do is highly subjective to where they happen and in what\n * they happen.\n *\n * To solve this, `mdast-util-to-markdown` tracks:\n *\n * * Characters before and after something;\n * * What “constructs” we are in.\n *\n * This information is then used by this function to escape or encode\n * special characters.\n *\n * @param {State} state\n *   Info passed around about the current state.\n * @param {string | null | undefined} input\n *   Raw value to make safe.\n * @param {SafeConfig} config\n *   Configuration.\n * @returns {string}\n *   Serialized markdown safe for embedding.\n */\nexport function safe(state, input, config) {\n  const value = (config.before || '') + (input || '') + (config.after || '')\n  /** @type {Array<number>} */\n  const positions = []\n  /** @type {Array<string>} */\n  const result = []\n  /** @type {Record<number, {before: boolean, after: boolean}>} */\n  const infos = {}\n  let index = -1\n\n  while (++index < state.unsafe.length) {\n    const pattern = state.unsafe[index]\n\n    if (!patternInScope(state.stack, pattern)) {\n      continue\n    }\n\n    const expression = patternCompile(pattern)\n    /** @type {RegExpExecArray | null} */\n    let match\n\n    while ((match = expression.exec(value))) {\n      const before = 'before' in pattern || Boolean(pattern.atBreak)\n      const after = 'after' in pattern\n      const position = match.index + (before ? match[1].length : 0)\n\n      if (positions.includes(position)) {\n        if (infos[position].before && !before) {\n          infos[position].before = false\n        }\n\n        if (infos[position].after && !after) {\n          infos[position].after = false\n        }\n      } else {\n        positions.push(position)\n        infos[position] = {before, after}\n      }\n    }\n  }\n\n  positions.sort(numerical)\n\n  let start = config.before ? config.before.length : 0\n  const end = value.length - (config.after ? config.after.length : 0)\n  index = -1\n\n  while (++index < positions.length) {\n    const position = positions[index]\n\n    // Character before or after matched:\n    if (position < start || position >= end) {\n      continue\n    }\n\n    // If this character is supposed to be escaped because it has a condition on\n    // the next character, and the next character is definitly being escaped,\n    // then skip this escape.\n    if (\n      (position + 1 < end &&\n        positions[index + 1] === position + 1 &&\n        infos[position].after &&\n        !infos[position + 1].before &&\n        !infos[position + 1].after) ||\n      (positions[index - 1] === position - 1 &&\n        infos[position].before &&\n        !infos[position - 1].before &&\n        !infos[position - 1].after)\n    ) {\n      continue\n    }\n\n    if (start !== position) {\n      // If we have to use a character reference, an ampersand would be more\n      // correct, but as backslashes only care about punctuation, either will\n      // do the trick\n      result.push(escapeBackslashes(value.slice(start, position), '\\\\'))\n    }\n\n    start = position\n\n    if (\n      /[!-/:-@[-`{-~]/.test(value.charAt(position)) &&\n      (!config.encode || !config.encode.includes(value.charAt(position)))\n    ) {\n      // Character escape.\n      result.push('\\\\')\n    } else {\n      // Character reference.\n      result.push(\n        '&#x' + value.charCodeAt(position).toString(16).toUpperCase() + ';'\n      )\n      start++\n    }\n  }\n\n  result.push(escapeBackslashes(value.slice(start, end), config.after))\n\n  return result.join('')\n}\n\n/**\n * @param {number} a\n * @param {number} b\n * @returns {number}\n */\nfunction numerical(a, b) {\n  return a - b\n}\n\n/**\n * @param {string} value\n * @param {string} after\n * @returns {string}\n */\nfunction escapeBackslashes(value, after) {\n  const expression = /\\\\(?=[!-/:-@[-`{-~])/g\n  /** @type {Array<number>} */\n  const positions = []\n  /** @type {Array<string>} */\n  const results = []\n  const whole = value + after\n  let index = -1\n  let start = 0\n  /** @type {RegExpExecArray | null} */\n  let match\n\n  while ((match = expression.exec(whole))) {\n    positions.push(match.index)\n  }\n\n  while (++index < positions.length) {\n    if (start !== positions[index]) {\n      results.push(value.slice(start, positions[index]))\n    }\n\n    results.push('\\\\')\n    start = positions[index]\n  }\n\n  results.push(value.slice(start))\n\n  return results.join('')\n}\n","/**\n * @typedef {import('../types.js').CreateTracker} CreateTracker\n * @typedef {import('../types.js').TrackCurrent} TrackCurrent\n * @typedef {import('../types.js').TrackMove} TrackMove\n * @typedef {import('../types.js').TrackShift} TrackShift\n */\n\n/**\n * Track positional info in the output.\n *\n * @type {CreateTracker}\n */\nexport function track(config) {\n  // Defaults are used to prevent crashes when older utilities somehow activate\n  // this code.\n  /* c8 ignore next 5 */\n  const options = config || {}\n  const now = options.now || {}\n  let lineShift = options.lineShift || 0\n  let line = now.line || 1\n  let column = now.column || 1\n\n  return {move, current, shift}\n\n  /**\n   * Get the current tracked info.\n   *\n   * @type {TrackCurrent}\n   */\n  function current() {\n    return {now: {line, column}, lineShift}\n  }\n\n  /**\n   * Define an increased line shift (the typical indent for lines).\n   *\n   * @type {TrackShift}\n   */\n  function shift(value) {\n    lineShift += value\n  }\n\n  /**\n   * Move past some generated markdown.\n   *\n   * @type {TrackMove}\n   */\n  function move(input) {\n    // eslint-disable-next-line unicorn/prefer-default-parameters\n    const value = input || ''\n    const chunks = value.split(/\\r?\\n|\\r/g)\n    const tail = chunks[chunks.length - 1]\n    line += chunks.length - 1\n    column =\n      chunks.length === 1 ? column + tail.length : 1 + tail.length + lineShift\n    return value\n  }\n}\n","/**\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('mdast').FootnoteDefinition} FootnoteDefinition\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Map} Map\n */\n\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {association} from 'mdast-util-to-markdown/lib/util/association.js'\nimport {containerFlow} from 'mdast-util-to-markdown/lib/util/container-flow.js'\nimport {indentLines} from 'mdast-util-to-markdown/lib/util/indent-lines.js'\nimport {safe} from 'mdast-util-to-markdown/lib/util/safe.js'\nimport {track} from 'mdast-util-to-markdown/lib/util/track.js'\n\nfootnoteReference.peek = footnoteReferencePeek\n\n// To do: next major: rename `context` -> `state`, `safeOptions` to `info`, use\n// utilities on `state`.\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM footnotes\n * in markdown.\n *\n * @returns {FromMarkdownExtension}\n *   Extension for `mdast-util-from-markdown`.\n */\nexport function gfmFootnoteFromMarkdown() {\n  return {\n    enter: {\n      gfmFootnoteDefinition: enterFootnoteDefinition,\n      gfmFootnoteDefinitionLabelString: enterFootnoteDefinitionLabelString,\n      gfmFootnoteCall: enterFootnoteCall,\n      gfmFootnoteCallString: enterFootnoteCallString\n    },\n    exit: {\n      gfmFootnoteDefinition: exitFootnoteDefinition,\n      gfmFootnoteDefinitionLabelString: exitFootnoteDefinitionLabelString,\n      gfmFootnoteCall: exitFootnoteCall,\n      gfmFootnoteCallString: exitFootnoteCallString\n    }\n  }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM footnotes\n * in markdown.\n *\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown`.\n */\nexport function gfmFootnoteToMarkdown() {\n  return {\n    // This is on by default already.\n    unsafe: [{character: '[', inConstruct: ['phrasing', 'label', 'reference']}],\n    handlers: {footnoteDefinition, footnoteReference}\n  }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteDefinition(token) {\n  this.enter(\n    {type: 'footnoteDefinition', identifier: '', label: '', children: []},\n    token\n  )\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteDefinitionLabelString() {\n  this.buffer()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteDefinitionLabelString(token) {\n  const label = this.resume()\n  const node = /** @type {FootnoteDefinition} */ (\n    this.stack[this.stack.length - 1]\n  )\n  node.label = label\n  node.identifier = normalizeIdentifier(\n    this.sliceSerialize(token)\n  ).toLowerCase()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteDefinition(token) {\n  this.exit(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteCall(token) {\n  this.enter({type: 'footnoteReference', identifier: '', label: ''}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteCallString() {\n  this.buffer()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteCallString(token) {\n  const label = this.resume()\n  const node = /** @type {FootnoteDefinition} */ (\n    this.stack[this.stack.length - 1]\n  )\n  node.label = label\n  node.identifier = normalizeIdentifier(\n    this.sliceSerialize(token)\n  ).toLowerCase()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteCall(token) {\n  this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {FootnoteReference} node\n */\nfunction footnoteReference(node, _, context, safeOptions) {\n  const tracker = track(safeOptions)\n  let value = tracker.move('[^')\n  const exit = context.enter('footnoteReference')\n  const subexit = context.enter('reference')\n  value += tracker.move(\n    safe(context, association(node), {\n      ...tracker.current(),\n      before: value,\n      after: ']'\n    })\n  )\n  subexit()\n  exit()\n  value += tracker.move(']')\n  return value\n}\n\n/** @type {ToMarkdownHandle} */\nfunction footnoteReferencePeek() {\n  return '['\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {FootnoteDefinition} node\n */\nfunction footnoteDefinition(node, _, context, safeOptions) {\n  const tracker = track(safeOptions)\n  let value = tracker.move('[^')\n  const exit = context.enter('footnoteDefinition')\n  const subexit = context.enter('label')\n  value += tracker.move(\n    safe(context, association(node), {\n      ...tracker.current(),\n      before: value,\n      after: ']'\n    })\n  )\n  subexit()\n  value += tracker.move(\n    ']:' + (node.children && node.children.length > 0 ? ' ' : '')\n  )\n  tracker.shift(4)\n  value += tracker.move(\n    indentLines(containerFlow(node, context, tracker.current()), map)\n  )\n  exit()\n\n  return value\n}\n\n/** @type {Map} */\nfunction map(line, index, blank) {\n  if (index === 0) {\n    return line\n  }\n\n  return (blank ? '' : '    ') + line\n}\n","/**\n * @typedef {import('../types.js').Handle} Handle\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').PhrasingContent} PhrasingContent\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * Serialize the children of a parent that contains phrasing children.\n *\n * These children will be joined flush together.\n *\n * @param {Parent & {children: Array<PhrasingContent>}} parent\n *   Parent of flow nodes.\n * @param {State} state\n *   Info passed around about the current state.\n * @param {Info} info\n *   Info on where we are in the document we are generating.\n * @returns {string}\n *   Serialized children, joined together.\n */\nexport function containerPhrasing(parent, state, info) {\n  const indexStack = state.indexStack\n  const children = parent.children || []\n  /** @type {Array<string>} */\n  const results = []\n  let index = -1\n  let before = info.before\n\n  indexStack.push(-1)\n  let tracker = state.createTracker(info)\n\n  while (++index < children.length) {\n    const child = children[index]\n    /** @type {string} */\n    let after\n\n    indexStack[indexStack.length - 1] = index\n\n    if (index + 1 < children.length) {\n      /** @type {Handle} */\n      // @ts-expect-error: hush, it’s actually a `zwitch`.\n      let handle = state.handle.handlers[children[index + 1].type]\n      /** @type {Handle} */\n      // @ts-expect-error: hush, it’s actually a `zwitch`.\n      if (handle && handle.peek) handle = handle.peek\n      after = handle\n        ? handle(children[index + 1], parent, state, {\n            before: '',\n            after: '',\n            ...tracker.current()\n          }).charAt(0)\n        : ''\n    } else {\n      after = info.after\n    }\n\n    // In some cases, html (text) can be found in phrasing right after an eol.\n    // When we’d serialize that, in most cases that would be seen as html\n    // (flow).\n    // As we can’t escape or so to prevent it from happening, we take a somewhat\n    // reasonable approach: replace that eol with a space.\n    // See: <https://github.com/syntax-tree/mdast-util-to-markdown/issues/15>\n    if (\n      results.length > 0 &&\n      (before === '\\r' || before === '\\n') &&\n      child.type === 'html'\n    ) {\n      results[results.length - 1] = results[results.length - 1].replace(\n        /(\\r?\\n|\\r)$/,\n        ' '\n      )\n      before = ' '\n\n      // To do: does this work to reset tracker?\n      tracker = state.createTracker(info)\n      tracker.move(results.join(''))\n    }\n\n    results.push(\n      tracker.move(\n        state.handle(child, parent, state, {\n          ...tracker.current(),\n          before,\n          after\n        })\n      )\n    )\n\n    before = results[results.length - 1].slice(-1)\n  }\n\n  indexStack.pop()\n\n  return results.join('')\n}\n","/**\n * @typedef {import('mdast').Delete} Delete\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n *\n * @typedef {import('mdast-util-to-markdown').ConstructName} ConstructName\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n */\n\nimport {containerPhrasing} from 'mdast-util-to-markdown/lib/util/container-phrasing.js'\nimport {track} from 'mdast-util-to-markdown/lib/util/track.js'\n\n// To do: next major: expose functions.\n// To do: next major: use `state`, state utilities.\n\n/**\n * List of constructs that occur in phrasing (paragraphs, headings), but cannot\n * contain strikethrough.\n * So they sort of cancel each other out.\n * Note: could use a better name.\n *\n * Note: keep in sync with: <https://github.com/syntax-tree/mdast-util-to-markdown/blob/8ce8dbf/lib/unsafe.js#L14>\n *\n * @type {Array<ConstructName>}\n */\nconst constructsWithoutStrikethrough = [\n  'autolink',\n  'destinationLiteral',\n  'destinationRaw',\n  'reference',\n  'titleQuote',\n  'titleApostrophe'\n]\n\nhandleDelete.peek = peekDelete\n\n/**\n * Extension for `mdast-util-from-markdown` to enable GFM strikethrough.\n *\n * @type {FromMarkdownExtension}\n */\nexport const gfmStrikethroughFromMarkdown = {\n  canContainEols: ['delete'],\n  enter: {strikethrough: enterStrikethrough},\n  exit: {strikethrough: exitStrikethrough}\n}\n\n/**\n * Extension for `mdast-util-to-markdown` to enable GFM strikethrough.\n *\n * @type {ToMarkdownExtension}\n */\nexport const gfmStrikethroughToMarkdown = {\n  unsafe: [\n    {\n      character: '~',\n      inConstruct: 'phrasing',\n      notInConstruct: constructsWithoutStrikethrough\n    }\n  ],\n  handlers: {delete: handleDelete}\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterStrikethrough(token) {\n  this.enter({type: 'delete', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitStrikethrough(token) {\n  this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {Delete} node\n */\nfunction handleDelete(node, _, context, safeOptions) {\n  const tracker = track(safeOptions)\n  const exit = context.enter('strikethrough')\n  let value = tracker.move('~~')\n  value += containerPhrasing(node, context, {\n    ...tracker.current(),\n    before: value,\n    after: '~'\n  })\n  value += tracker.move('~~')\n  exit()\n  return value\n}\n\n/** @type {ToMarkdownHandle} */\nfunction peekDelete() {\n  return '~'\n}\n","/**\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').State} State\n */\n\nimport {patternCompile} from '../util/pattern-compile.js'\n\ninlineCode.peek = inlineCodePeek\n\n/**\n * @param {InlineCode} node\n * @param {Parent | undefined} _\n * @param {State} state\n * @returns {string}\n */\nexport function inlineCode(node, _, state) {\n  let value = node.value || ''\n  let sequence = '`'\n  let index = -1\n\n  // If there is a single grave accent on its own in the code, use a fence of\n  // two.\n  // If there are two in a row, use one.\n  while (new RegExp('(^|[^`])' + sequence + '([^`]|$)').test(value)) {\n    sequence += '`'\n  }\n\n  // If this is not just spaces or eols (tabs don’t count), and either the\n  // first or last character are a space, eol, or tick, then pad with spaces.\n  if (\n    /[^ \\r\\n]/.test(value) &&\n    ((/^[ \\r\\n]/.test(value) && /[ \\r\\n]$/.test(value)) || /^`|`$/.test(value))\n  ) {\n    value = ' ' + value + ' '\n  }\n\n  // We have a potential problem: certain characters after eols could result in\n  // blocks being seen.\n  // For example, if someone injected the string `'\\n# b'`, then that would\n  // result in an ATX heading.\n  // We can’t escape characters in `inlineCode`, but because eols are\n  // transformed to spaces when going from markdown to HTML anyway, we can swap\n  // them out.\n  while (++index < state.unsafe.length) {\n    const pattern = state.unsafe[index]\n    const expression = patternCompile(pattern)\n    /** @type {RegExpExecArray | null} */\n    let match\n\n    // Only look for `atBreak`s.\n    // Btw: note that `atBreak` patterns will always start the regex at LF or\n    // CR.\n    if (!pattern.atBreak) continue\n\n    while ((match = expression.exec(value))) {\n      let position = match.index\n\n      // Support CRLF (patterns only look for one of the characters).\n      if (\n        value.charCodeAt(position) === 10 /* `\\n` */ &&\n        value.charCodeAt(position - 1) === 13 /* `\\r` */\n      ) {\n        position--\n      }\n\n      value = value.slice(0, position) + ' ' + value.slice(match.index + 1)\n    }\n  }\n\n  return sequence + value + sequence\n}\n\n/**\n * @returns {string}\n */\nfunction inlineCodePeek() {\n  return '`'\n}\n","// To do: next major: remove.\n/**\n * @typedef {Options} MarkdownTableOptions\n *   Configuration.\n */\n\n/**\n * @typedef Options\n *   Configuration.\n * @property {boolean | null | undefined} [alignDelimiters=true]\n *   Whether to align the delimiters (default: `true`);\n *   they are aligned by default:\n *\n *   ```markdown\n *   | Alpha | B     |\n *   | ----- | ----- |\n *   | C     | Delta |\n *   ```\n *\n *   Pass `false` to make them staggered:\n *\n *   ```markdown\n *   | Alpha | B |\n *   | - | - |\n *   | C | Delta |\n *   ```\n * @property {ReadonlyArray<string | null | undefined> | string | null | undefined} [align]\n *   How to align columns (default: `''`);\n *   one style for all columns or styles for their respective columns;\n *   each style is either `'l'` (left), `'r'` (right), or `'c'` (center);\n *   other values are treated as `''`, which doesn’t place the colon in the\n *   alignment row but does align left;\n *   *only the lowercased first character is used, so `Right` is fine.*\n * @property {boolean | null | undefined} [delimiterEnd=true]\n *   Whether to end each row with the delimiter (default: `true`).\n *\n *   > 👉 **Note**: please don’t use this: it could create fragile structures\n *   > that aren’t understandable to some markdown parsers.\n *\n *   When `true`, there are ending delimiters:\n *\n *   ```markdown\n *   | Alpha | B     |\n *   | ----- | ----- |\n *   | C     | Delta |\n *   ```\n *\n *   When `false`, there are no ending delimiters:\n *\n *   ```markdown\n *   | Alpha | B\n *   | ----- | -----\n *   | C     | Delta\n *   ```\n * @property {boolean | null | undefined} [delimiterStart=true]\n *   Whether to begin each row with the delimiter (default: `true`).\n *\n *   > 👉 **Note**: please don’t use this: it could create fragile structures\n *   > that aren’t understandable to some markdown parsers.\n *\n *   When `true`, there are starting delimiters:\n *\n *   ```markdown\n *   | Alpha | B     |\n *   | ----- | ----- |\n *   | C     | Delta |\n *   ```\n *\n *   When `false`, there are no starting delimiters:\n *\n *   ```markdown\n *   Alpha | B     |\n *   ----- | ----- |\n *   C     | Delta |\n *   ```\n * @property {boolean | null | undefined} [padding=true]\n *   Whether to add a space of padding between delimiters and cells\n *   (default: `true`).\n *\n *   When `true`, there is padding:\n *\n *   ```markdown\n *   | Alpha | B     |\n *   | ----- | ----- |\n *   | C     | Delta |\n *   ```\n *\n *   When `false`, there is no padding:\n *\n *   ```markdown\n *   |Alpha|B    |\n *   |-----|-----|\n *   |C    |Delta|\n *   ```\n * @property {((value: string) => number) | null | undefined} [stringLength]\n *   Function to detect the length of table cell content (optional);\n *   this is used when aligning the delimiters (`|`) between table cells;\n *   full-width characters and emoji mess up delimiter alignment when viewing\n *   the markdown source;\n *   to fix this, you can pass this function,\n *   which receives the cell content and returns its “visible” size;\n *   note that what is and isn’t visible depends on where the text is displayed.\n *\n *   Without such a function, the following:\n *\n *   ```js\n *   markdownTable([\n *     ['Alpha', 'Bravo'],\n *     ['中文', 'Charlie'],\n *     ['👩‍❤️‍👩', 'Delta']\n *   ])\n *   ```\n *\n *   Yields:\n *\n *   ```markdown\n *   | Alpha | Bravo |\n *   | - | - |\n *   | 中文 | Charlie |\n *   | 👩‍❤️‍👩 | Delta |\n *   ```\n *\n *   With [`string-width`](https://github.com/sindresorhus/string-width):\n *\n *   ```js\n *   import stringWidth from 'string-width'\n *\n *   markdownTable(\n *     [\n *       ['Alpha', 'Bravo'],\n *       ['中文', 'Charlie'],\n *       ['👩‍❤️‍👩', 'Delta']\n *     ],\n *     {stringLength: stringWidth}\n *   )\n *   ```\n *\n *   Yields:\n *\n *   ```markdown\n *   | Alpha | Bravo   |\n *   | ----- | ------- |\n *   | 中文  | Charlie |\n *   | 👩‍❤️‍👩    | Delta   |\n *   ```\n */\n\n/**\n * @param {string} value\n *   Cell value.\n * @returns {number}\n *   Cell size.\n */\nfunction defaultStringLength(value) {\n  return value.length\n}\n\n/**\n * Generate a markdown\n * ([GFM](https://docs.github.com/en/github/writing-on-github/working-with-advanced-formatting/organizing-information-with-tables))\n * table.\n *\n * @param {ReadonlyArray<ReadonlyArray<string | null | undefined>>} table\n *   Table data (matrix of strings).\n * @param {Readonly<Options> | null | undefined} [options]\n *   Configuration (optional).\n * @returns {string}\n *   Result.\n */\nexport function markdownTable(table, options) {\n  const settings = options || {}\n  // To do: next major: change to spread.\n  const align = (settings.align || []).concat()\n  const stringLength = settings.stringLength || defaultStringLength\n  /** @type {Array<number>} Character codes as symbols for alignment per column. */\n  const alignments = []\n  /** @type {Array<Array<string>>} Cells per row. */\n  const cellMatrix = []\n  /** @type {Array<Array<number>>} Sizes of each cell per row. */\n  const sizeMatrix = []\n  /** @type {Array<number>} */\n  const longestCellByColumn = []\n  let mostCellsPerRow = 0\n  let rowIndex = -1\n\n  // This is a superfluous loop if we don’t align delimiters, but otherwise we’d\n  // do superfluous work when aligning, so optimize for aligning.\n  while (++rowIndex < table.length) {\n    /** @type {Array<string>} */\n    const row = []\n    /** @type {Array<number>} */\n    const sizes = []\n    let columnIndex = -1\n\n    if (table[rowIndex].length > mostCellsPerRow) {\n      mostCellsPerRow = table[rowIndex].length\n    }\n\n    while (++columnIndex < table[rowIndex].length) {\n      const cell = serialize(table[rowIndex][columnIndex])\n\n      if (settings.alignDelimiters !== false) {\n        const size = stringLength(cell)\n        sizes[columnIndex] = size\n\n        if (\n          longestCellByColumn[columnIndex] === undefined ||\n          size > longestCellByColumn[columnIndex]\n        ) {\n          longestCellByColumn[columnIndex] = size\n        }\n      }\n\n      row.push(cell)\n    }\n\n    cellMatrix[rowIndex] = row\n    sizeMatrix[rowIndex] = sizes\n  }\n\n  // Figure out which alignments to use.\n  let columnIndex = -1\n\n  if (typeof align === 'object' && 'length' in align) {\n    while (++columnIndex < mostCellsPerRow) {\n      alignments[columnIndex] = toAlignment(align[columnIndex])\n    }\n  } else {\n    const code = toAlignment(align)\n\n    while (++columnIndex < mostCellsPerRow) {\n      alignments[columnIndex] = code\n    }\n  }\n\n  // Inject the alignment row.\n  columnIndex = -1\n  /** @type {Array<string>} */\n  const row = []\n  /** @type {Array<number>} */\n  const sizes = []\n\n  while (++columnIndex < mostCellsPerRow) {\n    const code = alignments[columnIndex]\n    let before = ''\n    let after = ''\n\n    if (code === 99 /* `c` */) {\n      before = ':'\n      after = ':'\n    } else if (code === 108 /* `l` */) {\n      before = ':'\n    } else if (code === 114 /* `r` */) {\n      after = ':'\n    }\n\n    // There *must* be at least one hyphen-minus in each alignment cell.\n    let size =\n      settings.alignDelimiters === false\n        ? 1\n        : Math.max(\n            1,\n            longestCellByColumn[columnIndex] - before.length - after.length\n          )\n\n    const cell = before + '-'.repeat(size) + after\n\n    if (settings.alignDelimiters !== false) {\n      size = before.length + size + after.length\n\n      if (size > longestCellByColumn[columnIndex]) {\n        longestCellByColumn[columnIndex] = size\n      }\n\n      sizes[columnIndex] = size\n    }\n\n    row[columnIndex] = cell\n  }\n\n  // Inject the alignment row.\n  cellMatrix.splice(1, 0, row)\n  sizeMatrix.splice(1, 0, sizes)\n\n  rowIndex = -1\n  /** @type {Array<string>} */\n  const lines = []\n\n  while (++rowIndex < cellMatrix.length) {\n    const row = cellMatrix[rowIndex]\n    const sizes = sizeMatrix[rowIndex]\n    columnIndex = -1\n    /** @type {Array<string>} */\n    const line = []\n\n    while (++columnIndex < mostCellsPerRow) {\n      const cell = row[columnIndex] || ''\n      let before = ''\n      let after = ''\n\n      if (settings.alignDelimiters !== false) {\n        const size =\n          longestCellByColumn[columnIndex] - (sizes[columnIndex] || 0)\n        const code = alignments[columnIndex]\n\n        if (code === 114 /* `r` */) {\n          before = ' '.repeat(size)\n        } else if (code === 99 /* `c` */) {\n          if (size % 2) {\n            before = ' '.repeat(size / 2 + 0.5)\n            after = ' '.repeat(size / 2 - 0.5)\n          } else {\n            before = ' '.repeat(size / 2)\n            after = before\n          }\n        } else {\n          after = ' '.repeat(size)\n        }\n      }\n\n      if (settings.delimiterStart !== false && !columnIndex) {\n        line.push('|')\n      }\n\n      if (\n        settings.padding !== false &&\n        // Don’t add the opening space if we’re not aligning and the cell is\n        // empty: there will be a closing space.\n        !(settings.alignDelimiters === false && cell === '') &&\n        (settings.delimiterStart !== false || columnIndex)\n      ) {\n        line.push(' ')\n      }\n\n      if (settings.alignDelimiters !== false) {\n        line.push(before)\n      }\n\n      line.push(cell)\n\n      if (settings.alignDelimiters !== false) {\n        line.push(after)\n      }\n\n      if (settings.padding !== false) {\n        line.push(' ')\n      }\n\n      if (\n        settings.delimiterEnd !== false ||\n        columnIndex !== mostCellsPerRow - 1\n      ) {\n        line.push('|')\n      }\n    }\n\n    lines.push(\n      settings.delimiterEnd === false\n        ? line.join('').replace(/ +$/, '')\n        : line.join('')\n    )\n  }\n\n  return lines.join('\\n')\n}\n\n/**\n * @param {string | null | undefined} [value]\n *   Value to serialize.\n * @returns {string}\n *   Result.\n */\nfunction serialize(value) {\n  return value === null || value === undefined ? '' : String(value)\n}\n\n/**\n * @param {string | null | undefined} value\n *   Value.\n * @returns {number}\n *   Alignment.\n */\nfunction toAlignment(value) {\n  const code = typeof value === 'string' ? value.codePointAt(0) : 0\n\n  return code === 67 /* `C` */ || code === 99 /* `c` */\n    ? 99 /* `c` */\n    : code === 76 /* `L` */ || code === 108 /* `l` */\n      ? 108 /* `l` */\n      : code === 82 /* `R` */ || code === 114 /* `r` */\n        ? 114 /* `r` */\n        : 0\n}\n","/**\n * @typedef {import('mdast').Table} Table\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('mdast').InlineCode} InlineCode\n *\n * @typedef {import('markdown-table').MarkdownTableOptions} MarkdownTableOptions\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n *\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Context} ToMarkdownContext\n * @typedef {import('mdast-util-to-markdown').SafeOptions} SafeOptions\n */\n\n/**\n * @typedef Options\n *   Configuration.\n * @property {boolean | null | undefined} [tableCellPadding=true]\n *   Whether to add a space of padding between delimiters and cells.\n * @property {boolean | null | undefined} [tablePipeAlign=true]\n *   Whether to align the delimiters.\n * @property {MarkdownTableOptions['stringLength'] | null | undefined} [stringLength]\n *   Function to detect the length of table cell content, used when aligning\n *   the delimiters between cells\n */\n\nimport {containerPhrasing} from 'mdast-util-to-markdown/lib/util/container-phrasing.js'\nimport {inlineCode} from 'mdast-util-to-markdown/lib/handle/inline-code.js'\nimport {markdownTable} from 'markdown-table'\n\n// To do: next major: use `state` and `state` utilities from `mdast-util-to-markdown`.\n// To do: next major: use `defaultHandlers.inlineCode`.\n// To do: next major: expose functions.\n\n/**\n * Extension for `mdast-util-from-markdown` to enable GFM tables.\n *\n * @type {FromMarkdownExtension}\n */\nexport const gfmTableFromMarkdown = {\n  enter: {\n    table: enterTable,\n    tableData: enterCell,\n    tableHeader: enterCell,\n    tableRow: enterRow\n  },\n  exit: {\n    codeText: exitCodeText,\n    table: exitTable,\n    tableData: exit,\n    tableHeader: exit,\n    tableRow: exit\n  }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterTable(token) {\n  /** @type {Array<'left' | 'right' | 'center' | 'none'>} */\n  // @ts-expect-error: `align` is custom.\n  const align = token._align\n  this.enter(\n    {\n      type: 'table',\n      align: align.map((d) => (d === 'none' ? null : d)),\n      children: []\n    },\n    token\n  )\n  this.setData('inTable', true)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitTable(token) {\n  this.exit(token)\n  this.setData('inTable')\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterRow(token) {\n  this.enter({type: 'tableRow', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exit(token) {\n  this.exit(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterCell(token) {\n  this.enter({type: 'tableCell', children: []}, token)\n}\n\n// Overwrite the default code text data handler to unescape escaped pipes when\n// they are in tables.\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitCodeText(token) {\n  let value = this.resume()\n\n  if (this.getData('inTable')) {\n    value = value.replace(/\\\\([\\\\|])/g, replace)\n  }\n\n  const node = /** @type {InlineCode} */ (this.stack[this.stack.length - 1])\n  node.value = value\n  this.exit(token)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @returns {string}\n */\nfunction replace($0, $1) {\n  // Pipes work, backslashes don’t (but can’t escape pipes).\n  return $1 === '|' ? $1 : $0\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM tables in\n * markdown.\n *\n * @param {Options | null | undefined} [options]\n *   Configuration.\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable GFM tables.\n */\nexport function gfmTableToMarkdown(options) {\n  const settings = options || {}\n  const padding = settings.tableCellPadding\n  const alignDelimiters = settings.tablePipeAlign\n  const stringLength = settings.stringLength\n  const around = padding ? ' ' : '|'\n\n  return {\n    unsafe: [\n      {character: '\\r', inConstruct: 'tableCell'},\n      {character: '\\n', inConstruct: 'tableCell'},\n      // A pipe, when followed by a tab or space (padding), or a dash or colon\n      // (unpadded delimiter row), could result in a table.\n      {atBreak: true, character: '|', after: '[\\t :-]'},\n      // A pipe in a cell must be encoded.\n      {character: '|', inConstruct: 'tableCell'},\n      // A colon must be followed by a dash, in which case it could start a\n      // delimiter row.\n      {atBreak: true, character: ':', after: '-'},\n      // A delimiter row can also start with a dash, when followed by more\n      // dashes, a colon, or a pipe.\n      // This is a stricter version than the built in check for lists, thematic\n      // breaks, and setex heading underlines though:\n      // <https://github.com/syntax-tree/mdast-util-to-markdown/blob/51a2038/lib/unsafe.js#L57>\n      {atBreak: true, character: '-', after: '[:|-]'}\n    ],\n    handlers: {\n      table: handleTable,\n      tableRow: handleTableRow,\n      tableCell: handleTableCell,\n      inlineCode: inlineCodeWithTable\n    }\n  }\n\n  /**\n   * @type {ToMarkdownHandle}\n   * @param {Table} node\n   */\n  function handleTable(node, _, context, safeOptions) {\n    return serializeData(\n      handleTableAsData(node, context, safeOptions),\n      node.align\n    )\n  }\n\n  /**\n   * This function isn’t really used normally, because we handle rows at the\n   * table level.\n   * But, if someone passes in a table row, this ensures we make somewhat sense.\n   *\n   * @type {ToMarkdownHandle}\n   * @param {TableRow} node\n   */\n  function handleTableRow(node, _, context, safeOptions) {\n    const row = handleTableRowAsData(node, context, safeOptions)\n    const value = serializeData([row])\n    // `markdown-table` will always add an align row\n    return value.slice(0, value.indexOf('\\n'))\n  }\n\n  /**\n   * @type {ToMarkdownHandle}\n   * @param {TableCell} node\n   */\n  function handleTableCell(node, _, context, safeOptions) {\n    const exit = context.enter('tableCell')\n    const subexit = context.enter('phrasing')\n    const value = containerPhrasing(node, context, {\n      ...safeOptions,\n      before: around,\n      after: around\n    })\n    subexit()\n    exit()\n    return value\n  }\n\n  /**\n   * @param {Array<Array<string>>} matrix\n   * @param {Array<string | null | undefined> | null | undefined} [align]\n   */\n  function serializeData(matrix, align) {\n    return markdownTable(matrix, {\n      align,\n      // @ts-expect-error: `markdown-table` types should support `null`.\n      alignDelimiters,\n      // @ts-expect-error: `markdown-table` types should support `null`.\n      padding,\n      // @ts-expect-error: `markdown-table` types should support `null`.\n      stringLength\n    })\n  }\n\n  /**\n   * @param {Table} node\n   * @param {ToMarkdownContext} context\n   * @param {SafeOptions} safeOptions\n   */\n  function handleTableAsData(node, context, safeOptions) {\n    const children = node.children\n    let index = -1\n    /** @type {Array<Array<string>>} */\n    const result = []\n    const subexit = context.enter('table')\n\n    while (++index < children.length) {\n      result[index] = handleTableRowAsData(\n        children[index],\n        context,\n        safeOptions\n      )\n    }\n\n    subexit()\n\n    return result\n  }\n\n  /**\n   * @param {TableRow} node\n   * @param {ToMarkdownContext} context\n   * @param {SafeOptions} safeOptions\n   */\n  function handleTableRowAsData(node, context, safeOptions) {\n    const children = node.children\n    let index = -1\n    /** @type {Array<string>} */\n    const result = []\n    const subexit = context.enter('tableRow')\n\n    while (++index < children.length) {\n      // Note: the positional info as used here is incorrect.\n      // Making it correct would be impossible due to aligning cells?\n      // And it would need copy/pasting `markdown-table` into this project.\n      result[index] = handleTableCell(\n        children[index],\n        node,\n        context,\n        safeOptions\n      )\n    }\n\n    subexit()\n\n    return result\n  }\n\n  /**\n   * @type {ToMarkdownHandle}\n   * @param {InlineCode} node\n   */\n  function inlineCodeWithTable(node, parent, context) {\n    let value = inlineCode(node, parent, context)\n\n    if (context.stack.includes('tableCell')) {\n      value = value.replace(/\\|/g, '\\\\$&')\n    }\n\n    return value\n  }\n}\n","/**\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('../types.js').Map} Map\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').State} State\n * @typedef {import('../types.js').Info} Info\n */\n\nimport {checkBullet} from '../util/check-bullet.js'\nimport {checkListItemIndent} from '../util/check-list-item-indent.js'\n\n/**\n * @param {ListItem} node\n * @param {Parent | undefined} parent\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function listItem(node, parent, state, info) {\n  const listItemIndent = checkListItemIndent(state)\n  let bullet = state.bulletCurrent || checkBullet(state)\n\n  // Add the marker value for ordered lists.\n  if (parent && parent.type === 'list' && parent.ordered) {\n    bullet =\n      (typeof parent.start === 'number' && parent.start > -1\n        ? parent.start\n        : 1) +\n      (state.options.incrementListMarker === false\n        ? 0\n        : parent.children.indexOf(node)) +\n      bullet\n  }\n\n  let size = bullet.length + 1\n\n  if (\n    listItemIndent === 'tab' ||\n    (listItemIndent === 'mixed' &&\n      ((parent && parent.type === 'list' && parent.spread) || node.spread))\n  ) {\n    size = Math.ceil(size / 4) * 4\n  }\n\n  const tracker = state.createTracker(info)\n  tracker.move(bullet + ' '.repeat(size - bullet.length))\n  tracker.shift(size)\n  const exit = state.enter('listItem')\n  const value = state.indentLines(\n    state.containerFlow(node, tracker.current()),\n    map\n  )\n  exit()\n\n  return value\n\n  /** @type {Map} */\n  function map(line, index, blank) {\n    if (index) {\n      return (blank ? '' : ' '.repeat(size)) + line\n    }\n\n    return (blank ? bullet : bullet + ' '.repeat(size - bullet.length)) + line\n  }\n}\n","/**\n * @typedef {import('../types.js').State} State\n * @typedef {import('../types.js').Options} Options\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['listItemIndent'], null | undefined>}\n */\nexport function checkListItemIndent(state) {\n  const style = state.options.listItemIndent || 'tab'\n\n  // To do: remove in a major.\n  // @ts-expect-error: deprecated.\n  if (style === 1 || style === '1') {\n    return 'one'\n  }\n\n  if (style !== 'tab' && style !== 'one' && style !== 'mixed') {\n    throw new Error(\n      'Cannot serialize items with `' +\n        style +\n        '` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`'\n    )\n  }\n\n  return style\n}\n","/**\n * @typedef {import('../types.js').State} State\n * @typedef {import('../types.js').Options} Options\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['bullet'], null | undefined>}\n */\nexport function checkBullet(state) {\n  const marker = state.options.bullet || '*'\n\n  if (marker !== '*' && marker !== '+' && marker !== '-') {\n    throw new Error(\n      'Cannot serialize items with `' +\n        marker +\n        '` for `options.bullet`, expected `*`, `+`, or `-`'\n    )\n  }\n\n  return marker\n}\n","/**\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n */\n\n/**\n * @typedef {Extract<Root | Content, Parent>} Parents\n */\n\nimport {listItem} from 'mdast-util-to-markdown/lib/handle/list-item.js'\nimport {track} from 'mdast-util-to-markdown/lib/util/track.js'\n\n// To do: next major: rename `context` -> `state`, `safeOptions` -> `info`, use\n// `track` from `state`.\n// To do: next major: replace exports with functions.\n// To do: next major: use `defaulthandlers.listItem`.\n\n/**\n * Extension for `mdast-util-from-markdown` to enable GFM task list items.\n *\n * @type {FromMarkdownExtension}\n */\nexport const gfmTaskListItemFromMarkdown = {\n  exit: {\n    taskListCheckValueChecked: exitCheck,\n    taskListCheckValueUnchecked: exitCheck,\n    paragraph: exitParagraphWithTaskListItem\n  }\n}\n\n/**\n * Extension for `mdast-util-to-markdown` to enable GFM task list items.\n *\n * @type {ToMarkdownExtension}\n */\nexport const gfmTaskListItemToMarkdown = {\n  unsafe: [{atBreak: true, character: '-', after: '[:|-]'}],\n  handlers: {listItem: listItemWithTaskListItem}\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitCheck(token) {\n  const node = /** @type {ListItem} */ (this.stack[this.stack.length - 2])\n  // We’re always in a paragraph, in a list item.\n  node.checked = token.type === 'taskListCheckValueChecked'\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitParagraphWithTaskListItem(token) {\n  const parent = /** @type {Parents} */ (this.stack[this.stack.length - 2])\n\n  if (\n    parent &&\n    parent.type === 'listItem' &&\n    typeof parent.checked === 'boolean'\n  ) {\n    const node = /** @type {Paragraph} */ (this.stack[this.stack.length - 1])\n    const head = node.children[0]\n\n    if (head && head.type === 'text') {\n      const siblings = parent.children\n      let index = -1\n      /** @type {Paragraph | undefined} */\n      let firstParaghraph\n\n      while (++index < siblings.length) {\n        const sibling = siblings[index]\n        if (sibling.type === 'paragraph') {\n          firstParaghraph = sibling\n          break\n        }\n      }\n\n      if (firstParaghraph === node) {\n        // Must start with a space or a tab.\n        head.value = head.value.slice(1)\n\n        if (head.value.length === 0) {\n          node.children.shift()\n        } else if (\n          node.position &&\n          head.position &&\n          typeof head.position.start.offset === 'number'\n        ) {\n          head.position.start.column++\n          head.position.start.offset++\n          node.position.start = Object.assign({}, head.position.start)\n        }\n      }\n    }\n  }\n\n  this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {ListItem} node\n */\nfunction listItemWithTaskListItem(node, parent, context, safeOptions) {\n  const head = node.children[0]\n  const checkable =\n    typeof node.checked === 'boolean' && head && head.type === 'paragraph'\n  const checkbox = '[' + (node.checked ? 'x' : ' ') + '] '\n  const tracker = track(safeOptions)\n\n  if (checkable) {\n    tracker.move(checkbox)\n  }\n\n  let value = listItem(node, parent, context, {\n    ...safeOptions,\n    ...tracker.current()\n  })\n\n  if (checkable) {\n    value = value.replace(/^(?:[*+-]|\\d+\\.)([\\r\\n]| {1,3})/, check)\n  }\n\n  return value\n\n  /**\n   * @param {string} $0\n   * @returns {string}\n   */\n  function check($0) {\n    return $0 + checkbox\n  }\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('micromark-extension-gfm').Options & import('mdast-util-gfm').Options} Options\n */\n\nimport {gfm} from 'micromark-extension-gfm'\nimport {gfmFromMarkdown, gfmToMarkdown} from 'mdast-util-gfm'\n\n/**\n * Plugin to support GFM (autolink literals, footnotes, strikethrough, tables, tasklists).\n *\n * @type {import('unified').Plugin<[Options?]|void[], Root>}\n */\nexport default function remarkGfm(options = {}) {\n  const data = this.data()\n\n  add('micromarkExtensions', gfm(options))\n  add('fromMarkdownExtensions', gfmFromMarkdown())\n  add('toMarkdownExtensions', gfmToMarkdown(options))\n\n  /**\n   * @param {string} field\n   * @param {unknown} value\n   */\n  function add(field, value) {\n    const list = /** @type {unknown[]} */ (\n      // Other extensions\n      /* c8 ignore next 2 */\n      data[field] ? data[field] : (data[field] = [])\n    )\n\n    list.push(value)\n  }\n}\n","/**\n * @typedef {import('micromark-extension-gfm-footnote').HtmlOptions} HtmlOptions\n * @typedef {import('micromark-extension-gfm-strikethrough').Options} Options\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n */\n\nimport {\n  combineExtensions,\n  combineHtmlExtensions\n} from 'micromark-util-combine-extensions'\nimport {\n  gfmAutolinkLiteral,\n  gfmAutolinkLiteralHtml\n} from 'micromark-extension-gfm-autolink-literal'\nimport {gfmFootnote, gfmFootnoteHtml} from 'micromark-extension-gfm-footnote'\nimport {\n  gfmStrikethrough,\n  gfmStrikethroughHtml\n} from 'micromark-extension-gfm-strikethrough'\nimport {gfmTable, gfmTableHtml} from 'micromark-extension-gfm-table'\nimport {gfmTagfilterHtml} from 'micromark-extension-gfm-tagfilter'\nimport {\n  gfmTaskListItem,\n  gfmTaskListItemHtml\n} from 'micromark-extension-gfm-task-list-item'\n\n/**\n * Create an extension for `micromark` to enable GFM syntax.\n *\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n *\n *   Passed to `micromark-extens-gfm-strikethrough`.\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `extensions` to enable GFM\n *   syntax.\n */\nexport function gfm(options) {\n  return combineExtensions([\n    gfmAutolinkLiteral,\n    gfmFootnote(),\n    gfmStrikethrough(options),\n    gfmTable,\n    gfmTaskListItem\n  ])\n}\n\n/**\n * Create an extension for `micromark` to support GFM when serializing to HTML.\n *\n * @param {HtmlOptions | null | undefined} [options]\n *   Configuration.\n *\n *   Passed to `micromark-extens-gfm-footnote`.\n * @returns {HtmlExtension}\n *   Extension for `micromark` that can be passed in `htmlExtensions` to\n *   support GFM when serializing to HTML.\n */\nexport function gfmHtml(options) {\n  return combineHtmlExtensions([\n    gfmAutolinkLiteralHtml,\n    gfmFootnoteHtml(options),\n    gfmStrikethroughHtml,\n    gfmTableHtml,\n    gfmTagfilterHtml,\n    gfmTaskListItemHtml\n  ])\n}\n","/**\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n */\n\n/**\n * @typedef {import('mdast-util-gfm-table').Options} Options\n *   Configuration.\n */\n\nimport {\n  gfmAutolinkLiteralFromMarkdown,\n  gfmAutolinkLiteralToMarkdown\n} from 'mdast-util-gfm-autolink-literal'\nimport {\n  gfmFootnoteFromMarkdown,\n  gfmFootnoteToMarkdown\n} from 'mdast-util-gfm-footnote'\nimport {\n  gfmStrikethroughFromMarkdown,\n  gfmStrikethroughToMarkdown\n} from 'mdast-util-gfm-strikethrough'\nimport {gfmTableFromMarkdown, gfmTableToMarkdown} from 'mdast-util-gfm-table'\nimport {\n  gfmTaskListItemFromMarkdown,\n  gfmTaskListItemToMarkdown\n} from 'mdast-util-gfm-task-list-item'\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM (autolink\n * literals, footnotes, strikethrough, tables, tasklists).\n *\n * @returns {Array<FromMarkdownExtension>}\n *   Extension for `mdast-util-from-markdown` to enable GFM (autolink literals,\n *   footnotes, strikethrough, tables, tasklists).\n */\nexport function gfmFromMarkdown() {\n  return [\n    gfmAutolinkLiteralFromMarkdown,\n    gfmFootnoteFromMarkdown(),\n    gfmStrikethroughFromMarkdown,\n    gfmTableFromMarkdown,\n    gfmTaskListItemFromMarkdown\n  ]\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM (autolink\n * literals, footnotes, strikethrough, tables, tasklists).\n *\n * @param {Options | null | undefined} [options]\n *   Configuration.\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable GFM (autolink literals,\n *   footnotes, strikethrough, tables, tasklists).\n */\nexport function gfmToMarkdown(options) {\n  return {\n    extensions: [\n      gfmAutolinkLiteralToMarkdown,\n      gfmFootnoteToMarkdown(),\n      gfmStrikethroughToMarkdown,\n      gfmTableToMarkdown(options),\n      gfmTaskListItemToMarkdown\n    ]\n  }\n}\n","import React, { useEffect, useState } from 'react';\nimport { fetchMarkdown } from '../services/fetchMarkdown';\nimport ReactMarkdown from \"react-markdown\";\nimport remarkGfm from \"remark-gfm\";\n\nconst MarkdownViewer = ({ url }) => {\n    const [content, setContent] = useState('');\n    const [error, setError] = useState(null);\n    const [loading, setLoading] = useState(true);\n\n    useEffect(() => {\n        const getMarkdown = async () => {\n            try {\n                const data = await fetchMarkdown(url);\n                setContent(data);\n            } catch (err) {\n                setError(err.message);\n            } finally {\n                setLoading(false);\n            }\n        };\n\n        getMarkdown();\n    }, [url]);\n\n    if (loading) return <p>Loading...</p>;\n    if (error) return <p>Error: {error}</p>;\n\n    return (\n        <div>\n            <ReactMarkdown remarkPlugins={[remarkGfm]}>{content || \"\"}</ReactMarkdown>\n        </div>\n    );\n};\n\nexport default MarkdownViewer;","export const fetchMarkdown = async (url) => {\n    const response = await fetch(url);\n    if (!response.ok) {\n        throw new Error(`Failed to fetch Markdown: ${response.statusText}`);\n    }\n    return response.text(); // Markdown is plain text\n};","import Footer from \"../components/Footer\";\nimport MarkdownViewer from \"../components/MarkdownViewer\";\n\nconst Terms = () => {\n    // need to get public link to the repo or for private links need to get Personal Access Token (https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)\n    const termsMarkdown = `https://raw.githubusercontent.com/HubbleNetwork/legal-pages/refs/heads/master/terms-of-service.md?cache-bust=${new Date().getTime()}`;\n\n    return (\n        <>\n            <section id=\"TERMS\" className=\"terms\">\n                <div className=\"terms__container\">\n                    <MarkdownViewer url={termsMarkdown}/>\n                </div>\n            </section>\n            <Footer/>\n        </>\n    );\n};\nexport default Terms;\n","import Footer from \"../components/Footer\";\nimport MarkdownViewer from \"../components/MarkdownViewer\";\n\n\nconst Privacy = () => {\n    // need to get public link to the repo or for private links need to get Personal Access Token (https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)\n    const privacyMarkdown = `https://raw.githubusercontent.com/HubbleNetwork/legal-pages/refs/heads/master/privacy-policy.md?cache-bust=${new Date().getTime()}`;\n    return (<>\n            <section id=\"TERMS\" className=\"terms\">\n                <div className=\"terms__container\">\n                    <MarkdownViewer url={privacyMarkdown}/>\n                </div>\n            </section>\n            <Footer/>\n        </>\n    );\n};\nexport default Privacy;\n","import Footer from \"../components/Footer\";\n\nconst AppSupport = () => {\n    return (<>\n            <section id=\"appSupport\" className=\"support\">\n                <div className=\"support_container\">\n                    <h1 dir=\"ltr\">\n                        <center>Hubble Network Demo App Support</center>\n                    </h1>\n                    <h2 dir=\"ltr\">\n                        Welcome to the Hubble Network Demo Support Page!\n                    </h2>\n                    <p dir=\"ltr\">\n                        The Hubble Demo App allows users to test the capabilities of Hubble Network's groundbreaking\n                        off-the-shelf bluetooth device direct-to-satellite satellite technology. With this app, users\n                        can\n                        seamlessly connect demo devices, and monitor transmissions.\n                        Whether you're evaluating Hubble's network for asset tracking, remote sensing, or other IoT use\n                        cases,\n                        this app helps ensure a smooth, efficient technology validation demonstration before\n                        transitioning to\n                        full-scale deployment.\n                    </p>\n                    <center className=\"support_link\">\n                        <h2> For support inquiries, please contact us at:</h2>\n                        <p>\n                            <a href=\"mailto:support@hubblenetwork.com\">support@hubblenetwork.com</a>\n                        </p>\n                    </center>\n\n                    <h2>Frequently asked questions:</h2>\n                    <ul>\n                        <li dir=\"ltr\">\n                            <h3>How do I create an account?</h3>\n                            <p dir=\"ltr\">You can create an account by opening the app and tapping on \"Sign Up\". We will\n                                send a verification link to the email address you provided. Open the link to verify your\n                                account. Once verified, you can sign in using this email address as your username.</p>\n                        </li>\n\n                        <li dir=\"ltr\">\n                            <h3>Why do you request Bluetooth and location permissions?</h3>\n                            <p dir=\"ltr\">We use Bluetooth to locate and communicate with our device.\n                                To send data to the satellite, you need to select a transmission time based on the\n                                available\n                                windows\n                                we provide, which are determined by your location.\n                                These \"windows\" are time frames when satellites are in range and ready to receive\n                                data.</p>\n                        </li>\n\n                        <li dir=\"ltr\">\n                            <h3>Why don't I see my device on the scan page?</h3>\n                            <p>Here are a few things you can check:</p>\n                                <ol>\n                                    <li>Ensure the device is nearby, turned on, and has a charged battery.</li>\n                                    <li>Tap \"Scan\" to start scanning for devices.</li>\n                                    <li>Toggle Bluetooth on and off, and check the app's Bluetooth permissions in your\n                                        phone's settings.\n                                    </li>\n                                    <li>Restart your phone and try scanning again.</li>\n                                    <li>If none of these steps work, contact our support team for assistance.</li>\n                                </ol>\n                        </li>\n\n                        <li dir=\"ltr\">\n                            <h3>Why are there no windows available?</h3>\n                            <p dir=\"ltr\">This might occur if there are no high-quality satellite flybys in your location\n                                suitable for data transmission. If this persists, please reach out to our team for\n                                assistance.\n                            </p>\n                        </li>\n\n                        <li dir=\"ltr\">\n                            <h3>The app isn’t working as expected. What should I do?</h3>\n                            <p dir=\"ltr\">Ensure that you have the latest version of the app installed. Restart the app\n                                and try again.\n                                If the issue continues, feel free to contact our support team for further help.\n                            </p>\n                        </li>\n\n                    </ul>\n                    <div className=\"goodbye\">\n                        <center>\n                            <h4>Thank you for reaching out!</h4>\n                            <p>Feel free to contact with us on our support email. Policy of privacy and terms of service\n                                are available for you below.</p>\n                        </center>\n                    </div>\n                </div>\n            </section>\n            <Footer/>\n        </>\n    )\n        ;\n};\nexport default AppSupport;\n","import Footer from \"../components/Footer\";\nimport MarkdownViewer from \"../components/MarkdownViewer\";\n\nconst Subprocessors = () => {\n    // need to get public link to the repo or for private links need to get Personal Access Token (https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)\n    const termsMarkdown = `https://raw.githubusercontent.com/HubbleNetwork/legal-pages/refs/heads/master/subprocessors-list.md?cache-bust=${new Date().getTime()}`;\n\n    return (\n        <>\n            <section id=\"TERMS\" className=\"terms\">\n                <div className=\"terms__container\">\n                    <MarkdownViewer url={termsMarkdown}/>\n                </div>\n            </section>\n            <Footer/>\n        </>\n    );\n};\nexport default Subprocessors;\n","import Footer from \"../components/Footer\";\nimport MarkdownViewer from \"../components/MarkdownViewer\";\n\n\nconst AppPrivacy = () => {\n    // need to get public link to the repo or for private links need to get Personal Access Token (https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)\n    const privacyMarkdown = `https://raw.githubusercontent.com/HubbleNetwork/legal-pages/refs/heads/master/app-privacy-policy.md?cache-bust=${new Date().getTime()}`; // Replace with your actual URL\n\n    return (<>\n            <section id=\"TERMS\" className=\"terms\">\n                <div className=\"terms__container\">\n                    <MarkdownViewer url={privacyMarkdown}/>\n                </div>\n            </section>\n            <Footer/>\n        </>\n    );\n};\nexport default AppPrivacy;\n","import Footer from \"../components/Footer\";\nimport React, {useEffect} from 'react';\n\nconst JobBoard = () => {\n    useEffect(() => {\n        const existingScript = document.querySelector(\n            'script[src=\"https://boards.greenhouse.io/embed/job_board/js?for=hubblenetwork\"]'\n        );\n        if (existingScript) {\n            existingScript.remove();\n        }\n\n        const script = document.createElement('script');\n        script.src = 'https://boards.greenhouse.io/embed/job_board/js?for=hubblenetwork';\n        script.async = true;\n        document.body.appendChild(script);\n\n        return () => {\n            document.body.removeChild(script);\n        };\n    }, []);\n\n\n    return (\n        <>\n            <div className=\"nav-shadow-gradient\"></div>\n            <section className=\"careers\">\n                <div className=\"careers_container\">\n                    <div id=\"grnhse_app\" >Loading jobs...</div>\n                </div>\n                <Footer/>\n            </section>\n        </>\n    );\n};\nexport default JobBoard;\n","import \"./App.scss\";\nimport {Routes, Route, HashRouter} from \"react-router-dom\";\n\nimport { gsap } from \"gsap\";\nimport { ScrollToPlugin } from \"gsap/ScrollToPlugin\";\nimport { ScrollTrigger } from \"gsap/ScrollTrigger\";\n\n//pages\nimport Home from \"./pages/Home\";\nimport Navigation from \"./components/Navigation\";\nimport Terms from \"./pages/Terms\";\nimport Privacy from \"./pages/Privacy\";\nimport AppSupport from \"./pages/AppSupport\";\nimport Subprocessors from \"./pages/Subprocessors\";\nimport AppPrivacy from \"./pages/AppPrivacy\";\nimport JobBoard from \"./pages/JobBoard\";\n\nfunction App() {\n  gsap.registerPlugin(ScrollToPlugin);\n  gsap.registerPlugin(ScrollTrigger);\n\n  return (\n    <div className=\"App\">\n      <HashRouter>\n        <Navigation />\n        <Routes>\n          <Route path=\"/\" element={<Home />} />\n          <Route path=\"/terms\" element={<Terms />} />\n          <Route path=\"/privacy-policy\" element={<Privacy />} />\n          <Route path=\"/careers\" element={<JobBoard />} />\n          <Route path=\"/app-privacy-policy\" element={<AppPrivacy/>} />\n          <Route path=\"/demo-app-support\" element={<AppSupport />} />\n          <Route path=\"/subprocessors\" element={<Subprocessors />} />\n        </Routes>\n      </HashRouter>\n    </div>\n  );\n}\n\nexport default App;\n","const reportWebVitals = onPerfEntry => {\n  if (onPerfEntry && onPerfEntry instanceof Function) {\n    import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n      getCLS(onPerfEntry);\n      getFID(onPerfEntry);\n      getFCP(onPerfEntry);\n      getLCP(onPerfEntry);\n      getTTFB(onPerfEntry);\n    });\n  }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.scss';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\nReactDOM.render(\n    <React.StrictMode>\n        <App/>\n    </React.StrictMode>,\n    document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"names":["g","Object","defineProperty","j","getOwnPropertyDescriptor","L","getOwnPropertyNames","V","prototype","hasOwnProperty","h","e","r","t","Promise","o","s","i","a","l","next","m","c","throw","done","value","resolve","then","apply","W","Y","get","enumerable","SubmissionError","p","appendExtraData","E","createClient","F","getDefaultClient","U","isSubmissionError","A","module","exports","K","call","$","u","J","G","navigator","webdriver","document","documentElement","getAttribute","String","replace","test","TypeError","slice","length","indexOf","charAt","fromCharCode","O","window","callPhantom","_phantom","y","constructor","this","loadedAt","Date","now","data","S","kind","b","paymentIntentClientSecret","resubmitKey","formErrors","fieldErrors","Map","_len","arguments","Array","_key","field","push","code","z","message","Q","set","getFormErrors","getFieldErrors","getAllFieldErrors","from","B","BLOCKED","EMPTY","FILES_TOO_BIG","FORM_NOT_FOUND","INACTIVE","NO_FILE_UPLOADS","PROJECT_NOT_FOUND","TOO_MANY_FILES","Z","REQUIRED_FIELD_EMPTY","REQUIRED_FIELD_MISSING","STRIPE_CLIENT_ERROR","STRIPE_SCA_ERROR","TYPE_EMAIL","TYPE_NUMERIC","TYPE_TEXT","v","charCodeAt","substring","I","JSON","stringify","N","concat","FormData","append","R","undefined","project","stripe","session","submitForm","endpoint","Accept","clientName","f","n","fetch","method","mode","body","headers","json","M","isArray","errors","every","error","P","_","w","d","Error","createPaymentMethod","paymentMethod","id","handleCardAction","delete","paymentIntent","x","k","T","C","React","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","_objectSpread2","target","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","_typeof","obj","Symbol","iterator","configurable","writable","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_i","_s","_e","_arr","_n","_d","err","minLen","_arrayLikeToArray","toString","name","len","arr2","createCommonjsModule","fn","ReactPropTypesSecret_1","emptyFunction","emptyFunctionWithReset","resetWarningCache","factoryWithThrowingShims","shim","props","propName","componentName","location","propFullName","secret","getShim","isRequired","ReactPropTypes","array","bool","func","number","string","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","propTypes","usePrevious","ref","useRef","useEffect","current","isUnknownObject","raw","isPromise","isStripe","elements","createToken","confirmCardPayment","PLAIN_OBJECT_STR","isEqual","left","right","leftArray","leftPlainObject","leftKeys","rightKeys","keySet","allKeys","pred","extractAllowedOptionsUpdates","options","prevOptions","immutableKeys","reduce","newOptions","isUpdated","includes","console","warn","INVALID_STRIPE_ERROR","validateStripe","maybeStripe","parseStripeProp","tag","stripePromise","ElementsContext","createContext","displayName","parseElementsContext","ctx","useCase","CartElementContext","parseCartElementContext","Elements","_ref","rawStripeProp","children","parsed","useMemo","_React$useState2","useState","cart","setCart","_React$useState4","cartState","setCartState","_React$useState6","setContext","isMounted","safeSetContext","prevStripe","updates","update","anyStripe","_registerWrapper","registerAppInfo","version","url","createElement","Provider","useElementsContextWithUseCase","useCaseMessage","useContext","useCartElementContextWithUseCase","useElements","useStripe","useCartElement","useCartElementState","ElementsConsumer","_ref2","useAttachEvent","event","cb","cbDefined","cbRef","decoratedCb","on","off","capitalized","str","toUpperCase","createElementComponent","type","isServer","Element","className","readyCallback","_ref$options","onBlur","onFocus","onReady","onChange","onEscape","onClick","onLoadError","onLoaderStart","onNetworksChange","onCheckout","onLineItemClick","onConfirm","onCancel","onShippingAddressChange","onShippingRateChange","setElement","elementRef","domNode","_useCartElementContex","useLayoutEffect","newElement","create","mount","destroy","__elementType","AuBankAccountElement","CardElement","CardNumberElement","CardExpiryElement","CardCvcElement","FpxBankElement","IbanElement","IdealBankElement","P24BankElement","EpsBankElement","PaymentElement","PayButtonElement","PaymentRequestButtonElement","LinkAuthenticationElement","AddressElement","ShippingAddressElement","CartElement","PaymentMethodMessagingElement","AffirmMessageElement","AfterpayClearpayMessageElement","factory","require","loadParams","V3_URL","V3_URL_REGEX","EXISTING_SCRIPT_MESSAGE","loadScript","params","reject","Stripe","script","scripts","querySelectorAll","src","findScript","queryString","advancedFraudSignals","headOrBody","head","appendChild","injectScript","addEventListener","validateLoadParams","errorMessage","loadStripeCalled","loadStripe","args","startTime","registerWrapper","initStripe","setLoadParameters","validatedParams","previousValue","currentValue","_loadParams","hasOwn","toStr","gOPD","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","setProperty","newValue","getProperty","extend","copy","copyIsArray","clone","deep","_defineProperties","descriptor","_createClass","Constructor","protoProps","staticProps","gsap","_coreInitted","_win","_doc","_docEl","_body","_isTouch","_pointerType","ScrollTrigger","_root","_normalizer","_eventTypes","_context","_getGSAP","registerPlugin","_startup","_observers","_scrollers","_proxies","_getTime","_bridge","_integrate","core","bridge","scrollers","proxies","_getProxyProp","property","_isViewport","el","_addListener","passive","capture","_removeListener","removeEventListener","_scrollLeft","_scrollTop","_onScroll","isPressed","cache","_scrollCacheFunc","doNotCache","cachingFunc","history","scrollRestoration","isNormalizing","Math","round","iOS","cacheID","offset","_horizontal","p2","os","os2","d2","sc","scrollTo","_vertical","pageXOffset","op","pageYOffset","_getTarget","self","_ctx","selector","utils","toArray","config","nullTargetWarn","_getScrollFunc","scrollingElement","prev","smooth","_getVelocityProp","minTimeRefresh","useDelta","v1","v2","t1","t2","min","dropToZeroTime","max","force","getVelocity","latestValue","tOld","vOld","reset","_getEvent","preventDefault","_gsapAllow","changedTouches","_getAbsoluteMax","abs","_setScrollTrigger","globals","_initCore","clamp","context","Observer","isTouch","matchMedia","matches","maxTouchPoints","msMaxTouchPoints","eventTypes","split","setTimeout","vars","init","tolerance","dragMinimum","lineHeight","debounce","onStop","onStopDelay","ignore","wheelSpeed","onDragStart","onDragEnd","onDrag","onPress","onRelease","onRight","onLeft","onUp","onDown","onChangeX","onChangeY","onToggleX","onToggleY","onHover","onHoverEnd","onMove","ignoreCheck","isNormalizer","onGestureStart","onGestureEnd","onWheel","onEnable","onDisable","scrollSpeed","allowClicks","lockAxis","onLockAxis","parseFloat","getComputedStyle","onStopDelayedCall","dragged","moved","wheeled","locked","axis","prevDeltaX","prevDeltaY","scrollFuncX","scrollFuncY","scrollX","scrollY","limitToTouch","isViewport","ownerDoc","ownerDocument","deltaX","deltaY","onClickTime","clickCapture","_ignoreCheck","isPointerOrTouch","pointerType","onStopFunc","_vx","_vy","pause","dx","dy","changedX","changedY","onDelta","index","requestAnimationFrame","onTouchOrPointerDelta","_onDrag","clientX","clientY","isDragging","startX","startY","_onPress","button","_onRelease","isTrackingDrag","isNaN","wasDragging","isDragNotClick","eventData","delayedCall","defaultPrevented","click","createEvent","syntheticEvent","initMouseEvent","screenX","screenY","dispatchEvent","isGesturing","restart","_onGestureStart","touches","_onGestureEnd","onScroll","_onWheel","multiplier","deltaMode","innerHeight","_onMove","_onHover","_onHoverEnd","_onClick","_dc","enable","isEnabled","disable","kill","revert","splice","register","getAll","getById","gsap$1","_coreInitted$1","_win$1","_doc$1","_docEl$1","_body$1","_root$1","_resizeDelay","_toArray","_clamp$1","_time2","_syncInterval","_refreshing","_pointerIsDown","_transformProp","_prevWidth","_prevHeight","_autoRefresh","_sort","_suppressOverwrites","_ignoreResize","_normalizer$1","_ignoreMobileResize","_baseScreenHeight","_baseScreenWidth","_fixIOSBug","_context$1","_scrollRestoration","_div100vh","_100vh","_isReverted","_clampingMax","_limitCallbacks","_rafID","_refreshingAll","_queueRefreshID","_primary","_startup$1","_getTime$1","_time1","_lastScrollTime","_enabled","_parseClamp","_isString","substr","_keepClamp","_rafBugFix","_pointerDownHandler","_pointerUpHandler","_passThrough","_round","_windowExists","_getGSAP$1","_isViewport$1","_getViewportDimension","dimensionProperty","_getBoundsFunc","_winOffsets","width","innerWidth","height","_getBounds","_getSizeFunc","scroller","_getOffsetsFunc","_maxScroll","_iterateAutoRefresh","events","_isFunction","_isNumber","_isObject","_endAnimation","animation","reversed","progress","_callback","enabled","result","add","totalTime","callbackAnimation","_abs","_left","_top","_right","_bottom","_width","_height","_Right","_Left","_Top","_Bottom","_padding","_margin","_Width","_Height","_px","_getComputedStyle","_makePositionable","position","style","_setDefaults","defaults","withoutTransforms","tween","to","xPercent","yPercent","rotation","rotationX","rotationY","scale","skewX","skewY","bounds","getBoundingClientRect","_getSize","_ref3","_getLabelRatioArray","timeline","labels","duration","_getClosestLabel","snap","_snapDirectional","snapIncrementOrArray","sort","direction","threshold","snapped","_getLabelAtDirection","st","_multiListener","types","callback","_addListener$1","nonPassive","_removeListener$1","_wheelListener","scrollFunc","wheelHandler","_markerDefaults","startColor","endColor","indent","fontSize","fontWeight","_defaults","toggleActions","anticipatePin","_keywords","top","center","bottom","_offsetToPx","size","eqIndex","relative","_createMarker","container","_ref4","matchWidthEl","containerAnimation","useFixedPosition","isScroller","parent","isStart","color","css","offsetWidth","_isStart","setAttribute","cssText","innerText","insertBefore","_offset","_positionMarker","marker","start","flipped","display","side","oppositeSide","_isFlipped","_triggers","_ids","_sync","_updateAll","_onScroll$1","clientWidth","_dispatch","_setBaseDimensions","_onResize","fullscreenElement","webkitFullscreenElement","_listeners","_emptyArray","_softRefresh","ScrollTrigger$1","_refreshAll","map","_savedStyles","_revertRecorded","media","query","getBBox","uncache","_revertAll","trigger","_clearScrollMemory","rec","_refreshID","_queueRefreshAll","_refresh100vh","offsetHeight","removeChild","_hideAllMarkers","hide","skipRevert","isRefreshing","refreshInits","scrollBehavior","refresh","_subPinOffset","pin","prop","horizontal","original","adjustPinSpacing","_dir","endClamp","end","_endClamp","startClamp","_startClamp","setPositions","render","onRefresh","_lastScroll","_direction","isUpdating","time","recordVelocity","scroll","_propNamesToCopy","_stateProps","_swapPinOut","spacer","state","_setState","_gsap","spacerIsNative","spacerState","swappedIn","parentNode","_swapPinIn","cs","spacerStyle","pinStyle","flexBasis","overflow","boxSizing","_capsExp","getCache","removeProperty","toLowerCase","_getState","_copyState","override","omitOffsets","_parsePosition","scrollerSize","markerScroller","scrollerBounds","borderWidth","scrollerMax","clampZeroProp","p1","seek","mapRange","scrollTrigger","localOffset","globalOffset","offsets","_caScrollDist","_prefixExp","_reparent","_stOrig","_interruptionTracker","getValueFunc","initialValue","onInterrupt","last1","last2","_shiftMarker","_getTweenCreator","getScroll","getTween","change1","change2","onComplete","modifiers","checkForInterruption","inherit","ratio","onUpdate","tweenTo","pinCache","snapFunc","scroll1","scroll2","markerStart","markerEnd","markerStartTrigger","markerEndTrigger","markerVars","executingOnRefresh","change","pinOriginalState","pinActiveState","pinState","pinGetter","pinSetter","pinStart","pinChange","spacingStart","markerStartSetter","pinMoves","markerEndSetter","snap1","snap2","scrubTween","scrubSmooth","snapDurClamp","snapDelayedCall","prevScroll","prevAnimProgress","caMarkerSetter","customRevertReturn","_vars","nodeType","toggleClass","onToggle","scrub","pinSpacing","invalidateOnRefresh","onScrubComplete","onSnapComplete","once","pinReparent","pinSpacer","fastScrollEnd","preventOverlaps","isToggle","scrollerCache","pinType","callbacks","onEnter","onLeave","onEnterBack","onLeaveBack","markers","onRefreshInit","getScrollerSize","getScrollerOffsets","lastSnap","lastRefresh","prevProgress","bind","refreshPriority","tweenScroll","scrubDuration","ease","totalProgress","paused","lazy","_initted","isReverted","immediateRender","snapTo","directional","delay","refreshedRecently","isActive","endValue","endScroll","velocity","naturalEnd","inertia","_snap","onStart","_onInterrupt","_onComplete","resetTo","_tTime","_tDur","stRevert","targets","nativeElement","classList","force3D","quickSetter","content","oldOnUpdate","oldParams","onUpdateParams","eventCallback","previous","temp","prevRefreshing","soft","pinOffset","invalidate","isVertical","curTrigger","curPin","oppositeScroll","initted","revertedPins","forcedOverflow","markerStartOffset","markerEndOffset","isFirstRefresh","otherPinOffset","parsedEnd","parsedEndTrigger","endTrigger","parsedStart","pinnedContainer","triggerIndex","unshift","_pinPush","normalize","_pinOffset","ceil","endAnimation","labelToScroll","label","getTrailing","reverse","forceFake","toggleState","action","stateChanged","toggled","isAtMax","isTakingAction","clipped","_dp","_time","_start","newStart","newEnd","keepClamp","_change","amount","allowAnimation","onKill","updateFunc","clearInterval","suppressOverwrites","userAgent","mm","bodyStyle","border","borderTopStyle","AnimationProto","Animation","setInterval","checkPrefix","hidden","limitCallbacks","ms","syncInterval","ignoreMobileResize","autoRefreshEvents","scrollerProxy","clearMatchMedia","isInViewport","positionInViewport","referencePoint","killAll","allowListeners","listeners","saveStyles","safe","clearScrollMemory","maxScroll","getScrollFunc","isScrolling","snapDirectional","batch","varsCopy","interval","batchMax","proxyCallback","triggers","_inputIsFocused","_clampScrollAndGetDurationMultiplier","_allowNativePanning","touchAction","_overflow","auto","_nestedScroll","_ref5","_isScrollT","scrollHeight","clientHeight","scrollWidth","overflowY","overflowX","_isScroll","stopPropagation","_inputObserver","inputs","nested","_captureInputs","_inputExp","isInput","tagName","_getScrollNormalizer","maxY","lastRefreshID","skipTouchMove","startScrollX","startScrollY","_vars2","normalizeScrollX","momentum","allowNestedScroll","smoother","ScrollSmoother","smootherInstance","initialScale","visualViewport","outerWidth","wheelRefresh","resolveMomentumDuration","inputObserver","resumeTouchMove","scrollClampX","scrollClampY","updateClamps","removeContentOffset","transform","ignoreDrag","onResize","prevScale","currentScroll","dur","velocityX","velocityY","play","_ts","xArray","yArray","yClamped","ticker","observe","normalizeScroll","normalizer","ss","default","COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","EMPTY_STRING","trim","lineno","column","updatePosition","lines","match","lastIndexOf","line","Position","whitespace","errorsList","msg","reason","filename","silent","re","exec","comments","rules","comment","pos","declaration","val","ret","decl","decls","declarations","isBuffer","propIsEnumerable","propertyIsEnumerable","assign","test1","test2","join","test3","letter","shouldUseNative","toObject","ReactPropTypesSecret","bigint","aa","encodeURIComponent","ba","Set","ca","da","ea","fa","ha","ia","ja","ka","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","D","oa","pa","qa","ma","na","la","removeAttribute","setAttributeNS","xlinkHref","ra","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","sa","ta","ua","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","for","Ma","Ka","La","Na","stack","Oa","Pa","prepareStackTrace","Reflect","construct","Qa","_render","Ra","$$typeof","_payload","_init","Sa","Ta","nodeName","Va","_valueTracker","getValue","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","controlled","$a","ab","bb","eb","Children","db","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","hb","ib","jb","textContent","kb","html","mathml","svg","lb","mb","nb","ob","namespaceURI","innerHTML","valueOf","firstChild","MSApp","execUnsafeLocalFunction","pb","lastChild","nodeValue","qb","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","rb","sb","tb","ub","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","track","wbr","vb","wb","is","xb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","Rb","onError","Sb","Tb","Ub","Vb","Wb","Xb","Zb","alternate","return","flags","$b","memoizedState","dehydrated","ac","cc","child","sibling","bc","dc","ec","fc","gc","hc","ic","jc","kc","lc","mc","nc","oc","pc","qc","rc","blockedOn","domEventName","eventSystemFlags","nativeEvent","targetContainers","pointerId","tc","vc","wc","lanePriority","unstable_runWithPriority","priority","hydrate","containerInfo","xc","yc","shift","zc","Ac","Bc","unstable_scheduleCallback","unstable_NormalPriority","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","transition","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","unstable_now","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","clz32","bd","cd","log","LN2","dd","unstable_UserBlockingPriority","ed","fd","gd","hd","uc","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","returnValue","isPropagationStopped","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","td","ud","view","detail","vd","Ad","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","repeat","locale","which","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","isPrimary","Vd","targetTouches","Xd","Yd","wheelDeltaX","wheelDeltaY","wheelDelta","deltaZ","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","date","datetime","email","month","password","range","search","tel","text","week","me","ne","oe","pe","qe","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","Le","nextSibling","Me","contains","compareDocumentPosition","Ne","HTMLIFrameElement","contentWindow","href","Oe","contentEditable","Pe","Qe","Re","Se","Te","Ue","selectionStart","selectionEnd","anchorNode","defaultView","getSelection","anchorOffset","focusNode","focusOffset","Ve","We","Xe","Ye","Ze","Yb","instance","listener","$e","has","af","bf","random","cf","df","Nb","q","ef","ff","parentWindow","gf","hf","je","char","ke","jf","kf","lf","mf","autoFocus","nf","__html","of","pf","clearTimeout","qf","rf","sf","previousSibling","tf","vf","wf","xf","yf","zf","Af","Bf","H","Cf","Df","Ef","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","childContextTypes","Gf","Hf","If","getChildContext","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","unstable_cancelCallback","Qf","unstable_shouldYield","Rf","unstable_requestPaint","Sf","Tf","unstable_getCurrentPriorityLevel","Uf","unstable_ImmediatePriority","Vf","Wf","Xf","unstable_LowPriority","Yf","unstable_IdlePriority","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","ReactCurrentBatchConfig","lg","defaultProps","mg","ng","og","pg","qg","rg","_currentValue","sg","childLanes","tg","dependencies","firstContext","lanes","ug","vg","observedBits","responders","wg","xg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","yg","zg","eventTime","lane","payload","Ag","Bg","Cg","Dg","Eg","Fg","Component","refs","Gg","Kg","_reactInternals","enqueueSetState","Hg","Ig","Jg","enqueueReplaceState","enqueueForceUpdate","Lg","shouldComponentUpdate","isPureReactComponent","Mg","contextType","updater","Ng","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Og","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Pg","Qg","_owner","_stringRef","Rg","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","Vg","implementation","Wg","Xg","Yg","Zg","$g","ah","bh","ch","dh","eh","fh","gh","hh","ih","memoizedProps","revealOrder","jh","kh","lh","mh","nh","oh","pendingProps","ph","qh","rh","sh","th","uh","_workInProgressVersionPrimary","vh","ReactCurrentDispatcher","wh","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","baseQueue","queue","Ih","Jh","Kh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","dispatch","Lh","Mh","_getVersion","_source","mutableReadLanes","Nh","getSnapshot","subscribe","setSnapshot","Oh","Ph","Qh","Rh","deps","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","readContext","useCallback","useImperativeHandle","useReducer","useDebugValue","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","uf","ei","ReactCurrentOwner","fi","gi","hi","ii","ji","compare","ki","li","mi","baseLanes","ni","oi","pi","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","qi","getDerivedStateFromError","ri","pendingContext","Bi","Ci","Di","Ei","si","retryLane","ti","fallback","unstable_avoidThisFallback","ui","unstable_expectedLoadTime","vi","wi","xi","yi","zi","isBackwards","rendering","renderingStartTime","last","tail","tailMode","Ai","Fi","Gi","wasMultiple","multiple","onclick","createElementNS","createTextNode","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","WeakMap","Pi","Qi","Ri","Si","componentDidCatch","Ti","componentStack","Ui","WeakSet","Vi","Wi","Xi","__reactInternalSnapshotBeforeUpdate","Yi","Zi","$i","focus","aj","bj","onCommitFiberUnmount","componentWillUnmount","cj","dj","ej","fj","gj","hj","_reactRootContainer","ij","jj","kj","lj","mj","nj","oj","pj","X","qj","rj","sj","tj","uj","vj","Infinity","wj","ck","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Tc","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","timeoutHandle","Wj","Xj","pingCache","Yj","Zj","va","ak","bk","dk","rangeCount","focusedElem","selectionRange","ek","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","scrollTop","onCommitFiberRoot","fk","gk","ik","isReactComponent","pendingChildren","jk","mutableSourceEagerHydrationData","lk","mk","nk","ok","qk","hydrationOptions","mutableSources","_internalRoot","rk","tk","hasAttribute","sk","uk","kk","hk","_calculateChangedBits","unstable_observedBits","unmount","form","Vj","vk","Events","wk","findFiberByHostInstance","bundleType","rendererPackageName","xk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","__REACT_DEVTOOLS_GLOBAL_HOOK__","yk","isDisabled","supportsFiber","inject","createPortal","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","checkDCE","isForwardRef","isFragment","ContextConsumer","ContextProvider","ForwardRef","Fragment","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","SuspenseList","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isSuspenseList","isValidElementType","getModuleId","typeOf","__self","__source","jsx","jsxs","setState","forceUpdate","escape","_status","_result","IsSomeRendererActing","count","only","PureComponent","cloneElement","_currentValue2","_threadCount","Consumer","createFactory","createRef","forwardRef","isValidElement","memo","performance","MessageChannel","unstable_forceFrameRate","cancelAnimationFrame","floor","port2","port1","onmessage","postMessage","pop","sortIndex","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","objA","objB","compareContext","keysA","keysB","bHasOwnProperty","idx","valueA","valueB","parse","StyleToObject","output","hasIterator","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","__esModule","leafPrototypes","getProto","getPrototypeOf","ns","def","definition","chunkId","all","promises","miniCssF","inProgress","dataWebpackPrefix","needAttach","getElementsByTagName","charset","timeout","onScriptComplete","onerror","onload","doneFns","toStringTag","installedChunks","installedChunkData","promise","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","Action","PopStateEventType","invariant","warning","cond","getHistoryState","usr","createLocation","pathname","hash","parsePath","path","parsedPath","hashIndex","searchIndex","getUrlBasedHistory","getLocation","createHref","validateLocation","v5Compat","globalHistory","Pop","getIndex","handlePop","nextIndex","delta","createURL","origin","createPath","URL","replaceState","listen","encodeLocation","Push","historyState","pushState","DOMException","Replace","go","ResultType","matchRoutes","routes","locationArg","basename","stripBasename","branches","flattenRoutes","score","siblings","compareIndexes","routesMeta","childrenIndex","rankRouteBranches","decoded","decodePath","matchRouteBranch","parentsMeta","parentPath","flattenRoute","route","relativePath","caseSensitive","startsWith","joinPaths","computeScore","_route$path","exploded","explodeOptionalSegments","segments","first","rest","isOptional","endsWith","required","restExploded","subpath","paramRe","dynamicSegmentValue","indexRouteValue","emptySegmentValue","staticSegmentValue","splatPenalty","isSplat","initialScore","segment","branch","matchedParams","matchedPathname","remainingPathname","matchPath","pathnameBase","normalizePathname","pattern","matcher","compiledParams","regexpSource","paramName","RegExp","compilePath","captureGroups","splatValue","decodeURIComponent","startIndex","nextChar","getInvalidPathError","dest","getPathContributingMatches","getResolveToMatches","v7_relativeSplatPath","pathMatches","resolveTo","toArg","routePathnames","locationPathname","isPathRelative","isEmptyPath","toPathname","routePathnameIndex","toSegments","fromPathname","resolvePathname","normalizeSearch","normalizeHash","resolvePath","hasExplicitTrailingSlash","hasCurrentTrailingSlash","paths","isRouteErrorResponse","status","statusText","internal","validMutationMethodsArr","validRequestMethodsArr","DataRouterContext","DataRouterStateContext","NavigationContext","LocationContext","RouteContext","outlet","isDataRoute","RouteErrorContext","useInRouterContext","useLocation","useIsomorphicLayoutEffect","static","useNavigate","router","useDataRouterContext","DataRouterHook","UseNavigateStable","useCurrentRouteId","DataRouterStateHook","activeRef","navigate","fromRouteId","useNavigateStable","dataRouterContext","future","routePathnamesJson","useNavigateUnstable","useResolvedPath","useRoutesImpl","dataRouterState","parentMatches","routeMatch","parentParams","parentPathnameBase","locationFromContext","parsedLocationArg","_parsedLocationArg$pa","parentSegments","renderedMatches","_renderMatches","navigationType","NavigationType","DefaultErrorComponent","useDataRouterState","UseRouteError","routeId","_state$errors","useRouteError","lightgrey","preStyles","padding","backgroundColor","fontStyle","defaultErrorElement","RenderErrorBoundary","super","revalidation","errorInfo","routeContext","component","RenderedRoute","staticContext","errorElement","ErrorBoundary","_deepestRenderedBoundaryId","_dataRouterState","_dataRouterState2","errorIndex","findIndex","renderFallback","fallbackIndex","v7_partialHydration","HydrateFallback","hydrateFallbackElement","loaderData","needsToRunLoader","loader","reduceRight","shouldRenderHydrateFallback","alreadyWarned","getChildren","hookName","useRouteContext","thisRoute","Route","_props","Router","basenameProp","locationProp","staticProp","navigationContext","locationContext","trailingPathname","Routes","createRoutesFromChildren","treePath","hasErrorBoundary","shouldRevalidate","handle","__reactRouterVersion","startTransitionImpl","ReactDOM","HashRouter","historyRef","querySelector","setStateImpl","v7_startTransition","newState","isBrowser","ABSOLUTE_URL_REGEX","Link","absoluteHref","reloadDocument","preventScrollReset","unstable_viewTransition","isExternal","currentUrl","targetUrl","protocol","joinedPathname","useHref","internalOnClick","replaceProp","isModifiedEvent","shouldProcessLinkClick","useLinkClickHandler","_assertThisInitialized","ReferenceError","_inheritsLoose","subClass","superClass","__proto__","_reverting","_globalTimeline","_coreReady","_lastRenderedFrame","_quickTween","_tickerActive","_config","autoSleep","units","overwrite","_bigNum","_tinyNum","_2PI","PI","_HALF_PI","_gsID","_sqrt","sqrt","_cos","cos","_sin","sin","_isUndefined","_isNotFalse","_isFuncOrString","_isTypedArray","ArrayBuffer","isView","_isArray","_strictNumExp","_numExp","_numWithUnitExp","_complexStringNumExp","_relExp","_delimitedValueExp","_unitExp","_globals","_installScope","_install","scope","_merge","_missingPlugin","_warn","suppress","_addGlobal","_emptyFunc","_startAtRevertConfig","suppressEvents","_revertConfigNoKill","_revertConfig","_reservedProps","_lazyTweens","_lazyLookup","_plugins","_effects","_nextGCFrame","_harnessPlugins","_callbackNames","_harness","harnessPlugin","harness","targetTest","GSCache","_getCache","_getProperty","_forEachName","names","_roundPrecise","_parseRelative","operator","_arrayContainsAny","toSearch","toFind","_lazyRender","_lazy","_lazySafeRender","_startAt","_numericIfPossible","toMerge","_mergeDeep","_copyExcluding","excluding","_inheritDefaults","excludeDuration","keyframes","_addLinkedListItem","firstProp","lastProp","sortBy","_prev","_next","_removeLinkedListItem","_removeFromParent","onlyIfParentHasAutoRemove","autoRemoveChildren","remove","_act","_uncache","_end","_dur","_dirty","_rewindStartAt","autoRevert","_hasNoPausedAncestors","_elapsedCycleDuration","_repeat","_animationCycle","_rDelay","tTime","cycleDuration","whole","_parentToChildTotalTime","parentTime","totalDuration","_setEnd","_rts","_alignPlayhead","smoothChildTiming","_postAddChecks","rawTime","_clamp","_zTime","_addToTimeline","skipChecks","_delay","timeScale","_isFromOrFromStart","_recent","_scrollTrigger","_attemptInitTween","_initTween","_pt","_ticker","frame","_parentPlayheadIsBeforeStart","_lock","_setDuration","skipUncache","leavePlayhead","_onUpdateTotalDuration","Timeline","_zeroPosition","endTime","percentAnimation","isPercent","recent","clippedDuration","_createTweenType","irVars","isLegacy","varsIndex","runBackwards","startAt","Tween","_conditionalReturn","getUnit","_slice","_isArrayLike","nonEmpty","_flatten","ar","leaveStrings","accumulator","_accumulator","_wake","shuffle","distribute","each","_parseEase","isDecimal","ratios","ratioX","ratioY","edges","originX","originY","wrapAt","distances","grid","_invertEase","_roundModifier","pow","radius","is2D","values","increment","closest","roundingIncrement","returnFunction","_wrapArray","wrapper","_replaceRandom","nums","inMin","inMax","outMin","outMax","inRange","outRange","_getLabelInDirection","fromTime","backward","distance","executeLazyFirst","prevContext","callbackScope","_interrupt","_registerPluginQueue","_createPlugin","headless","isFunc","Plugin","instanceDefaults","_renderPropTweens","_addPropTween","_killPropTweensOf","modifier","_addPluginModifier","rawVars","statics","getSetter","_getSetter","aliases","PropTween","_255","_colorLookup","aqua","lime","silver","black","maroon","teal","blue","navy","white","olive","yellow","orange","gray","purple","green","red","pink","cyan","transparent","_hue","m1","m2","splitColor","toHSL","forceAlpha","wasHSL","parseInt","Number","_colorOrderData","_colorExp","_formatColors","orderMatchData","shell","colors","_hslExp","_colorStringFilter","combined","lastIndex","_id","_req","_raf","_self","_delta","_lagThreshold","_adjustedLag","_startTime","_lastUpdate","_gap","_nextTime","_tick","overlap","elapsed","manual","tick","deltaRatio","fps","wake","gsapVersions","GreenSockGlobals","sleep","lagSmoothing","adjustedLag","_fps","prioritize","_easeMap","_customEaseExp","_quotesExp","_parseObjectInString","parsedVal","_propagateYoyoEase","isYoyo","_first","yoyoEase","_yoyo","_ease","_yEase","defaultEase","open","close","_valueInParentheses","_CE","_configEaseFromString","_insertEase","easeIn","easeOut","easeInOut","lowercaseName","_easeInOutFromOut","_configElastic","amplitude","period","p3","asin","_configBack","overshoot","power","Linear","easeNone","none","n1","SteppedEase","steps","immediateStart","repeatDelay","yoyo","_proto","_totalTime","_ptLookup","_pTime","iteration","_ps","_recacheAncestors","includeRepeats","wrapRepeats","prevIsReverting","globalTime","_sat","includeDelay","atTime","resume","_onUpdate","onFulfilled","_resolve","_then","_prom","_Animation","_this","sortChildren","_proto2","fromTo","fromVars","toVars","staggerTo","stagger","onCompleteAll","onCompleteAllParams","onCompleteParams","staggerFrom","staggerFromTo","prevPaused","pauseTween","prevStart","prevIteration","prevTime","tDur","crossingStart","rewinding","doesWrap","repeatRefresh","onRepeat","_hasPause","_forcing","_last","_findNextPauseTween","adjustedTime","_this2","addLabel","tweens","timelines","ignoreBeforeTime","animations","removeLabel","killTweensOf","_totalTime2","addPause","removePause","onlyActive","getTweensOf","_overwritingTween","parsedTargets","isGlobalTime","_targets","tl","_onStart","onStartParams","tweenFromTo","fromPosition","toPosition","nextLabel","afterTime","previousLabel","beforeTime","currentLabel","shiftChildren","adjustLabels","clear","includeLabels","updateRoot","_forceAllPropTweens","_addComplexStringPropTween","setter","stringFilter","funcParam","startNums","endNum","chunk","startNum","hasRandom","pt","_renderComplexString","matchIndex","fp","optional","_setterFuncWithParam","_setterFunc","_setterPlain","_renderBoolean","_renderPlain","_checkPlugin","plugin","ptLookup","_parseFuncOrString","_processVars","cleanVars","hasPriority","gsData","harnessVars","overwritten","prevStartAt","fullTargets","autoOverwrite","_overwrite","_from","_ptCache","_op","_sortPropTweensByPriority","_onInit","_parseKeyframe","allProps","easeEach","_staggerTweenProps","_staggerPropsToSkip","_Animation2","skipInherit","_this3","curTarget","staggerFunc","staggerVarsToMerge","_this3$vars","_proto3","isNegative","prevRatio","_renderZeroDurationTween","startIsRelative","skipRecursion","rootPT","lookup","ptCache","_updatePropTweens","overwrittenProps","curLookup","curOverwriteProps","killingTargets","propTweenLookup","firstPT","a1","a2","_arraysMatch","propertyAliases","_addAliasesToVars","onReverseComplete","onReverseCompleteParams","_setterAttribute","hasNonDependentRemaining","dep","_setterWithModifier","mSet","mt","pt2","pr","renderer","TweenMax","TweenLite","TimelineLite","TimelineMax","_media","_lastMediaTime","_contextID","_onMediaChange","anyMatch","queries","conditions","onMatch","Context","_r","_proto5","prevSelector","getTweens","_this4","MatchMedia","contexts","_proto6","mq","active","addListener","_len2","_key2","unit","format","setters","quickTo","_merge2","isTweening","registerEffect","effect","plugins","extendTimeline","pluginName","registerEase","parseEase","exportRoot","includeDelayedCalls","matchMediaRefresh","found","wrap","wrapYoyo","total","pipe","functions","unitize","interpolate","mutate","interpolators","il","isString","master","install","globalTimeline","reverting","toAdd","_getPluginPropTween","_buildModifierPlugin","_addModifiers","Power0","Power1","Power2","Power3","Power4","Quad","Cubic","Quart","Quint","Strong","Elastic","Back","Bounce","Sine","Expo","Circ","_docElement","_pluginInitted","_tempDiv","_recentSetterPlugin","_supports3D","_transformProps","_RAD2DEG","_DEG2RAD","_atan2","atan2","_horizontalExp","_complexExp","_propertyAliases","autoAlpha","alpha","_renderCSSProp","_renderPropWithEnd","_renderCSSPropWithBeginning","_renderRoundedCSSProp","_renderNonTweeningValue","_renderNonTweeningValueOnlyAtEnd","_setterCSSStyle","_setterCSSProp","_setterTransform","_setterScale","scaleX","scaleY","_setterScaleWithRender","renderTransform","_setterTransformWithRender","_transformOriginProp","_saveStyle","isNotCSS","tfm","_get","zOrigin","svgo","_removeIndependentTransforms","translate","_revertStyle","_getStyleSaver","properties","saver","save","_createElement","_getComputedProperty","skipPrefixFallback","getPropertyValue","_checkPropPrefix","_prefixes","preferPrefix","_getBBoxHack","swapIfPossible","bbox","ownerSVGElement","oldParent","oldSibling","oldCSS","_gsapBBox","_getAttributeFallbacks","attributesArray","_getBBox","_isSVG","getCTM","_removeProperty","first2Chars","_addNonTweeningPT","beginning","onlySetAtEnd","_nonConvertibleUnits","deg","rad","turn","_nonStandardLayouts","_convertToUnit","px","isSVG","curValue","curUnit","isRootSVG","measureProperty","toPixels","toPercent","_parseTransform","_firstTwoOnly","_specialProps","_tweenComplexCSSString","startValues","startValue","endUnit","startUnit","_keywordToPercent","_convertKeywordsToPercentages","_renderClearProps","clearTransforms","clearProps","_identity2DMatrix","_rotationalProperties","_isNullTransform","_getComputedTransformMatrixAsArray","matrixString","_getMatrix","force2D","addedToDOM","matrix","baseVal","consolidate","offsetParent","nextElementSibling","_applySVGOrigin","originIsAbsolute","matrixArray","pluginToAddPropTweensTo","determinant","xOriginOld","xOrigin","yOriginOld","yOrigin","xOffsetOld","xOffset","yOffsetOld","yOffset","tx","ty","originSplit","perspective","angle","a12","a22","t3","a13","a23","a33","a42","a43","a32","invertedScaleX","rotate","forceCSS","transformPerspective","_renderSVGTransforms","_renderCSSTransforms","_renderNon3DTransforms","_addPxTranslate","_zeroDeg","_zeroPx","_endParenthesis","transforms","use3D","a11","a21","tan","_addRotationalPropTween","cap","finalValue","_assign","_addRawTransformPTs","endCache","startCache","CSSPlugin","specialProp","isTransformRelated","transformPropTween","inlineProps","styles","visibility","parseTransform","smoothOrigin","autoRound","getStyleSaver","positionAndScale","others","_window","gsapWithCSS","_max","dim","client","_buildGetter","_getOffset","rect","isRoot","cRect","clientTop","clientLeft","_parseVal","currentVal","autoKillThreshold","ScrollToPlugin","snapType","isWin","_clean","autoKill","getX","getY","xPrev","yPrev","snapInline","scrollSnapType","offsetX","skipX","offsetY","skipY","yDif","xDif","onAutoKill","onAutoKillParams","both","getOffset","buildGetter","PlayState","searchString","setPlayState","playState","prevPlayState","restartReverse","stop","stopEnd","setInitialPlayState","tweenOrTimeline","getInitialPaused","getTweenFunction","tweenFunction","onCompleteAllScope","onStartAll","getPlugins","onCompleteScope","_interpolate","_getProp","setOrAddTarget","setTarget","addTarget","reactNode","dom","traverseUp","find","domFiber","_currentElement","compFiber","_instance","getCompFiber","fiber","parentFiber","getReactNode","singleRef","nullishCoalescing","ifNullish","setProps","prevProps","registerConsumer","consumers","getContextValue","getPlugin","renderWithProvider","consumer","acc","getDistance","getPolylineLength","points","totalLength","previousPos","numberOfItems","currentPos","getItem","getTotalLength","pathString","maxLength","pathElement","getPathLength","getCircleLength","getRectLength","getLineLength","getPolygonLength","_format","SvgDrawPlugin","propTween","_tween","lengthParam","offsetParam","CountPlugin","inputValue","initialCount","createTween","onlyInvalidateTo","obj1","obj2","progressTmp","getGSAP","setGSAP","getTargets","innerRef","getRefProp","EntryState","createTimeline","_this$context","_this$context2","setTargets","getTargetRefProp","renderTarget","fragmentChild","renderedTarget","Reveal","entries","unknown","entry","isIntersecting","intersectionRatio","entered","exited","killIntersectionObserver","createIntersectionObserver","killTimeline","root","rootMargin","observer","IntersectionObserver","intersectionObserverCallback","triggerRef","unobserveAll","unobserve","_this5","ScrollTriggerPlugin","triggerProp","_jsx","_R","extraData","onSuccess","getElement","async","card","billing_details","address","submitting","succeeded","REACT_APP_FORMSPREE","process","FORMSPREE","TopBanner","handleSubmit","useForm","ScrollContainer","_jsxs","video","poster","playsInline","muted","loop","autoPlay","onSubmit","placeholder","Button","Chipset","chip","alt","Bluetooth","device","CardItem","icon","resetItem","_onclick","arrow","cards","activeItem","cont","_resetItems","handleClickOutside","Cards","CardList","Footer","defer","logo","Cta","_Fragment","Home","_taggedTemplateLiteral","strings","freeze","__assign","__spreadArray","pack","MS","MOZ","WEBKIT","COMMENT","RULESET","DECLARATION","IMPORT","KEYFRAMES","LAYER","replacement","indexof","charat","begin","strlen","sizeof","character","characters","lift","peek","caret","token","alloc","dealloc","delimit","delimiter","escaping","commenter","identifier","serialize","prefix","prefixer","combine","compile","rule","rulesets","pseudo","atrule","variable","scanning","ampersand","reference","ruleset","post","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","WebkitLineClamp","SC_ATTR","REACT_APP_SC_ATTR","SC_ATTR_ACTIVE","SC_ATTR_VERSION","SC_VERSION","SPLITTER","IS_BROWSER","DISABLE_SPEEDY","Boolean","SC_DISABLE_SPEEDY","env","REACT_APP_SC_DISABLE_SPEEDY","EMPTY_ARRAY","EMPTY_OBJECT","providedTheme","theme","domElements","escapeRegex","dashesAtEnds","AD_REPLACER_R","charsLength","getAlphabeticChar","SEED","phash","generateAlphabeticName","hasSymbol","REACT_MEMO_TYPE","REACT_FORWARD_REF_TYPE","REACT_STATICS","getDefaultProps","mixins","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","TYPE_STATICS","_a","getStatics","objectPrototype","targetComponent","sourceComponent","excludelist","inheritedComponent","hoistNonReactStatics","targetStatics","sourceStatics","sep","mixinRecursively","forceMerge","toStringFn","interpolations","DefaultGroupedTag","groupSizes","Uint32Array","group","oldBuffer","oldSize","newSize","styledError","ruleIndex","indexOfGroup","insertRule","length_1","endIndex","deleteRule","getRule","groupIDRegister","reverseRegister","nextFreeGroup","getGroupForId","setGroupForId","SELECTOR","MARKER_RE","rehydrateNamesFromContent","sheet","registerName","rehydrateSheetFromTag","parts","part","getTag","insertRules","getNonce","__webpack_nonce__","makeStyleTag","prevStyle","nonce","CSSOMTag","styleSheets","ownerNode","_error","cssRules","TextTag","nodes","childNodes","VirtualTag","_target","SHOULD_REHYDRATE","defaultOptions","useCSSOMInjection","StyleSheet","globalStyles","gs","server","setToString","getGroup","registerId","withNames","groupNames","clearGroup","clearNames","AMP_REGEX","recursivelySetNamepace","compiled","namespace","replaceAll","_componentId","_selector","_selectorRegexp","_b","_c","selfReferenceReplacer","middlewares","stylis","stringifyRules","componentId","flatCSS","collection","throwStyledError","mainSheet","mainStylis","createStylisInstance","StyleSheetContext","shouldForwardProp","styleSheet","StylisContext","useStyleSheetContext","StyleSheetManager","stylisPlugins","setPlugins","resolvedStyleSheet","reconstructWithOptions","disableCSSOMInjection","enableVendorPrefixes","shallowequal","styleSheetContextValue","Keyframes","stylisInstance","resolvedName","hasNameForId","isUpper","isFalsish","objToCssArray","isCss","isFunction","hyphenate","unitless","flatten","executionContext","isStyledComponent","styledComponentId","getName","chunklet","ComponentStyle","baseStyle","staticRulesId","isStatic","NODE_ENV","isStaticRules","baseHash","generateAndInjectStyles","joinStrings","cssStatic","joinStringArray","name_1","generateName","cssStaticFormatted","dynamicHash","partRule","partString","name_2","ThemeContext","identifiers","createStyledComponent","isTargetStyledComp","styledComponentTarget","isCompositeComponent","isTag","attrs","parentComponentId","generateComponentId","finalAttrs","shouldForwardPropFn_1","passedShouldForwardPropFn_1","elementToBeCreated","componentStyle","forwardRefRender","forwardedComponent","forwardedRef","componentAttrs","foldedComponentIds","contextTheme","ssc","determineTheme","attrDef","resolvedAttrDef","as","propsForElement","forwardedAs","generatedClassName","resolvedAttrs","classString","WrappedStyledComponent","_foldedDefaultProps","sources","sources_1","hoist","interleave","addTag","arg","styleStringArray","componentConstructor","templateFunction","initialStyles","withConfig","baseStyled","styled","domElement","GlobalStyle","clearRules","removeStyles","createStyles","htmlAttr","sealed","_emitSheetCSS","ServerStyleSheet","Nav","nav","_templateObject","_templateObject2","Navigation","isOpen","setIsOpen","handleChangeOpenstate","prevState","menu","stringifyPosition","point","VFileMessage","place","fatal","ruleId","file","actual","expected","note","ext","assertPath","seenNonSlash","firstNonSlashEnd","extIndex","dirname","unmatchedSlash","extname","startPart","startDot","preDotState","joined","absolute","allowAboveRoot","lastSlashIndex","lastSegmentLength","lastSlash","dots","normalizeString","proc","cwd","isUrl","fileUrlOrPath","urlToPath","hostname","third","getPathFromURLPosix","VFile","bufferLike","buffer","messages","stored","assertNonEmpty","assertPart","stem","encoding","info","fail","bail","trough","fns","pipeline","run","middlewareIndex","middleware","called","wrapped","_len3","parameters","_key3","fnExpectsCallback","_len4","_key4","use","middelware","unified","transformers","attachers","frozen","freezeIndex","processor","Parser","Compiler","attacher","transformer","POSITIVE_INFINITY","doc","vfile","assertParser","newable","assertCompiler","assertNode","executor","tree","runSync","complete","assertDone","processSync","destination","assertUnfrozen","own","settings","addPlugin","addList","addPreset","isPlainObj","asyncName","looksLikeAVFile","emptyOptions","one","includeImageAlt","includeHtml","list","items","chunkStart","combineExtensions","extensions","syntaxExtension","extension","hook","constructs","existing","before","asciiAlpha","regexCheck","asciiAlphanumeric","asciiAtext","asciiControl","asciiDigit","asciiHexDigit","asciiPunctuation","markdownLineEnding","markdownLineEndingOrSpace","markdownSpace","unicodePunctuation","unicodeWhitespace","regex","factorySpace","limit","enter","consume","exit","tokenize","contentStart","attempt","parser","contentInitial","lineStart","contentType","childFlow","childToken","lineStartOffset","continued","item","containerState","continuation","documentContinue","checkNewContainers","_closeFlow","closeFlow","indexBeforeExits","indexBeforeFlow","exitContainers","documentContinued","currentConstruct","concrete","flowStart","interrupt","_gfmTableDynamicInterruptHack","check","containerConstruct","thereIsANewContainer","thereIsNoNewContainer","containerContinue","flow","_tokenizer","flowContinue","writeToChild","eof","stream","sliceStream","defineSkip","write","seen","nok","null","blankLine","after","partial","subtokenize","jumps","lineIndex","otherIndex","otherEvent","subevents","more","_isInFirstContentOfListItem","subcontent","_container","eventIndex","startPosition","startPositions","tokenizer","childEvents","gaps","adjust","breaks","_gfmTasklistFirstContentOfListItem","chunkInside","contentEnd","continuationConstruct","contentContinue","prefixed","sliceSerialize","initial","flowInitial","afterConstruct","resolver","resolveAll","createResolver","initializeFactory","notText","atBreak","resolveAllLineSuffixes","extraResolver","chunks","tabs","bufferIndex","_index","_bufferIndex","createTokenizer","initialize","columnStart","resolveAllConstructs","consumed","accountForPotentialSkip","fields","constructFactory","addResult","onsuccessfulcheck","expandTabs","atTab","serializeChunks","main","expectedCode","startBufferIndex","endBufferIndex","sliceChunks","chunkIndex","restore","onreturn","returnState","bogusState","listOfConstructs","constructIndex","handleListOfConstructs","handleMapOfConstructs","handleConstruct","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","store","thematicBreak","sequence","initialSize","atMarker","inside","onBlank","listItemPrefixWhitespaceConstruct","endOfPrefix","otherPrefix","initialBlankLine","notBlank","furtherBlankLines","notInCurrentItem","indentConstruct","blockQuote","contBefore","factoryDestination","literalType","literalMarkerType","rawType","stringType","balance","enclosedBefore","enclosed","enclosedEscape","rawEscape","factoryLabel","markerType","labelInside","labelEscape","factoryTitle","factoryWhitespace","normalizeIdentifier","labelAfter","markerAfter","destinationBefore","destinationAfter","titleBefore","afterWhitespace","defined","beforeMarker","titleAfter","titleAfterOptionalWhitespace","codeIndented","afterPrefix","furtherStart","headingAtx","sequenceOpen","sequenceFurther","setextUnderline","paragraph","heading","htmlBlockNames","htmlRawNames","htmlFlow","closingTag","markerB","declarationOpen","tagCloseStart","continuationDeclarationInside","commentOpenInside","cdataOpenInside","slash","basicSelfClosing","completeClosingTagAfter","completeAttributeNameBefore","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCdataInside","continuationStart","blankLineBefore","continuationAfter","nonLazyContinuationStart","continuationStartNonLazy","continuationBefore","continuationRawEndTag","nonLazyContinuation","codeFenced","closeStart","startBefore","beforeSequenceClose","sequenceClose","sizeOpen","sequenceCloseAfter","initialPrefix","beforeSequenceOpen","infoBefore","atNonLazyBreak","metaBefore","contentBefore","beforeContentChunk","contentChunk","decodeNamedCharacterReference","characterReference","numeric","characterEscape","lineEnding","labelEnd","labelStart","_balanced","_inactive","labelEndNok","resourceConstruct","labelEndOk","referenceFullConstruct","referenceNotFull","referenceCollapsedConstruct","insideSpan","resourceBefore","resourceOpen","resourceEnd","resourceDestinationAfter","resourceDestinationMissing","resourceBetween","resourceTitleAfter","referenceFullAfter","referenceFullMissing","referenceCollapsedOpen","labelStartImage","classifyCharacter","attention","attentionMarkers","_open","_close","openingSequence","closingSequence","nextEvents","movePoint","autolink","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","htmlText","instruction","tagOpen","commentEnd","commentClose","lineEndingBefore","cdata","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","lineEndingAfter","lineEndingAfterPrefix","labelStartLink","hardBreakEscape","codeText","between","tailExitIndex","headEnterIndex","resolveText","decodeNumericCharacterReference","characterEscapeOrReference","decodeString","decode","$0","$1","$2","hex","fromMarkdown","canContainEols","opener","autolinkProtocol","onenterdata","autolinkEmail","atxHeading","codeFlow","codeFencedFenceInfo","codeFencedFenceMeta","codeTextData","codeFlowValue","definitionDestinationString","definitionLabelString","definitionTitleString","emphasis","hardBreak","hardBreakTrailing","htmlFlowData","htmlTextData","image","listItem","listItemValue","onenterlistitemvalue","listOrdered","onenterlistordered","listUnordered","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","configure","mdastExtensions","tokenStack","setData","getData","listStack","prepareList","handler","defaultOnError","firstBlankLineIndex","containerBalance","listSpread","tailIndex","tailEvent","_spread","and","errorHandler","onExitError","lang","title","depth","referenceType","ancestor","fragment","ordered","spread","compiler","postprocess","defaultConstructs","atCarriageReturn","endPosition","preprocess","remarkParse","normalizeUri","skip","convert","castFactory","typeFactory","tests","checks","anyFactory","propsFactory","visitParents","visitor","step","parents","visit","subresult","grandparents","toResult","pointStart","pointEnd","clean","footnoteReference","safeId","footnoteOrder","counter","footnoteCounts","reuseCounter","clobberPrefix","dataFootnoteRef","ariaDescribedBy","patch","sup","applyData","subtype","suffix","contents","listItemLoose","tab","space","trimLines","trimLine","codePointAt","handlers","blockquote","break","footnote","footnoteById","no","dangerous","imageReference","inlineCode","linkReference","results","loose","listLoose","table","rows","firstRow","tableContent","tableCell","tableRow","align","cellIndex","cells","cell","alignValue","toml","yaml","footnoteDefinition","createState","allowDangerousHtml","footnoteLabel","footnoteLabelTagName","footnoteLabelProperties","footnoteBackLabel","unknownHandler","passThrough","definitions","augment","hName","hProperties","hChildren","generated","defaultUnknownHandler","toHast","foot","listItems","referenceIndex","backReferences","backReference","dataFootnoteBackref","ariaLabel","tailTail","dataFootnotes","footer","Schema","normal","merge","Info","attribute","boolean","booleanish","overloadedBoolean","commaSeparated","spaceSeparated","commaOrSpaceSeparated","powers","DefinedInfo","mask","mark","attributes","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","allow","allowFullScreen","allowPaymentRequest","allowUserMedia","autoCapitalize","autoComplete","blocking","charSet","cite","cols","colSpan","controls","controlsList","coords","crossOrigin","dateTime","decoding","dir","dirName","download","draggable","encType","enterKeyHint","fetchPriority","formAction","formEncType","formMethod","formNoValidate","formTarget","high","hrefLang","htmlFor","httpEquiv","imageSizes","imageSrcSet","inert","inputMode","integrity","isMap","itemId","itemProp","itemRef","itemScope","itemType","language","loading","low","manifest","minLength","noModule","noValidate","onAbort","onAfterPrint","onAuxClick","onBeforeMatch","onBeforePrint","onBeforeToggle","onBeforeUnload","onCanPlay","onCanPlayThrough","onClose","onContextLost","onContextMenu","onContextRestored","onCopy","onCueChange","onCut","onDblClick","onDragEnter","onDragExit","onDragLeave","onDragOver","onDrop","onDurationChange","onEmptied","onEnded","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","onScrollEnd","onSecurityPolicyViolation","onSeeked","onSeeking","onSelect","onSlotChange","onStalled","onStorage","onSuspend","onTimeUpdate","onUnhandledRejection","onUnload","onVolumeChange","onWaiting","optimum","ping","popover","popoverTarget","popoverTargetAction","preload","readOnly","referrerPolicy","rel","rowSpan","sandbox","scoped","seamless","shadowRootClonable","shadowRootDelegatesFocus","shadowRootMode","sizes","slot","span","spellCheck","srcDoc","srcLang","srcSet","tabIndex","typeMustMatch","useMap","writingSuggestions","aLink","archive","background","bgColor","borderColor","bottomMargin","cellPadding","cellSpacing","charOff","classId","codeBase","codeType","compact","declare","face","frameBorder","hSpace","leftMargin","longDesc","lowSrc","marginHeight","marginWidth","noResize","noHref","noShade","noWrap","profile","prompt","rev","rightMargin","scheme","scrolling","standby","summary","topMargin","valueType","vAlign","vLink","vSpace","allowTransparency","autoCorrect","autoSave","disablePictureInPicture","disableRemotePlayback","security","unselectable","accentHeight","alignmentBaseline","arabicForm","baselineShift","capHeight","clipPath","clipRule","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","dataType","dominantBaseline","enableBackground","fillRule","floodColor","fontFamily","fontSizeAdjust","fontStretch","fontVariant","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","horizAdvX","horizOriginX","horizOriginY","imageRendering","letterSpacing","lightingColor","markerMid","navDown","navDownLeft","navDownRight","navLeft","navNext","navPrev","navRight","navUp","navUpLeft","navUpRight","onActivate","onBegin","onEnd","onFocusIn","onFocusOut","onMouseWheel","onShow","onZoom","overlinePosition","overlineThickness","paintOrder","panose1","pointerEvents","renderingIntent","shapeRendering","stopColor","strikethroughPosition","strikethroughThickness","strokeDashArray","strokeDashOffset","strokeLineCap","strokeLineJoin","strokeMiterLimit","textAnchor","textDecoration","textRendering","transformOrigin","underlinePosition","underlineThickness","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","vHanging","vIdeographic","vMathematical","vectorEffect","vertAdvY","vertOriginX","vertOriginY","wordSpacing","writingMode","xHeight","playbackOrder","timelineBegin","about","accumulate","additive","alphabetic","ascent","attributeType","azimuth","bandwidth","baseFrequency","baseProfile","bias","by","calcMode","clip","clipPathUnits","contentScriptType","contentStyleType","cursor","cx","cy","defaultAction","descent","diffuseConstant","divisor","edgeMode","editable","elevation","exponent","externalResourcesRequired","fill","filterRes","filterUnits","focusable","focusHighlight","fr","fx","fy","g1","g2","glyphRef","gradientTransform","gradientUnits","hanging","hatchContentUnits","hatchUnits","ideographic","initialVisibility","in","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","numOctaves","orient","orientation","overlay","pathLength","patternContentUnits","patternTransform","patternUnits","phase","pitch","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","propagate","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","requiredFonts","requiredFormats","rx","ry","seed","slope","snapshotTime","specularConstant","specularExponent","spreadMethod","spacing","startOffset","stdDeviation","stemh","stemv","stitchTiles","stroke","surfaceScale","syncBehavior","syncBehaviorDefault","syncMaster","syncTolerance","syncToleranceDefault","systemLanguage","tableValues","targetX","targetY","textLength","transformBehavior","u1","u2","unicode","viewBox","viewTarget","widths","x1","x2","xChannelSelector","y1","y2","yChannelSelector","zoomAndPan","htmlBase","svgBase","rehypeFilter","allowedElements","disallowedElements","allowElement","parent_","unwrapDisallowed","thing","valid","dash","kebab","camelcase","hastToReact","protocols","uriTransformer","uri","colon","tableElements","childrenToReact","childIndex","toReact","skipHtml","transformLinkUri","parentSchema","schema","addProperty","listDepth","components","basic","ReactIs","linkTarget","inline","level","transformImageUri","getInputElement","getElementsBeforeCount","textAlign","isHeader","sourcePos","rawSourcePos","sourcePosition","includeElementIndex","siblingCount","Type","dashes","padRight","padLeft","commas","styleReplacer","parseStyle","deprecated","renderers","astPlugins","escapeHtml","allowNode","allowedTypes","disallowedTypes","includeNodeIndex","ReactMarkdown","deprecation","remarkPlugins","remarkRehype","remarkRehypeOptions","rehypePlugins","hastNode","wwwPrefix","wwwPrefixInside","wwwPrefixAfter","domain","underscoreInLastSegment","underscoreInLastLastSegment","domainInside","trail","domainAfter","domainAtPunctuation","sizeClose","pathInside","pathAtPunctuation","trailCharRefStart","trailBracketAfter","trailCharRefInside","emailDomainDotTrail","wwwAutolink","previousWww","previousUnbalanced","wwwAfter","protocolAutolink","previousProtocol","fromCodePoint","protocolPrefixInside","protocolSlashesInside","afterProtocol","protocolAfter","emailAutolink","dot","gfmAtext","previousEmail","atext","emailDomain","emailDomainAfter","emailDomainDot","gfmAutolinkLiteral","_gfmAutolinkLiteralWalkedInto","tokenizePotentialGfmFootnoteCall","gfmFootnotes","resolveToPotentialGfmFootnoteCall","tokenizeGfmFootnoteCall","callStart","callData","callEscape","tokenizeDefinitionStart","labelAtMarker","whitespaceAfter","tokenizeDefinitionContinuation","gfmFootnoteDefinitionEnd","gfmStrikethrough","single","singleTilde","strikethrough","EditMap","editMap","at","addImpl","vecs","gfmTableAlign","inDelimiterRow","alignIndex","gfmTable","sizeB","bodyRowStart","headRowBefore","headRowBreak","headRowStart","headDelimiterStart","headRowData","headRowEscape","headDelimiterBefore","headDelimiterValueBefore","headDelimiterCellBefore","headDelimiterNok","headDelimiterLeftAlignmentAfter","headDelimiterCellAfter","headDelimiterFiller","headDelimiterRightAlignmentAfter","bodyRowBreak","bodyRowData","bodyRowEscape","currentTable","currentBody","currentCell","inFirstCellAwaitingPipe","rowKind","lastCell","afterHeadAwaitingFirstBodyRow","lastTableEnd","flushTableEnd","flushCell","_align","rowEnd","previousCell","groupName","getPoint","relatedStart","relatedEnd","valueToken","tableBody","exits","related","tasklistCheck","spaceThenNonSpace","gfmTaskListItem","ccount","findAndReplace","ignored","pairs","toExpression","toFunction","toPairs","pairIndex","grandparent","matchObject","global","inConstruct","notInConstruct","gfmAutolinkLiteralFromMarkdown","findUrl","findEmail","literalAutolink","literalAutolinkEmail","enterLiteralAutolinkValue","literalAutolinkHttp","literalAutolinkWww","gfmAutolinkLiteralToMarkdown","unsafe","isCorrectDomain","trailExec","closingParenIndex","openingParens","closingParens","splitUrl","association","eol","patternCompile","_compiled","patternInScope","listInScope","positions","infos","expression","numerical","escapeBackslashes","encode","lineShift","move","enterFootnoteDefinition","enterFootnoteDefinitionLabelString","exitFootnoteDefinitionLabelString","exitFootnoteDefinition","enterFootnoteCall","enterFootnoteCallString","exitFootnoteCallString","exitFootnoteCall","safeOptions","tracker","subexit","indentLines","indexStack","createTracker","bulletLastUsed","containerFlow","blank","containerPhrasing","handleDelete","gfmStrikethroughFromMarkdown","gfmStrikethroughToMarkdown","defaultStringLength","toAlignment","gfmTableFromMarkdown","tableData","enterCell","tableHeader","gfmTableToMarkdown","tableCellPadding","alignDelimiters","tablePipeAlign","stringLength","around","serializeData","handleTableRowAsData","handleTableAsData","row","handleTableCell","alignments","cellMatrix","sizeMatrix","longestCellByColumn","mostCellsPerRow","rowIndex","columnIndex","delimiterStart","delimiterEnd","markdownTable","listItemIndent","checkListItemIndent","bullet","bulletCurrent","checkBullet","incrementListMarker","gfmTaskListItemFromMarkdown","taskListCheckValueChecked","exitCheck","taskListCheckValueUnchecked","firstParaghraph","gfmTaskListItemToMarkdown","checkable","checkbox","remarkGfm","gfm","gfmFootnoteDefinition","gfmFootnoteDefinitionLabelString","gfmFootnoteCall","gfmFootnoteCallString","gfmToMarkdown","setContent","setError","setLoading","response","fetchMarkdown","getMarkdown","Terms","termsMarkdown","getTime","MarkdownViewer","Privacy","privacyMarkdown","AppSupport","Subprocessors","AppPrivacy","JobBoard","existingScript","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","App","getElementById","reportWebVitals"],"sourceRoot":""}